Ein wenig Mathematik: Grundlagen und Definition des Sigmoidneurons
Okay, dann beschreiben wir mal das Sigmoidneuron. Wir stellen Sigmoidneuronen so dar, wie wir es von Perzeptronen gewohnt sind:
Genau wie ein Perzeptron hat das Sigmoidneuron Eingänge, x1, x2, x3, … Aber anstatt nur 0 oder 1 zu sein, können diese Eingänge auch beliebige Werte zwischen 0 und 1 annehmen. So ist z.B. 0,638 eine gültige Eingabe für ein Sigmoidneuron. Ebenso wie ein Perzeptron hat das Sigmoidneuron Gewichte für jeden Eingang, w1, w2, w3, … und eine allgemeinen Bias, b. Aber der Ausgang ist nicht 0 oder 1. Stattdessen ist er \(\sigma(w \cdot x+b)\), wo \(\sigma\) die sigmoide Funktion* ist, und definiert ist als:
\(\begin{eqnarray} \sigma(z) \equiv \frac{1}{1+e^{-z}}. \tag{3}\end{eqnarray}\)* Übrigens wird σ manchmal auch als logistische Funktion bezeichnet, und diese neue Klasse von Neuronen nennt man logistische Neuronen. Es ist sinnvoll, sich an diese Terminologie zu erinnern, da diese Begriffe von vielen Menschen verwendet werden, die mit neuronalen Netzen arbeiten. Wir bleiben jedoch bei der Sigma-Terminologie.
Um es etwas deutlicher auszudrücken, die Ausgabe eines Sigmoidneurons mit Eingängen x1, x2, …, Gewichten w1, w2, …, und Bias b ist:
\(\begin{eqnarray} \frac{1}{1+\exp(-\sum_j w_j x_j-b)}. \tag{4}\end{eqnarray}\)Auf den ersten Blick erscheinen Sigmoidneuronen ganz anders als Perzeptrone. Die algebraische Form der Sigmoidfunktion mag undurchsichtig und abschreckend erscheinen, wenn man sie nicht bereits kennt. Tatsächlich gibt es viele Ähnlichkeiten zwischen Perzeptronen und Sigmoidneuronen, und der algebraische Aufbau der Sigmoidfunktion entpuppt sich eher als technisches Detail als als echte Barriere für das Verständnis.
Um die Ähnlichkeit mit dem Perzeptron-Modell zu verstehen, nehmen wir an, dass \(z \equiv w \cdot x + b\) eine große positive Zahl ist. Dann ist \(e^{-z} \approx 0\) und \(\sigma(z) \approx 1\). In anderen Worten, wenn \(z = w \cdot x+b\) groß und positiv ist, ist die Ausgabe des Sigmoidneurons ungefähr 1, genau wie bei einem Perzeptron. Nehmen wir andererseits an, dass \(z = w \cdot x+b\) sehr negativ ist. Dann \(e^{-z} \rightarrow \infty\), und \(\sigma(z) \approx 0\). Wenn also \(z = w \cdot x +b\) sehr negativ ist, nähert sich das Verhalten eines Sigmoidneurons ebenfalls sehr stark dem eines Perzeptrons an. Nur wenn \(w \cdot x+b\) von moderater Größe ist, gibt es große Abweichungen vom Perzeptron-Modell.
Was ist mit der algebraischen Form von Sigma? Wie können wir sie am besten verstehen? Tatsächlich ist die genaue Form von σ nicht so wichtig – was wirklich zählt, ist die Form der Funktion. Hier ist die Form:
Diese Form ist eine geglättete Version einer Treppenfunktion:
Wenn σ tatsächlich eine Treppenfunktion gewesen wäre, dann wäre das Sigmoidneuron ein Perzeptron, da die Ausgabe 1 oder 0 wäre, je nachdem, ob w · x + b positiv oder negativ ist*.
* Genau genommen gibt das Perzeptron 0 aus, wenn w · x + b = 0 ist, während die Treppenfunktion 1 ausgibt. Also müssten wir die Treppenfunktion eigentlich an dieser Stelle modifizieren.
Durch die Verwendung der eigentlichen Sigma-Funktion erhalten wir, wie bereits oben angedeutet, ein geglättetes Perzeptron. Tatsächlich ist es die Glätte der Sigma-Funktion, die die entscheidende Eigenschaft ist, nicht ihre genaue Funktion. Die Glätte von σ bedeutet, dass kleine Änderungen Δ wj in den Gewichten und Δ b in dem Bias eine kleine Änderung Δ Ausgabe in der Ausgabe vom Neuron produzieren wird. Tatsächlich sagt uns die Infinitesimalrechnung, dass Δ Ausgabe gut approximiert ist durch:
\(\begin{eqnarray} \Delta \mbox{Ausgabe} \approx \sum_j \frac{\partial \, \mbox{Ausgabe}}{\partial w_j} \Delta w_j + \frac{\partial \, \mbox{Ausgabe}}{\partial b} \Delta b, \tag{5}\end{eqnarray}\)wobei die Summe über alle Gewichte, wj und \(\partial \, \mbox{Ausgabe} / \partial w_j\) und \(\partial \, \mbox{Ausgabe} /\partial b\) partielle Ableitungen der \mbox{Ausgabe} in Bezug auf wj bzw. b darstellen. Keine Panik, wenn Sie sich mit partiellen Ableitungen nicht wohlfühlen! Während der obige Ausdruck kompliziert aussieht, mit all den partiellen Ableitungen, sagt er eigentlich etwas sehr Einfaches (und das ist eine sehr gute Nachricht): Δ Ausgabe ist eine lineare Funktion der Änderungen Δ wj und Δ b in den Gewichten und dem Bias. Diese Linearität macht es einfach, kleine Änderungen in den Gewichten und Bias zu wählen, um jede gewünschte kleine Änderung in der Ausgabe zu erreichen. Während Sigmoidneurone also viel von demselben qualitativen Verhalten wie Perzeptrons haben, machen sie es viel einfacher, herauszufinden, wie die Veränderung der Gewichte und Bias die Ausgabe verändern wird.
Wenn es die Form von σ ist, die wirklich wichtig ist, und nicht die genaue Formel, warum wird dann die spezielle Form, die für \sigma in Gleichung (3) verwendet wird? Tatsächlich werden wir später gelegentlich Neuronen betrachten, bei denen die Ausgabe f(w · x + b) für eine andere Aktivierungsfunktion f(•) ist. Die Wichtigste Sache, die sich ändert, wenn wir eine andere Aktivierungsfunktion verwenden, ist, dass sich bestimmte Werte für die partiellen Ableitungen in Gleichung (5) ändern. Es stellt sich heraus, dass, wenn wir diese partiellen Ableitungen später berechnen, sie sich durch die Verwendung von σ algebraisch vereinfachen, einfach deshalb, weil Exponentialfunktionen schöne Eigenschaften haben, wenn sie differenziert werden. Auf jeden Fall wird σ häufig bei der Arbeit an neuronalen Netzen verwendet und ist die Aktivierungsfunktion, die wir in diesem Buch am häufigsten verwenden werden.
Wie soll man also die Ausgabe eines Sigmoidneurons interpretieren? Offensichtlich besteht der größte Unterschied zwischen Perzeptronen und Sigmoidneuron, dass Sigmoidneuron nicht nur 0 oder 1 ausgeben können. Wir können als Ausgabe jede reelle Zahl zwischen 0 und 1 haben, so dass Werte wie 0,1543 und 0,836 mögliche Ausgaben darstellen. Dies kann z.B. nützlich sein, wenn wir die Ausgabe verwenden wollen, um die durchschnittliche Intensität der Pixel in einem Bild in einem neuronalen Netzwerk darzustellen. Aber manchmal kann es ein Ärgernis sein. Angenommen, der Ausgang des Netzwerks soll entweder „das Eingangsbild ist eine 9“ oder „das Eingangsbild ist keine 9“ anzeigen. Offensichtlich wäre es am einfachsten, dies zu tun, wenn der Ausgang eine 0 oder eine 1 wäre, wie in einem Perzeptron. Aber in der Praxis können wir eine Konvention einrichten, die dieses Problem löst, indem wir beispielsweise beschließen, jede Ausgabe von mindestens 0,5 als „9“ und jede Ausgabe von weniger als 0,5 als „keine 9“ zu interpretieren. (Es wird immer explizit angeben sein, wann wir eine solche Konvention verwenden, um Verwirrungen zu vermeiden.)