Umfassende Liste der Aktivierungsfunktionen in neuronalen Netzen mit Vor- und Nachteilen


94

Gibt es Referenzdokumente, die eine umfassende Liste der Aktivierungsfunktionen in neuronalen Netzen zusammen mit ihren Vor- und Nachteilen enthalten (und im Idealfall einige Hinweise auf Veröffentlichungen, bei denen sie erfolgreich waren oder nicht)?


Ich weiß nicht genug über ANNs, aber wenn sich die Aktivierungsfunktionen nicht wesentlich voneinander unterscheiden, ist es sehr schwierig, sie voneinander zu unterscheiden. Für eine Diskussion einer analogen Situation können Sie hier meine Antwort sehen: Unterschied zwischen logit- und probit-Modellen .
gung

1
nein, es macht einen ziemlich großen Unterschied.
Viliami

en.wikipedia.org/wiki/Activation_function ist eine gute Ressource; Sie können viele andere, einschließlich der Verwendung sin(x)finden openreview.net/pdf?id=Sks3zF9eg .
Piotr Migdal

Ein Video-Tutorial zu Aktivierungsfunktionen finden Sie unter: quickkt.com/tutorials/artificial-intelligence/deep-learning/…
vinay kumar 17.10.17

Antworten:


144

Ich werde hier eine Liste derjenigen erstellen, die ich bisher gelernt habe. Wie @marcodena sagte, sind Vor- und Nachteile schwieriger, weil es meistens nur Heuristiken sind, die aus dem Ausprobieren dieser Dinge gelernt wurden.

Zuerst definiere ich die Notation explizit, damit keine Verwirrung entsteht:

Notation

Diese Notation stammt aus Neilsens Buch .

Ein Feedforward-Neuronales Netzwerk besteht aus mehreren miteinander verbundenen Neuronenschichten. Es nimmt eine Eingabe auf, dann "sickert" diese Eingabe durch das Netzwerk und das neuronale Netzwerk gibt einen Ausgabevektor zurück.

Nennen Sie formal die Aktivierung (aka Ausgabe) des -Neurons in der , wobei das -Element im Eingabevektor ist.ajijthithaj1jth

Dann können wir die Eingabe der nächsten Ebene über die folgende Beziehung mit der vorherigen verknüpfen:

aji=σ(k(wjkiaki1)+bji)

wo

  • σ ist die Aktivierungsfunktion,
  • wjki ist das Gewicht vom Neuron in der Schicht zum Neuron in der Schicht,kth(i1)thjthith
  • bji ist die Vorspannung des Neurons in der Schicht, undjthith
  • aji repräsentiert den Aktivierungswert des Neurons in der Schicht.jthith

Manchmal schreiben wir , um , mit anderen Worten, den Aktivierungswert eines Neurons, bevor wir die Aktivierungsfunktion anwenden .zjik(wjkiaki1)+bji

Bildbeschreibung hier eingeben

Für eine präzisere Notation können wir schreiben

ai=σ(wi×ai1+bi)

Um diese Formel zur Berechnung der Ausgabe eines Feedforward-Netzwerks für eine Eingabe , setzen Sie und berechnen Sie dann , Dabei ist die Anzahl der Schichten.IRna1=Ia2,a3,,amm

Aktivierungsfunktionen

(Im Folgenden schreiben wir aus Lesbarkeit anstelle von )exp(x)ex

Identität

Wird auch als lineare Aktivierungsfunktion bezeichnet.

aji=σ(zji)=zji

Identität

Schritt

