Die derzeit am häufigsten verwendeten Aktivierungsfunktionen sind die von Re-Lu. Also habe ich diese Frage beantwortet. Was ist der Zweck einer Aktivierungsfunktion in neuronalen Netzen? und als ich die Antwort schrieb, fiel mir auf, wie genau kann Re-Lus ungefähre nichtlineare Funktion sein?
Nach rein mathematischer Definition ist es aufgrund der scharfen Biegung sicher eine nichtlineare Funktion, aber wenn wir uns nur auf den positiven oder negativen Teil der x-Achse beschränken, dann ist sie in diesen Bereichen linear. Nehmen wir an, wir nehmen auch die gesamte x-Achse, dann auch ihre Art linear (nicht im strengen mathematischen Sinne) in dem Sinne, dass sie kurvenreiche Funktionen wie die Sinuswelle ( 0 --> 90
) nicht zufriedenstellend mit einer verborgenen Schicht eines einzelnen Knotens approximieren kann, wie dies durch ein Sigmoid möglich ist Aktivierungsfunktion.
Was ist also die Intuition hinter der Tatsache, dass Re-Lus in NNs verwendet werden und eine zufriedenstellende Leistung erbringen (ich frage nicht nach dem Zweck von Re-Lus), obwohl sie irgendwie linear sind? Oder werden nichtlineare Funktionen wie Sigmoid und Tanh manchmal in die Mitte des Netzwerks geworfen?
EDIT: Gemäß @ Ekas Kommentar leitet Re-Lu seine Fähigkeit von der Diskontinuität ab, die in den tiefen Schichten des neuronalen Netzes wirkt. Bedeutet dies, dass Re-Lus gut sind, solange wir sie in Deep NNs verwenden und nicht in flachen NNs?
max(0,x)
in tiefen Schichten eines neuronalen Netzwerks wirken. Es gibt eine Openai-Forschung, in der sie nichtlineare Funktionen unter Verwendung eines tiefen linearen Netzwerks berechnet haben. Hier ist der Link blog.openai.com/nonlinear-computation-in-linear-networksAntworten:
Die Ausgänge eines ReLU-Netzwerks sind immer "linear" und diskontinuierlich. Sie können Kurven approximieren, aber es können viele ReLU-Einheiten erforderlich sein. Gleichzeitig werden ihre Ausgaben jedoch häufig als kontinuierliche, gekrümmte Ausgabe interpretiert.
Stellen Sie sich vor, Sie haben ein neuronales Netzwerk trainiert, das x 3 benötigt und | x 3 | ausgibt (ähnlich einer Parabel). Dies ist für die ReLU-Funktion einfach perfekt. In diesem Fall ist der Ausgang gekrümmt.
Aber es ist nicht wirklich gekrümmt. Die Eingänge hier beziehen sich 'linear' auf die Ausgänge. Das neuronale Netzwerk nimmt lediglich die Eingabe und gibt den absoluten Wert der Eingabe zurück. Es führt eine 'lineare', nicht gekrümmte Funktion aus. Sie können nur sehen, dass die Ausgabe nicht linear ist, wenn Sie sie gegen die ursprünglichen x-Werte (das x in x 3 ) grafisch darstellen .
Wenn wir also die Ausgabe in einem Diagramm darstellen und sie gekrümmt aussieht, liegt dies normalerweise daran, dass wir der Eingabe unterschiedliche x-Werte zugeordnet und dann die Ausgabe als y-Koordinate in Bezug auf diese x-Werte dargestellt haben.
Okay, Sie möchten wissen, wie Sie sin (x) mit ReLU reibungslos modellieren können. Der Trick ist, dass Sie x nicht als Eingabe setzen möchten. Setzen Sie stattdessen etwas, das in Bezug auf x gekrümmt ist, als Eingabe, wie x 3 . Die Eingabe ist also x 3 und die Ausgabe ist sin (x). Der Grund, warum dies funktionieren würde, ist, dass es nicht den Sinus der Eingabe berechnet, sondern den Sinus der Kubikwurzel der Eingabe. Es könnte niemals den Sinus der Eingabe selbst reibungslos berechnen. Um die Ausgabe sin (x) grafisch darzustellen, setzen Sie das ursprüngliche x als x-Koordinate (geben Sie nicht die Eingabe ein) und setzen Sie die Ausgabe als y-Koordinate.
quelle