In der vorherigen Übung haben Sie gesehen, dass verborgene Schichten zu unserem Netzwerk nicht ausreichend waren, um Nichtlinearitäten darzustellen. Lineare Operationen, die mit linearen Operationen ausgeführt werden, sind weiterhin linear.
Wie können Sie ein neuronales Netzwerk konfigurieren, um zu lernen, nicht lineare Beziehungen zwischen Werten? Wir brauchen eine Möglichkeit, nicht lineare Elemente einzufügen, mathematischen Operationen in ein Modell zu verwandeln.
Das liegt daran, dass wir den neuen Code nicht lineare mathematische Operationen zur Ausgabe eines linearen Modells den Kurs absolviert haben. Logistische Regression haben wir ein lineares Regressionsmodell angepasst, um einen kontinuierlichen Wert von 0 auf 1 zu setzen (steht für eine Wahrscheinlichkeit), indem die Ausgabe des Modells Sigmoidfunktion:
Wir können dasselbe Prinzip auf unser neuronales Netzwerk anwenden. Sehen wir uns unser Modell noch einmal aus Übung 2, aber diesmal vor Ausgeben des Werts jedes Knotens wenden wir zuerst die Sigmoidfunktion an:
Führen Sie die Berechnungen für die einzelnen Knoten durch, indem Sie auf die Schaltfläche >| klicken. (rechts neben der Wiedergabeschaltfläche). Die durchgeführten mathematischen Operationen überprüfen jeden Knotenwert zu berechnen. Dieser wird im Bereich Berechnungen unterhalb des Diagramms angezeigt. Beachten Sie, dass die Ausgabe jedes Knotens nun eine Sigmoid-Transformation der linearen Kombination der Knoten in der vorherigen Schicht, und die Ausgabewerte sind alle zwischen 0 und 1 drücken.
Hier dient das Sigmoid als Aktivierungsfunktion für das neuronale Netzwerk eine nicht lineare Transformation des Ausgabewerts eines Neurons, bevor der Wert als Eingabe für die Berechnungen des nächsten Schicht des neuronalen Netzwerks.
Nachdem wir nun eine Aktivierungsfunktion hinzugefügt haben, hat das Hinzufügen von Ebenen noch mehr Wirkung. Wenn wir Nichtlinearitäten auf Nichtlinearitäten stapeln, können wir sehr komplizierte Modelle Beziehungen zwischen den Eingaben und den vorhergesagten Ausgaben. Kurz gesagt: Jede Ebene ist effektiv das Erlernen einer komplexeren, übergeordneten Funktion gegenüber den unbearbeiteten Eingaben. Wenn Sie mehr Intuition für die Funktionsweise entwickeln möchten, finden Sie im exzellenten Blogpost von Chris Olah.
Gängige Aktivierungsfunktionen
Drei mathematische Funktionen, die häufig als Aktivierungsfunktionen verwendet werden, sind: sigmoid, tanh und ReLU.
Die Sigmoidfunktion (oben erörtert) führt die folgende Transformation auf der Eingabe aus $x$, was einen Ausgabewert zwischen 0 und 1 ergibt:
\[F(x)=\frac{1} {1+e^{-x}}\]
Hier ist ein Diagramm dieser Funktion:
<ph type="x-smartling-placeholder">Die Funktion tanh (kurz für „hyperbolischer Tangens“) wandelt die Eingabe $x$ in einen Ausgabewert zwischen -1 und 1 erzeugen:
\[F(x)=tanh(x)\]
Hier ist ein Diagramm dieser Funktion:
<ph type="x-smartling-placeholder">Die Aktivierungsfunktion rektifizierte lineare Einheit (oder ReLU für kurz) transformiert die Ausgabe mit dem folgenden Algorithmus:
- Wenn der Eingabewert $x$ kleiner als 0 ist, wird 0 zurückgegeben.
- Wenn der Eingabewert $x$ größer oder gleich 0 ist, wird der Eingabewert zurückgegeben.
ReLU kann mit der Funktion max() mathematisch dargestellt werden:
Hier ist ein Diagramm dieser Funktion:
<ph type="x-smartling-placeholder">ReLU funktioniert oft ein wenig besser als Aktivierungsfunktion als eine flüssige wie sigmoid oder tanh, da es weniger anfällig für Problem mit verschwindendem Farbverlauf während des neuronalen Netzwerktrainings. ReLU ist auch wesentlich einfacher, als diese Funktionen.
Andere Aktivierungsfunktionen
In der Praxis kann jede mathematische Funktion als Aktivierungsfunktion dienen. Angenommen, \(\sigma\) repräsentiert unsere Aktivierungsfunktion. Der Wert eines Knotens im Netzwerk wird wie folgt angegeben: Formel:
Keras bietet sofortigen Support für viele Aktivierungsfunktionen. Wir empfehlen dennoch, mit ReLU zu beginnen.
Zusammenfassung
Im folgenden Video erhalten Sie eine Zusammenfassung des bisher Gelernten. wie neuronale Netzwerke aufgebaut sind:
Unser Modell verfügt jetzt über alle Standardkomponenten bedeutet, wenn sie sich auf ein neuronales Netzwerk beziehen:
- Eine Reihe von Knoten, ähnlich wie Neuronen, in Ebenen organisiert.
- Eine Reihe von Gewichtungen, die die Verbindungen zwischen den einzelnen neuronalen Netzwerken darstellen Ebene und die Ebene darunter. Die darunterliegende Ebene könnte eine andere neuronale Netzwerkschicht oder eine andere Art von Schicht.
- Eine Reihe von Verzerrungen, eine für jeden Knoten.
- Eine Aktivierungsfunktion, die die Ausgabe jedes Knotens in einer Ebene transformiert. Verschiedene Ebenen haben möglicherweise unterschiedliche Aktivierungsfunktionen.
Ein Hinweis: Neuronale Netzwerke sind nicht unbedingt besser als Funktionsverknüpfungen, aber neuronale Netzwerke bieten eine flexible Alternative, in vielen Fällen gut funktioniert.