Mathematische Intuition für den Einsatz von Re-Lu im maschinellen Lernen

10

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?

DuttaA
quelle
2
Ich bin kein Experte, habe aber diesen Link gefunden quora.com/…
Eka
1
@Eka netter Link .... aber sie geben harte Fakten an, ohne eine nette Intuition zu geben
DuttaA
3
Dies ist eine Vermutung; Die Fähigkeit des Relus, nichtlineare Funktionen zu approximieren, kann ein Ergebnis seiner Diskontinuitätseigenschaft sein, dh 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-networks
Eka

Antworten:

2

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.

Standardbild
quelle
Der Ansatz, den Sie geben, würde viele Relus erfordern, ist meine Vermutung ... Sie diskretisieren die Kurve ... Für feinere Kurven benötigen wir also mehr Relus ... Richtig?
DuttaA
Nicht ganz, IMO. Wenn Sie eine Reihe verschiedener linearer Kombinationen der Eingabe in der ersten Ebene verwenden, stehen Ihnen in der nächsten Ebene viele verschiedene Arten von Kurven zur Verfügung, die wiederum mit lineareren Kombinationen zusammengesetzt werden können. Dies kann zu einer fehlerfreien Ausgabe führen. Stellen Sie sich zum Beispiel vor, Sie schneiden die Kurven nur an ihren lokalen Extremen aus und fügen sie zusammen. Dann wären die resultierenden Kurven nahezu perfekt stetig. Es hängt auch genau davon ab, wie gut die Ausgabe sein soll. Es ist jedoch wahr, dass es aufgrund ihrer übermäßigen Linearität (z. B. ELU) bessere Aktivierungsfunktionen als ReLU gibt
Standardbild
Ich konnte nicht verstehen, wie wir durch eine einfache Re-lu viele verschiedene Kurven zur Verfügung haben werden. Es wird nur eine Kombination von 2 geraden Linien sein
DuttaA
@DuttaA Die geraden Linien sind nur die Zuordnungsfunktion. Sie können eine Kurve mithilfe einer Relu-Zuordnung einer Kurve zuordnen. Sie benötigen lediglich eine Kurve als Eingabedaten.
Standardbild
@DuttaA Die eingegebene Zahlenlinie ist eine gerade Linie und die ausgegebene Zahlenlinie ist eine gerade Linie, aber das sagt nichts über die Form der Daten auf der Zahlenlinie aus. Die xy-Ebene ist ein rechteckiger euklidischer Raum, aber Sie können Kurven innerhalb des rechteckigen Raums haben.
Standardbild