Neurale Netzwerke: Struktur

Wenn Sie sich an den Feature Crosses-Anzeigenblock erinnern, ist das folgende Klassifizierungsproblem nicht linear:

kartesisches Diagramm. Die herkömmliche x-Achse ist mit 'x1' gekennzeichnet. Die herkömmliche y-Achse ist mit 'x2' gekennzeichnet. Blaue Punkte beziehen sich auf die nordwestlichen und südöstlichen Quadranten. Gelbe Punkte beziehen sich auf die südwestlichen und nordöstlichen Quadranten.

Abbildung 1. Ein nicht lineares Klassifizierungsproblem.

„Nicht linear“ bedeutet, dass Sie ein Label mit einem Modell der Form nicht genau vorhersagen können. \(b + w_1x_1 + w_2x_2\) Die Entscheidungsoberfläche ist also keine Linie. Bislang haben wir uns für das Modellierung nicht linearer Probleme mit Feature Crosses befasst.

Betrachten Sie nun das folgende Dataset:

Ein Datensatz enthält viele orangefarbene und viele blaue Punkte. Es ist schwierig, ein kohärentes Muster zu bestimmen, aber die orangefarbenen Punkte bilden eine Spirale und die blauen Punkte bilden möglicherweise eine andere Spirale.

Abbildung 2. Ein schwierigeres nicht lineares Klassifizierungsproblem.

Das in Abbildung 2 gezeigte Dataset kann nicht mit einem linearen Modell gelöst werden.

Um zu sehen, wie neuronale Netzwerke bei nicht linearen Problemen helfen können, stellen wir zuerst ein lineares Modell als Diagramm dar:

Drei blaue Kreise in einer Reihe, die durch Pfeile mit einem grünen Kreis über ihnen verbunden sind

Abbildung 3. Lineares Modell als Diagramm.

Jeder blaue Kreis steht für ein Eingabemerkmal und der grüne Kreis steht für die gewichtete Summe der Eingaben.

Wie können wir dieses Modell ändern, um die Fähigkeit zum Umgang mit nicht linearen Problemen zu verbessern?

Ausgeblendete Ebenen

In dem Modell, das in der folgenden Grafik dargestellt ist, wurde eine versteckte Ebene mit Zwischenwerten hinzugefügt. Jeder gelbe Knoten in der ausgeblendeten Ebene ist eine gewichtete Summe der Werte der blauen Eingabeknoten. Die Ausgabe ist eine gewichtete Summe der gelben Knoten.

Drei blaue Kreise in einer Reihe mit Beschriftung

Abbildung 4. Diagramm mit zwei Schichten.

Ist dieses Modell linear? Ja, die Ausgabe ist immer noch eine lineare Kombination der Eingaben.

In dem Modell, das in der folgenden Grafik dargestellt ist, wurde eine zweite ausgeblendete Ebene mit gewichteten Summen hinzugefügt.

Drei blaue Kreise in einer Reihe mit Beschriftung

Abbildung 5. Diagramm mit drei Schichten.

Ist dieses Modell noch linear? Ja. Wenn Sie die Ausgabe als Funktion der Eingabe ausdrücken und vereinfachen, erhalten Sie nur eine weitere gewichtete Summe der Eingaben. Mit dieser Summe wird das nicht lineare Problem in Abbildung 2 nicht modelliert.

Aktivierungsfunktionen

Um ein nicht lineares Problem zu modellieren, können wir direkt eine Nichtlinearität einführen. Jeder verborgene Layer-Knoten kann über eine nicht lineare Funktion gefüllt werden.

Im Modell, das im folgenden Diagramm dargestellt wird, wird der Wert jedes Knotens in der ausgeblendeten Ebene 1 von einer nicht linearen Funktion transformiert, bevor er an die gewichtete Summe der nächsten Ebene übergeben wird. Diese nicht lineare Funktion wird als Aktivierungsfunktion bezeichnet.

Entspricht der Abbildung oben, mit der Ausnahme, dass zwischen den beiden verborgenen Ebenen eine Reihe rosafarbener Kreise mit der Ebene „Nicht lineare Transformationsschicht“ hinzugefügt wurde.

Abbildung 6. Diagramm eines Modells mit drei Ebenen und Aktivierungsfunktion.

Nachdem wir nun eine Aktivierungsfunktion hinzugefügt haben, hat das Hinzufügen von Ebenen mehr Wirkung. Durch das Stapeln von Nichtlinearitäten auf Nichtlinearitäten können wir sehr komplizierte Beziehungen zwischen den Eingaben und den vorhergesagten Ausgaben modellieren. Kurz gesagt: Jede Ebene lernt eine komplexere, übergeordnete Funktion über die Roheingaben. Wenn du mehr Intuition darüber erhalten möchtest, sieh dir den exklusiven Blogpost von Chris Olah an.

Allgemeine Aktivierungsfunktionen

Die folgende Aktivierungsfunktion sigmoid konvertiert die gewichtete Summe in einen Wert zwischen 0 und 1.

$$F(x)=\frac{1} {1+e^{-x}}$$

Handlung:

Sigmoidfunktion

Abbildung 7. Sigmoid-Aktivierungsfunktion

Die folgende Aktivierungsfunktion für gleichmäßige lineare Einheiten (auch ReLU genannt) funktioniert oft besser als eine glatte Funktion wie das Sigmoid, ist jedoch auch wesentlich einfacher zu berechnen.

$$F(x)=max(0,x)$$

Die Überlegenheit von ReLU basiert auf empirischen Ergebnissen, die wahrscheinlich auf eine bessere Reaktionsschnelligkeit von ReLU zurückzuführen sind. Ein Sigmoid reagiert recht schnell auf beide Seiten.

ReLU-Aktivierungsfunktion

Abbildung 8. ReLU-Aktivierungsfunktion

Tatsächlich kann jede mathematische Funktion als Aktivierungsfunktion dienen. Angenommen, \(\sigma\) steht für unsere Aktivierungsfunktion (Relu, Sigmoid oder Ähnliches). Daher wird der Wert eines Knotens im Netzwerk durch folgende Formel berechnet:

$$\sigma(\boldsymbol w \cdot \boldsymbol x+b)$$

TensorFlow bietet sofortige Unterstützung für viele Aktivierungsfunktionen. Sie finden diese Aktivierungsfunktionen in der Liste der Wrapper für TensorFlow für einfache neuronale Netzwerkvorgänge. Dennoch empfehlen wir, mit ReLU zu beginnen.

Zusammenfassung

Unser Modell enthält jetzt alle Standardkomponenten dessen, was Nutzer normalerweise sagen, wenn sie neuronales Netzwerk sagen:

  • Eine Reihe von Knoten, die analog zu Neuronen sind, in Ebenen organisiert.
  • Eine Reihe von Gewichtungen, die die Verbindungen zwischen jeder neuronalen Netzwerkebene und der darunterliegenden Ebene darstellen. Die darunterliegende Ebene kann eine andere Ebene neuronaler Netzwerke oder eine andere Ebene sein.
  • Eine Reihe von Verzerrungen, eine für jeden Knoten.
  • Eine Aktivierungsfunktion, die die Ausgabe jedes Knotens in einer Ebene transformiert. Verschiedene Ebenen können unterschiedliche Aktivierungsfunktionen haben.

Wichtig: neuronale Netzwerke sind nicht immer besser als die Merkmalsverknüpfungen. Die neuronalen Netzwerke bieten jedoch eine flexible Alternative, die sich in vielen Fällen bewährt.