Wenn Sie sich an den Feature Crosses-Anzeigenblock erinnern, ist das folgende Klassifizierungsproblem nicht linear:
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:
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:
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.
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.
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.
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.
Handlung:
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.
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.
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:
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.