In Andrew Ngs Kurs über Neuronale Netze und tiefes Lernen über Coursera sagt er, dass die Verwendung von fast immer der Verwendung von vorzuziehen ist .
Der Grund, den er angibt, ist, dass die Ausgaben mit center um 0 statt mit 's 0,5 erfolgen, und dies "erleichtert das Lernen für die nächste Schicht ein wenig".
Warum zentriert die Aktivierung das Lernen der Ausgabegeschwindigkeit? Ich nehme an, dass er sich auf die vorherige Ebene bezieht, während das Lernen während des Backprop erfolgt.
Gibt es irgendwelche anderen Eigenschaften, die bevorzugen? Würde der steilere Gradient das Verschwinden von Gradienten verzögern?
Gibt es Situationen, in denen vorzuziehen wäre?
Matheleichte, intuitive Antworten bevorzugt.
Antworten:
Yan LeCun und andere argumentieren in Efficient BackProp, dass
Aus diesem Grund sollten Sie Ihre Eingaben so normalisieren, dass der Durchschnitt Null ist.
Die gleiche Logik gilt für mittlere Schichten:
Postscript @craq weist darauf hin, dass dieses Zitat für ReLU (x) = max (0, x) keinen Sinn macht, was zu einer weit verbreiteten Aktivierungsfunktion geworden ist. Während ReLU das erste von LeCun erwähnte Zick-Zack-Problem vermeidet, löst es diesen zweiten Punkt von LeCun nicht, der sagt, es sei wichtig, den Durchschnitt auf Null zu bringen. Ich würde gerne wissen, was LeCun dazu zu sagen hat. In jedem Fall gibt es ein Papier namens Batch Normalization , das auf der Arbeit von LeCun aufbaut und eine Möglichkeit bietet, dieses Problem zu lösen:
Übrigens, dieses Video von Siraj erklärt in 10 Minuten viel über Aktivierungsfunktionen.
@elkout sagt: "Der wahre Grund, warum tanh gegenüber sigmoid (...) bevorzugt wird, ist, dass die Ableitungen des tanh größer sind als die Ableitungen des sigmoid."
Ich denke, das ist kein Problem. Ich habe nie gesehen, dass dies ein Problem in der Literatur ist. Wenn es Sie stört, dass eine Ableitung kleiner als eine andere ist, können Sie sie einfach skalieren.
Nitpick: Tanh ist auch eine Sigmoidfunktion . Jede Funktion mit einer S-Form ist ein Sigmoid. Was ihr als Sigmoid bezeichnet, ist die logistische Funktion. Der Grund, warum die Logistikfunktion populärer ist, sind historische Gründe. Es wird seit längerer Zeit von Statistikern verwendet. Außerdem glauben einige, dass es biologisch plausibler ist.
quelle
Es ist nicht unbedingt besser als . Mit anderen Worten, es ist nicht das Zentrum einer Aktivierungsfunktion, die es besser macht. Die Idee hinter beiden Funktionen ist die gleiche und sie teilen auch einen ähnlichen "Trend". Es erübrigt sich zu erwähnen, dass die Funktion eine verschobene Version der -Funktion ist.sigmoid tanh sigmoid
Der wahre Grund, warum gegenüber bevorzugt wird , insbesondere wenn es um Big Data geht und Sie normalerweise Probleme haben, schnell das lokale (oder globale) Minimum zu finden, sind die Ableitungen des sind größer als die Ableitungen des . Mit anderen Worten, Sie minimieren Ihre Kostenfunktion schneller, wenn Sie als Aktivierungsfunktion verwenden.tanh sigmoid tanh sigmoid tanh
Aber warum hat der hyperbolische Tangens größere Ableitungen? Um Ihnen eine sehr einfache Vorstellung zu geben, können Sie die folgende Grafik betrachten:
Die Tatsache, dass der Bereich zwischen -1 und 1 im Vergleich zu 0 und 1 liegt, macht die Funktion für neuronale Netze praktischer. Abgesehen davon kann ich mit etwas Mathe beweisen, dass:
Und im Allgemeinen können wir beweisen, dass in den meisten Fällen .∣∣∂tanh(x)∂x∣∣>∣∣∂σ(x)∂x∣∣
quelle
sigmoid(x) - 0.5
tanh
Beantwortung des bisher nicht angesprochenen Teils der Frage:
Andrew Ng sagt, dass die Verwendung der logistischen Funktion (allgemein als Sigmoid bekannt) nur in der letzten Schicht eines binären Klassifizierungsnetzwerks Sinn macht.
Da der Output des Netzwerks voraussichtlich zwischen und , ist die Logistik eine perfekte Wahl, da der Bereich genau . Keine Skalierung und Verschiebung von erforderlich.0 1 (0,1) tanh
quelle
Alles hängt im Wesentlichen von den Ableitungen der Aktivierungsfunktion ab. Das Hauptproblem bei der Sigmoid-Funktion besteht darin, dass der Maximalwert ihrer Ableitung 0,25 beträgt. Dies bedeutet, dass die Aktualisierung der Werte von W und b gering sein wird.
Die Tanh-Funktion hingegen hat eine Ableitung von bis zu 1,0, wodurch die Aktualisierungen von W und b viel größer werden.
Dies macht die tanh-Funktion fast immer besser als Aktivierungsfunktion (für versteckte Schichten) als die Sigmoid-Funktion.
Um dies selbst zu beweisen (zumindest in einem einfachen Fall), habe ich ein einfaches neuronales Netzwerk codiert und Sigmoid, Tanh und Relu als Aktivierungsfunktionen verwendet. Dann habe ich aufgezeichnet, wie sich der Fehlerwert entwickelt hat und das habe ich bekommen.
Das vollständige Notizbuch, das ich geschrieben habe, ist hier https://www.kaggle.com/moriano/a-showcase-of-how-relus-can-speed-up-the-learning
Wenn es hilft, sind hier die Diagramme der Ableitungen der tanh-Funktion und der Sigmoid-Funktion (achten Sie auf die vertikale Achse!)
quelle