Eine ähnliche Frage wurde im Lebenslauf gestellt: Umfassende Liste der Aktivierungsfunktionen in neuronalen Netzen mit Vor- / Nachteilen .
Ich kopiere unten eine der Antworten:
Eine solche Liste, wenn auch nicht sehr vollständig:
http://cs231n.github.io/neural-networks-1/
Häufig verwendete Aktivierungsfunktionen
Jede Aktivierungsfunktion (oder Nichtlinearität ) nimmt eine einzelne Zahl und führt eine bestimmte feste mathematische Operation darauf aus. In der Praxis können verschiedene Aktivierungsfunktionen auftreten:
Links: Sigmoid-Nichtlinearität drückt reelle Zahlen in einen Bereich zwischen [0,1]. Rechts: Tanh-Nichtlinearität drückt reelle Zahlen in einen Bereich zwischen [-1,1].
Sigmoid. Die Sigmoid-Nichtlinearität hat die mathematische Form σ( x ) = 1 / ( 1 + e- x)und wird im Bild oben links gezeigt. Wie im vorherigen Abschnitt erwähnt, wird eine reelle Zahl genommen und in einen Bereich zwischen 0 und 1 "gequetscht". Insbesondere werden große negative Zahlen zu 0 und große positive Zahlen zu 1. Die Sigmoid-Funktion wurde in der Vergangenheit häufig verwendet da es eine schöne Interpretation als die Feuerrate eines Neurons hat: von überhaupt nicht feuern (0) bis zu voll gesättigtem Feuern mit einer angenommenen Maximalfrequenz (1). In der Praxis ist die Sigmoid-Nichtlinearität in letzter Zeit in Ungnade gefallen und wird selten verwendet. Es hat zwei Hauptnachteile:
- Sigmoide sättigen und töten Farbverläufe . Eine sehr unerwünschte Eigenschaft des Sigmoidneurons ist, dass, wenn die Aktivierung des Neurons bei einem Schwanz von 0 oder 1 gesättigt ist, der Gradient in diesen Regionen nahezu Null ist. Denken Sie daran, dass während der Rückausbreitung dieser (lokale) Gradient mit dem Gradienten der Ausgabe dieses Tors für das gesamte Objektiv multipliziert wird. Wenn der lokale Gradient daher sehr klein ist, wird er den Gradienten effektiv "töten" und fast kein Signal wird durch das Neuron zu seinen Gewichten und rekursiv zu seinen Daten fließen. Darüber hinaus ist beim Initialisieren der Gewichte von Sigma-Neuronen besondere Vorsicht geboten, um eine Sättigung zu verhindern. Wenn beispielsweise die anfänglichen Gewichte zu groß sind, werden die meisten Neuronen gesättigt und das Netzwerk lernt kaum.
- x > 0f= wTx + bwf). Dies könnte unerwünschte Zick-Zack-Dynamiken in die Gradientenaktualisierungen für die Gewichte einführen. Beachten Sie jedoch, dass die endgültige Aktualisierung für die Gewichte variable Vorzeichen haben kann, sobald diese Verläufe über einen Datenstapel hinweg addiert wurden, wodurch dieses Problem etwas gemindert wird. Dies ist daher ein Nachteil, hat jedoch weniger schwerwiegende Konsequenzen als das oben beschriebene Problem der gesättigten Aktivierung.
Tanh( x ) = 2 σ( 2 x ) - 1
Links: Aktivierungsfunktion der gleichgerichteten Lineareinheit (Rectified Linear Unit, ReLU), die null ist, wenn x <0, und dann linear mit Steigung 1, wenn x> 0. Rechts: Eine Darstellung von Krizhevsky et al. (pdf) Papier, das die 6-fache Verbesserung der Konvergenz mit der ReLU-Einheit im Vergleich zur Tanh-Einheit angibt.
ReLU. Die gleichgerichtete Lineareinheit ist in den letzten Jahren sehr beliebt geworden. Es berechnet die Funktion . Mit anderen Worten, die Aktivierung wird einfach auf Null begrenzt (siehe Abbildung oben links). Die Verwendung der ReLUs hat mehrere Vor- und Nachteile:f( x ) = max ( 0 , x )
- (+) Es wurde festgestellt, dass es die Konvergenz des stochastischen Gradientenabfalls im Vergleich zu den Sigmoid / Tanh-Funktionen stark beschleunigt (z. B. um den Faktor 6 in Krizhevsky et al. ). Es wird argumentiert, dass dies auf seine lineare, nicht gesättigte Form zurückzuführen ist.
- (+) Im Vergleich zu tanh / sigmoiden Neuronen, die teure Operationen (Exponentiale usw.) beinhalten, kann die ReLU implementiert werden, indem einfach eine Aktivierungsmatrix auf Null gesetzt wird.
- (-) Leider können ReLU-Einheiten während des Trainings zerbrechlich sein und "sterben". Beispielsweise kann ein großer Gradient, der durch ein ReLU-Neuron fließt, dazu führen, dass die Gewichte so aktualisiert werden, dass das Neuron an keinem Datenpunkt wieder aktiviert wird. In diesem Fall ist der Gradient, der durch die Einheit fließt, ab diesem Zeitpunkt für immer Null. Das heißt, die ReLU-Einheiten können während des Trainings irreversibel sterben, da sie vom Datenverteiler gestoßen werden können. Beispielsweise stellen Sie möglicherweise fest, dass bis zu 40% Ihres Netzwerks "tot" sein können (dh Neuronen, die im gesamten Trainingsdatensatz niemals aktiviert werden), wenn die Lernrate zu hoch eingestellt ist. Bei richtiger Einstellung der Lernrate ist dies seltener ein Problem.
f( x ) = 1 ( x < 0 ) ( α x ) + 1 ( x > = 0 ) ( x )αist eine kleine Konstante. Einige Personen berichten über Erfolge mit dieser Form der Aktivierungsfunktion, aber die Ergebnisse sind nicht immer konsistent. Die Steigung im negativen Bereich kann auch zu einem Parameter jedes Neurons gemacht werden, wie in PReLU-Neuronen zu sehen ist, die in Delving Deep into Rectifiers von Kaiming He et al., 2015, vorgestellt wurden unklar.
f( wTx + b )max ( wT1x + b1, wT2x + b2)w1, b1= 0
Dies schließt unsere Diskussion der häufigsten Arten von Neuronen und ihrer Aktivierungsfunktionen ab. Als letzter Kommentar kommt es sehr selten vor, dass verschiedene Arten von Neuronen im selben Netzwerk gemischt und abgeglichen werden, obwohl dies kein grundlegendes Problem darstellt.
TLDR : " Welchen Neuronentyp soll ich verwenden? " Verwenden Sie die ReLU-Nichtlinearität, achten Sie auf Ihre Lernraten und überwachen Sie möglicherweise den Anteil "toter" Einheiten in einem Netzwerk. Wenn dies Sie betrifft, versuchen Sie es mit Leaky ReLU oder Maxout. Verwenden Sie niemals Sigmoid. Versuchen Sie Tanh, aber erwarten Sie, dass es schlechter als ReLU / Maxout funktioniert.
Lizenz:
Die MIT-Lizenz (MIT)
Copyright (c) 2015 Andrej Karpathy
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die "Software") erhält, kostenlos die Erlaubnis erteilt, mit der Software uneingeschränkt umzugehen, einschließlich der Rechte zur Nutzung, zum Kopieren, Ändern und Zusammenführen Sie dürfen Kopien der Software unter folgenden Bedingungen veröffentlichen, verbreiten, unterlizenzieren und / oder verkaufen und Personen, denen die Software zur Verfügung gestellt wird, gestatten, dies zu tun:
Der obige Copyright-Hinweis und dieser Erlaubnishinweis sind in allen Kopien oder wesentlichen Teilen der Software enthalten.
DIE SOFTWARE WIRD OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GARANTIE "WIE BESEHEN" ZUR VERFÜGUNG GESTELLT, EINSCHLIESSLICH DER GARANTIEN FÜR HANDELSFÄHIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL HAFTEN DIE AUTOREN ODER COPYRIGHT-INHABER FÜR JEGLICHE HAFTUNGSANSPRÜCHE, SCHÄDEN ODER ANDEREN HAFTUNGSSTÄNDEN, DIE AUS, AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DEM GEBRAUCH ODER ANDEREN HANDELSSTÄNDEN DES VERTRAGS ENTSTEHEN SOFTWARE.*