De activeringsfunctie is een essentieel element voor het ontwerpen van een neuraal netwerk. De keuze van de activeringsfunctie geeft u volledige controle over het trainingsproces van het netwerkmodel. Na het toevoegen van deze functies in de verborgen lagen, zal het model efficiënt leren. Het type voorspellingen hangt af van de keuze van de activeringsfunctie. Daarom moet je de activeringsfunctie voor elk deep learning netwerk zorgvuldig kiezen.
Activeringsfuncties
Een activeringsfunctie betekent de transformatie van de input met behulp van een gewogen som naar de output. Het maakt gebruik van één of meer knooppunten voor het netwerk om de voorspelling te genereren. Je kunt ook naar de activeringsfunctie verwijzen als een overdrachtsfunctie. Of, je kunt dit een squashing functie noemen wanneer het output bereik beperkingen heeft. Activeringsfuncties kunnen ook niet-lineair zijn en worden aangeduid als de niet-lineariteit van het netwerkontwerp. Welke activeringsfunctie je ook kiest, ze zal een aanzienlijke invloed hebben op de prestaties en het vermogen van de verschillende onderdelen in het model voor machinaal leren.
Het is beter om de activeringsfunctie te gebruiken binnen en na het gebruik van de interne verwerking voor elk knooppunt in het netwerk. Het ontwerp van het model moedigt echter het gebruik van identieke activeringsfuncties in een laag aan. Dit zijn de drie lagen die een netwerk omvat:
– Invoerlagen
Invoerlagen verzamelen de ruwe invoer en gebruiken die in het rekenproces.
– Verborgen lagen
Verborgen lagen verzamelen de input van de andere laag en genereren output voor de andere laag.
– Output Lagen
Output lagen voorspellen het resultaat.
Elke verborgen laag berust op dezelfde activeringsfunctie. De outputlaag bevat verschillende activeringsfuncties. Zij verzamelt informatie van de verborgen lagen. Deze laag is afhankelijk van het genereren van verschillende soorten voorspellingen die het model nodig heeft.
De neurale netwerken leren van de backpropagatie van het foutenalgoritme. Om de gewichten van de verborgen laag bij te werken, heeft het model afgeleiden van de voorspellende fout nodig. U kunt gemakkelijk activeringsfuncties onderscheiden om de eerste-orde-afgeleide voor een gegeven invoerwaarde te berekenen. Neurale netwerken omvatten talrijke soorten activeringsfuncties. Maar om de prestaties van de verborgen en uitvoerende lagen te verbeteren, moet u slechts een paar functies gebruiken.
Voordelen van de Gelijkgerichte Lineaire Activeringsfunctie
Bij het ontwikkelen van verschillende neurale netwerk types, wordt de gerectificeerde lineaire activeringsfunctie een standaard keuze van data wetenschappers. De belangrijkste voordelen van de Relu Activation functie zijn:
1. Eenvoud in berekening
Het is onbelangrijk om de gelijkrichter functie te implementeren wanneer je een max() functie nodig hebt. Dit is anders dan bij de sigmoïde en tanh activeringsfunctie, waarvoor je de exponentiële berekening nodig hebt.
2. Representatieve sparsiteit
Een ander voordeel van de gelijkrichtersfunctie is de mogelijkheid om uitvoer te genereren met een echte nulwaarde. Het geeft aan dat de negatieve inputs echte nul output zullen produceren. Op deze manier kunnen neurale netwerken verborgen lagen inschakelen en één of meer werkelijke nulwaarden bevatten. Men kan dit karige representatie noemen, omdat het model hierdoor eenvoudiger wordt en het leerproces wordt versneld. Dit maakt de functie wenselijk voor representatief leren.
3. Lineair gedrag
De gelijkrichtersfunctie is vergelijkbaar met de lineaire activeringsfunctie. Zij heeft dezelfde prestaties en acties. Over het algemeen kunt u het gedrag van de neurale netwerken gemakkelijk optimaliseren wanneer het gedrag dicht bij lineair is.
Hoe de ReluActivation functie te coderen
We zullen Python gebruiken voor de implementatie van gerectificeerde lineaire met de eenvoudige en ongecompliceerde methode. De eenvoudigste toepassing van deze functie zou de max() functie zijn. Hier is het voorbeeld voor het juiste gebruik van de functie:
# gerectificeerde lineaire functie
def gerectificeerd(x):
return max(0,0,x)
Volgens de verwachting, zal de positieve waarde onveranderd terugkeren. Echter, de negatieve waarde of de ingangswaarde van 0,0 zal terugkeren naar 0,0. Hier vind je enkele input- en output-voorbeelden van de Relu-activatiefunctie:
# demonstreer de gerectificeerde lineaire functie
# gerectificeerde lineaire functie
def gerectificeerd(x):
returnmax(0,0,x)
# demonstreer met een positieve input
x=1.0
print(‘gerectificeerd(%.1f) is %.1f’%(x,gerectificeerd(x))
x=1000.0
print(‘gerectificeerd(%.1f) is %.1f’%(x,gerectificeerd(x))
# demonstreer met een nul invoer
x=0.0
print(‘gerectificeerd(%.1f) is %.1f’%(x,gerectificeerd(x))
# demonstreer met een negatieve invoer
x=-1.0
print(‘gerectificeerd(%.1f) is %.1f’%(x,gerectificeerd(x))
x=-1000.0
print(‘gerectificeerd(%.1f) is %.1f’%(x,gerectificeerd(x))
Tijdens het uitvoeren van de bovenstaande voorbeelden, kunnen we de terugkeer van positieve waarden identificeren, ongeacht hun grootte. De negatieve waarden zullen echter naar de waarde 0,0 terugkeren.
1 gerectificeerd(1,0) is 1,0
2 gerectificeerd(1000,0) is 1000,0
3 gerectificeerd(0,0) is 0,0
4 gerectificeerd(-1,0) is 0,0
5 gerectificeerd(-1000.0) is 0.0
Na het plotten van de invoerreeksen en de berekende uitgangen, zullen we de relatie tussen de invoer en de uitgangen begrijpen. Hier zijn enkele voorbeelden van het genereren van een reeks gehele getallen beginnend van -10 tot 10. Het helpt bij de berekening van de Reluactivatie voor individuele input. Vervolgens zal het model de resultaten plotten.
# plot inputs en outputs
from matplotlib import pyplot
# gerectificeerde lineaire functie
def gerectificeerd(x):
returnmax(0,0,x)
# definieer een reeks ingangen
series_in=[xforxinrange(-10,11)]
# bereken uitgangen voor onze ingangen
series_out=[gerectificeerd(x)voorxinseries_in]
# lijnplot van ruwe inputs naar gerectificeerde outputs
pyplot.plot(series_in,series_out)
pyplot.show()
Conclusie
De Reluactivatie functie helpt neurale netwerken bij het vormen van deep learning modellen. Omwille van de verdwijnende gradiënt problemen in verschillende lagen, kan je de hyperbolische tangens en sigmoid activatie niet gebruiken. U kunt de gradiëntproblemen overwinnen met de Relu-activeringsfunctie. Hierdoor kan het model beter presteren en sneller leren. Wanneer u de convolutionele en meerlaagse perceptron ontwikkelt, zal de neurale netwerken gerectificeerde lineaire activeringsfunctie de standaardoptie zijn.