aji=σ(zji)={0if zji<01if zji>0

Schritt

Stückweise linear

Wählen Sie einige und , das ist unser "Sortiment". Alles, was kleiner als dieser Bereich ist, ist 0 und alles, was größer als dieser Bereich ist, ist 1. Alles andere wird dazwischen linear interpoliert. Formal:xminxmax

aji=σ(zji)={0if zji<xminmzji+bif xminzjixmax1if zji>xmax

Wo

m=1xmaxxmin

und

b=mxmin=1mxmax

Stückweise linear

Sigmoid

aji=σ(zji)=11+exp(zji)

Sigmoid

Komplementäres Log-Log

aji=σ(zji)=1exp(exp(zji))

Komplementäres Log-Log

Bipolar

aji=σ(zji)={1if zji<0   1if zji>0

Bipolar

Bipolares Sigmoid

aji=σ(zji)=1exp(zji)1+exp(zji)
Bipolares Sigmoid

Tanh

aji=σ(zji)=tanh(zji)

Tanh

LeCuns Tanh

Siehe Efficient Backprop .

aji=σ(zji)=1.7159tanh(23zji)

LeCuns Tanh

Skaliert:

LeCuns Tanh Scaled

Hard Tanh

aji=σ(zji)=max(1,min(1,zji))

Hard Tanh

Absolut

aji=σ(zji)=∣zji

Absolut

Gleichrichter

Auch bekannt als Rectified Lineareinheit (relu), Max oder die Rampenfunktion .

aji=σ(zji)=max(0,zji)

Gleichrichter

Modifikationen von ReLU

Dies sind einige Aktivierungsfunktionen, mit denen ich gespielt habe und die aus mysteriösen Gründen eine sehr gute Leistung für MNIST zu haben scheinen.

aji=σ(zji)=max(0,zji)+cos(zji)

ReLU cos

Skaliert:

ReLU cos skaliert

aji=σ(zji)=max(0,zji)+sin(zji)

ReLU sin

Skaliert:

ReLU sin skaliert

Glatter Gleichrichter

Auch bekannt als Smooth Rectified Linear Unit, Smooth Max oder Soft Plus

aji=σ(zji)=log(1+exp(zji))

Glatter Gleichrichter

Logit

aji=σ(zji)=log(zji(1zji))

Logit

Skaliert:

Logit skaliert

Probit

aji=σ(zji)=2erf1(2zji1)
.

Wobei die Fehlerfunktion ist . Es kann nicht über elementare Funktionen beschrieben werden, aber auf dieser Wikipedia-Seite und hier finden Sie Möglichkeiten, wie Sie die Inverse approximieren können .erf

Alternativ kann es ausgedrückt werden als

aji=σ(zji)=ϕ(zji)
.

Wobei die kumulative Verteilungsfunktion ( Cumulative Distribution Function, CDF) ist. Siehe hier für Mittel zur Annäherung.ϕ

Probit

Skaliert:

Probit Scaled

Kosinus

Siehe Random Kitchen Sinks .

aji=σ(zji)=cos(zji)
.

Kosinus

Softmax

Wird auch als normalisiertes Exponential bezeichnet.

aji=exp(zji)kexp(zki)

Dieses ist ein wenig seltsam, weil die Ausgabe eines einzelnen Neurons von den anderen Neuronen in dieser Schicht abhängt. Es wird auch schwierig zu berechnen, da ein sehr hoher Wert sein kann, in welchem ​​Fall wahrscheinlich überlaufen wird. Wenn ein sehr niedriger Wert ist, läuft er unter und wird zu .zjiexp(zji)zji0

Um dem entgegenzuwirken, berechnen wir stattdessen . Das gibt uns:log(aji)

log(aji)=log(exp(zji)kexp(zki))

log(aji)=zjilog(kexp(zki))

Hier müssen wir den log-sum-exp-Trick verwenden :

Nehmen wir an, wir rechnen:

log(e2+e9+e11+e7+e2+e5)

Wir werden zunächst unsere Exponentiale nach ihrer Größe sortieren:

log(e11+e9+e5+e2+e2+e7)

Dann, da unser höchstes ist, multiplizieren wir mit :e11e11e11

log(e11e11(e11+e9+e5+e2+e2+e7))

log(1e11(e0+e2+e6+e9+e13+e18))

log(e11(e0+e2+e6+e9+e13+e18))

log(e11)+log(e0+e2+e6+e9+e13+e18)

11+log(e0+e2+e6+e9+e13+e18)

Wir können dann den Ausdruck auf der rechten Seite berechnen und das Protokoll davon erstellen. Dies ist in Ordnung, da diese Summe in Bezug auf sehr klein ist , sodass ein Unterlauf auf 0 ohnehin nicht signifikant genug gewesen wäre, um einen Unterschied zu bewirken. Ein Überlauf kann im rechten Ausdruck nicht auftreten, da wir garantiert haben, dass nach der Multiplikation mit alle Potenzen .log(e11)e110

Formal nennen wir . Dann:m=max(z1i,z2i,z3i,...)

log(kexp(zki))=m+log(kexp(zkim))

Unsere Softmax-Funktion wird dann:

aji=exp(log(aji))=exp(zjimlog(kexp(zkim)))

Die Ableitung der Softmax-Funktion ist auch als Randnotiz:

dσ(zji)dzji=σ(zji)=σ(zji)(1σ(zji))

Maxout

Dieser ist auch ein bisschen knifflig. Im Wesentlichen besteht die Idee darin, dass wir jedes Neuron in unserer Maxout-Schicht in viele Subneuronen aufteilen, von denen jede ihre eigenen Gewichte und Vorurteile hat. Dann wird die Eingabe für ein Neuron stattdessen an jedes seiner Subneuronen gesendet, und jedes Subneuron gibt einfach seine (ohne eine Aktivierungsfunktion anzuwenden). Das dieses Neurons ist dann das aller Ausgaben seines .zaji

In einem einzelnen Neuron haben wir formal Subneuronen. Dannn

aji=maxk[1,n]sjki

wo

sjki=ai1wjki+bjki

( ist das Skalarprodukt )

Um uns zu helfen, darüber nachzudenken, betrachten wir die Gewichtsmatrix für die -Schicht eines neuronalen Netzwerks, das beispielsweise eine Sigmoid-Aktivierungsfunktion verwendet. ist eine 2D-Matrix, wobei jede Spalte ein Vektor für das Neuron , der ein Gewicht für jedes Neuron in der vorherigen Schicht .WiithWiWjiji1

Wenn wir Subneuronen haben wollen, brauchen wir eine 2D-Gewichtsmatrix für jedes Neuron, da jedes Subneuron einen Vektor benötigt, der ein Gewicht für jedes Neuron in der vorherigen Schicht enthält. Dies bedeutet, dass nun eine 3D-Gewichtsmatrix ist, wobei jedes die 2D-Gewichtsmatrix für ein einzelnes Neuron . Und dann ist ein Vektor für das Subneuron in Neuron , der eine Gewichtung für jedes Neuron in der vorherigen Schicht .WiWjijWjkikji1

Ebenso ist in einem neuronalen Netzwerk, das beispielsweise wieder eine Sigmoid-Aktivierungsfunktion verwendet, ein Vektor mit einer Vorspannung für jedes Neuron in Schicht .bibjiji

Um dies mit zu tun, benötigen wir eine 2D-Bias-Matrix für jede Schicht , wobei der Vektor mit einem Bias für jedes Subneurons im Neuron.biibjibjkikjth

für jedes Neuron eine Wichtungsmatrix und ein Bias-Vektor die obigen Ausdrücke sehr deutlich, und es werden einfach die jedes auf die Ausgänge von schichte , wende dann ihre Vorspannungen und nehme das Maximum von ihnen.wjibjiwjkiai1i1bjki

Radiale Basisfunktionsnetzwerke

Radiale Basisfunktionsnetzwerke sind eine Modifikation von Feedforward-Neuronalen Netzen, bei denen anstatt verwendet wird

aji=σ(k(wjkiaki1)+bji)

Wir haben ein Gewicht pro Knoten in der vorherigen Schicht (wie normal) und auch einen mittleren Vektor und einen Standardabweichungsvektor für jeden Knoten in die vorherige Schicht.wjkikμjkiσjki

Dann rufen wir unsere Aktivierungsfunktion auf, um zu vermeiden, dass sie mit den Standardabweichungsvektoren verwechselt wird . nun zu berechnen, wir zuerst ein für jeden Knoten in der vorherigen Ebene berechnen . Eine Möglichkeit ist die Verwendung der euklidischen Distanz:ρσjkiajizjki

zjki=(ai1μjki=(ai1μjki)2

Wobei das -Element von . Dieser benutzt nicht das . Alternativ gibt es Mahalanobis Distanz, die angeblich besser abschneidet:μjkithμjkiσjki

zjki=(ai1μjki)TΣjki(ai1μjki)

Dabei ist die Kovarianzmatrix , definiert als:Σjki

Σjki=diag(σjki)

Mit anderen Worten, ist die Diagonalmatrix mit als diagonalen Elementen. Wir definieren hier und als Spaltenvektoren, da dies die normalerweise verwendete Notation ist.Σjkiσjkiai1μjki

Diese sagen eigentlich nur, dass Mahalanobis Distanz definiert ist als

zjki=(ai1μjki)2σjki

Wobei das -Element von . Beachten Sie, dass immer positiv sein muss, aber dies ist eine typische Anforderung für Standardabweichungen, sodass dies nicht so überraschend ist.σjkithσjkiσjki

Falls gewünscht, ist der Mahalanobis-Abstand allgemein genug, dass die Kovarianzmatrix als andere Matrizen definiert werden kann. Wenn zum Beispiel die Kovarianzmatrix die Identitätsmatrix ist, reduziert sich unsere Mahalanobis-Distanz auf die euklidische Distanz. ist jedoch ziemlich verbreitet und wird als normalisierte euklidische Distanz bezeichnet .ΣjkiΣjki=diag(σjki)

In können wir nach Auswahl unserer Distanzfunktion über berechnenaji

aji=kwjkiρ(zjki)

In diesen Netzwerken wird nach Anwendung der Aktivierungsfunktion aus Gründen die Multiplikation mit Gewichten gewählt.

Hier wird beschrieben, wie ein Netzwerk mit mehrschichtigen radialen Basisfunktionen erstellt wird. In der Regel ist jedoch nur eines dieser Neuronen vorhanden, und seine Ausgabe ist die Ausgabe des Netzwerks. Es wird als mehrere Neuronen gezeichnet, weil jeder Mittelwertvektor und jeder Standardabweichungsvektor dieses einzelnen Neurons als ein "Neuron" betrachtet wird, und dann gibt es nach all diesen Ausgaben eine andere Schicht das ist die Summe dieser berechneten Werte mal der Gewichte, genau wie oben. Es scheint mir seltsam, es mit einem "Summierungs" -Vektor am Ende in zwei Schichten aufzuteilen, aber es ist das, was sie tun.μjkiσjkiaji

Siehe auch hier .

Radiale Basisfunktion Netzwerkaktivierungsfunktionen

Gaußsche

ρ(zjki)=exp(12(zjki)2)

Gaußsche

Multiquadratisch

Wähle einen Punkt . Dann berechnen wir den Abstand von zu :(x,y)(zji,0)(x,y)

ρ(zjki)=(zjkix)2+y2

Dies ist aus Wikipedia . Es ist nicht begrenzt und kann jeder positive Wert sein, obwohl ich mich frage, ob es einen Weg gibt, ihn zu normalisieren.

Wenn , ist dies äquivalent zu absolut (mit einer horizontalen Verschiebung ).y=0x

Multiquadratisch

Inverse multiquadratisch

Wie quadratisch, außer umgedreht:

ρ(zjki)=1(zjkix)2+y2

Inverse multiquadratisch

* Grafiken von intmaths Graphen mit SVG .


12
Willkommen zum Lebenslauf. +6 das ist sagenhaft informativ. Ich hoffe, wir werden in Zukunft mehr davon sehen.
gung

1
Es gibt auch die glatte gleichgerichtete lineare Funktion von Form und probit. log(1+exp(x))
Memming

Okay, ich glaube, ich habe Logit, Probit und Complementary Log-Log hinzugefügt, aber ich habe kein tiefes Verständnis für diese Themen, so dass ich möglicherweise ihre schriftliche Form falsch verstanden habe. Ist das richtig?
Phylliida,

3
Dies wäre ein interessantes Papier mit einer schönen Liste von Referenzen. Zum Beispiel arxiv.org/abs/1505.03654 . Sie können mich gerne kontaktieren, wenn Sie sich dazu entschließen, eine Arbeit zu schreiben und andere Referenzen wünschen.
Hunaphu,

9
Jemand sollte dies mit Elu, Leaky ReLU, PReLU und RReLU aktualisieren.
Viliami

24

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:

Bildbeschreibung hier eingebenBildbeschreibung hier eingeben

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 und ist in der Abbildung oben links dargestellt. 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:σ(x)=1/(1+ex)

  • 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 daher der lokale Gradient 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.
  • Sigmoid-Ausgänge sind nicht nullzentriert . Dies ist unerwünscht, da Neuronen in späteren Verarbeitungsebenen in einem neuronalen Netzwerk (dazu bald mehr) Daten empfangen würden, die nicht nullzentriert sind. Dies hat Auswirkungen auf die Dynamik beim Gradientenabstieg, denn wenn die in ein Neuron eingehenden Daten immer positiv sind (z. B. elementweise in )), wird der Gradient auf den Gewichten während der Rückausbreitung entweder alle positiv oder alle negativ sein (abhängig vom Gradienten des gesamten Ausdrucks 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. Die Tanh-Nichtlinearität ist in der Abbildung oben rechts dargestellt. Es drückt eine reelle Zahl in den Bereich [-1, 1]. Wie das Sigmoid-Neuron sättigen sich seine Aktivierungen, aber im Gegensatz zum Sigmoid-Neuron ist sein Ausgang auf Null zentriert. In der Praxis wird daher die tanh-Nichtlinearität immer der sigmoiden Nichtlinearität vorgezogen. Man beachte auch, dass das tanh-Neuron einfach ein skaliertes Neuron ist, insbesondere gilt Folgendes: .tanh(x)=2σ(2x)1

Bildbeschreibung hier eingebenBildbeschreibung hier eingeben

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.

Undichte ReLU. Undichte ReLUs sind ein Versuch, das "sterbende ReLU" -Problem zu beheben. Anstatt dass die Funktion Null ist, wenn x <0 ist, hat eine undichte ReLU stattdessen eine kleine negative Steigung (von 0,01 oder so). Das heißt, die Funktion berechnet wobei eine kleine Konstante ist. 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(x)=1(x<0)(αx)+1(x>=0)(x)α

Bildbeschreibung hier eingeben

Maxout . Es wurden andere Arten von Einheiten vorgeschlagen, die nicht die funktionale Form denen eine Nichtlinearität auf das Punktprodukt zwischen den Gewichten und den Daten angewendet wird. Eine relativ beliebte Wahl ist das Maxout-Neuron (kürzlich von Goodfellow et al. Eingeführt), das die ReLU und ihre undichte Version verallgemeinert. Das Neuron Maxout berechnet die Funktion . Beachten Sie, dass sowohl ReLU als auch Leaky ReLU ein Sonderfall dieser Form sind (für ReLU haben wir beispielsweisef(wTx+b)max(w1Tx+b1,w2Tx+b2)w1,b1=0). Das Maxout-Neuron genießt daher alle Vorteile einer ReLU-Einheit (lineares Betriebsregime, keine Sättigung) und hat keine Nachteile (sterbende ReLU). Im Gegensatz zu den ReLU-Neuronen verdoppelt es jedoch die Anzahl der Parameter für jedes einzelne Neuron, was zu einer hohen Gesamtanzahl von Parametern führt.

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

Jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die "Software") erhält, wird hiermit 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 SONSTIGE HAFTUNGEN, OB AUS VERTRAGSVERHÄLTNISSEN, UNTER BERÜCKSICHTIGUNG ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELNDEN HANDELNDEN HANDELNDEN SOFTWARE.*

Andere Links:


10

Ich glaube nicht, dass es eine Liste mit Vor- und Nachteilen gibt. Die Aktivierungsfunktionen sind stark anwendungsabhängig und hängen auch von der Architektur Ihres neuronalen Netzwerks ab ( hier sehen Sie beispielsweise die Anwendung von zwei Softmax-Funktionen, die denen des Sigmas ähnlich sind).

Sie können einige Studien über das allgemeine Verhalten der Funktionen finden, aber ich denke, Sie werden nie eine definierte und endgültige Liste haben (was Sie fragen ...).

Ich bin noch Student, also zeige ich, was ich bisher weiß:

  • hier finden sie einige gedanken über das verhalten von tanh und sigmoiden mit backpropagation. Tanh sind generischer, aber Sigmoide ... (es wird immer ein "aber" geben)
  • In Deep Sparse Rectifier Neural Networks von Glorot Xavier et al. Heißt es, dass Gleichrichtereinheiten biologisch plausibler und leistungsfähiger sind als die anderen (Sigmoid / Tanh).

Dies ist die "richtige" Antwort. Man kann eine Liste erstellen, aber Vor- und Nachteile sind vollständig datenabhängig. Tatsächlich ist das Lernen von Aktivierungsfunktionen theoretisch viel vernünftiger. Der Grund, warum es nicht viel Forschungsschwerpunkt gibt, ist, dass Sigmoid "einfach funktioniert". Am Ende ist Ihre einzige Verstärkung die Konvergenzgeschwindigkeit, die oft unwichtig ist
runDOSrun

4

Der Vollständigkeit halber gibt es für Danielle noch andere Paradigmen, bei denen man die Gewichte und / oder die Art der Aktivierungen nach dem Zufallsprinzip festlegt: Liquid State Machines , Extreme Learning Machines und Echo State Networks .

Eine Möglichkeit, diese Architekturen zu betrachten: Das Reservoir ist eine Art Kernel wie in SVMs oder eine große verborgene Schicht in einem einfachen FFNN, in der die Daten in einen Hyperraum projiziert werden. Es findet kein tatsächliches Lernen statt, das Reservoir wird neu erzeugt, bis eine zufriedenstellende Lösung erreicht ist.

Siehe auch diese nette Antwort .


2

Ein Artikel mit Informationen zu den zuletzt aktivierten Funktionen finden Sie in

" Aktivierungsfunktionen: Vergleich von Trends in Praxis und Forschung für Deep Learning " von Chigozie Enyinna Nwankpa, Winifred Ijomah, Anthony Gachagan und Stephen Marshall

Tiefe neuronale Netze wurden in verschiedenen aufkommenden Bereichen erfolgreich eingesetzt, um komplexe Probleme der realen Welt mit möglicherweise weiter entwickelten Deep-Learning-Architekturen (DL-Architekturen) zu lösen. Um diese hochmodernen Leistungen zu erzielen, verwenden die DL-Architekturen Aktivierungsfunktionen (AFs), um verschiedene Berechnungen zwischen den verborgenen Schichten und den Ausgabeschichten einer bestimmten DL-Architektur durchzuführen. Dieser Artikel bietet eine Übersicht über die vorhandenen AFs, die in Deep-Learning-Anwendungen verwendet werden, und beleuchtet die jüngsten Trends bei der Verwendung der Aktivierungsfunktionen für Deep-Learning-Anwendungen. Das Neue an diesem Artikel ist, dass er die meisten in DL verwendeten AFs zusammenstellt und die aktuellen Trends bei der Anwendung und Verwendung dieser Funktionen in praktischen Deep-Learning-Implementierungen anhand der neuesten Forschungsergebnisse umreißt. Diese Zusammenstellung hilft dabei, effektive Entscheidungen bei der Auswahl der am besten geeigneten und geeigneten Aktivierungsfunktion für eine bestimmte Anwendung zu treffen, die zur Bereitstellung bereitsteht. Dieses Papier ist zeitgemäß, da die meisten Forschungsarbeiten zu AF ähnliche Arbeiten und Ergebnisse hervorheben, während dieses Papier das erste sein wird, das die Trends in der Praxis von AF-Anwendungen anhand der Forschungsergebnisse aus der Literatur zusammenfasst, die in der bisherigen Deep-Learning-Forschung gefunden wurden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.