Künstliche Intelligenz

Sigmoidneuronen

Lernalgorithmen klingen fantastisch. Aber wie können wir solche Algorithmen für ein neuronales Netz entwickeln? Angenommen, wir haben ein Netzwerk von Perzeptronen, mit denen wir ein Problem lösen können. Die Eingänge in das Netzwerk können z.B. die Rohpixeldaten eines gescannten, handschriftlichen Bildes einer Ziffer sein. Und wir möchten, dass das Netzwerk Gewichte und Bias lernt, damit die Ausgabe aus dem Netzwerk die Ziffer korrekt klassifiziert. Um zu sehen, wie das Lernen funktionieren könnte, nehmen wir an, dass wir eine kleine Änderung in Bezug auf das Gewicht (oder Bias) im Netzwerk vornehmen. Was wir uns wünschen, ist, dass diese kleine Gewichtsänderung nur eine kleine entsprechende Änderung der Ausgabe aus dem Netzwerk bewirkt. Wie wir gleich sehen werden, wird diese Eigenschaft das Lernen ermöglichen. Schematisch gesehen wollen wir folgendes (offensichtlich ist dieses Netzwerk zu einfach, um Handschrifterkennung zu betreiben! ;-))

Wenn es wahr wäre, dass eine kleine Änderung in einem Gewicht (oder Bias) nur eine kleine Änderung in der Ausgabe verursacht, dann könnten wir diese Tatsache nutzen, um die Gewichte und Biases zu modifizieren, um unser Netzwerk dazu zu bringen, sich mehr in der von uns gewünschten Weise zu verhalten. Nehmen wir zum Beispiel an, dass das Netzwerk ein Bild fälschlicherweise als „8“ klassifiziert hat, obwohl es eigentlich eine „9“ sein sollte. Wir könnten herausfinden, wie wir eine kleine Änderung der Gewichte und Bias vornehmen können, damit das Netzwerk der Klassifizierung des Bildes als „9“ ein wenig näher kommt. Und dann würden wir das wiederholen und die Gewichte und Bias immer wieder ändern, um immer bessere und bessere Ergebnisse zu erzielen. Das Netzwerk würde lernen.

Das Problem ist, dass dies nicht der Fall ist, wenn unser Netzwerk Perzeptrone enthält. Tatsächlich kann eine kleine Änderung der Gewichte oder der Bias eines einzelnen Perzeptrons im Netzwerk manchmal dazu führen, dass die Ausgabe dieses Perzeptrons komplett umgedreht wird, z.B. von 0 auf 1. Dieser Flip kann dann dazu führen, dass sich das Verhalten des restlichen Netzwerks auf eine sehr komplizierte Art und Weise komplett ändert. Während Ihre „9“ nun zwar korrekt klassifiziert ist, hat sich das Verhalten des Netzwerks auf allen anderen Bildern wahrscheinlich auf eine schwer kontrollierbare Art und Weise völlig verändert. Das macht es schwierig zu erkennen, wie man die Gewichte und Bias schrittweise verändern kann, so dass das Netzwerk dem gewünschten Verhalten näher kommt. Vielleicht gibt es einen cleveren Weg, um dieses Problem zu umgehen. Aber es ist nicht auf den ersten Blick ersichtlich, wie wir ein Netzwerk von Perzeptronen zum Lernen bringen können.

Wir können dieses Problem lösen, indem wir eine neue Art von künstlichem Neuron einführen, das Sigmoidneuron. Sigmoidneuronen ähneln Perzeptronen, sind aber so modifiziert, dass kleine Änderungen in ihren Gewichten und Bias nur eine kleine Änderung in ihrem Output bewirken. Das ist die entscheidende Voraussetzung dafür, dass einem Netzwerk von Sigmoidneuronen erlaubt zu lernen.