28.09.2013 Aufrufe

Neuronale Netze - D. Kriesel

Neuronale Netze - D. Kriesel

Neuronale Netze - D. Kriesel

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Ein kleiner Überblick über<br />

<strong>Neuronale</strong> <strong>Netze</strong><br />

David <strong>Kriesel</strong><br />

dkriesel.com<br />

Downloadadresse:<br />

http://www.dkriesel.com/science/neural_networks<br />

NEU ‐ Für die Coder:<br />

Skalierbares, effizientes NN‐Framework für JAVA<br />

http://www.dkriesel.com/tech/snipe


In Gedenken an<br />

Dr. Peter Kemp, Notar a.D., Bonn.


Vorwörtchen<br />

„Diese Arbeit ist ursprünglich im Rahmen eines Seminars der Rheinischen<br />

Friedrich-Wilhelms-Universität Bonn entstanden, wurde und wird jedoch<br />

(nachdem vorgetragen und online verfügbar gemacht unter<br />

www.dkriesel.com am 27.05.2005) immer mehr erweitert – erstens, um mit<br />

der Zeit einen möglichst guten Überblick über das Thema der <strong>Neuronale</strong>n<br />

<strong>Netze</strong> liefern zu können und zweitens schlicht und einfach, weil ich daran<br />

immer mehr und besser L ATEX lernen möchte. Wer weiss, vielleicht wird aus<br />

dieser Zusammenfassung ja sogar einmal ein Vorwort!“<br />

Zusammenfassung dieser Arbeit, Ende 2005<br />

Aus der obenstehenden Zusammenfassung ist bis jetzt zwar kein Vorwort, aber immerhin<br />

ein Vorwörtchen geworden, nachdem sich die Erweiterung der Arbeit (damals auf<br />

40 Seiten) bei mir unverhofft zum Downloadschlager entwickelt hat.<br />

Anspruch und Intention dieses Manuskripts<br />

Der ganze Text ist großzügiger geschrieben und ausführlicher bebildert als früher. Die<br />

Illustrationen sind nun „nach meinem Gusto“ selbst erstellt, zum Großteil direkt in<br />

L ATEX unter Verwendung des Pakets XYpic. Sie spiegeln das wieder, was ich mir beim<br />

Erarbeiten des Stoffs gewünscht hätte, sollen also mit dem Text zusammen möglichst<br />

eingängig und schnell verständlich sein, um möglichst vielen einen Einstieg in das<br />

Gebiet der <strong>Neuronale</strong>n <strong>Netze</strong> zu ermöglichen.<br />

Trotzdem kann der mathematisch und formal versierte Leser die Definitionen weitestgehend<br />

ohne Fließtext lesen, der nur an dem Gebiet an sich interessierte Leser umgekehrt;<br />

alles wird also sowohl umgangssprachlich wie auch formal erklärt. Ich bitte ausdrücklich<br />

um Hinweise, falls ich diese Doppelmoral einmal nicht ausreichend bewerkstelligt<br />

haben sollte.<br />

v


Abschnitte dieser Arbeit sind weitestgehend eigenständig<br />

Das Dokument selbst gliedert sich in mehrere Teile, die sich wiederum in Kapitel teilen.<br />

Trotz Querverweisen untereinander kann man die Kapitel mit nur geringem Vorwissen<br />

auch für sich selbst lesen. Hierbei gibt es größere und kleinere Kapitel: Während die<br />

größeren einen etwas fundierteren Einblick in ein Paradigma <strong>Neuronale</strong>r <strong>Netze</strong> geben<br />

sollen (z.B. beim Standardbeispiel <strong>Neuronale</strong>r <strong>Netze</strong>, dem Perceptron und seiner Lernverfahren),<br />

sind die kleineren für einen kurzen Überblick gedacht – dies wird in der<br />

jeweiligen Kapiteleinleitung auch beschrieben. In einigen Exkursen möchte ich noch<br />

gerne im Zusammenhang interessantes, aber nicht direkt dem Stoff zugehöriges Wissen<br />

vermitteln.<br />

Auf der Suche nach kostenlosen deutschen Quellen, die inhaltlich (was die Paradigmen<br />

<strong>Neuronale</strong>r <strong>Netze</strong> angeht) vielfältig, aber trotzdem durchgehend einheitlichen Stils sind,<br />

bin ich (zumindest was deutschsprachiges Material angeht) leider nicht wirklich fündig<br />

geworden. Das Ziel dieser Arbeit (auch wenn sie es vielleicht nicht auf Anhieb erfüllen<br />

kann) ist, diese Lücke nach und nach zu schließen und das Fachgebiet auf leicht<br />

verständliche Weise zugänglich zu machen.<br />

Für diejenigen, die direkt während des Lesens programmieren<br />

möchten, gibt es SNIPE<br />

SNIPE 1 ist eine ausführlich dokumentierte JAVA-Bibliothek, welche ein schnelles,<br />

feature-reiches und einfach benutzbares Framework für <strong>Neuronale</strong> <strong>Netze</strong> implementiert.<br />

Für nichtkommerzielle Einsatzgebiete ist es kostenlos verfügbar. Es war von mir<br />

ursprünglich für den Einsatz in Hochleistungssimulationen konzipiert, in denen sehr viele,<br />

auch große <strong>Netze</strong> gleichzeitig trainiert und ausgeführt werden. Vor kurzem habe ich<br />

mich nun entschieden, Snipe als professionelle Referenzimplementierung zu dieser Arbeit<br />

online zu stellen, die sehr viele der behandelten Aspekte abdeckt, aber angesichts<br />

des ursprünglichen Design-Ziels effizienter arbeitet als die meisten anderen Implementierungen.<br />

Wer also direkt vieles vom Gelernten ausprobieren möchte oder aus anderen<br />

Gründen nach dem Lernen eine schnelle und stabile <strong>Neuronale</strong>-<strong>Netze</strong>-Implementierung<br />

braucht, ist mit Snipe sicher gut beraten.<br />

Die von Snipe abgedeckten Aspekte sind allerdings nicht komplett deckungsgleich mit<br />

dem Manuskript. Manche im Manuskript vorgestellten Arten <strong>Neuronale</strong>r <strong>Netze</strong> werden<br />

von Snipe nicht unterstützt, während Snipe in anderen Bereichen deutlich mehr<br />

1 Scalable and Generalized Neural Information Processing Engine, Download unter http://www.dkriesel.<br />

com/tech/snipe, Online-JavaDoc unter http://snipe.dkriesel.com


Fähigkeiten hat, als im Manuskript in Form von Praxistipps beschrieben werden kann<br />

(ich habe aber die Erfahrung gemacht, dass die allermeisten Implementierungsinteressen<br />

der Leser gut abgedeckt werden). Auf der Snipe-Downloadseite gibt es in der<br />

Rubrik „Loslegen mit Snipe“ eine einfache, schrittweise Einführung in Snipe und seine<br />

Dokumentation, sowie einige Beispiele.<br />

SNIPE: Dieses Manuskript integriert Snipe sehr stark. Über weite Teile des Manuskriptes hinweg<br />

finden sich abgesetzte, unterlegte Textstellen wie diese, aus denen hervorgeht, wie der gerade<br />

beschriebene Kontext in Snipe realisiert werden kann. Wer Snipe nicht nutzen möchte,<br />

muss also nur diese abgesetzten Textstellen überspringen! Die Snipe-Textstellen setzen<br />

voraus, dass man sich vorher die „Loslegen mit Snipe“-Anleitung auf der Downloadseite zu<br />

Gemüte geführt hat. Oftmals werden Klassennamen verwendet; da Snipe nicht sehr viele Java-<br />

Pakete hat, habe ich die Paketnamen der Übersichtlichkeit halber nicht den Klassennamen<br />

vorangestellt.<br />

Es ist einfach, diese Arbeit zu drucken<br />

Diese Ausarbeitung ist durchgehend farbig gehalten, kann jedoch auch so, wie sie ist<br />

monochrom gedruckt werden: Die Farben sind in Abbildungen, Tabellen und Text so<br />

gewählt, dass sie neben schönem Farbdesign auch einen hervorragenden Schwarz-Weiss-<br />

Kontrast ergeben.<br />

Es sind viele Hilfsmittel im Text integriert<br />

In das Dokument sind verschiedene Hilfsmittel direkt integriert, die das Lesen wesentlich<br />

flexibler machen sollen: Wer (wie ich) lieber auf Papier liest als am Bildschirm,<br />

soll sich trotzdem einiger Features erfreuen.<br />

Verschiedene Kapiteltypen sind im Inhalt gekennzeichnet<br />

Direkt im Inhaltsverzeichnis sind die Kapiteltypen gekennzeichnet. Kapitel, die als<br />

„wichtige Grundlagen“ gekennzeichnet sind, sollte man definitiv zu Anfang lesen, denn<br />

eigentlich alle nachfolgenden Kapitel basieren in irgendeiner Form darauf. Andere Kapitel<br />

basieren zusätzlich auf bestimmten anderen (vorherigen) Kapiteln, auch hier steht<br />

eine entsprechende Bemerkung im Inhaltsverzeichnis neben dem Kapiteltitel.


Sprechende Überschriften im Text, kürzere im Inhaltsverzeichnis<br />

Das ganze Scriptum ist nun mit sprechenden Überschriften durchzogen. Sprechende<br />

Überschriften sind nicht nur einfach ein Titel wie z.B. „Bestärkendes Lernen“, sondern<br />

definieren den Kernpunkt des zugehörigen Abschnitts: in diesem Fall „Bestärkendes<br />

Lernen gibt dem Netz Feedback, ob es sich gut oder schlecht verhält“. Die letztere,<br />

lange Version dient hierbei als Überschrift, die im Text verwendet wird, die kürzere<br />

steht im Inhaltsverzeichnis, so dass dieses griffig bleibt.<br />

Randbemerkungen sind eine Navigationshilfe<br />

Über das ganze Dokument hinweg existieren umgangssprachliche Randhinweise (siehe<br />

nebenstehendes Beispiel) , an denen entlang man (unter Mitbenutzung der Überschriften)<br />

durch den Text „gleiten“ und Textstellen einfach wiederfinden kann.<br />

Neue mathematische Symbole kennzeichne ich zum einfachen Wiederfinden mit besonderen<br />

Randhinweisen (nebenstehend ein Beispiel für x).<br />

Es gibt verschiedene Arten der Indizierung<br />

Es existieren verschiedene Arten der Indizierung: Zunächst kann man einen Begriff,<br />

nachdem man ihn im Index gefunden und die betreffende Seite aufgeschlagen hat,<br />

einfach finden, indem man nach hervorgehobenem Text sucht – indizierte Begriffe<br />

sind grundsätzlich auf diese Weise hervorgehoben.<br />

Kapitelübergreifende mathematische Symbole (wie z.B. Ω für ein Outputneuron, ich<br />

habe mich bemüht, bei allgegenwärtig wiederkehrenden Elementen eine konsistente Nomenklatur<br />

beizubehalten) besitzen eine eigene Indexkategorie unter „Mathematische<br />

Symbole“, so dass sie einfach dem entsprechenden Begriff zugeordnet werden können.<br />

Personennamen, welche in Kapitälchen geschrieben sind, werden in der Indexkategorie<br />

„Personen“ indiziert und nach Nachnamen geordnet.<br />

Nutzungsbedingungen und Lizenz<br />

Von der Epsilon-Edition an ist das Manuskript unter Creative Commons Attribution-<br />

No Derivative Works 3.0 Unported License 2 lizensiert, bis auf einige wenige Kleinteile,<br />

2 http://creativecommons.org/licenses/by-nd/3.0/


die liberaleren Lizenzen unterstehen (im Wesentlichen ein paar Bilder, die in den Wikimedia<br />

Commons sind). Hier ist eine Kurzzusammenfassung dessen, was diese Lizenz<br />

ungefähr wiedergibt:<br />

1. Dieses Dokument darf frei weiterverbreitet werden (auch wenn es eine bessere<br />

Idee ist, einfach die URL meiner Homepage weiterzuverbreiten, denn hier gibt es<br />

schließlich immer die neueste Version).<br />

2. Dieses Dokument darf nicht modifiziert oder als Teil eines anderen verwendet<br />

werden, insbesondere nicht für kommerzielle Zwecke.<br />

3. Dieses Dokument muss in jeglicher seiner Verwendungen dem Autor zugeschrieben<br />

werden. Die Urheberschaft des Autors darf nicht verschleiert werden.<br />

4. Die o.g. Zuschreibung des Dokumentes zum Autor impliziert nicht, dass der Autor<br />

die Art befürwortet, auf die ein beliebiger Leser das Dokument nutzt.<br />

Da ich kein Anwalt bin, ist die obige Stichpunktzusammenfassung nur informativ gemeint.<br />

Wenn sie in irgendeiner Form in Konflikt zur o.g. Creative Commons-Lizenz<br />

steht, so hat letztere in jedem Fall Vorrang. Natürlich berührt die Lizenz ebenfalls<br />

nicht den Source Code des Manuskripts, der nicht veröffentlicht wird.<br />

Wie dieser Text zitiert wird<br />

Da dieser Text keinen offiziellen Verlag hat, muss man mit Referenzen sorgfältig sein:<br />

Hierzu gibt es Informationen in Deutsch und Englisch auf meiner Homepage bzw. der<br />

zum Text gehörenden Unterseite 3 .<br />

Danksagung<br />

Ich möchte nun einige Danksagungen loswerden, da ein Skriptum wie dieses durchaus<br />

genug Arbeit macht, um viele Helfer zu benötigen. Zunächst einmal möchte ich mich bei<br />

den Korrektoren dieses Skriptums bedanken, welche mir und der Leserschaft sehr sehr<br />

geholfen haben. Genannt seien in alphabetischer Ordnung: Wolfgang Apolinarski, Kathrin<br />

Gräve, Paul Imhoff, Thomas Kühn, Christoph Kunze, Malte Lohmeyer, Joachim<br />

Nock, Daniel Plohmann, Daniel Rosenthal, Christian Schulz und Tobias Wilken.<br />

Vielen Dank für Verbesserungen, Feedback und Anmerkungen möchte ich auch den<br />

Lesern Dietmar Berger, Igor Buchmüller, Marie Christ, Julia Damaschek, Jochen Döll,<br />

3 http://www.dkriesel.com/science/neural_networks


Maximilian Ernestus, Hardy Falk, Anne Feldmeier, Sascha Fink, Andreas Friedmann,<br />

Jan Gassen, Markus Gerhards, Sebastian Hirsch, Andreas Hochrath, Nico Höft, Thomas<br />

Ihme, Boris Jentsch, Tim Hussein, Thilo Keller, Mario Krenn, Mirko Kunze, Maikel<br />

Linke, Adam Maciak, Benjamin Meier, David Möller, Andreas Müller, Rainer Penninger,<br />

Lena Reichel, Alexander Schier, Matthias Siegmund, Mathias Tirtasana, Oliver<br />

Tischler, Maximilian Voit, Igor Wall, Achim Weber, Frank Weinreis, Gideon Maillette<br />

de Buij Wenniger, Philipp Woock und vielen anderen aussprechen.<br />

Herzlicher Dank geht an Sebastian Merzbach, der die Epsilon2-Version des Skriptums<br />

auf gewissenhafteste und gründlichste Art und Weise auf Inkonsistenzen und Fehler<br />

durchgesehen hat. Insbesondere die englische Version verdankt ihm zusätzlich unzählige<br />

sprachliche und ortographische Verbesserungen.<br />

Ebenfalls danke ich Beate Kuhl ganz besonders für die Übersetzung des Skriptums<br />

vom Deutschen ins Englische und Nachfragen, die mich bewogen haben, einige Formulierungen<br />

anders zu gestalten.<br />

Ganz besonderen Dank möchte ich Prof. Rolf Eckmiller und Dr. Nils Goerke aussprechen,<br />

sowie der ganzen Abteilung Neuroinformatik des Instituts für Informatik der<br />

Universität Bonn – sie sorgten dafür, dass ich immer Neues über <strong>Neuronale</strong> <strong>Netze</strong> und<br />

Fachverwandtes lernte (und auch lernen musste). Insbesondere Herr Dr. Goerke war<br />

und ist immer bereit, auf jedwede Frage einzugehen, die ich mir während des Schreibens<br />

nicht selber beantworten konnte. Gespräche mit Prof. Eckmiller waren für mich immer<br />

bereichernd und gaben Anstoß für weitere Recherchen oder verleiteten mich, „von der<br />

Tafel zurückzutreten“, um Sachverhalte von weiter weg nüchtern zu betrachten und<br />

nächste Aufgaben auszumachen.<br />

Ganz global und nicht nur auf das Skriptum bezogen geht ein weiteres Dankeschön<br />

an meine Eltern, welche nie müde werden, mir fachbezogene und damit nicht wirklich<br />

preiswerte Buchwünsche zu erfüllen und mir auch sonst viel Unterstützung für mein<br />

Studium zukommen lassen.<br />

Für viele „Bemerkungen“ und die ganz besonders herzliche Stimmung ;-) bedanke<br />

ich mich sehr bei Andreas Huber und Tobias Treutler, mit denen es seit dem ersten<br />

Semester nur selten langweilig wurde!<br />

Ich möchte auch noch kurz an meine Schulzeit denken und mich bei jenen Lehrern ganz<br />

herzlich danken, die mir (das ist meine Überzeugung) trotz meiner vielleicht nicht<br />

immer vollherzigen Mitarbeit naturwissenschaftlich etwas mit auf den Weg gegeben<br />

haben: Herrn Wilfried Hartmann, Herrn Hubert Peters und Herrn Frank Nökel.<br />

Ein Dankeschön geht auch an die Wikimedia Commons, wo ich einige (wenige) Bildvorlagen<br />

entnommen und auf mein Skriptum angepasst habe.


Weiterhin danke ich der gesamten Mann- bzw. Frauschaft des Notariates Dr. Kemp<br />

Dr. Kolb aus Bonn, bei der ich mich immer gut aufgehoben fühle und die alles tut,<br />

damit sich meine Druckkosten im Rahmen halten - insbesondere seien hier erwähnt<br />

Christiane Flamme und Herr Dr. Kemp!<br />

Als letztes, und sozusagen als Ehrenplatz, möchte ich aber zwei Personen danken, die<br />

sich sehr um das Skriptum verdient machen: Meine Freundin Verena Thomas, die,<br />

obwohl viele andere Dinge für sie zu tun sind, viele mathematische und logische Fehler<br />

in meinem Skriptum aufgedeckt und mit mir diskutiert hat – und Christiane Schultze,<br />

die das Skript sorgfältigst auf Rechtschreibfehler und Inkonsistenzen durchgesehen<br />

hat.<br />

David <strong>Kriesel</strong>


Inhaltsverzeichnis<br />

Vorwörtchen v<br />

I Von der Biologie zur Formalisierung – Motivation, Philosophie, Geschichte<br />

und Realisierung <strong>Neuronale</strong>r Modelle 1<br />

1 Einleitung, Motivation und Geschichte 3<br />

1.1 Warum <strong>Neuronale</strong> <strong>Netze</strong>? . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

1.1.1 Die 100-Schritt-Regel . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

1.1.2 Einfache Anwendungsbeispiele . . . . . . . . . . . . . . . . . . . 6<br />

1.2 Geschichte <strong>Neuronale</strong>r <strong>Netze</strong> . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

1.2.1 Anfänge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

1.2.2 Blütezeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

1.2.3 Lange Stille und langsamer Wiederaufbau . . . . . . . . . . . . . 13<br />

1.2.4 Renaissance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

2 Biologische <strong>Neuronale</strong> <strong>Netze</strong> 17<br />

2.1 Das Nervensystem von Wirbeltieren . . . . . . . . . . . . . . . . . . . . 17<br />

2.1.1 Peripheres und zentrales Nervensystem . . . . . . . . . . . . . . . 18<br />

2.1.2 Großhirn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

2.1.3 Kleinhirn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

2.1.4 Zwischenhirn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

2.1.5 Hirnstamm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

2.2 Das Neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

2.2.1 Bestandteile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

2.2.2 Elektrochemische Vorgänge im Neuron . . . . . . . . . . . . . . . 24<br />

2.3 Rezeptorzellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

2.3.1 Arten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

2.3.2 Informationsverarbeitung im Nervensystem . . . . . . . . . . . . 31<br />

2.3.3 Lichtsinnesorgane . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

2.4 Neuronenmengen in Lebewesen . . . . . . . . . . . . . . . . . . . . . . . 35<br />

xiii


2.5 Technische Neuronen als Karikatur der Biologie . . . . . . . . . . . . . . 37<br />

Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />

3 Bausteine künstlicher <strong>Neuronale</strong>r <strong>Netze</strong> (wichtige Grundlagen) 41<br />

3.1 Der Zeitbegriff bei <strong>Neuronale</strong>n <strong>Netze</strong>n . . . . . . . . . . . . . . . . . . . 41<br />

3.2 Bestandteile <strong>Neuronale</strong>r <strong>Netze</strong> . . . . . . . . . . . . . . . . . . . . . . . 42<br />

3.2.1 Verbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

3.2.2 Propagierungsfunktion und <strong>Netze</strong>ingabe . . . . . . . . . . . . . . 44<br />

3.2.3 Aktivierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45<br />

3.2.4 Schwellenwert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45<br />

3.2.5 Aktivierungsfunktion . . . . . . . . . . . . . . . . . . . . . . . . . 45<br />

3.2.6 Gängige Aktivierungsfunktionen . . . . . . . . . . . . . . . . . . 46<br />

3.2.7 Ausgabefunktion . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

3.2.8 Lernverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />

3.3 Verschiedene Netztopologien . . . . . . . . . . . . . . . . . . . . . . . . . 49<br />

3.3.1 FeedForward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />

3.3.2 Rückgekoppelte <strong>Netze</strong> . . . . . . . . . . . . . . . . . . . . . . . . 50<br />

3.3.3 Vollständig verbundene <strong>Netze</strong> . . . . . . . . . . . . . . . . . . . . 56<br />

3.4 Das Biasneuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

3.5 Darstellung von Neuronen . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

3.6 Aktivierungsreihenfolgen . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

3.6.1 Synchrone Aktivierung . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

3.6.2 Asynchrone Aktivierung . . . . . . . . . . . . . . . . . . . . . . . 60<br />

3.7 Ein- und Ausgabe von Daten . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62<br />

4 Grundlagen zu Lernprozess und Trainingsbeispielen (wichtige Grundlagen) 65<br />

4.1 Paradigmen des Lernens . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />

4.1.1 Unüberwachtes Lernen . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

4.1.2 Bestärkendes Lernen . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

4.1.3 Überwachtes lernen . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

4.1.4 Offline oder Online lernen? . . . . . . . . . . . . . . . . . . . . . 68<br />

4.1.5 Fragen im Vorhinein . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

4.2 Trainingsmuster und Teaching Input . . . . . . . . . . . . . . . . . . . . 70<br />

4.3 Umgang mit Trainingsbeispielen . . . . . . . . . . . . . . . . . . . . . . 71<br />

4.3.1 Aufteilung der Trainingsmenge . . . . . . . . . . . . . . . . . . . 73<br />

4.3.2 Reihenfolgen der Musterpräsentation . . . . . . . . . . . . . . . . 74<br />

4.4 Lernkurve und Fehlermessung . . . . . . . . . . . . . . . . . . . . . . . . 74<br />

4.4.1 Wann hört man auf zu lernen? . . . . . . . . . . . . . . . . . . . 77


4.5 Gradientenbasierte Optimierungsverfahren . . . . . . . . . . . . . . . . . 78<br />

4.5.1 Probleme von Gradientenverfahren . . . . . . . . . . . . . . . . . 80<br />

4.6 Beispielproblemstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />

4.6.1 Boolesche Funktionen . . . . . . . . . . . . . . . . . . . . . . . . 81<br />

4.6.2 Die Paritätsfunktion . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />

4.6.3 Das 2-Spiralen-Problem . . . . . . . . . . . . . . . . . . . . . . . 82<br />

4.6.4 Das Schachbrettproblem . . . . . . . . . . . . . . . . . . . . . . . 83<br />

4.6.5 Die Identitätsfunktion . . . . . . . . . . . . . . . . . . . . . . . . 83<br />

4.6.6 Weitere Beispielproblemstellungen . . . . . . . . . . . . . . . . . 84<br />

4.7 Hebbsche Lernregel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />

4.7.1 Urform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />

4.7.2 Verallgemeinerte Form . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

II Überwacht lernende Netzparadigmen 87<br />

5 Das Perceptron, Backpropagation und seine Varianten 89<br />

5.1 Das Singlelayerperceptron . . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />

5.1.1 Perceptron-Lernalgorithmus und Konvergenz-Theorem . . . . . . 95<br />

5.1.2 Delta-Regel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95<br />

5.2 Lineare Separierbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

5.3 Das Multilayerperceptron . . . . . . . . . . . . . . . . . . . . . . . . . . 105<br />

5.4 Backpropagation of Error . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

5.4.1 Herleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110<br />

5.4.2 Reduktion von Backpropagation auf Delta-Regel . . . . . . . . . 115<br />

5.4.3 Wahl der Lernrate . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br />

5.5 Resilient Backpropagation . . . . . . . . . . . . . . . . . . . . . . . . . . 117<br />

5.5.1 Änderung der Gewichte . . . . . . . . . . . . . . . . . . . . . . . 118<br />

5.5.2 Dynamische Lernraten-Anpassung . . . . . . . . . . . . . . . . . 119<br />

5.5.3 Rprop in der Praxis . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />

5.6 Mehr Variationen und Erweiterungen zu Backpropagation . . . . . . . . 121<br />

5.6.1 Momentum-Term . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

5.6.2 Flat Spot Elimination . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

5.6.3 Second Order Backpropagation . . . . . . . . . . . . . . . . . . . 123<br />

5.6.4 Weight Decay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124<br />

5.6.5 Pruning und Optimal Brain Damage . . . . . . . . . . . . . . . . 124<br />

5.7 Initialkonfiguration eines Multilayerperceptrons . . . . . . . . . . . . . . 125<br />

5.7.1 Anzahl der Schichten . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

5.7.2 Anzahl der Neurone . . . . . . . . . . . . . . . . . . . . . . . . . 126


5.7.3 Wahl der Aktivierungsfunktion . . . . . . . . . . . . . . . . . . . 127<br />

5.7.4 Initialisierung der Gewichte . . . . . . . . . . . . . . . . . . . . . 128<br />

5.8 Das 8-3-8-Kodierungsproblem und verwandte Probleme . . . . . . . . . 128<br />

Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130<br />

6 Radiale Basisfunktionen 133<br />

6.1 Bestandteile und Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . 133<br />

6.2 Informationsverarbeitung eines RBF-<strong>Netze</strong>s . . . . . . . . . . . . . . . . 135<br />

6.2.1 Informationsverarbeitung in den RBF-Neuronen . . . . . . . . . 137<br />

6.2.2 Analytische Gedanken im Vorfeld zum Training . . . . . . . . . . 140<br />

6.3 Training von RBF-<strong>Netze</strong>n . . . . . . . . . . . . . . . . . . . . . . . . . . 144<br />

6.3.1 Zentren und Breiten von RBF-Neuronen . . . . . . . . . . . . . . 145<br />

6.4 Wachsende RBF-<strong>Netze</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149<br />

6.4.1 Hinzufügen von Neuronen . . . . . . . . . . . . . . . . . . . . . . 149<br />

6.4.2 Begrenzung der Neuronenanzahl . . . . . . . . . . . . . . . . . . 150<br />

6.4.3 Entfernen von Neuronen . . . . . . . . . . . . . . . . . . . . . . . 150<br />

6.5 Gegenüberstellung von RBF-<strong>Netze</strong>n und Multilayerperceptrons . . . . . 150<br />

Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151<br />

7 Rückgekoppelte <strong>Netze</strong> (baut auf Kap. 5 auf) 153<br />

7.1 Jordannetze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154<br />

7.2 Elmannetze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156<br />

7.3 Training rückgekoppelter <strong>Netze</strong> . . . . . . . . . . . . . . . . . . . . . . . 157<br />

7.3.1 Unfolding in Time . . . . . . . . . . . . . . . . . . . . . . . . . . 157<br />

7.3.2 Teacher Forcing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158<br />

7.3.3 Rekurrentes Backpropagation . . . . . . . . . . . . . . . . . . . . 160<br />

7.3.4 Training mit Evolution . . . . . . . . . . . . . . . . . . . . . . . . 160<br />

8 Hopfieldnetze 161<br />

8.1 Inspiration durch Magnetismus . . . . . . . . . . . . . . . . . . . . . . . 161<br />

8.2 Aufbau und Funktionsweise . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

8.2.1 Eingabe und Ausgabe eines Hopfieldnetzes . . . . . . . . . . . . 163<br />

8.2.2 Bedeutung der Gewichte . . . . . . . . . . . . . . . . . . . . . . . 163<br />

8.2.3 Zustandswechsel der Neurone . . . . . . . . . . . . . . . . . . . . 164<br />

8.3 Erzeugen der Gewichtsmatrix . . . . . . . . . . . . . . . . . . . . . . . . 165<br />

8.4 Autoassoziation und traditionelle Anwendung . . . . . . . . . . . . . . . 167<br />

8.5 Heteroassoziation und Analogien zur neuronalen Datenspeicherung . . . 167<br />

8.5.1 Erzeugung der Heteroassoziationsmatrix . . . . . . . . . . . . . . 169<br />

8.5.2 Stabilisierung der Heteroassoziationen . . . . . . . . . . . . . . . 170<br />

8.5.3 Biologische Motivation der Heteroassoziation . . . . . . . . . . . 171


8.6 Kontinuierliche Hopfieldnetze . . . . . . . . . . . . . . . . . . . . . . . . 171<br />

Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

9 Learning Vector Quantization 173<br />

9.1 Über Quantisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173<br />

9.2 Zielsetzung von LVQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174<br />

9.3 Benutzung von Codebookvektoren . . . . . . . . . . . . . . . . . . . . . 175<br />

9.4 Ausrichtung der Codebookvektoren . . . . . . . . . . . . . . . . . . . . . 176<br />

9.4.1 Vorgehensweise beim Lernen . . . . . . . . . . . . . . . . . . . . 176<br />

9.5 Verbindung zu <strong>Neuronale</strong>n <strong>Netze</strong>n . . . . . . . . . . . . . . . . . . . . . 178<br />

Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178<br />

III Unüberwacht lernende Netzparadigmen 179<br />

10 Self Organizing Feature Maps 181<br />

10.1 Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182<br />

10.2 Funktionsweise und Ausgabeinterpretation . . . . . . . . . . . . . . . . . 183<br />

10.3 Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184<br />

10.3.1 Die Topologiefunktion . . . . . . . . . . . . . . . . . . . . . . . . 185<br />

10.3.2 Monoton sinkende Lernrate und Nachbarschaft . . . . . . . . . . 187<br />

10.4 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189<br />

10.4.1 Topologische Defekte . . . . . . . . . . . . . . . . . . . . . . . . . 192<br />

10.5 Auflösungsdosierung und ortsabhängige Lernrate . . . . . . . . . . . . . 192<br />

10.6 Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195<br />

10.6.1 Zusammenspiel mit RBF-<strong>Netze</strong>n . . . . . . . . . . . . . . . . . . 197<br />

10.7 Variationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198<br />

10.7.1 <strong>Neuronale</strong>s Gas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198<br />

10.7.2 Multi-SOMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200<br />

10.7.3 Multi-<strong>Neuronale</strong>s Gas . . . . . . . . . . . . . . . . . . . . . . . . 200<br />

10.7.4 Wachsendes <strong>Neuronale</strong>s Gas . . . . . . . . . . . . . . . . . . . . . 201<br />

Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202<br />

11 Adaptive Resonance Theory 203<br />

11.1 Aufgabe und Struktur eines ART-<strong>Netze</strong>s . . . . . . . . . . . . . . . . . . 203<br />

11.1.1 Resonanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204<br />

11.2 Lernvorgang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205<br />

11.2.1 Mustereingabe und Top-Down-Lernen . . . . . . . . . . . . . . . 205<br />

11.2.2 Resonanz und Bottom-Up-Lernen . . . . . . . . . . . . . . . . . . 205<br />

11.2.3 Hinzufügen eines Ausgabeneurons . . . . . . . . . . . . . . . . . 205


11.3 Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206<br />

IV Exkurse, Anhänge und Register 209<br />

A Exkurs: Clusteranalyse und Regional and Online Learnable Fields 211<br />

A.1 k-Means Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212<br />

A.2 k-Nearest Neighbouring . . . . . . . . . . . . . . . . . . . . . . . . . . . 213<br />

A.3 ε-Nearest Neighbouring . . . . . . . . . . . . . . . . . . . . . . . . . . . 213<br />

A.4 Der Silhouettenkoeffizient . . . . . . . . . . . . . . . . . . . . . . . . . . 214<br />

A.5 Regional and Online Learnable Fields . . . . . . . . . . . . . . . . . . . 216<br />

A.5.1 Aufbau eines ROLFs . . . . . . . . . . . . . . . . . . . . . . . . . 217<br />

A.5.2 Training eines ROLFs . . . . . . . . . . . . . . . . . . . . . . . . 218<br />

A.5.3 Auswertung eines ROLFs . . . . . . . . . . . . . . . . . . . . . . 221<br />

A.5.4 Vergleich mit populären Clusteringverfahren . . . . . . . . . . . . 221<br />

A.5.5 Initialisierung von Radien, Lernraten und Multiplikator . . . . . 223<br />

A.5.6 Anwendungsbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . 223<br />

Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224<br />

B Exkurs: <strong>Neuronale</strong> <strong>Netze</strong> zur Vorhersage 225<br />

B.1 Über Zeitreihen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225<br />

B.2 One Step Ahead Prediction . . . . . . . . . . . . . . . . . . . . . . . . . 228<br />

B.3 Two Step Ahead Prediction . . . . . . . . . . . . . . . . . . . . . . . . . 230<br />

B.3.1 Rekursive Two Step Ahead Prediction . . . . . . . . . . . . . . . 230<br />

B.3.2 Direkte Two Step Ahead Prediction . . . . . . . . . . . . . . . . 230<br />

B.4 Weitere Optimierungsansätze für die Prediction . . . . . . . . . . . . . . 231<br />

B.4.1 Veränderung zeitlicher Parameter . . . . . . . . . . . . . . . . . . 231<br />

B.4.2 Heterogene Prediction . . . . . . . . . . . . . . . . . . . . . . . . 232<br />

B.5 Bemerkungen zur Vorhersage von Aktienkursen . . . . . . . . . . . . . . 233<br />

C Exkurs: Reinforcement Learning 235<br />

C.1 Systemaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236<br />

C.1.1 Die Gridworld . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237<br />

C.1.2 Agent und Umwelt . . . . . . . . . . . . . . . . . . . . . . . . . . 238<br />

C.1.3 Zustände, Situationen und Aktionen . . . . . . . . . . . . . . . . 239<br />

C.1.4 Reward und Return . . . . . . . . . . . . . . . . . . . . . . . . . 241<br />

C.1.5 Die Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242<br />

C.2 Lernvorgang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244<br />

C.2.1 Strategien zur Rewardvergabe . . . . . . . . . . . . . . . . . . . . 245<br />

C.2.2 Die State-Value-Funktion . . . . . . . . . . . . . . . . . . . . . . 246


C.2.3 Montecarlo-Methodik . . . . . . . . . . . . . . . . . . . . . . . . 249<br />

C.2.4 Temporal Difference Learning . . . . . . . . . . . . . . . . . . . . 251<br />

C.2.5 Die Action-Value-Funktion . . . . . . . . . . . . . . . . . . . . . 252<br />

C.2.6 Q-Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253<br />

C.3 Beispielanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254<br />

C.3.1 TD-Gammon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254<br />

C.3.2 Das Auto in der Grube . . . . . . . . . . . . . . . . . . . . . . . 255<br />

C.3.3 Der Pole Balancer . . . . . . . . . . . . . . . . . . . . . . . . . . 255<br />

C.4 Reinforcement Learning im Zusammenhang mit <strong>Neuronale</strong>n <strong>Netze</strong>n . . . 256<br />

Übungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257<br />

Literaturverzeichnis 259<br />

Abbildungsverzeichnis 265<br />

Index 269


Teil I<br />

Von der Biologie zur Formalisierung<br />

– Motivation, Philosophie,<br />

Geschichte und Realisierung<br />

<strong>Neuronale</strong>r Modelle<br />

1


Kapitel 1<br />

Einleitung, Motivation und Geschichte<br />

Wie kann man dem Computer etwas beibringen? Entweder, indem man ein<br />

starres Programm schreibt – oder, indem man ihm das Lernen ermöglicht.<br />

Lebende Wesen haben keinen Programmierer, der ihnen ein Programm für ihre<br />

Fähigkeiten schreibt, welches nur ausgeführt werden muss. Sie lernen – ohne<br />

Vorkenntnisse durch Eindrücke von außen – selber und kommen damit zu<br />

besseren Problemlösungen als jeder heutige Computer. Kann man solches<br />

Verhalten auch bei Maschinen wie Computern erreichen? Können wir solche<br />

Kognition von der Biologie adaptieren? Geschichte, Entwicklung, Niedergang<br />

und Wiederauferstehung eines großen Ansatzes, Probleme zu lösen.<br />

1.1 Warum <strong>Neuronale</strong> <strong>Netze</strong>?<br />

Es gibt Kategorien von Problemen, welche sich nicht in einen Algorithmus fassen lassen<br />

– Probleme, die von einer großen Menge subtiler Faktoren abhängen, wie zum<br />

Beispiel die Bestimmung des Kaufpreises einer Immobilie, den wir mit unserem Gehirn<br />

(ungefähr) bestimmen können, ein Computer in Ermangelung eines Algorithmus<br />

aber nicht. Darum muss man sich die Frage stellen: Wie lernen wir denn, auf solche<br />

Fragestellungen einzugehen?<br />

Genau – wir lernen; eine Fähigkeit, an der es Computern offensichtlich mangelt . Menschen<br />

haben ein Gehirn mit der Fähigkeit zu lernen, Computer einige Recheneinheiten<br />

und Speicher. Diese ermöglichen, in kürzester Zeit komplizierteste numerische Berechnungen<br />

auszuführen, bieten uns jedoch keine Lernfähigkeit. Stellen wir Computer und<br />

3


Gehirn Computer<br />

Anzahl Recheneinheiten ≈ 1011 ≈ 109 Art Recheneinheiten Neurone Transistoren<br />

Art der Berechnung massiv parallel i.d.R. seriell<br />

Datenspeicherung assoziativ adressbasiert<br />

Schaltzeit ≈ 10−3s ≈ 10−9s Theoretische Schaltvorgänge<br />

Tatsächliche Schaltvorgänge<br />

≈ 1013 1<br />

s<br />

≈ 1012 1<br />

s<br />

≈ 1018 1<br />

s<br />

≈ 10 10 1<br />

s<br />

Tabelle 1.1: Der (hinkende) Vergleich zwischen Gehirn und Rechner auf einen Blick. Vorlage:<br />

[Zel94]<br />

Gehirn gegenüber 1 , so bemerken wir, dass der Computer theoretisch leistungsfähiger<br />

sein müsste: Er besitzt 10 9 Transistoren mit einer Schaltzeit von 10 −9 Sekunden. Das<br />

Gehirn hat zwar 10 11 Neurone, jedoch schalten diese nur in etwa 10 −3 Sekunden.<br />

Allerdings arbeitet der größte Teil des Gehirns durchgehend, während wiederum der<br />

größte Teil des Computers nur passiv Daten speichert. So arbeitet das Gehirn parallel<br />

und damit nahe an seiner theoretischen Maximalleistung, der Computer ist von<br />

dieser jedoch um Zehnerpotenzen entfernt (Tabelle 1.1). Zudem ist ein Computer in<br />

sich statisch - das Gehirn als biologisches <strong>Neuronale</strong>s Netz kann sich jedoch während<br />

seiner „Laufzeit“ umstrukturieren und so lernen, Fehler kompensieren und mehr.<br />

Innerhalb dieser Arbeit möchte ich skizzieren, wie man sich solche Eigenschaften des<br />

Gehirns auch am Computer zunutze macht.<br />

Das Studium der Künstlichen <strong>Neuronale</strong>n <strong>Netze</strong> ist also motiviert durch die Ähnlichkeit<br />

zu erfolgreich arbeitenden biologischen Systemen, welche im Vergleich zum Gesamtsystem<br />

aus sehr einfachen , aber dafür vielen und massiv parallel arbeitenden Nervenzellen<br />

bestehen und (das ist wohl einer der bedeutendsten Aspekte) Lernfähigkeit besitzen.<br />

Ein <strong>Neuronale</strong>s Netz muss nicht explizit für seine Aufgaben programmiert werden, es<br />

kann beispielsweise aus Trainingsbeispielen lernen oder auch durch Bestärkung, sozusagen<br />

durch Zuckerbrot und Peitsche (Reinforcement Learning).<br />

Ein aus dem Lernvorgang resultierender Aspekt ist die Generalisierungs- bzw. Assoziationsfähigkeit<br />

<strong>Neuronale</strong>r <strong>Netze</strong>: Nach erfolgreichem Training kann ein Neu-<br />

1 Diese Gegenüberstellung ist natürlich aus vielen naheliegenden Gründen bei Biologen wie Informatikern<br />

umstritten, da Schaltzeit und Menge nichts über Qualität und Leistung der Recheneinheiten aussagt und<br />

Neurone und Transistoren auch nicht direkt vergleichbar sind. Dennoch erfüllt die Gegenüberstellung den<br />

Zweck, den Vorteil der Parallelität anhand der Verarbeitungszeit aufzuzeigen.


onales Netz ähnliche Probleme derselben Klasse, die nicht explizit trainiert wurden,<br />

plausiblen Lösungen zuführen. Daraus resultiert dann wieder eine große Fehlertoleranz<br />

gegenüber verrauschten Eingabedaten.<br />

Fehlertoleranz steht wieder in enger Beziehung zu biologischen <strong>Neuronale</strong>n <strong>Netze</strong>n, bei<br />

denen diese Eigenschaft sehr ausgeprägt ist: Wie schon bemerkt, hat ein Mensch ca.<br />

10 11 Neurone, die sich aber kontinuierlich umstrukturieren oder durch Einflüsse von außen<br />

umstrukturiert werden (bei einem Vollrausch verliert ein Mensch ca. 10 5 Neurone,<br />

auch bestimmte Arten Nahrungsmittel oder Umwelteinflüsse zerstören Gehirnzellen) –<br />

trotzdem wird unsere Kognitionsfähigkeit nicht wesentlich beeinträchtigt. Das Gehirn<br />

ist also tolerant gegenüber inneren Fehlern – und auch gegenüber Fehlern von außen,<br />

denn so manche „Sauklaue“ können wir immer noch lesen, obwohl einzelne Buchstaben<br />

vielleicht gar nicht wirklich auszumachen sind.<br />

Unsere moderne Technologie hingegen ist noch nicht automatisch fehlertolerant – mir<br />

ist noch kein Computer bekannt, in dem jemand vergessen hat, den Festplattencontroller<br />

einzubauen, weshalb die Grafikkarte automatisch dessen Job übernimmt, Leiterbahnen<br />

ausbaut und Kommunikation entwickelt, so dass der fehlende Baustein das<br />

Gesamtsystem nur wenig beeinträchtigt, aber auf keinen Fall völlig lahmlegt.<br />

Nachteil dieser verteilten, fehlertoleranten Speicherung ist natürlich, dass wir einem<br />

<strong>Neuronale</strong>n Netz nicht ohne weiteres ansehen können, was es weiß, kann oder wo seine<br />

Fehler liegen – Analysen dieser Art sind bei herkömmlichen Algorithmen in der Regel<br />

wesentlich leichter. Auch bekommen wir das Wissen in unser <strong>Neuronale</strong>s Netz meistens<br />

nur durch einen Lernvorgang, bei dem verschiedene Fehler passieren können und der<br />

nicht immer einfach zu handhaben ist.<br />

Fehlertoleranz von Daten ist bei der aktuellen Technologie schon wesentlich ausgereifter:<br />

Vergleichen wir eine Schallplatte mit einer CD. Ist auf der Schallplatte ein Kratzer,<br />

so ist die Toninformation an der Stelle des Kratzers für einen winzigen Moment komplett<br />

verloren (man hört ein Knacken), danach geht die Musik weiter. Bei einer CD<br />

sind die Audiodaten verteilt gespeichert: Ein Kratzer sorgt für einen unschärferen Ton<br />

in seiner näheren Umgebung, der Datenstrom an sich bleibt aber weitestgehend unbeeinträchtigt<br />

– mit der Folge, dass der Hörer ihn nicht bemerkt.<br />

Wir halten also die herausragenden Merkmale fest, die wir aus der Biologie zu adaptieren<br />

versuchen:<br />

⊲ Selbstorganisation bzw. Lernfähigkeit,<br />

⊲ Generalisierungsfähigkeit und<br />

⊲ Fehlertoleranz.


Welche Arten von <strong>Neuronale</strong>n <strong>Netze</strong>n welche Fähigkeiten besonders stark ausbilden,<br />

welche für was für Problemklassen nutzbar sind, werden wir im Verlauf dieser Arbeit<br />

noch herausfinden.<br />

Direkt im Einleitungskapitel dieser Arbeit sei gesagt: „Das <strong>Neuronale</strong> Netz“ gibt es<br />

so nicht. Es gibt viele verschiedene Paradigmen, was <strong>Neuronale</strong> <strong>Netze</strong> sind, wie sie<br />

trainiert und wo sie eingesetzt werden – und mein Ziel ist es, einige dieser Paradigmen<br />

anschaulich vorzustellen und mit Bemerkungen für die praktische Anwendung zu<br />

versehen.<br />

Oben haben wir bereits erwähnt, dass die Arbeit z.B. unseres Gehirns im Gegensatz zur<br />

Arbeit eines Computers massiv parallel stattfindet, also jeder Baustein zu jeder Zeit<br />

aktiv ist. Möchte man nun ein Argument für den Nutzen massiver Parallelverarbeitung<br />

anführen, so wird oft die 100-Schritt-Regel genannt.<br />

1.1.1 Die 100-Schritt-Regel<br />

Durch Experimente hat man festgestellt, dass ein Mensch ein Bild eines bekannten<br />

Gegenstandes bzw. einer bekannten Person in ≈ 0.1 Sekunden erkennen kann, also<br />

bei einer Neuronenschaltzeit von ≈ 10 −3 Sekunden in ≈ 100 diskreten Zeitschritten<br />

paralleler Verarbeitung.<br />

Ein der Von-Neumann-Architektur folgender Rechner hingegen kann in 100 Zeitschritten<br />

sequentieller Verarbeitung, also beispielsweise 100 Assemblerschritten oder Taktschritten,<br />

so gut wie nichts tun.<br />

Nun wollen wir ein einfaches Anwendungsbeispiel betrachten, bei dem ein <strong>Neuronale</strong>s<br />

Netz zum Einsatz kommen könnte.<br />

1.1.2 Einfache Anwendungsbeispiele<br />

Angenommen, wir besitzen einen kleinen Roboter wie in Abb. 1.1 auf der rechten Seite.<br />

Dieser Roboter besitzt acht Abstandssensoren, aus denen er Eingabedaten gewinnt:<br />

Drei Sensoren vorne rechts, weitere drei vorne links, und zwei hinten. Jeder dieser<br />

Sensoren liefert uns zu jeder Zeit einen reellen Zahlenwert, wir erhalten also immer<br />

einen Input I ∈ R 8 .<br />

In unserem einfachen Beispiel kann der Roboter trotz seiner zwei Motoren (die brauchen<br />

wir später) noch nicht viel: Er soll einfach immer fahren, aber anhalten, wenn<br />

er Gefahr läuft an ein Hindernis zu stoßen. Unser Output ist also binär: H = 0 für


Abbildung 1.1: Ein kleiner Roboter mit acht Sensoren und zwei Motoren. Der Pfeil zeigt die<br />

Fahrtrichtung an.<br />

„Alles okay, fahr weiter“ und H = 1 für „Halte an“ (Wir nennen den Output H für<br />

„Haltesignal“). Wir benötigen also eine Abbildung<br />

f : R 8 → B 1 ,<br />

welche die Inputsignale einer Robotertätigkeit zuführt.<br />

1.1.2.1 Der klassische Weg<br />

Es gibt nun zwei Wege, diese Abbildung zu realisieren. Zum einen gibt es den klassischen<br />

Weg: Wir setzen uns eine Weile hin und denken nach, so dass wir am Ende eine<br />

Schaltung oder ein kleines Computerprogramm erhalten, dass die Abbildung realisiert<br />

(bei der Einfachheit des Beispieles ist das natürlich ohne weiteres möglich). Anschließend<br />

nehmen wir die technischen Referenzen der Sensoren zur Hand, studieren die<br />

Kennlinie der Sensoren, um zu wissen, was für Werte bei welchen Hindernisentfernungen<br />

ausgegeben werden, und binden die Werte in unser oben gebautes Regelwerk ein.<br />

Solche Verfahren finden in der klassischen Künstlichen Intelligenz Anwendung, und<br />

falls man die Regeln für eine Abbildung exakt kennt, ist man auch gut beraten, diesem<br />

Schema zu folgen.


Abbildung 1.2: Der Roboter wird in eine Landschaft platziert, die ihm Sensorwerte für verschiedene<br />

Situationen liefert. Die gewünschten Ausgabewerte H geben wir selbst hinzu, und erhalten so unsere<br />

Lernbeispiele. Bei zwei Robotern sind exemplarisch die Richtungen aufgetragen, in die die Sensoren<br />

weisen.<br />

1.1.2.2 Der Weg des Lernens<br />

Für uns hier interessanter und für viele Abbildungen und Probleme, welche nicht auf<br />

Anhieb erfassbar sind, auch erfolgreicher ist aber der Weg des Lernens: Wir zeigen dem<br />

Roboter verschiedene Situationen (Abb. 1.2), in denen er sich beispielsweise befinden<br />

kann – und er soll selbst lernen, was in seinem Roboterleben zu tun ist.<br />

In diesem Beispiel soll er einfach lernen, wann anzuhalten ist. Wir stellen uns hierzu<br />

erst einmal das <strong>Neuronale</strong> Netz als eine Art Black Box (Abb. 1.3 auf der rechten Seite)<br />

vor, kennen also nicht seinen Aufbau, sondern betrachten es rein in seinem Verhalten<br />

nach außen.<br />

Die Situationen in Form von einfach gemessenen Sensorwerten (wir stellen den Roboter<br />

z.B. einfach vor ein Hindernis, siehe Abbildung), die wir dem Roboter zeigen<br />

und für die wir ihm vorgeben, ob weiterzufahren oder zu halten ist, nennen wir Trainingsbeispiele<br />

– ein Trainingsbeispiel besteht also aus einem beispielhaften Input und<br />

einem dazugehörigen gewünschten Output. Die Frage ist nun, wie wir dieses Wissen,<br />

die Information, in das <strong>Neuronale</strong> Netz transportieren.


Abbildung 1.3: Wir betrachten die Robotersteuerung zunächst als Black Box, deren Innenleben<br />

uns unbekannt ist. Die Black Box nimmt einfach acht reelle Sensorwerte entgegen und bildet diese<br />

auf einen binären Ausgabewert ab.<br />

Die Beispiele lassen sich durch ein einfaches Lernverfahren einem <strong>Neuronale</strong>n Netz<br />

beibringen (ein Lernverfahren ist ein einfacher Algorithmus bzw. eine mathematische<br />

Formel). Hier wird das <strong>Neuronale</strong> Netz, wenn wir alles richtig gemacht und gute Beispiele<br />

gewählt haben, aus den Beispielen generalisieren und so eine allgemeingültige<br />

Vorschrift finden, wann anzuhalten ist.<br />

Unser Beispiel ist beliebig erweiterbar – die Motoren unseres Roboters könnten auch<br />

zwecks Richtungssteuerung separat steuerbar sein 2 , bei ansonsten gleichem Sensorlayout.<br />

In diesem Fall suchen wir eine Abbildung<br />

f : R 8 → R 2 ,<br />

welche die beiden Motoren anhand der Sensorinputs stufenlos steuert und so den Roboter<br />

z.B. nicht nur anhalten, sondern auch Hindernissen ausweichen lassen kann – hier<br />

ist es schon schwieriger, aus dem Kopf Regeln abzuleiten, und de facto ein <strong>Neuronale</strong>s<br />

Netz angebrachter.<br />

Ziel ist es also nicht etwa, die Beispiele auswendig zu lernen – sondern das Prinzip<br />

dahinter zu realisieren: Der Roboter soll das <strong>Neuronale</strong> Netz im Idealfall in beliebigen<br />

Situationen anwenden und Hindernissen ausweichen können. Insbesondere soll der<br />

Roboter das Netz während des Fahrens kontinuierlich bzw. oft direkt hintereinander<br />

befragen können, um kontinuierlich Hindernissen auszuweichen. Dies ergibt einen ständigen<br />

Kreislauf: Der Roboter befragt das Netz. Er fährt dadurch in eine Richtung,<br />

wodurch sich seine Sensorwerte verändern. Er befragt wieder das Netz und verändert<br />

abermals seine Position, die Sensorwerte verändern sich erneut, und so weiter. Dass<br />

2 Es gibt einen Roboter namens Khepera, der in etwa diese Eigenschaften besitzt. Er ist rund, hat ca. 7cm<br />

Durchmesser, besitzt zwei Motoren mit Rädern und verschiedene Sensoren. Zur Veranschaulichung kann<br />

ich nur empfehlen, einmal im Internet danach zu recherchieren.


Abbildung 1.4: Einige Urgesteine des Fachbereichs der <strong>Neuronale</strong>n <strong>Netze</strong>. Von links nach rechts:<br />

John von Neumann, Donald O. Hebb, Marvin Minsky, Bernard Widrow, Seymour Papert, Teuvo<br />

Kohonen, John Hopfield, alle weitestgehend „in order of appearance“.<br />

sich dieses System auch auf dynamische, das heißt sich selbst verändernde Umwelten<br />

(z.B. bewegte Hindernisse in unserem Beispiel) adaptieren lässt, ist ersichtlich.<br />

1.2 Zur Geschichte <strong>Neuronale</strong>r <strong>Netze</strong><br />

Wie jedes Naturwissenschaftliche Gebiet hat auch die Lehre der <strong>Neuronale</strong>n <strong>Netze</strong> eine<br />

Entwicklungsgeschichte hinter sich, welche, wie wir gleich sehen werden, Höhen und<br />

Tiefen aufweist. Dem Stil meiner Arbeit treu bleibend stelle ich diese Geschichte nicht<br />

als Text, sondern kompakter als Zeitleiste dar. Zitat- und Literaturangaben werde<br />

ich hier im Wesentlichen bei Punkten niederschreiben, welche im weiteren Skriptum<br />

nicht mehr bearbeitet werden. Zu Stichworten, die wir später noch genauer ergründen,<br />

werden die Zitatangaben in den entsprechenden Kapiteln geliefert.<br />

Die Geschichte nimmt ihren Anfang in den frühen 1940er Jahren und damit fast zeitgleich<br />

mit der Geschichte der programmierbaren elektronischen Computer. Wie auch<br />

bei der Informatik an sich erkennt man die Jugend des Gebiets daran, dass viele der<br />

erwähnten Personen auch heute noch unter uns weilen.<br />

1.2.1 Anfänge<br />

Bereits 1943 beschreiben Warren McCulloch und Walter Pitts eine Art neurologischer<br />

Netzwerke, bauen Schwellwertschalter durch Neurone nach und zeigen,<br />

dass selbst einfache <strong>Netze</strong> dieser Art praktisch jede logische oder auch arithmetische<br />

Funktion berechnen können [MP43]. Weiter entstehen erste Computervorläufer<br />

(„Elektronengehirne“), u.a. unterstützt von Konrad Zuse, der es leid<br />

war, ballistische Bahnen per Hand zu berechnen.


1947 nennen Walter Pitts und Warren McCulloch ein praktisches Anwendungsgebiet<br />

(in ihrer Arbeit von 1943 wurde noch kein solches genannt), nämlich die<br />

Erkennung räumlicher Muster durch <strong>Neuronale</strong> <strong>Netze</strong> [PM47].<br />

1949: Donald O. Hebb formuliert die klassische Hebb’sche Lernregel [Heb49], welche<br />

in ihrer allgemeineren Form die Basis fast aller neuronalen Lernverfahren<br />

darstellt. Sie besagt, dass die Verbindung zwischen zwei Neuronen verstärkt wird,<br />

wenn beide Neurone gleichzeitig aktiv sind – die Verstärkung ist also proportional<br />

zum Produkt beider Aktivitäten. Hebb konnte diese Regel zwar postulieren,<br />

jedoch in Ermangelung neurologischer Forschung nicht verifizieren.<br />

1950 vertritt Neuropsychologe Karl Lashley die These, dass die Informationsspeicherung<br />

im Gehirn verteilt realisiert wird. Begründet wird seine These an Versuchen<br />

mit Ratten, bei denen nur der Umfang und nicht der Ort zerstörten<br />

Nervengewebes ihre Leistung beeinflusst, aus einem Labyrinth zu finden.<br />

1.2.2 Blütezeit<br />

1951 entwickelt Marvin Minsky für seine Dissertation den Neurocomputer Snark,<br />

der seine Gewichte 3 bereits automatisch justieren kann, aber nie praktisch eingesetzt<br />

wird – da er zwar fleißig rechnet, jedoch niemand so genau weiss, was.<br />

1956 treffen sich auf dem Dartmouth Summer Research Project renommierte<br />

Wissenschaftler und aufstrebende Studierende und diskutieren, salopp gesagt,<br />

wie man ein Gehirn nachbilden kann – Unterschiede zwischen Top-Down- und<br />

Bottom-Up-Forschung bilden sich heraus. Während die frühen Anhänger der Artificial<br />

Intelligence Fähigkeiten durch Software nachbilden möchten, haben die<br />

Anhänger der <strong>Neuronale</strong>n <strong>Netze</strong> im Sinn, Systemverhalten durch Nachbildung<br />

kleinster Systemteile, der Neurone, zu erreichen.<br />

1957 - 1958 entwickeln Frank Rosenblatt, Charles Wightman und ihre Mitarbeiter<br />

am MIT den ersten erfolgreichen Neurocomputer, das Mark I Perceptron<br />

, welches mit einem 20 × 20 Pixel großen Bildsensor einfache Ziffern<br />

erkennen kann und 512 motorbetriebene Potentiometer besitzt - pro variablem<br />

Gewicht eins.<br />

1959 beschreibt Frank Rosenblatt verschiedene Varianten des Perceptrons, formuliert<br />

und beweist sein Perceptron-Konvergenz-Theorem. Er beschreibt an der Retina<br />

orientierte Neuronenschichten, Schwellwertschalter und eine Lernregel, welche<br />

die Verbindungsgewichte justiert.<br />

3 Wir werden bald erfahren, was Gewichte sind.


1960 stellen Bernard Widrow und Marcian E. Hoff das ADALINE (ADAptive<br />

LInear NEuron) vor [WH60], ein schnell und genau lernendes adaptives<br />

System, das wohl das erste verbreitet kommerziell eingesetzte <strong>Neuronale</strong> Netz<br />

darstellte: Es war praktisch in jedem Analogtelefon zur Echtzeit-Echofilterung zu<br />

finden und lernte mit der Widrow-Hoff-Lernregel bzw. Deltaregel. Hoff, ein Mitbegründer<br />

von Intel, war zu diesem Zeitpunkt Doktorand von Widrow, der seinerseits<br />

einer der Erfinder der modernen Mikroprozessoren war. Einer der Fortschritte<br />

der Delta-Regel gegenüber dem ursprünglichen Perceptron-Lernalgorithmus<br />

war ihre Adaptivität: War man weit von der richtigen Lösung entfernt, so veränderten<br />

sich auch die Verbindungsgewichte in größeren Schritten, die in der Nähe<br />

des Ziels kleiner werden – Nachteil: bei falscher Anwendung erhält man unendlich<br />

kleine Schrittweiten zum Ziel in der Nähe desselben. Während der späteren<br />

Flaute und aus Angst vor der wissenschaftlichen Unbeliebtheit der <strong>Neuronale</strong>n<br />

<strong>Netze</strong> wurde das ADALINE zwischenzeitlich in Adaptive Linear Element umbenannt<br />

– was später wieder rückgängig gemacht wurde.<br />

1961 stellt Karl Steinbuch Techniken assoziativer Speicherung vor, die als Vorgänger<br />

heutiger neuronaler Assoziativspeicher gesehen werden [Ste61]. Er beschreibt<br />

weiterhin Konzepte für neuronale Techniken und analysiert ihre Möglichkeiten<br />

und Grenzen.<br />

1965 gibt Nils Nilsson in seinem Buch Learning Machines einen Überblick über<br />

die Fortschritte und Arbeiten dieser Periode der Erforschung <strong>Neuronale</strong>r <strong>Netze</strong>.<br />

Allgemein nimmt man an, die grundlegenden Prinzipien selbstlernender und damit<br />

landläufig gesprochen „intelligenter“ Systeme bereits entdeckt zu haben, was<br />

aus heutiger Sicht eine maßlose Überschätzung darstellt, aber damals für hohe<br />

Popularität und genügend Forschungsmittel sorgte.<br />

1969 veröffentlichen Marvin Minsky und Seymour Papert eine genaue mathematische<br />

Analyse des Perceptrons [MP69] um zu zeigen, dass das Perceptronmodell<br />

viele wichtige Probleme gar nicht repräsentieren kann (Stichwörter: XOR-<br />

Problem und lineare Separierbarkeit), und setzen so der Überschätzung, der Popularität<br />

und den Forschungsmitteln ein jähes Ende. Die weitergehende Folgerung,<br />

dass auch mächtigere Modelle die exakt gleichen Probleme aufweisen, verbunden<br />

mit der Prognose, dass das ganze Gebiet ein research dead-end sei, bewirken<br />

einen fast kompletten Rückgang der Forschungsgelder für die nächsten 15 Jahre,<br />

so unzutreffend diese Prognosen aus heutiger Sicht auch waren.


1.2.3 Lange Stille und langsamer Wiederaufbau<br />

Wie oben bereits gesagt – Forschungsgelder wurden extrem knapp. So wurde zwar<br />

überall ein wenig weiter geforscht, es gab aber keine Kongresse und sonstigen Veranstaltungen<br />

und demzufolge auch wenig Veröffentlichungen. Diese Isolation der einzelnen<br />

Forschenden sorgte für die vielen Paradigmen <strong>Neuronale</strong>r <strong>Netze</strong>, welche voneinander<br />

isoliert entstanden sind: Man forschte, redete aber nicht miteinander.<br />

Trotz der geringen Anerkennung des Gebiets wurden in dieser Zeit die theoretischen<br />

Grundlagen für die noch andauernde Renaissance gelegt:<br />

1972 stellt Teuvo Kohonen ein Modell des linearen Assoziators, eines Assoziativspeichermodells<br />

vor [Koh72], es wird im gleichen Jahr davon unabhängig von<br />

James A. Anderson aus neurophysiologischer Sicht präsentiert [And72].<br />

1973 verwendet Christoph von der Malsburg ein Neuronenmodell, was nichtlinear<br />

und biologisch besser motiviert ist [vdM73].<br />

1974 entwickelt Paul Werbos für seine Dissertation in Harvard das Backpropagation<br />

of Error-Lernverfahren [Wer74], das aber erst ein Jahrzehnt später seine heutige<br />

Bedeutung erlangt.<br />

1976 – 1980 und danach werden von Stephen Grossberg viele Arbeiten<br />

(z.B. [Gro76]) vorgestellt, in denen eine Vielzahl von neuronalen Modellen<br />

mathematisch genau analysiert wird. Er widmet sich weiterhin ausführlich<br />

dem Problem, ein <strong>Neuronale</strong>s Netz lernfähig zu halten, ohne bereits erlernte<br />

Assoziationen wieder zu zerstören – hieraus entstanden unter Mitarbeit von<br />

Gail Carpenter die Modelle der Adaptive Resonance Theory, kurz ART.<br />

1982 beschreibt Teuvo Kohonen die nach ihm benannten selbstorganisierenden<br />

Karten (self organizing feature maps, SOM) [Koh82,Koh98] auf der Suche nach<br />

den Mechanismen der Selbstorganisation des Gehirns (er wusste, dass die Informationen<br />

über den Aufbau von Wesen im Genom gespeichert sind, das aber<br />

ganz wesentlich zu wenig Speicherplatz für eine Struktur wie das Gehirn besitzt<br />

– folglich muss sich das Gehirn zum Großteil selbst organisieren und aufbauen).<br />

Weiterhin beschreibt John Hopfield die nach ihm benannten Hopfieldnetze<br />

[Hop82], welche durch die Gesetze des Magnetismus in der Physik inspiriert sind.<br />

Sie erfuhren wenig technische Anwendungen, aber das Gebiet der <strong>Neuronale</strong>n<br />

<strong>Netze</strong> kam langsam wieder ins Rollen.


1983 wird von Fukushima, Miyake und Ito das neuronale Modell Neocognitron<br />

zur Erkennung handgeschriebener Zeichen vorgestellt [FMI83], welches eine Erweiterung<br />

des schon 1975 entwickelten Cognitrons darstellt.<br />

1.2.4 Renaissance<br />

Durch den Einfluss u.a. John Hopfields, der viele Forscher persönlich von der Wichtigkeit<br />

des Gebiets überzeugte, und die weite Publikation von Backpropagation durch<br />

Rumelhart, Hinton und Williams machte sich im Gebiet der <strong>Neuronale</strong>n <strong>Netze</strong><br />

langsam wieder Aufschwungsstimmung breit.<br />

1985 veröffentlicht John Hopfield einen Artikel, der Wege beschreibt, akzeptable<br />

Lösungen für das Travelling Salesman Problem durch Hopfieldnetze zu finden.<br />

1986 wird das Lernverfahren Backpropagation of Error als Verallgemeinerung der<br />

Delta-Regel durch die Parallel Distributed Processing-Gruppe separat entwickelt<br />

und weit publiziert [RHW86a]: Nicht linear separierbare Probleme wurden durch<br />

mehrschichtige Perceptrons lösbar, Marvin Minskys Negativabschätzungen waren<br />

mit einem Schlag widerlegt. Weiterhin machte sich zeitgleich in der Artificial<br />

Intelligence eine gewisse Ermüdung breit, verursacht durch eine Reihe von Fehlschlägen<br />

und untertroffenen Hoffnungen.<br />

Ab dieser Zeit findet eine geradezu explosive Entwicklung des Forschungsgebietes<br />

statt, die zwar nicht mehr stichpunktfähig ist, aber von der wir einige Resultate<br />

noch wiedersehen werden.<br />

Übungsaufgaben<br />

Aufgabe 1. Suchen Sie für jeden der folgenden Punkte mindestens ein Beispiel:<br />

⊲ Ein Buch über <strong>Neuronale</strong> <strong>Netze</strong> oder Neuroinformatik,<br />

⊲ eine Arbeitsgruppe an einer Universität, die mit <strong>Neuronale</strong>n <strong>Netze</strong>n arbeitet,<br />

⊲ ein Software-Tool, welches <strong>Neuronale</strong> <strong>Netze</strong> realisiert („Simulator“),<br />

⊲ eine Firma, die <strong>Neuronale</strong> <strong>Netze</strong> einsetzt, und<br />

⊲ ein Produkt oder eine Dienstleistung, die mit <strong>Neuronale</strong>n <strong>Netze</strong>n realisiert wurde.


Aufgabe 2. Nennen Sie mindestens vier Anwendungen von technischen <strong>Neuronale</strong>n<br />

<strong>Netze</strong>n, jeweils zwei aus den Bereichen Mustererkennung und Funktionsapproximation.<br />

Aufgabe 3. Charakterisieren Sie kurz die vier Phasen der Entwicklung <strong>Neuronale</strong>r<br />

<strong>Netze</strong> und geben Sie aussagekräftige Beispiele für jede Phase an.


Kapitel 2<br />

Biologische <strong>Neuronale</strong> <strong>Netze</strong><br />

Wie lösen biologische Systeme Probleme? Wie funktioniert ein System von<br />

Neuronen? Wie kann man dessen Funktionalität erfassen? Wozu sind<br />

verschieden große Mengen von Neuronen imstande? Wo im Nervensystem<br />

findet Informationsverarbeitung statt? Ein kleiner biologischer Überblick über<br />

die große Komplexität einfacher Bausteine <strong>Neuronale</strong>r<br />

Informationsverarbeitung. Zusätzlich die Überleitung zu deren Vereinfachung,<br />

um sie technisch adaptieren zu können.<br />

Bevor wir anfangen, <strong>Neuronale</strong> <strong>Netze</strong> auf technischer Seite zu beschreiben, ist ein kleiner<br />

Exkurs in die Biologie der <strong>Neuronale</strong>n <strong>Netze</strong> und der Kognition von Lebewesen<br />

sinnvoll – der Leser kann das folgende Kapitel gerne überspringen, ohne etwas Technisches<br />

zu verpassen. Ich möchte es aber jedem empfehlen, der ein wenig über die<br />

zugrundeliegende Neurophysiologie wissen und sehen möchte, was für eine Karikatur<br />

der Natur unsere kleinen Ansätze, die Technischen <strong>Neuronale</strong>n <strong>Netze</strong> sind – und wie<br />

mächtig die natürlichen Pendants sein müssen, wenn wir mit unseren kleinen Ansätzen<br />

schon so weit kommen. Wir wollen nun kurz das Nervensystem von Wirbeltieren<br />

betrachten: Wir werden mit sehr grober Granularität beginnen und uns bis ins Gehirn<br />

und dann auf die Ebene der Neurone vorarbeiten. Über das ganze Kapitel hinweg<br />

haben mir die beiden Bücher [CR00, KSJ00] sehr geholfen, die ich als weiterführende<br />

Literatur angeben möchte.<br />

2.1 Das Nervensystem von Wirbeltieren<br />

Das komplette informationsverarbeitende System, das Nervensystem eines Wirbeltiers,<br />

besteht, um erst einmal eine einfache Unterteilung vorzunehmen, aus dem Zentralnervensystem<br />

und dem peripheren Nervensystem. In der Realität ist eine ganz so<br />

17


starre Unterteilung nicht sinnvoll, aber hier hilft sie uns bei der Skizzierung der Informationsverarbeitung<br />

im Körper.<br />

2.1.1 Peripheres und zentrales Nervensystem<br />

Das periphere Nervensystem (PNS) besteht aus den Nerven, die außerhalb des<br />

Gehirns bzw. Rückenmarks gelegen sind. Diese Nerven bilden ein verzweigtes und sehr<br />

dichtes Netz durch den ganzen Körper. Zum peripheren Nervensystem gehören beispielsweise<br />

die Spinalnerven, welche vom Rückenmark ausgehen (in Höhe eines jeden<br />

Wirbels zwei) und Extremitäten, Hals und Rumpf versorgen, aber auch die direkt zum<br />

Gehirn führenden Hirnnerven.<br />

Das zentrale Nervensystem (ZNS) hingegen stellt quasi den „Zentralcomputer“<br />

im Wirbeltier dar. Hier werden Informationen gespeichert und verwaltet, die durch<br />

Sinnesorgane von außen aufgenommen werden. Weiter steuert und reguliert es die<br />

inneren Vorgänge, und koordiniert nicht zuletzt sämtliche motorischen Leistungen des<br />

Organismus. Das zentrale Nervensystem der Wirbeltiere setzt sich zusammen aus dem<br />

eigentlichen Gehirn und dem Rückenmark (Abb. 2.1 auf der rechten Seite). Wir<br />

wollen aber besonderes Augenmerk auf das Gehirn legen. Das Gehirn unterteilt man<br />

vereinfachend in vier Bereiche (Abb. 2.2 auf Seite 20), die hier kurz genannt werden<br />

sollen.<br />

2.1.2 Das Großhirn ist für abstrakte Denkaufgaben zuständig<br />

Das Großhirn (Telencephalon) ist der Bereich des Gehirns, der sich im Laufe der<br />

Evolution mit am meisten verändert hat. Er ist entlang einer Achse, welche den Kopf<br />

von Gesichtsseite bis Hinterkopf zentral durchläuft, in zwei Hemisphären geteilt, welche<br />

eine in sich gefaltete Struktur aufweisen. Diese Teile sind über einen großen Nervenstrang<br />

(„Balken“)und mehrere kleine miteinander verbunden. Eine Vielzahl von<br />

Neuronen liegt in der ca. 2-4 cm dicken Großhirnrinde (Cortex), die in verschiedene<br />

Rindenfelder einzuteilen ist, von denen jedes eine eigene Aufgabe hat. Primäre<br />

Rindenfelder sind hier für die Verarbeitung qualitativer Information zuständig, wie<br />

beispielsweise das Verwalten von verschiedenen Wahrnehmungen (z.B. die Verwaltung<br />

des Sehsinnes ist Aufgabe des visuellen Cortexes). Assoziationsfelder hingegen<br />

absolvieren höhere, abstraktere Assoziations- und Denkvorgänge; in Ihnen ist auch<br />

unser Gedächtnis untergebracht.


Abbildung 2.1: Skizze des zentralen Nervensystems mit Rückenmark und Gehirn.


Abbildung 2.2: Skizze des Gehirns. Eingefärbte Bereiche des Gehirns werden im Text behandelt.<br />

Je weiter wir von der abstrakten Informationsverarbeitung in Richtung der direkten reflexhaften<br />

gehen, desto dunkler sind die Gehirnbereiche eingefärbt.<br />

2.1.3 Das Kleinhirn steuert und koordiniert die Motorik<br />

Das Kleinhirn (Cerebellum) ist unterhalb des Großhirns gelegen, also näher am<br />

Rückenmark. Entsprechend dient es weniger abstrakten Funktionen mit höherer Priorität:<br />

Hier werden große Teile der motorischen Koordination absolviert, also Gleichgewicht<br />

und Bewegungen gesteuert und laufend fehlerkorrigiert. Zu diesem Zweck besitzt<br />

das Kleinhirn direkte sensorische Informationen über die Muskellängen sowie akustische<br />

und visuelle Informationen. Weiter erhält es auch Meldungen über abstraktere<br />

motorische Signale, die vom Großhirn ausgehen.<br />

Beim Menschen ist das Kleinhirn deutlich kleiner als das Großhirn, dies ist aber eher<br />

eine Ausnahme: Bei vielen Wirbeltieren ist dieses Verhältnis nicht so stark ausgeprägt.<br />

Betrachtet man die Evolution der Wirbeltiere, so ist nicht das Kleinhirn „zu klein“<br />

sondern das Großhirn „zu groß“ geraten (immerhin ist es die am höchsten entwickelte<br />

Struktur des Wirbeltiergehirns). Die beiden restlichen Gehirnteile seien ebenfalls noch<br />

kurz betrachtet: Das Zwischenhirn und der Hirnstamm.<br />

2.1.4 Das Zwischenhirn steuert grundlegende Körpervorgänge<br />

Das Zwischenhirn (Diencephalon) umfasst wieder einige Teile, von denen nur der<br />

Thalamus einer kurzen Betrachtung unterzogen werden soll: Dieser Teil des Zwi-


schenhirns ist das Medium zwischen sensorischen und motorischen Signalen und Großhirn:<br />

Insbesondere wird im Thalamus entschieden, welcher Teil der Information an das<br />

Großhirn weitergeleitet wird, so dass gerade weniger wichtige Sinneswahrnehmungen<br />

kurzfristig ausgeblendet werden können, um Überlastungen zu vermeiden. Als weiterer<br />

Teil des Zwischenhirns steuert der Hypothalamus eine Vielzahl körperinterner Vorgänge.<br />

Das Zwischenhirn ist auch maßgeblich beteiligt am Schlaf-Wach-Rhythmus des<br />

Menschen („innere Uhr“) und der Schmerzempfindung.<br />

2.1.5 Der Hirnstamm verbindet Hirn und Rückenmark und steuert Reflexe<br />

Verglichen mit dem Zwischenhirn ist der Hirnstamm bzw. das Stammhirn (Truncus<br />

cerebri) stammesgeschichtlich deutlich älter: Es markiert, grob gesprochen, das „verlängerte<br />

Rückenmark“ und damit die Überleitung vom Gehirn zum Rückenmark. Auch<br />

der Hirnstamm kann wieder in verschiedene Teile unterteilt werden, von denen einige<br />

exemplarisch vorgestellt werden sollen. Die Funktionen gehen weiter vom Abstrakten<br />

in Richtung des Grundlegenden. Ein wichtiger Bestandteil ist die Pons (=Brücke),<br />

eine Art Durchgangsstation für sehr viele Nervensignale vom Gehirn an den Körper<br />

und umgekehrt.<br />

Wird die Pons geschädigt (beispielsweise durch einen Hirninfarkt), so kann es zum<br />

Locked-In-Syndrom kommen – dem Eingeschlossensein in den eigenen Körper, ein<br />

Zustand, in dem es für einen Menschen bei voller geistiger Leistungsfähigkeit völlig<br />

unmöglich ist, sich auf irgendeine Weise der Außenwelt zu vermitteln. Man kann nicht<br />

sprechen, sich nicht bewegen, während Seh-, Hör-, Geruchs- und Geschmackssinn in aller<br />

Regel völlig normal funktionieren. Als letzte Kommunikationsmöglichkeit verbleibt<br />

Locked-In-Patienten meist nur die Augenbewegung oder Zwinkern.<br />

Weiter ist der Hirnstamm für viele grundlegende Reflexe zuständig, wie z. B. den<br />

reflexartigen Augenlidschluss oder Husten.<br />

Alle Teile des Nervensystems haben eine Sache gemeinsam: Es werden Informationen<br />

verarbeitet. Dies geschieht durch riesige Ansammlungen von Milliarden sehr ähnlicher<br />

Zellen, die an sich sehr einfach gebaut sind, aber fortlaufend miteinander kommunizieren.<br />

Große Gruppen dieser Zellen senden dann koordiniert Signale und erreichen so<br />

die gewaltige Informationsverarbeitungskapazität, die wir von unserem Gehirn kennen.<br />

Wir wechseln nun von der Ebene der Gehirnteile auf die zelluläre Ebene im Körper –<br />

auf die Ebene der Neuronen.


Abbildung 2.3: Skizze eines biologischen Neurons mit Beschriftung von im Text verwendeten<br />

Bestandteilen.<br />

2.2 Neuronen sind informationsverarbeitende Zellen<br />

Bevor wir auf die Funktionen und Vorgänge innerhalb eines Neurons genauer eingehen,<br />

sei hier zunächst eine Skizze der Neuronenfunktion geliefert: Ein Neuron ist nichts<br />

weiter als ein Schalter mit einem Informationseingang und -ausgang. Der Schalter wird<br />

aktiviert, wenn genug Reize anderer Neurone am Informationseingang auftreffen. Am<br />

Informationsausgang wird dann ein Impuls an z.B. andere Neurone gesendet.<br />

2.2.1 Bestandteile eines Neurons<br />

Wir wollen nun die Einzelbestandteile eines Neurons (Abb. 2.3) betrachten. Wir gehen<br />

dabei den Weg, den die elektrische Information im Neuron nimmt. Den Dendriten eines<br />

Neurons zugeleitet wird die Information über spezielle Übergangsstellen, die Synapsen.<br />

2.2.1.1 Synapsen gewichten die einzelnen Informationsanteile<br />

Von anderen Neuronen oder sonstigen Zellen eingehende Signale werden einem Neuron<br />

über spezielle Übergangsstellen, die Synapsen zugeleitet. Solch eine Übergangsstelle


liegt meistens an den Dendriten eines Neurons, manchmal auch direkt am Soma. Man<br />

unterscheidet elektrische und chemische Synapsen.<br />

Die einfachere von beiden Varianten ist die elektrische Synapse . Ein elektrisches Signal,<br />

welches auf der Synapse eingeht, also von der präsynaptischen Seite kommt, wird<br />

direkt in den postsynaptischen Zellkern fortgeleitet. Es liegt also eine direkte, starke,<br />

nicht regulierbare Verbindung von Signalgeber zu Signalempfänger vor, zum Beispiel<br />

sinnvoll für Fluchtreflexe, die in einem Lebewesen „hart codiert“ sein müssen.<br />

Die ausgeprägtere Variante ist die chemische Synapse. Hier findet keine direkte elektrische<br />

Kopplung von Quelle und Ziel statt, sondern diese Kopplung ist unterbrochen<br />

durch den synaptischen Spalt. Dieser Spalt trennt die prä- und postsynaptische Seite<br />

elektrisch voneinander. Dennoch muss ja Information fließen, werden Sie jetzt denken,<br />

also wollen wir darauf eingehen, wie das passiert: Nämlich nicht elektrisch, sondern<br />

chemisch. Auf der präsynaptischen Seite des synaptischen Spalts wird das elektrische<br />

Signal in ein chemisches konvertiert, indem dort chemische Signalstoffe freigesetzt werden<br />

(sog. Neurotransmitter). Diese Neurotransmitter überwinden den synaptischen<br />

Spalt und übertragen die Information in den Zellkern (das ist sehr vereinfacht ausgedrückt,<br />

wir werden später noch sehen, wie das genau funktioniert), wo sie wieder in<br />

elektrische Information umgewandelt wird. Die Neurotransmitter werden sehr schnell<br />

wieder abgebaut, so dass auch hier sehr genaue Informations-Impulse möglich sind.<br />

Trotz der viel komplizierteren Funktionsweise hat die chemische Synapse im Vergleich<br />

zur elekrischen Variante eklatante Vorteile:<br />

Einwegschaltung: Die chemische Synapse ist eine Einwegschaltung. Dadurch, dass<br />

der prä- und postsynaptische Teil nicht direkt elektrisch verbunden sind, können<br />

elektrische Impulse im postsynaptischen Teil nicht auf den präsynaptischen<br />

überschlagen.<br />

Regulierbarkeit: Es gibt eine Vielzahl verschiedener Neurotransmitter, die noch dazu<br />

in verschiedenen Mengen in einem synaptischen Spalt freigesetzt werden können.<br />

So gibt es Neurotransmitter, die anregend auf den postsynaptischen Zellkern wirken,<br />

aber auch andere, die eine solche Anregung wieder abflauen lassen. Manche<br />

Synapsen geben ein stark anregendes Signal weiter, manche nur schwach anregende<br />

Signale. Die Regulierungsvielfalt ist enorm, und dass die Synapsen hier<br />

auch noch variabel sind, also mit der Zeit eine stärkere oder schwächere Verbindung<br />

darstellen können, ist einer der zentralen Punkte bei Betrachtung der<br />

Lernfähigkeit des Gehirns.


2.2.1.2 Dendriten sammeln alle Informationsanteile<br />

Dendriten verästeln sich baumartig vom Zellkern des Neurons (den man Soma nennt)<br />

und dienen der Aufnahme von elektrischen Signalen aus vielen verschiedenen Quellen,<br />

die dann in den Zellkern übertragen werden. Die sich verästelnde Menge von Dendriten<br />

wird auch Dendritenbaum genannt.<br />

2.2.1.3 Im Soma werden die gewichteten Informationsanteile aufkumuliert<br />

Nachdem über Synapsen und Dendriten eine Fülle an aktivierenden (=anregenden)<br />

und inhibierenden (=abschwächenden) Signalen beim Zellkern (Soma) eingetroffen ist,<br />

kumuliert das Soma diese Signale auf. Sobald das aufkumulierte Signal einen gewissen<br />

Wert (Schwellwert genannt) überschreitet, löst der Neuronenzellkern seinerseits einen<br />

elektrischen Impuls aus, der dann zur Weiterleitung an die nachfolgenden Neuronen<br />

bestimmt ist, zu denen das aktuelle Neuron verbunden ist.<br />

2.2.1.4 Das Axon leitet ausgehende Impulse weiter<br />

Die Weiterleitung des Impulses zu anderen Neuronen erfolgt durch das Axon. Das<br />

Axon ist ein fadenartiger Fortsatz des Somas. Ein Axon kann im Extremfall ca. einen<br />

Meter lang werden (z.B. im Rückenmark). Das Axon ist elektrisch isoliert, um das<br />

elektrische Signal besser leiten zu können (später mehr dazu) und mündet in Dendriten,<br />

um die Information an z.B. andere Neurone weiterzugeben. Wir sind also wieder am<br />

Anfang unserer Beschreibung der Neuronenbestandteile angelangt. Natürlich kann ein<br />

Axon aber auch Informationen an andere Zellenarten zu deren Steuerung übertragen.<br />

2.2.2 Elektrochemische Vorgänge im Neuron und seinen Bestandteilen<br />

Nachdem wir nun den Weg eines elektrischen Signals von den Dendriten über die<br />

Synapsen in den Zellkern, und von dort über das Axon in weitere Dendriten verfolgt<br />

haben, wollen wir einen kleinen Schritt von der Biologie in Richtung Technik gehen.<br />

Auf diesem Weg soll vereinfacht vorgestellt werden, wie die Informationsverarbeitung<br />

elektrochemisch vonstatten geht.


2.2.2.1 Neuronen erhalten ein elektrisches Membranpotential aufrecht<br />

Ein grundlegender Aspekt ist, dass die Neurone gegenüber ihrer Umwelt eine elektrische<br />

Ladungsdifferenz, ein Potential aufweisen. Innerhalb der Membran (=Hülle) des<br />

Neurons herrscht also eine andere Ladung vor als außen. Diese Ladungsdifferenz ist<br />

ein zentraler Begriff, den man braucht, um die Vorgänge im Neuron zu verstehen, wir<br />

nennen sie Membranpotential. Das Membranpotential, also der Ladungsunterschied,<br />

entsteht durch mehrere Arten geladener Atome (Ione), die innerhalb und außerhalb<br />

des Neurons unterschiedlich hoch konzentriert sind. Wenn wir von innen nach außen<br />

durch die Membran stoßen, werden wir bestimmte Arten Ione häufiger oder weniger<br />

häufig vorfinden als innen, wir nennen diesen Abfall oder Anstieg der Konzentration<br />

einen Konzentrationsgradienten.<br />

Betrachten wir das Membranpotential zunächst für den Ruhezustand des Neurons, nehmen<br />

wir also an, es treffen gerade keine elektrischen Signale von außen ein. In diesem<br />

Fall beträgt das Membranpotential −70 mV. Da wir gelernt haben, dass dieses Potential<br />

von Konzentrationsgradienten verschiedener Ionen abhängt, ist natürlich eine zentrale<br />

Frage, wie diese Konzentrationsgradienten aufrecht erhalten werden: Normalerweise<br />

herrscht ja überall Diffusion vor, also sind alle Ionen bestrebt, Konzentrationsgefälle<br />

abzubauen und sich überall gleichmäßig zu verteilen. Würde das passieren, würde das<br />

Membranpotential gegen 0 mV gehen, schlussendlich würde also kein Membranpotential<br />

mehr vorhanden sein. Das Neuron erhält sein Membranpotential also aktiv aufrecht,<br />

um Informationsverarbeitung betreiben zu können. Wie geht das vonstatten?<br />

Das Geheimnis liegt in der Membran selbst, die für manche Ione durchlässig ist, für<br />

andere aber nicht. Um das Potential aufrecht zu erhalten, wirken hier mehrere Mechanismen<br />

gleichzeitig:<br />

Konzentrationsgradient: Wie schon beschrieben, versuchen die Ionen, immer möglichst<br />

gleichverteilt vertreten zu sein. Ist innerhalb des Neurons die Konzentration<br />

eines Ions höher als außen, versucht es nach außen zu diffundieren und umgekehrt.<br />

Das positiv geladene Ion K + (Kalium) ist im Neuron häufig, außerhalb des Neurons<br />

weniger anzutreffen, und diffundiert darum langsam durch die Membran aus<br />

dem Neuron hinaus. Eine weitere Sammlung negativer Ionen, zusammenfassend<br />

A − genannt, bleibt aber im Neuron, da die Membran hierfür nicht durchlässig<br />

ist. Das Neuroneninnere wird also negativ: Negative A-Ionen bleiben, positive<br />

K-Ionen verschwinden, das Innere der Zelle wird negativer. Dies führt uns zu<br />

einem weiteren Gradienten.


Elektrischer Gradient: Der elektrische Gradient wirkt dem Konzentrationsgradienten<br />

entgegen. Das Zellinnere ist mittlerweile sehr negativ geworden, also zieht es<br />

positive Ionen an: K + möchte nun wieder in die Zelle hinein.<br />

Würde man diese beiden Gradienten nun einfach sich selbst überlassen, so würden sie<br />

sich irgendwann ausgleichen, einen stabilen Zustand erreichen und ein Membranpotential<br />

von −85 mV würde entstehen. Wir wollen aber auf ein Ruhemembranpotential<br />

von −70 mV hinaus, es muss also Störkomponenten geben, die dies verhindern. Zum<br />

einen gibt es noch ein weiteres wichtiges Ion, Na + (Natrium), für das die Membran<br />

zwar nicht besonders durchlässig ist, das aber trotzdem langsam durch die Membran<br />

in die Zelle einströmt. Das Natrium fühlt sich hierbei doppelt nach innen getrieben:<br />

Zum einen gibt es weniger Natrium im inneren des Neurons als außen, zum anderen<br />

ist Natrium positiv, das Zellinnere aber negativ, ein zweiter Grund, in die Zelle zu<br />

wollen.<br />

Durch die geringe Natriumdiffusion ins Zellinnere nimmt die Natriumkonzentration<br />

im Zellinneren zu, gleichzeitig wird das Zellinnere aber weniger negativ, so dass der<br />

Einstrom von K + langsamer wird (wir sehen: Das ist ein komplizierter Mechanismus, in<br />

dem alles sich gegenseitig beeinflusst). Durch Natrium wird das Zellinnere tendentiell<br />

weniger negativ gegenüber der Umwelt. Auch mit diesen beiden Ionen könnte aber<br />

immer noch ein Stillstand erreicht werden, in dem sich alle Gradienten ausgleichen<br />

und nichts mehr passiert. Nun kommt aber das fehlende Mosaiksteinchen, auf das wir<br />

warten: Eine „Pumpe“ (eigentlich das Protein ATP) bewegt aktiv Ionen entgegen der<br />

Richtung, zu der sie eigentlich möchten!<br />

Natrium wird aktiv aus der Zelle rausgepumpt, obwohl es entlang des Konzentrationsund<br />

des elektrischen Gradienten in die Zelle möchte.<br />

Kalium hingegen diffundiert stark aus der Zelle heraus, wird aber wieder aktiv hineingepumpt.<br />

Aus diesem Grund nennen wir die Pumpe auch Natrium-Kalium-Pumpe. Die Pumpe<br />

erhält sowohl für Natrium als auch für Kalium den Konzentrationsgradienten aufrecht,<br />

so dass eine Art Fließgleichgewicht entsteht und das Ruhepotential schlussendlich<br />

bei den beobachteten −70 mV landet. Zusammenfassend wird das Membranpotential<br />

also aufrecht erhalten, indem die Membran für manche Ionen gar nicht durchlässig<br />

ist und andere Ionen aktiv entgegen der Konzentrations- und elektrischen Gradienten<br />

gepumpt werden. Nachdem wir nun wissen, dass jedem Neuron ein Membranpotential<br />

zueigen ist, wollen wir genau betrachten, wie ein Neuron Signale empfängt und<br />

versendet.


2.2.2.2 Veränderungen im Membranpotential aktivieren das Neuron<br />

Oben haben wir gelernt, dass Natrium und Kalium durch die Membran hindurchdiffundieren<br />

können, Natrium langsam, Kalium schneller. Dies geschieht durch in der<br />

Membran enthaltene Kanäle, Natrium- bzw. Kaliumkanäle. Neben diesen immer geöffneten<br />

Kanälen, die für die Diffusion verantwortlich sind und durch die Natrium-<br />

Kalium-Pumpe ausgeglichen werden, gibt es auch Kanäle, die nicht immer geöffnet<br />

sind, sondern nur „nach Bedarf“ geöffnet werden. Da sich durch eine Öffnung dieser<br />

Kanäle die Konzentration von Ionen innerhalb und außerhalb der Membran verändern,<br />

ändert sich logischerweise auch das Membranpotential.<br />

Diese steuerbaren Kanäle werden geöffnet, wenn der aufkumulierte eingehende Reiz<br />

einen gewissen Schwellwert überschreitet. Eingehende Reize können beispielsweise von<br />

anderen Neuronen kommen oder aber von anderen Ursachen herrühren: So gibt es<br />

zum Beispiel spezialisierte Formen von Neuronen, Sinneszellen, für die z.B. Lichteinfall<br />

einen solchen Reiz darstellen kann. Fällt dann genug Licht ein, um den Schwellwert zu<br />

überschreiten, werden steuerbare Kanäle geöffnet.<br />

Der besagte Schwellwert (das Schwellenwertpotential) liegt bei ca. −55 mV. Sobald<br />

dieses von den eingehenden Reizen erreicht wird, wird das Neuron aktiviert und ein<br />

elektrisches Signal, ein Aktionspotential wird ausgelöst. Dieses Signal wird dann weitergeleitet<br />

an diejenigen Zellen, die mit dem betrachteten Neuron verbunden sind, also<br />

ihm „zuhören“. Die Phasen des Aktionspotentials wollen wir etwas genauer betrachten<br />

(Abb. 2.4 auf der folgenden Seite):<br />

Ruhezustand: Nur die immer geöffneten Kalium- und Natriumkanäle liegen offen, das<br />

Membranpotential liegt bei −70 mV und wird vom Neuron aktiv dort gehalten.<br />

Stimulus bis Schwellwert: Ein Reiz (Stimulus) öffnet Kanäle, so dass Natrium einströmen<br />

kann. Die Ladung des Zellinneren wird positiver. Sobald das Membranpotential<br />

über den Schwellenwert von −55 mV geht, wird das Aktionspotential<br />

ausgelöst, indem sehr viele Natriumkanäle geöffnet werden.<br />

Depolarisation: Natrium strömt ein. Wir erinnern uns, dass Natrium einströmen möchte<br />

sowohl, weil davon deutlich weniger in der Zelle vorhanden ist als außen, als<br />

auch, weil in der Zelle ein negatives Milieu vorherrscht, durch das das positive<br />

Natrium angezogen wird. Durch den starken Einstrom steigt das Membranpotential<br />

drastisch an, bis auf ca. +30 mV. Dies ist dann der elektrische Impuls, das<br />

Aktionspotential.<br />

Repolarisation: Natriumkanäle werden nun geschlossen, dafür werden die Kaliumkanäle<br />

geöffnet. Das positiv geladene Kalium will nun aus dem ebenfalls positiven


Abbildung 2.4: Auslösung eines Aktionspotentials über die Zeit.


Zellinneren heraus. Zusätzlich ist es im Zellinneren wesentlich höher konzentriert<br />

als außen, was den Ausstrom noch beschleunigt. Das Zellinnere wird wieder negativer<br />

geladen als die Außenwelt.<br />

Hyperpolarisation: Sowohl Natrium- als auch Kaliumkanäle werden wieder geschlossen.<br />

Zunächst ist das Membranpotential nun leicht negativer als das Ruhepotential,<br />

was daher kommt, dass die Kaliumkanäle sich etwas träger schließen, was<br />

Kalium (positiv geladen) aufgrund seiner geringeren Konzentration außerhalb<br />

der Zelle ausströmen lässt. Nach einer Refraktärzeit von 1 − 2 ms ist dann der<br />

Ruhezustand wiederhergestellt, so dass das Neuron auf neue Reize wieder mit einem<br />

Aktionspotential reagieren kann. Die Refraktärzeit ist, einfach ausgedrückt,<br />

eine Zwangspause, welche ein Neuron einhalten muss, um sich zu regenerieren.<br />

Je kürzer sie ist, desto öfter kann ein Neuron pro Zeit feuern.<br />

Der so entstandene Impuls wird dann durch das Axon fortgeleitet.<br />

2.2.2.3 Im Axon wird ein Impuls auf saltatorische Weise weitergeleitet<br />

Wir haben schon gelernt, dass das Axon zur Fortleitung des Aktionspotentials über<br />

lange Distanzen dient (zur Erinnerung: Eine Illustration eines Neurons inklusive Axon<br />

findet sich in Abb. 2.3 auf Seite 22). Das Axon ist ein fadenartiger Fortsatz des Somas.<br />

Bei Wirbeltieren ist es in der Regel von einer Myelinscheide umgeben, welche aus<br />

Schwannschen Zellen (im PNS) oder Oligodendrozyten (im ZNS) besteht 1 , die<br />

das Axon elektrisch sehr gut isolieren. Zwischen diesen Zellen befinden sich im Abstand<br />

von 0.1−2mm Lücken, die sogenannten Ranvierschen Schnürringe, die jeweils dort<br />

auftreten, wo eine Isolationszelle zuende ist und die nächste anfängt. An einem solchen<br />

Schnürring ist das Axon logischerweise schlechter isoliert.<br />

Man mag nun annehmen, dass diese schlecht isolierten Schnürringe von Nachteil für das<br />

Axon sind: Dem ist aber nicht so. An den Schnürringen ist ein Stoffaustausch zwischen<br />

intrazellulärem und extrazellulärem Raum möglich, der an Teilen des Axons, welche<br />

zwischen zwei Schnürringen liegen (Internodien) und so durch die Myelinscheide<br />

isoliert sind, nicht funktioniert. Dieser Stoffaustausch ermöglicht die Erzeugung von Signalen,<br />

ganz ähnlich der Erzeugung des Aktionspotentials im Soma. Die Weiterleitung<br />

eines Aktionspotentials funktioniert nun folgendermaßen: Es läuft nicht kontinuierlich<br />

entlang des Axons, sondern springt von einem Schnürring zum nächsten. Es läuft also<br />

eine Reihe von Depolarisationen entlang der Ranvierschnürringe. Ein Aktionspotential<br />

1 Sowohl Schwannsche Zellen als auch Oligodendrozyten sind Ausprägungen der Gliazellen, von denen es<br />

ca. 50 mal mehr gibt als Neuronen, und die die Neuronen umgeben (Glia = Leim), voneinander isolieren,<br />

mit Energie versorgen, etc.


löst dominoartig das nächste aus, meist sind hierbei sogar mehrere Schnürringe gleichzeitig<br />

aktiv. Durch das „Springen“ des Impulses von einem Schnürring zum nächsten<br />

kommt diese Impulsleitung auch zu ihrem Namen: Saltatorische Impulsleitung.<br />

Es ist offensichtlich, dass der Impuls schneller voran kommt, wenn seine Sprünge größer<br />

sind. So wird bei Axonen mit großen Internodien (2 mm) eine Signalausbreitungsgeschwindigkeit<br />

von ca. 180 Metern pro Sekunde erreicht. Die Internodien können aber<br />

nicht beliebig groß werden, da das weiterzuleitende Aktionspotential sonst bis zum<br />

nächsten Schnürring zu sehr verblassen würde. Die Schnürringe haben also auch die<br />

Aufgabe, das Signal regelmäßig zu verstärken. Am Ende des Axons hängen dann –<br />

oft über Dendriten und Synapsen verbunden – die Zellen, welche das Aktionspotenzial<br />

empfangen. Wie oben schon angedeutet, können Aktionspotentiale aber nicht nur<br />

durch über die Dendriten eingehende Information von anderen Neuronen entstehen.<br />

2.3 Rezeptorzellen sind abgewandelte Neurone<br />

Aktionspotentiale können auch durch sensorische Informationen, die ein Lebewesen aus<br />

seiner Umwelt mittels Sinneszellen aufnimmt, herrühren. Spezialisierte Rezeptorzellen<br />

können für sie spezifische Reizenergien wie Licht, Temperatur und Schall oder das<br />

Vorhandensein bestimmter Moleküle wahrnehmen (wie es z.B. der Geruchssinn tut).<br />

Dies funktioniert, da diese Sinneszellen eigentlich abgewandelte Neurone sind: Hier<br />

werden keine elektrischen Signale über Dendriten aufgenommen, sondern das Vorhandensein<br />

des für die Rezeptorzelle spezifischen Reizes sorgt dafür, dass sich Ionenkanäle<br />

öffnen und ein Aktionspotential ausgebildet wird. Dieser Vorgang des Umwandelns von<br />

Reizenergie in Veränderungen im Membranpotential nennt sich Sensorische Transduktion.<br />

In aller Regel ist die Reizenergie selbst zu schwach, um direkt Nervensignale<br />

auszulösen, und so findet entweder während der Transduktion oder durch den Reizleitenden<br />

Apparat auch gleich eine Signalverstärkung statt. Das resultierende Aktionspotential<br />

kann von anderen Neuronen verarbeitet werden und gelangt dann in den<br />

Thalamus, der, wie wir schon gelernt haben, als Tor zum Cerebralen Cortex Sinneseindrücke<br />

nach der momentanen Relevanz aussortieren und so einen Überfluss an zu<br />

verwaltenden Informationen verhindern kann.<br />

2.3.1 Es existieren verschiedenste Rezeptorzellen für viele Arten von<br />

Wahrnehmungen<br />

Primärrezeptoren senden ihre Impulse direkt ans Nervenssystem. Schmerzempfindung<br />

ist hierfür ein gutes Beispiel. Hier ist die Reizstärke proportional zur Amplitude


des Aktionspotentials, technisch ausgedrückt findet hier also eine Amplitudenmodulation<br />

statt.<br />

Sekundärrezeptoren senden hingegen durchgehend Impulse. Diese Impulse steuern<br />

dann die Menge des zugehörigen Neurotransmitters zur Weitergabe des Reizes, der<br />

wiederum die Frequenz der Aktionspotentiale des empfangenden Neurons steuert. Hier<br />

handelt es sich um Frequenzmodulation, eine Kodierung des Reizes, bei der man Zuund<br />

Abnahme eines Reizes besser wahrnehmen kann.<br />

Rezeptorzellen können einzeln vorkommen oder aber komplexe Sinnesorgane bilden<br />

(z.B. Augen oder Ohren). Es können sowohl Reize im Körper empfangen werden (das<br />

machen dann Enterorezeptoren) wie auch Reize außerhalb des Körpers (hierfür sind<br />

die Exterorezeptoren zuständig).<br />

Nachdem wir nun skizziert haben, wie Information aus der Umwelt aufgenommen wird,<br />

ist interessant zu betrachten, auf welche Weise sie verarbeitet wird.<br />

2.3.2 Informationsverarbeitung findet auf jeder Ebene des Nervensystems<br />

statt<br />

Es ist nämlich keinesfalls so, dass alle Informationen ins Gehirn geleitet werden, dort<br />

verarbeitet werden, und das Gehirn danach für eine „Ausgabe“ in Form von motorischen<br />

Impulsen sorgt (das einzige, was ein Lebewesen in seiner Umwelt wirklich tun<br />

kann, ist ja, sich zu bewegen). Die Informationsverarbeitung ist komplett dezentral<br />

angelegt. Um das Prinzip zu verdeutlichen, wollen wir kurz ein paar Beispiele betrachten,<br />

für die wir in unserer Informationsverarbeitungshierarchie wieder vom Abstrakten<br />

zum Grundlegenden wandern.<br />

⊲ Dass im Großhirn als höchstentwickelter Informationsverarbeitender Struktur in<br />

der Natur Informationsverarbeitung stattfindet, ist klar.<br />

⊲ In der Hierarchie deutlich tiefer liegt das Mittelhirn und der Thalamus, den wir<br />

als Tor zur Großhirnrinde schon kennengelernt haben: Auch das von ihm betriebene<br />

Filtern von Informationen nach aktueller Relevanz ist eine sehr wichtige<br />

Art der Informationsverarbeitung. Doch auch der Thalamus erhält keine Reize<br />

von außen, die nicht bereits vorverarbeitet wurden. Machen wir einen Sprung zur<br />

untersten Ebene, den Sinneszellen.<br />

⊲ Bereits auf der untersten Ebene, den Rezeptorzellen, wird Information nicht<br />

nur aufgenommen und weitergeleitet, sondern auch direkt verarbeitet. Einer der<br />

Hauptaspekte zu diesem Thema ist die Verhinderung von „Dauerreizen“ an das


Zentralnervensystem durch sensorische Adaption: Bei kontinuierlicher Reizung<br />

werden sehr viele Rezeptorzellen automatisch unempfindlicher. Rezeptorzellen<br />

stellen also keine direkte Abbildung von spezifischer Reizenergie auf Aktionspotentiale<br />

da, sondern sind abhängig von der Vergangenheit. Weitere Sensoren<br />

ändern die Empfindlichkeit je nach Situation: Es gibt Geschmacksrezeptoren, die<br />

je nach Ernährungszustand des Organismus mehr oder weniger stark auf denselben<br />

Reiz ansprechen.<br />

⊲ Selbst bevor ein Reiz zu den Rezeptorzellen vorstößt, kann durch einen vorgeschalteten<br />

signalführenden Apparat schon Informationsverarbeitung stattfinden,<br />

beispielsweise in Form von Verstärkung: Die Ohrmuschel und das Innenohr haben<br />

eine spezifische schallverstärkende Form, welche es – in Verbindung mit den<br />

Sinneszellen des Hörsinns – ebenfalls ermöglich, dass der Nervenreiz nur logarithmisch<br />

mit der Intensität des gehörten Signals ansteigt. Dies ist bei näherer<br />

Betrachtung auch sehr notwendig, da der Schalldruck der Signale, für die das<br />

Ohr gemacht ist, über viele Zehnerpotenzen variieren kann. Eine logarithmische<br />

Messweise ist hier von Vorteil. Erstens wird Überlastung vermieden, und dass<br />

zweitens die Intensitätsmessung bei intensiven Signalen dadurch weniger genau<br />

wird, macht auch nichts: Wenn neben einem gerade ein Düsenjet startet, sind<br />

winzige Schwankungen im Lärmpegel zu vernachlässigen.<br />

Um noch etwas mehr Bauchgefühl über Sinnesorgane und Informationsverarbeitung<br />

im Organismus zu erhalten, sollen nun kurz „gängige“, also in der Natur häufig anzutreffende<br />

Lichtsinnesorgane beschrieben werden. Beim dritten beschriebenen Lichtsinnesorgan,<br />

dem Einzellinsenauge, gehen wir dann auf Informationsverarbeitung ein, die<br />

noch direkt im Auge stattfindet.<br />

2.3.3 Eine Skizze häufiger Lichtsinnesorgane<br />

Für viele Lebewesen hat es sich als extrem nützlich erwiesen, elektromagnetische Strahlung<br />

in bestimmten Bereichen wahrzunehmen. Konsequenterweise sind Sinnesorgane<br />

entstanden, welche solch elektromagnetische Strahlung feststellen können, und der Wellenlängenbereich<br />

dieser Strahlung, welcher für den Menschen wahrnehmbar ist, heißt<br />

dadurch sichtbarer Bereich oder schlicht Licht. Verschiedene Wellenlängen dieser sichtbaren<br />

Strahlung nehmen wir Menschen durch verschiedene Farben wahr. Der sichtbare<br />

Bereich der elektromagnetischen Strahlung ist nicht bei allen Lebewesen gleich, manche<br />

Lebewesen können Farben (=Wellenlängenbereiche) nicht sehen, die wir sehen können,<br />

andere Lebewesen können sogar zusätzliche Wellenlängenbereiche (z.B. im UV-Bereich)<br />

wahrnehmen. Bevor wir zum Menschen kommen, wollen wir kurz – um etwas breiter


Abbildung 2.5: Facettenaugen einer Raubfliege<br />

angelegtes Wissen zum Sehsinn zu erhalten – zwei Sehsinnesorgane betrachten, die<br />

evolutionär gesehen vor dem Menschen da waren.<br />

2.3.3.1 Komplexaugen und Lochkameraaugen bieten nur zeitlich bzw. örtlich<br />

hohe Auflösung<br />

Betrachten wir als erstes das sogenannte Komplexauge (Abb. 2.5), auch Facettenauge<br />

genannt, welches beispielsweise bei Insekten und Krustentieren vorkommt. Das<br />

Komplexauge besteht aus vielen kleinen, separaten Einzelaugen, die, wenn man das<br />

Komplexauge von außen betrachtet, auch deutlich sichtbar sind und ein wabenähnliches<br />

Muster erzeugen. Jedes Einzelauge im Komplexauge verfügt über eine eigene Nervenfaser<br />

als Anbindung an das Insektengehirn. Da wir die Einzelaugen sehen können, ist<br />

klar, dass die Anzahl der Bildpunkte, also die spatiale Auflösung bei Komplexaugen<br />

recht niedrig liegen muss: Das Bild ist unscharf. Komplexaugen bieten aber auch Vorteile,<br />

gerade für schnellfliegende Insekten: Bestimmte Arten Komplexaugen verarbeiten<br />

mehr als 300 Bilder pro Sekunde (dem Menschen hingegen erscheinen schon Kinofilme<br />

mit 25 Bildern pro Sekunde als flüssige Bewegung).<br />

Lochkameraaugen kommen zum Beispiel bei Krakenarten vor und funktionieren –<br />

man errät es – ähnlich einer Lochkamera. Es gibt ein winziges Lichteintrittsloch,<br />

welches ein scharfes Bild auf dahinterliegende Sinneszellen projiziert, die räumliche<br />

Auflösung ist hier also deutlich höher als beim Komplexauge. Aufgrund des winzigen<br />

Eintrittsloches ist das Bild aber sehr lichtschwach.


2.3.3.2 Einzellinsenaugen kombinieren beide Stärken, sind aber komplexer<br />

aufgebaut<br />

Die bei Wirbeltieren verbreitete Art des Lichtsinnesorgans ist das Einzellinsenauge:<br />

Es vermittelt ein scharfes, hochaufgelöstes Bild der Umwelt, bei hoher bzw. variabler<br />

Lichtstärke. Dafür ist es komplizierter aufgebaut. Wie beim Lochkameraauge fällt<br />

Licht durch eine Öffnung ein (Pupille) und wird im Auge auf eine Schicht Sinneszellen<br />

projiziert (Netzhaut oder Retina). Im Unterschied zum Lochkameraauge kann<br />

der Öffnungsgrad der Pupille allerdings den Helligkeitsverhältnissen angepasst werden<br />

(dies geschieht durch den Iris-Muskel, der die Pupille vergrößert oder verkleinert).<br />

Diese Unterschiede im Pupillenöffnungsgrad machen eine aktive Scharfstellung des Bildes<br />

notwendig, weswegen das Einzellinsenauge noch eine ebenfalls verstellbare Linse<br />

enthält.<br />

2.3.3.3 Die Retina ist nicht nur Empfänger, sondern verarbeitet Informationen<br />

Die auftreffenden Lichtsignale werden in der Retina aufgenommen und direkt durch<br />

mehrere Schichten informationsverarbeitender Zellen vorverarbeitet. Wir wollen kurz<br />

verschiedene Punkte dieser Informationsvorverarbeitung betrachten und gehen dabei<br />

den Weg, den die vom Licht eingebrachte Information nimmt:<br />

Photorezeptoren empfangen das Lichtsignal und lösen Aktionspotentiale aus (es gibt<br />

verschiedene Rezeptoren für verschiedene Farbanteile und Lichtintensitäten). Diese<br />

Rezeptoren sind der eigentlich lichtempfangende Teil der Retina und derart<br />

empfindlich, dass bereits das Auftreffen von einem einzigen Photon ein Aktionspotential<br />

auslösen kann. Mehrere Photorezeptoren leiten dann ihre Signale an<br />

eine einzige<br />

Bipolarzelle weiter, hier findet also bereits eine Zusammenfassung der Information<br />

statt. Schlussendlich gelangt das nun umgewandelte Lichtsignal wieder von jeweils<br />

mehreren Bipolarzellen 2 in die<br />

Ganglienzellen. Es können verschieden viele Bipolarzellen ihre Information an eine<br />

Ganglienzelle weiterleiten. Je höher die Zahl der Photorezeptoren, von denen<br />

die Ganglienzelle betroffen ist, um so größer ist der Wahrnehmungsbereich, das<br />

Rezeptive Feld, welches die Ganglien abdeckt – und um so weniger Bildschärfe<br />

ist im Bereich dieser Ganglienzelle gegeben. Hier werden also direkt in der Retina<br />

bereits Informationen aussortiert und das Gesamtbild z.B. in Randsichtbereichen<br />

verunschärft. Bis jetzt haben wir die Informationsverarbeitung in der Retina aber<br />

2 Es gibt wieder verschiedene Arten Bipolarzellen, deren Betrachtung hier aber zu weit führen würde.


als reine Top-Down-Struktur kennengelernt. Dies bringt uns nun zur Betrachtung<br />

der<br />

Horizontal- und Amakrinzellen. Diese Zellen sind nicht von vorne nach hinten, sondern<br />

lateral verbunden und machen es möglich, dass Lichtsignale sich direkt während<br />

der Informationsverarbeitung in der Retina lateral beeinflussen – eine viel<br />

mächtigere Art der Informationsverarbeitung als komprimieren und verunschärfen.<br />

Horizontalzellen ist es hierbei möglich, von einem Photorezeptor angeregt,<br />

andere nahe Photorezeptoren ebenfalls anzuregen und gleichzeitig weiter entfernte<br />

Bipolarzellen und Rezeptoren zu hemmen. Dies sorgt für die klare Wahrnehmung<br />

von Konturen und hellen Punkten. Amakrinzellen können weiter bestimmte<br />

Reize verstärken, indem sie Informationen von Bipolarzellen auf mehrere Ganglienzellen<br />

verteilen oder auch Ganglien hemmen.<br />

Wir sehen an diesem Anfang des Wegs visueller Information ins Hirn, dass Informationsverarbeitung<br />

zum einen vom ersten Moment der Informationsaufnahme stattfindet<br />

– und zum anderen parallel in Millionen von informationsverarbeitenden Zellen stattfindet.<br />

Kein Systembestandteil ruht jemals, und aus dieser massiven Verteilung der<br />

Arbeit zieht das Nervensystem seine Macht und Fehlerresistenz.<br />

2.4 Neuronenmengen in unterschiedlich hoch entwickelten<br />

Lebewesen<br />

Hier nun ein Überblick, welche verschiedenen Lebewesen was für eine Kapazität an<br />

Neuronen besitzen (zum Großteil aus [RD05]):<br />

302 Neuronen benötigt das Nervensystem eines Fadenwurms, der einen beliebten Modellorganismus<br />

in der Biologie darstellt. Fadenwürmer leben im Erdboden und<br />

ernähren sich von Bakterien.<br />

10 4 Neuronen ergeben eine Ameise (der Einfachheit halber sei vernachlässigt, dass<br />

manche Ameisenarten auch mehr oder weniger leistungsfähige Nervensysteme<br />

aufweisen können). Durch verschiedene Lockstoffe und Düfte sind Ameisen zu<br />

komplexem Sozialverhalten und zur Bildung von riesigen Staaten mit Millionen<br />

von Individuen in der Lage. Sieht man nicht die Ameise, sondern einen solchen<br />

Staat als Individuum an, so kommt man ungefähr auf die kognitive Leistungsfähigkeit<br />

eines Schimpansen bis hin zum Menschen.<br />

Mit 10 5 Neuronen können wir das Nervensystem einer Fliege bauen. Eine Fliege kann<br />

im dreidimensionalen Raum in Echtzeit ausweichen, durch einen Looping an der


Decke landen, besitzt umfangreiche Sensorik durch Facettenaugen, Tasthaare,<br />

Nerven an den Beinenden und vieles mehr. Eine Fliege hat also „in Hardware“<br />

umfangreiche Differential- und Integralrechnungen in hohen Dimensionen implementiert.<br />

Wir alle wissen, dass eine Fliege schwer zu fangen ist. Natürlich werden<br />

auch die Körperfunktionen von Neuronen gesteuert, diese seien aber hier außen<br />

vor gelassen.<br />

Mit 0.8 · 10 6 Neuronen haben wir genug Gehirnmasse für eine Honigbiene. Honigbienen<br />

bilden Staaten und besitzen erstaunliche Fähigkeiten im Bereich der Luftaufklärung<br />

und Orientierung.<br />

4 · 10 6 Neurone ergeben eine Maus, hier sind wir schon in der Welt der Wirbeltiere<br />

angelangt.<br />

1.5 · 10 7 Neurone reichen bereits für eine Ratte, ein Tier, was als außerordentlich<br />

klug verschrien ist und oft als Teilnehmer für verschiedene anschauliche Intelligenztests<br />

bezüglich der Tierwelt herangezogen wird. Ratten können außerordentlich<br />

gut riechen und sich orientieren, zeigen außerdem Sozialverhalten. In<br />

etwa derselben Größenordnung liegt das Gehirn eines Frosches. Der Frosch besitzt<br />

einen komplizierten und funktionsreichen Körperbau, kann schwimmen und<br />

ist zu komplexen Verhaltensweisen fähig. Er kann besagte Fliege während einer<br />

Sprungbewegung im dreidimensionalen Raum durch seine Augen kontinuierlich<br />

zielerfasssen und durch seine Zunge mit vertretbarer Wahrscheinlichkeit fangen.<br />

5 · 10 7 Neurone ergeben eine Fledermaus. Die Fledermaus kann sich in totaler Dunkelheit<br />

rein akustisch in einem Raum orientieren, auf mehrere Zentimeter genau.<br />

Die Fledermaus kann sich selbst tarnende Insekten (z.B Motten tarnen sich durch<br />

eine bestimmte Flügelstruktur, welche Schall schlecht zurückwirft) während des<br />

Fluges akustisch orten und ebenso während des Fluges fressen.<br />

1.6 · 10 8 Neurone benötigt das Gehirn eines Hundes, der seit jeher Weggefährte des<br />

Menschen ist. Kommen wir zu einem weiteren beliebten Gefährten des Menschen:<br />

3 · 10 8 Neurone, also ca. doppelt so viele wie ein Hund, besitzt eine Katze. Wie wir<br />

wissen, sind Katzen sehr elegante, geduldige Raubtiere, fähig zu einer Vielzahl<br />

von Verhaltensweisen. In derselben Größenordnung liegt übrigens der Octopus,<br />

von dem nur wenige wissen, dass er z. B. in Labyrinth-Orientierungstests der<br />

Ratte deutlich überlegen ist.<br />

Für 6 · 10 9 Neurone gibt es bereits einen Schimpansen, eines der Tiere, die dem Menschen<br />

schon sehr ähneln.


10 11 Neurone besitzt ein Mensch. Der Mensch besitzt meist sehr umfangreiche kognitive<br />

Fähigkeiten und ist in der Lage zu sprechen, zu abstrahieren, zu erinnern<br />

und Werkzeuge sowie das Wissen von anderen Menschen zu nutzen, um fortgeschrittene<br />

Technologien und vielfältige soziale Strukturen zu entwickeln.<br />

Mit 2 · 10 11 Neuronen gibt es Nervensysteme, die mehr Neuronen besitzen als die<br />

des Menschen: Hier seien Elephanten und bestimmte Walarten genannt.<br />

Bereits mit der oben (sehr dünn) beschriebenen Rechenleistung einer Fliege können<br />

unsere aktuellen Computer schon nicht mehr mithalten. Neuere Forschungsergebnisse<br />

legen sogar nahe, dass die in Nervensystemen ablaufenden Prozesse noch einmal deutlich<br />

mächtiger sind, als man bis vor kurzem noch dachte: Michaeva et al. beschreiben<br />

eine eigene Synapsen-integrierte Informationsverarbeitung [MBW + 10]. Inwiefern sich<br />

das bestätigt, wird die Zeit zeigen.<br />

2.5 Übergang zu technischen Neuronen: <strong>Neuronale</strong> <strong>Netze</strong><br />

sind eine Karikatur der Biologie<br />

Wie kommen wir nun von den biologischen <strong>Neuronale</strong>n <strong>Netze</strong>n zu den technischen?<br />

Durch radikalste Vereinfachung. Hierzu möchte ich nun die für die technische Seite<br />

relevanten Erkenntnisse noch einmal kurz zusammenfassen:<br />

Wir haben gesehen, dass die biologischen Neurone miteinander auf gewichtete Weise<br />

vernetzt sind und ihr Signal bei Reizung elektrisch über das Axon übertragen. Von<br />

dort gelangen sie aber nicht direkt in die Nachfolgeneurone, sondern überwinden erst<br />

den synaptischen Spalt, in dem das Signal durch variierbare chemische Vorgänge noch<br />

einmal verändert wird. Im empfangenden Neuron werden dann die vielen durch den<br />

synaptischen Spalt nachverarbeiteten Inputs zu einem Impuls zusammengefasst bzw.<br />

aufkumuliert. Je nachdem, wie sehr das Neuron durch den kumulierten Input gereizt<br />

wird, gibt es dann selbst einen Impuls ab, oder nicht – der Output ist also nichtlinear,<br />

er ist nicht etwa proportional zum kumulierten Input. Unsere kurze Zusammenfassung<br />

entspricht nun genau den wenigen Faktoren biologischer <strong>Neuronale</strong>r <strong>Netze</strong>, welche wir<br />

in die technische Approximation übernehmen wollen:<br />

Vektorieller Input: Der Input von technischen Neuronen hat viele Komponenten, ist<br />

also ein Vektor. In der Natur empfängt ein Neuron ja auch Impulse von durchschnittlich<br />

10 3 bis 10 4 anderen Neuronen.<br />

Skalarer Output: Der Output eines Neurons ist ein Skalar, hat also nur eine Komponente.<br />

Viele skalare Outputs bilden dann wieder einen vektoriellen Input eines


anderen Neurons. Dies bedeutet insbesondere, dass irgendwo im Neuron die vielen<br />

Inputkomponenten so zusammengefasst werden müssen, dass nur eine Komponente<br />

übrig bleibt.<br />

Synapsen verändern Input: Auch in technischen <strong>Neuronale</strong>n <strong>Netze</strong>n werden die Inputs<br />

vorverarbeitet, nämlich mit einer Zahl (dem Gewicht) multipliziert – also<br />

gewichtet. Die Menge aller dieser synaptischen Gewichte stellen – sowohl im biologischen<br />

als auch im technischen Sinne – den Informationsspeicher des neuronalen<br />

<strong>Netze</strong>s dar.<br />

Aufkumulieren der Inputs: In der Biologie werden die Inputs nach der chemischen Veränderung<br />

zu einem Impuls zusammengefasst, also aufkumuliert – in der Technik<br />

geschieht dies oft durch die gewichtete Summe, die wir noch kennenlernen werden.<br />

Im Neuron arbeiten wir also anstatt mit einem Vektor nach der Aufkumulierung<br />

mit nur einem Wert, einem Skalar, weiter.<br />

Nichtlineare Kennlinie: Auch unsere technischen Neurone haben keinen zum Input<br />

proportionalen Output.<br />

Gewichte einstellbar: Die Gewichte, mit denen die Inputs gewichtet werden, sind variabel,<br />

ähnlich den chemischen Prozessen am synaptischen Spalt. Dies verleiht<br />

dem Netz eine große Dynamik, denn in den Gewichten bzw. der Art und Stärke<br />

der chemischen Vorgänge in einem synaptischen Spalt wird das „Wissen“ eines<br />

<strong>Neuronale</strong>n <strong>Netze</strong>s zu großen Teilen gespeichert.<br />

Unser aktuelles, nur salopp formuliertes, sehr einfaches Neuronenmodell erhält also<br />

einen vektoriellen Input<br />

x,<br />

mit Komponenten xi. Es kumuliert diese multipliziert mit den zugehörigen Gewichten<br />

wi auf: <br />

wixi.<br />

i<br />

Obiger Term wird auch gewichtete Summe genannt. Die nichtlineare Abbildung f bestimmt<br />

dann den skalaren Output y:<br />

<br />

<br />

y = f wixi .<br />

i<br />

Nach dieser Überleitung wollen wir nun unser Neuronenmodell genauer spezifizieren<br />

und ihm noch einige Kleinigkeiten hinzufügen. Auf welche Weise Gewichte eingestellt<br />

werden können, werden wir anschließend ebenfalls betrachten.


Übungsaufgaben<br />

Aufgabe 4. Es wird geschätzt, dass ein menschliches Gehirn etwa 10 11 Nervenzellen<br />

besitzt, von denen jede etwa 10 3 – 10 4 Synapsen aufweist. Gehen wir für diese Aufgabe<br />

von 10 3 Synapsen pro Neuron aus. Nehmen wir weiter an, eine einzelne Synapse könnte<br />

4 Bit an Information speichern. Naiv gerechnet: Welche Speicherkapazität hat das<br />

Gehirn also? Beachten Sie, dass die Information, welches Neuron mit welchem anderen<br />

eine Verbindung besitzt, auch von Bedeutung ist.


Kapitel 3<br />

Bausteine künstlicher <strong>Neuronale</strong>r <strong>Netze</strong><br />

Formale Definitionen und umgangssprachliche Erklärungen der Bestandteile,<br />

die die technischen Adaptionen der biologischen <strong>Neuronale</strong>n <strong>Netze</strong> ausmachen.<br />

Erste Beschreibungen, wie man diese Bestandteile zu einem <strong>Neuronale</strong>n Netz<br />

zusammensetzen kann.<br />

Dieses Kapitel beinhaltet die formalen Definitionen für den Großteil der Bausteine <strong>Neuronale</strong>r<br />

<strong>Netze</strong>, die wir später verwenden werden. Nach dem Ende dieses Kapitels kann<br />

man ohne weiteres auch einzelne Kapitel des Skriptums lesen, ohne die vorangehenden<br />

zu betrachten (auch wenn das natürlich nützlich wäre).<br />

3.1 Der Zeitbegriff bei <strong>Neuronale</strong>n <strong>Netze</strong>n<br />

Bei manchen Definitionen verwenden wir in dieser Arbeit einen Begriff der Zeit bzw.<br />

der Durchlaufanzahl des <strong>Neuronale</strong>n <strong>Netze</strong>s. Die Zeitrechnung unterteilt sich hierbei<br />

in diskrete Zeitschritte:<br />

Definition 3.1 (Zeitbegriff). Die aktuelle Zeit (Jetzt-Zeit) wird dabei als (t) bezeichnet,<br />

der nächste Zeitschritt mit (t+1), der vorherige mit (t−1) und sämtliche anderen<br />

analog. Beziehen sich verschiedene mathematische Größen (z.B. netj oder oi) in den<br />

folgenden Kapiteln auf einen bestimmten Zeitpunkt, so lautet die Schreibweise hierfür<br />

z.B. netj(t − 1) oder oi(t).<br />

Biologisch ist das natürlich nicht sehr plausibel (bei unserem Gehirn wartet auch kein<br />

Neuron auf ein anderes), aber die Implementierung wird dadurch ganz wesentlich vereinfacht.<br />

41


3.2 Bestandteile <strong>Neuronale</strong>r <strong>Netze</strong><br />

Ein technisches <strong>Neuronale</strong>s Netz besteht aus simplen Recheneinheiten, den Neuronen,<br />

sowie gerichteten, gewichteten Verbindungen zwischen diesen. Die Verbindungsstärke<br />

(bzw. das Verbindungsgewicht) zwischen zwei Neuronen i und j wollen wir als wi,j<br />

bezeichnen 1 .<br />

Definition 3.2 (<strong>Neuronale</strong>s Netz). Ein <strong>Neuronale</strong>s Netz ist ein sortiertes Tripel<br />

(N, V, w) mit zwei Mengen N, V sowie einer Funktion w, wobei N die Menge der<br />

Neurone bezeichnet und V eine Menge {(i, j)|i, j ∈ N} ist, deren Elemente Verbindungen<br />

von Neuron i zu Neuron j heißen. Die Funktion w : V → R definiert die<br />

Gewichte, wobei w((i, j)), das Gewicht der Verbindung von Neuron i zu Neuron j,<br />

kurz mit wi,j bezeichnet wird. Sie ist je nach Auffassung entweder undefiniert oder 0<br />

für Verbindungen, welche in dem Netz nicht existieren.<br />

SNIPE: In Snipe instantiiert man zunächst ein Objekt der Klasse NeuralNetworkDescriptor,<br />

dass den groben Umriss eines <strong>Netze</strong>s definiert (z.B. die Anzahl der Neuronenschichten). Mittels<br />

des Descriptors kann man dann beliebig viele konkrete <strong>Neuronale</strong> <strong>Netze</strong> in Form von Objekten<br />

der Klasse NeuralNetwork instantiieren. Um mit der Snipe-Programmierung anzufangen, sind<br />

die Dokumentationen genau dieser beiden Klassen – in dieser Ordnung – der richtige Ort zum<br />

Lesen. Dieses Layout aus Descriptor und abhängigen konkreten <strong>Netze</strong>n ist implementierungstechnisch<br />

durchaus sinnvoll, denn man kann damit effizient auch große Mengen ähnlicher (aber<br />

nicht unbedingt gleicher) <strong>Netze</strong> erzeugen, und verschiedene Parameter zentral ändern.<br />

Die Gewichtungen lassen sich also in einer quadratischen Gewichtsmatrix W oder<br />

wahlweise einem Gewichtsvektor W implementieren, wobei im Falle der Matrix die<br />

Zeilennummer angibt, von wo die Verbindung ausgeht, und die Spaltennummer, welches<br />

Neuron ihr Ziel ist. In diesem Fall markiert die Zahl 0 in der Tat eine nicht<br />

existierende Verbindung. Diese Matrixdarstellung wird auch Hinton-Darstellung<br />

genannt 2 .<br />

Die Neurone und Verbindungen sind ihrerseits aus folgenden Bestandteilen und Größen<br />

zusammengesetzt (ich gehe dabei den Weg, den die Daten innerhalb eines Neurons<br />

nehmen, der Abb. 3.1 auf der rechten Seite nach von oben nach unten):<br />

1 Vorsicht beim Literaturstudium: Bei manchen Literaturstellen können die i und j in wi,j vertauscht sein<br />

– hier gibt es keinen einheitlichen Standard. Generell bemühe ich mich aber, in diesem Skriptum die<br />

Schreibweise zu finden, die ich häufiger und an prominenteren Literaturstellen antreffe.<br />

2 Wieder Vorsicht bei Literaturstudium: Bei manchen Literaturstellen können Achsen und Zeilen vertauscht<br />

sein. Auch hier gibt es keine Konsistenz über die Gesamtliteratur.


Eingaben anderer<br />

Neuronen<br />

Propagierungsfunktion<br />

(oft gewichtete Summe, verarbeitet<br />

Eingaben zur <strong>Netze</strong>ingabe)<br />

<strong>Netze</strong>ingabe<br />

Aktivierungsfunktion<br />

(Erzeugt aus <strong>Netze</strong>ingabe und alter<br />

Aktivierung die neue Aktivierung)<br />

Aktivierung<br />

Ausgabefunktion<br />

(Erzeugt aus Aktivierung die Ausgabe,<br />

ist oft Identität)<br />

Eingaben anderer<br />

Neuronen<br />

Propagierungsfunktion<br />

(oft gewichtete Summe, verarbeitet<br />

Eingaben zur <strong>Netze</strong>ingabe)<br />

<strong>Netze</strong>ingabe<br />

Aktivierungsfunktion<br />

(Erzeugt aus <strong>Netze</strong>ingabe und alter<br />

Aktivierung die neue Aktivierung)<br />

Aktivierung<br />

Ausgabefunktion<br />

(Erzeugt aus Aktivierung die Ausgabe,<br />

ist oft Identität)<br />

Ausgabe zu<br />

anderen Neuronen<br />

Ausgabe zu<br />

anderen Neuronen<br />

Abbildung 3.1: Datenverarbeitung eines Neurons. Die Aktivierungsfunktion eines Neurons beinhaltet<br />

den Schwellenwert.


3.2.1 Verbindungen übertragen Informationen, die von den Neuronen<br />

verarbeitet werden<br />

Über die Verbindungen werden Daten zwischen Neuronen übertragen, wobei das Verbindungsgewicht<br />

entweder verstärkend oder hemmend wirkt. Die Definition von Verbindungen<br />

ist bereits in der Definition des <strong>Neuronale</strong>n <strong>Netze</strong>s eingeschlossen.<br />

SNIPE: Verbindungsgewichte lassen sich mit der Methode NeuralNetwork.setSynapse ändern.<br />

3.2.2 Die Propagierungsfunktion verwandelt vektorielle Eingaben zur<br />

skalaren <strong>Netze</strong>ingabe<br />

Wenn man ein Neuron j betrachtet, so findet man meistens eine ganze Menge Neurone,<br />

von denen eine Verbindung zu j ausgeht, die also Ausgaben an j weiterleiten.<br />

Die Propagierungsfunktion nimmt für ein Neuron j Ausgaben oi1 , . . . , oin anderer<br />

Neurone i1, i2, . . . , in entgegen (von denen eine Verbindung zu j existiert), und verarbeitet<br />

diese unter Berücksichtigung der Verbindungsgewichte wi,j zur <strong>Netze</strong>ingabe netj,<br />

welche von der Aktivierungsfunktion weiterverwendet werden kann. Die <strong>Netze</strong>ingabe<br />

ist also das Ergebnis der Propagierungsfunktion.<br />

Definition 3.3 (Propagierungsfunktion und <strong>Netze</strong>ingabe). Es sei I = {i1, i2, . . . , in}<br />

die Menge der Neurone, bei denen gilt ∀z ∈ {1, . . . , n} : ∃wiz,j. Dann berechnet sich<br />

die <strong>Netze</strong>ingabe von j, genannt netj, durch die Propagierungsfunktion fprop:<br />

netj = fprop(oi1 , . . . , oin, wi1,j, . . . , win,j) (3.1)<br />

Beliebt ist hier die Gewichtete Summe: Die Multiplikation der Ausgabe eines jeden<br />

i mit wi,j, und die Aufsummierung der Ergebnisse:<br />

netj = <br />

(oi · wi,j) (3.2)<br />

i∈I<br />

SNIPE: Die Gewichtete Summe ist exakt so in Snipe als Propagierungsfunktion realisiert.


3.2.3 Die Aktivierung ist der „Schaltzustand“ eines Neurons<br />

Nach dem Vorbild der Natur ist jedes Neuron zu jeder Zeit zu einem bestimmten<br />

Grad aktiv, gereizt, oder was man sonst für Ausdrücke verwenden möchte. Von diesem<br />

Aktivierungszustand hängen die Reaktionen des Neurons auf Eingaben ab. Der<br />

Aktivierungszustand gibt also den Grad der Aktivierung eines Neurons an und wird<br />

oft kurz als Aktivierung bezeichnet. Seine formale Definition wird von der gleich folgenden<br />

Definition der Aktivierungsfunktion eingeschlossen. Allgemein kann man aber<br />

definieren:<br />

Definition 3.4 (Aktivierungszustand / Aktivierung allgemein). Sei j Neuron. Der Aktivierungszustand<br />

aj, kurz Aktivierung genannt, ist j eindeutig zugeordnet, bezeichnet<br />

den Grad der Aktivität des Neurons und ergibt sich aus der Aktivierungsfunktion.<br />

SNIPE: Der Aktivierungszustand von Neuronen lässt sich mit den Methoden getActivation<br />

bzw. setActivation der Klasse NeuralNetwork abrufen bzw. setzen.<br />

3.2.4 Neuronen werden aktiviert, wenn die <strong>Netze</strong>ingabe ihren<br />

Schwellenwert überschreitet<br />

Um den Schwellenwert herum reagiert die Aktivierungsfunktion eines Neurons besonders<br />

empfindlich. Biologisch gesehen stellt der Schwellenwert die Reizschwelle dar, ab<br />

der ein Neuron feuert. Der Schwellenwert wird ebenfalls weitestgehend in der Definition<br />

der Aktivierungsfunktion mitdefiniert, allerdings kann man allgemein definieren:<br />

Definition 3.5 (Schwellenwert allgemein). Sei j Neuron. Der Schwellenwert Θj ist<br />

j eindeutig zugeordnet und markiert die Stelle der größten Steigung der Aktivierungsfunktion.<br />

3.2.5 Die Aktivierungsfunktion berechnet abhängig von Schwellenwert<br />

und <strong>Netze</strong>ingabe, wie stark ein Neuron aktiviert ist<br />

Wie wir schon gehört haben, hängt die Aktivierung aj eines Neurons j zu einem bestimmten<br />

Zeitpunkt davon ab, wie aktiviert das Neuron bereits war 3 und welche Eingaben<br />

es von außen erhalten hat.<br />

3 Die vorherige Aktivierung muss nicht immer in die Berechnung des neuen Aktivierungszustandes miteinbezogen<br />

werden – wir werden für beide Varianten Beispiele kennenlernen.


Definition 3.6 (Aktivierungsfunktion und Aktivierung). Sei j Neuron. Die Aktivierungsfunktion<br />

ist definiert als<br />

aj(t) = fact(netj(t), aj(t − 1), Θj) (3.3)<br />

und verarbeitet also die <strong>Netze</strong>ingabe netj und den alten Aktivierungszustand aj(t − 1)<br />

zu einem neuen Aktivierungszustand aj(t), wobei der Schwellenwert Θ wie oben schon<br />

erläutert eine große Rolle spielt.<br />

Im Unterschied zu anderen Größen innerhalb des <strong>Neuronale</strong>n <strong>Netze</strong>s (insbesondere zu<br />

den bisher definierten) ist die Aktivierungsfunktion oft global für alle oder zumindest<br />

eine Menge von Neuronen definiert, nur die Schwellenwerte unterscheiden sich dann<br />

von Neuron zu Neuron. Auch sollten wir im Hinterkopf behalten, dass sich die Schwellenwerte<br />

z.B. durch einen Lernvorgang ändern sollten, so dass es insbesondere nötig<br />

werden kann, die Schwellenwerte auf die Zeit zu beziehen und z.B. Θj als Θj(t) zu<br />

schreiben (das habe ich hier der Übersichtlichkeit zuliebe erst einmal unterlassen). Die<br />

Aktivierungsfunktion wird auch oft als Transferfunktion bezeichnet.<br />

SNIPE: Aktivierungsfunktionen sind in Snipe generalisiert zu „Neuronenverhaltensweisen“<br />

(Neuron Behaviors). Diese können zum einen ganz normale Aktivierungsfunktionen repräsentieren,<br />

aber auch interne Zustände besitzen. Diesbezügliche Programmbestandteile befinden sich<br />

im Paket neuronbehavior, wo auch einige der gleich vorgestellten Aktivierungsfunktionen implementiert<br />

sind. Das Interface NeuronBehavior erlaubt die Implementierung eigener Verhaltensweisen.<br />

Objekte, die von diesem Interface erben, können einem NeuralNetworkDescriptor übergeben<br />

werden; pro Neuronenschicht kann eine Neuronenverhaltensweise festgelegt werden.<br />

3.2.6 Gängige Aktivierungsfunktionen<br />

Die einfachste Aktivierungsfunktion ist die binäre Schwellenwertfunktion<br />

(Abb. 3.2 auf Seite 48), welche nur zwei Werte annehmen kann (auch Heaviside-<br />

Funktion genannt). Sie wechselt am Schwellenwert von einem Wert auf den andern,<br />

ist aber ansonsten konstant. Dies impliziert, dass sie am Schwellenwert nicht<br />

differenzierbar ist und die Ableitung ansonsten 0 ist. Dies macht z.B. das Lernen<br />

mit Backpropagation unmöglich (später mehr dazu). Beliebt ist weiterhin die auch<br />

Logistische Funktion genannte Fermifunktion (Abb. 3.2)<br />

1<br />

, (3.4)<br />

1 + e−x


welche einen Wertebereich von (0, 1) aufweist, sowie der Tangens Hyperbolicus (Abb.<br />

3.2) mit einem Wertebereich von (−1, 1) – beide differenzierbar. Die Fermifunktion ist<br />

einfach um einen Temperaturparameter T zu der Form<br />

1<br />

1 + e −x<br />

T<br />

erweiterbar, der, je kleiner man ihn wählt, die Funktion auf der x-Achse zusammenstaucht.<br />

So kann man sie beliebig an die Heaviside-Funktion annähern. Es existieren<br />

übrigens auch Aktivierungsfunktionen, welche nicht eindeutig bestimmt sind, sondern<br />

nach einer Zufallsverteilung von der Eingabe abhängen (stochastische Aktivierungsfunktionen).<br />

Eine wirklich erwähnenswerte Alternative zum Tangens Hyperbolicus wurde von Anguita<br />

et al. vorgeschlagen [APZ93]. Inspiriert von den eher langsamen Computern, die<br />

es 1993 gab, haben sie sich Gedanken gemacht, wie man ein <strong>Neuronale</strong>s Netz beschleunigen<br />

könnte, und kamen schnell darauf, dass die Approximation der e-Funktion im<br />

Tangens Hyperbolicus rechenzeitmäßig sehr lange dauert. So haben sie den Tangens<br />

Hyperbolicus näherungsweise mit zwei Parabelbögen und zwei Halbgeraden nachgebaut.<br />

Die resultierende Funktion bietet zwar statt des Werteberichs von [−1; 1] „nur“<br />

einen Wertebereich von [−0.96016; 0.96016], lässt sich aber – je nach CPU – um den<br />

Faktor 200 schneller mittels einer Addition und zwei Multiplikationen berechnen und<br />

bietet auch noch weitere Vorteile, die an anderer Stelle genannt werden.<br />

SNIPE: Die hier vorgestellten stetigen Aktivierungsfunktionen finden sich in den Klassen Fermi<br />

sowie TangensHyperbolicus im Paket neuronbehavior wieder. Die schnelle Approximation des<br />

Tangens Hyperbolicus befindet sich in der Klasse TangensHyperbolicusAnguita.<br />

3.2.7 Eine Ausgabefunktion kann genutzt werden, um die Aktivierung<br />

nochmals zu verarbeiten<br />

Die Ausgabefunktion eines Neurons j berechnet die Werte, die an die anderen Neurone,<br />

zu welchen eine Verbindung von j besteht, weitergegeben werden. Formaler:<br />

Definition 3.7 (Ausgabefunktion). Sei j Neuron. Die Ausgabefunktion<br />

fout(aj) = oj<br />

berechnet dann den Ausgabewert oj des Neurons j aus seinem Aktivierungszustand aj.<br />

(3.5)<br />

(3.6)


f(x)<br />

1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

Heaviside−Funktion<br />

−4 −2 0 2 4<br />

x<br />

tanh(x)<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

−0.2<br />

−0.4<br />

−0.6<br />

−0.8<br />

−1<br />

f(x)<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

Tangens Hyperbolicus<br />

−4 −2 0 2 4<br />

x<br />

Fermi−Funktion mit Temperaturparameter<br />

−4 −2 0 2 4<br />

Abbildung 3.2: Verschiedene gängige Aktivierungsfunktionen, von oben nach unten: Heavisidebzw.<br />

Binäre Schwellenwertfunktion, Fermifunktion, Tangens hyperbolicus. Die Fermifunktion wurde<br />

um einen Temperaturparameter erweitert. Die ursprüngliche Fermifunktion ist hierbei dunkel<br />

herausgestellt, die Temperaturparameter bei den modifizierten Fermifunktionen betragen (aufstei-<br />

gend geordnet nach Anstieg) 1<br />

2<br />

, 1<br />

5<br />

, 1<br />

10<br />

und 1<br />

25 .<br />

x


Auch die Ausgabefunktion ist i.d.R. global definiert. Oft ist diese Funktion die Identität,<br />

d.h. es wird direkt die Aktivierung aj ausgegeben 4 :<br />

fout(aj) = aj, also oj = aj<br />

Solange nicht explizit anders angegeben, werden wir innerhalb dieser Arbeit die Identität<br />

als Ausgabefunktion verwenden.<br />

3.2.8 Lernverfahren passen ein Netz auf unsere Bedürfnisse an<br />

Da wir uns diesem Thema später noch sehr ausführlich widmen werden und erst einmal<br />

die Grundsätze des Aufbaus <strong>Neuronale</strong>r <strong>Netze</strong> kennen lernen möchten, sei hier nur kurz<br />

und allgemein definiert:<br />

Definition 3.8 (Lernregel, allgemein). Ein Lernverfahren ist ein Algorithmus, der<br />

das <strong>Neuronale</strong> Netz verändert und ihm so beibringt, für eine vorgegebene Eingabe eine<br />

gewünschte Ausgabe zu produzieren.<br />

3.3 Verschiedene Netztopologien<br />

Nachdem wir nun den Aufbau der Bestandteile <strong>Neuronale</strong>r <strong>Netze</strong> kennengelernt haben,<br />

möchte ich einen Überblick über die gängigen Topologien (= Bauarten) von <strong>Neuronale</strong>n<br />

<strong>Netze</strong>n geben – also aus den Bausteinen <strong>Netze</strong> bauen. Jede beschriebene Topologie<br />

wird sowohl mit Abbildung als auch durch seine Hinton-Darstellung illustriert, damit<br />

der Leser sofort die Charakteristika sehen und bei der Betrachtung anderer <strong>Netze</strong><br />

anwenden kann.<br />

Die gepunktet eingezeichneten Gewichte werden in der Hinton-Darstellung als hellgraue<br />

Kästchen dargestellt, die durchgezogenen als dunkelgraue. Die der Übersichtlichkeit<br />

halber hinzugefügten Input- und Outputpfeile sind in der Hinton-Darstellung nicht<br />

zu finden. Um zu verdeutlichen, dass die Verbindungen von den Zeilenneuronen zu den<br />

Spaltenneuronen gehen, ist in der oberen linken Zelle der kleine Pfeil eingefügt.<br />

SNIPE: Snipe ist dafür ausgelegt, verschiedenste Netztopologien realisieren zu können. Hierfür<br />

unterscheidet Snipe verschiedene Synapsenklassen (abhängig von Synapsenstart und -Ziel), die<br />

in einer NeuralNetworkDescriptor-Instanz für die davon abhängenden <strong>Netze</strong> nach Belieben<br />

mittels der setAllowed-Methoden erlaubt oder verboten werden können.<br />

4 Andere Definitionen der Ausgabe können sinnreich sein, wenn der Wertebereich einer Aktivierungsfunktion<br />

nicht ausreichend ist.<br />

(3.7)


3.3.1 FeedForward-<strong>Netze</strong> bestehen aus Schichten und Verbindungen zur<br />

jeweils nächsten Schicht<br />

FeedForward-<strong>Netze</strong> (Abb. 3.3 auf der rechten Seite) sind in dieser Arbeit die <strong>Netze</strong>,<br />

die wir zunächst erforschen werden (wenn auch später andere Topologien verwendet<br />

werden). Die Neurone sind in Schichten eingeteilt: Eine Eingabeschicht, n versteckte<br />

Verarbeitungsschichten (unsichtbar von außen, weswegen man die Neurone<br />

darin auch als versteckt bezeichnet) und eine Ausgabeschicht. Die Verbindungen<br />

von einem jeden Neuron dürfen bei einem FeedForward-Netz ausschließlich ein Neuron<br />

der nächsten Schicht (in Richtung Ausgabeschicht) treffen. Die für ein FeedForward-<br />

Netz zugelassenen Verbindungen sind in Abb. 3.3 auf der rechten Seite durchgezogen<br />

dargestellt. Sehr oft begegnet man FeedForward-<strong>Netze</strong>n, in denen jedes Neuron i eine<br />

Verbindung zu allen Neuronen der nachfolgenden Schicht besitzt (diese Schichten nennt<br />

man dann untereinander vollverknüpft). Outputneurone werden zur Vermeidung von<br />

Benennungskonflikten oft mit Ω bezeichnet.<br />

Definition 3.9 (FeedForward-Netz). Ein FeedForward-Netz (Abb. 3.3 auf der rechten<br />

Seite) besitzt klar abgetrennte Schichten von Neuronen: Eine Eingabeschicht, eine<br />

Ausgabeschicht und beliebig viele innere, von außen nicht sichtbare Verarbeitungsschichten<br />

(auch versteckte Schichten bzw. hidden layer genannt). Verbindungen sind<br />

nur zu Neuronen der jeweils nächsten Schicht erlaubt.<br />

3.3.1.1 ShortCut-Verbindungen überspringen Schichten<br />

Manche FeedForward-<strong>Netze</strong> gestatten sog. ShortCut-Connections (Abb. 3.4 auf Seite<br />

52): Verbindungen, welche eine oder mehrere Ebenen überspringen. Auch diese Verbindungen<br />

dürfen ausschließlich in Richtung der Ausgabeschicht zeigen.<br />

Definition 3.10 (FeedForward-Netz mit ShortCut-Connections). Wie beim<br />

FeedForward-Netz, doch dürfen Verbindungen nicht nur die nächste, sondern auch<br />

jede andere nachfolgende Schicht zum Ziel haben.<br />

3.3.2 Rückgekoppelte <strong>Netze</strong> beeinflussen sich selbst<br />

Man spricht von einer Rückkopplung oder Rekurrenz, wenn ein Neuron sich auf<br />

irgendeine Weise oder durch irgendeinen Verbindungsweg selbst beeinflussen kann. Bei<br />

rückgekoppelten oder rekurrenten <strong>Netze</strong>n sind nicht immer Input- oder Outputneurone<br />

explizit definiert, daher lasse ich die diesbezügliche Beschriftung in den Abbildungen<br />

weg und nummeriere die Neurone nur durch.


i1<br />

⑥⑥⑥⑥⑥⑥⑥⑥⑥<br />

❆<br />

❯ ❯<br />

<br />

❆<br />

❯<br />

i2<br />

❯<br />

❆<br />

❯ ❯ ❯<br />

❆ ❯ ❯<br />

❆<br />

❯ ❯<br />

❆<br />

❯ ❯<br />

❆<br />

❯ ❯ ❯<br />

❆ ❯ ❯<br />

❆<br />

❯ ❯<br />

<br />

❯ ❯ ❯<br />

✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐<br />

⑥<br />

❯ ❯ ❯ <br />

⑥⑥⑥⑥⑥⑥⑥⑥<br />

❆❆❆<br />

❆❆❆<br />

❆❆❆<br />

<br />

h1 ❆<br />

❯ ❯<br />

<br />

❆<br />

❯<br />

h2<br />

❯<br />

❆<br />

❯ ❯ ❯<br />

❆ ❯ ❯<br />

❆<br />

❯ ❯<br />

❆<br />

❯ ❯<br />

❆<br />

❯ ❯ ❯<br />

❆ ❯ ❯<br />

❆<br />

❯ ❯<br />

<br />

⑥<br />

❯ ❯ ❯ ❯ ❯ ❯ <br />

⑥⑥⑥⑥⑥⑥⑥⑥<br />

h3<br />

❆<br />

<br />

⑥⑥⑥⑥⑥⑥⑥⑥⑥<br />

✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐<br />

Ω1<br />

Ω2<br />

<br />

i1 i2 h1 h2 h3 Ω1 Ω2<br />

i1<br />

i2<br />

h1<br />

h2<br />

h3<br />

Ω1<br />

Ω2<br />

Abbildung 3.3: Ein FeedForward-Netz mit drei Schichten: Zwei Inputneurone, drei versteckte<br />

Neurone und zwei Outputneurone. Charakteristisch in der Hinton-Darstellung für vollverknüpfte<br />

FeedForward-<strong>Netze</strong>: Die Blockbildung über der Diagonalen.


i1<br />

i2<br />

<br />

<br />

<br />

<br />

<br />

<br />

h1<br />

h2<br />

h3<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Ω1<br />

Ω2<br />

<br />

i1 i2 h1 h2 h3 Ω1 Ω2<br />

i1<br />

i2<br />

h1<br />

h2<br />

h3<br />

Ω1<br />

Ω2<br />

Abbildung 3.4: Ein FeedForward-Netz mit durchgezogen dargestellten Shortcut-Connections.<br />

Rechts der FeedForward-Blöcke sind in der Hinton-Darstellung neue Verbindungen hinzugekommen.


1<br />

<br />

2<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

3 4 5<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

6 7<br />

1 2 3 4 5 6 7<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

Abbildung 3.5: Ein FeedForward-ähnliches Netz mit direkt rückgekoppelten Neuronen. Die direkten<br />

Rückkopplungen sind durchgezogen dargestellt. Sie entsprechen in der Hinton-Darstellung genau<br />

der Diagonalen der Matrix.<br />

3.3.2.1 Direkte Rückkopplungen starten und enden an demselben Neuron<br />

Manche <strong>Netze</strong> lassen Verbindungen von einem Neuron zu sich selbst zu, was als direkte<br />

Rückkopplung (manchmal auch Selbstrückkopplung oder Selbstrekurrenz) bezeichnet<br />

wird (Abb. 3.5). Neurone hemmen und stärken sich so selbst, um an ihre Aktivierungsgrenzen<br />

zu gelangen.<br />

Definition 3.11 (Direkte Rückkopplung). Wir erweitern wieder das FeedForward-<br />

Netz, diesmal um Verbindungen von einem Neuron j zu sich selbst, deren Gewichte<br />

dann den Namen wj,j tragen. Anders ausgedrückt darf die Diagonale der Gewichtsmatrix<br />

W ungleich 0 sein.


1<br />

<br />

<br />

<br />

2<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

3<br />

4<br />

5<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

6<br />

7<br />

1 2 3 4 5 6 7<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

Abbildung 3.6: Ein FeedForward-ähnliches Netz mit indirekt rückgekoppelten Neuronen. Die indirekten<br />

Rückkopplungen sind durchgezogen dargestellt. Wie wir sehen, können hier auch Verbindungen<br />

zu vorherigen Schichten existieren. Die zu den FeedForward-Blöcken symmetrischen Felder in<br />

der Hinton-Darstellung sind nun belegt.<br />

3.3.2.2 Indirekte Rückkopplungen beeinflussen ihr Startneuron nur über Umwege<br />

Sind Verbindungen in Richtung der Eingabeschicht gestattet, so nennt man diese indirekte<br />

Rückkopplungen. Ein Neuron j kann sich dann durch Umwege nach vorne<br />

selbst beeinflussen, indem es z.B. die Neurone der nächsten Schicht beeinflusst und die<br />

Neurone dieser nächsten Schicht wieder j (Abb. 3.6).<br />

Definition 3.12 (Indirekte Rückkopplung). Wieder vom FeedForward-Netz ausgehend,<br />

sind diesmal zusätzlich Verbindungen von Neuronen zur vorherigen Schicht erlaubt,<br />

also dürfen die Werte im Bereich unter der Diagonalen von W ungleich 0 sein.


1 <br />

<br />

2<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

3 <br />

<br />

<br />

4 <br />

5<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

6 <br />

7<br />

1 2 3 4 5 6 7<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

Abbildung 3.7: Ein FeedForward-ähnliches Netz mit lateral rückgekoppelten Neuronen. Die direkten<br />

Rückkopplungen sind durchgezogen dargestellt. Rückkopplungen existieren hier nur ebenenweise.<br />

In der Hinton-Darstellung sammeln sich um die Diagonale gefüllte Quadrate in Höhe der<br />

FeedForward-Blöcke an, die jedoch die Diagonale frei lassen.<br />

3.3.2.3 Laterale Rückkopplungen verbinden Neuronen in ein- und derselben<br />

Ebene<br />

Verbindungen von Neuronen innerhalb einer Ebene heißen laterale Rückkopplungen<br />

(Abb. 3.7). Oft hemmt hier jedes Neuron die anderen Neurone der Ebene und<br />

verstärkt sich selbst, es wird dann nur das stärkste Neuron aktiv (Winner-Takes-<br />

All-Schema).<br />

Definition 3.13 (Laterale Rückkopplung). Ein lateral rückgekoppeltes Netz erlaubt<br />

Verbindungen innerhalb einer Schicht.


1 ❚<br />

<br />

❚<br />

<br />

<br />

❃<br />

❚❚<br />

<br />

<br />

❃ ❚❚<br />

<br />

2<br />

❃ ❚❚<br />

<br />

❃<br />

❚❚<br />

❃ ❚❚<br />

❃ ❚❚<br />

❃<br />

❚❚<br />

❃<br />

❚❚<br />

<br />

❚❚<br />

❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥<br />

<br />

❚❚❚<br />

<br />

<br />

<br />

❃<br />

❃<br />

<br />

3 ❚ ❚❚❚❚❚❚❚❚❚<br />

❚❚❚❚❚❚❚❚❚<br />

❚❚❚❚<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

4<br />

<br />

5<br />

❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥<br />

<br />

<br />

<br />

<br />

<br />

❃❃❃❃❃❃❃❃❃<br />

<br />

❃<br />

❃❃❃❃❃❃❃❃<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

6 <br />

<br />

7<br />

1 2 3 4 5 6 7<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

Abbildung 3.8: Ein vollständig verbundenes Netz mit symmetrischen Verbindungen, ohne direkte<br />

Rückkopplungen. Nur die Diagonale in der Hinton-Darstellung bleibt frei.<br />

3.3.3 Vollständig verbundene <strong>Netze</strong> erlauben jede denkbare Verbindung<br />

Vollständig verbundene <strong>Netze</strong> erlauben Verbindungen zwischen allen Neuronen, außer<br />

direkten Rückkopplungen; außerdem müssen die Verbindungen symmetrisch sein<br />

(Abb. 3.8). Ein populäres Beispiel sind die selbstorganisierenden Karten, welche in Kap.<br />

10 vorgestellt werden.<br />

Definition 3.14 (Vollständiger Verbund). Hier darf prinzipiell jedes Neuron zu jedem<br />

eine Verbindung unterhalten – allerdings kann so auch jedes Neuron Eingabeneuron<br />

werden, weshalb direkte Rückkopplungen i.d.R. hier nicht angewandt werden, und es<br />

keine klar definierten Schichten mehr gibt. Die Matrix W darf also überall ungleich 0<br />

sein, außer auf ihrer Diagonalen.


3.4 Das Biasneuron ist ein technischer Trick, Schwellwerte als<br />

Verbindungsgewichte zu behandeln<br />

Wir wissen mittlerweile, dass Neurone in vielen Netzparadigmen einen Schwellenwert<br />

besitzen, der angibt, ab wann ein Neuron aktiv ist. Der Schwellenwert ist also ein<br />

Parameter der Aktivierungsfunktion eines Neurons. Dies ist zwar biologisch am plausibelsten,<br />

es ist jedoch kompliziert, zwecks Training des Schwellenwerts zur Laufzeit auf<br />

die Aktivierungsfunktion zuzugreifen.<br />

Man kann allerdings Schwellenwerte Θj1 , . . . , Θjn für Neurone j1, j2, . . . , jn auch als<br />

Gewicht einer Verbindung von einem immer feuernden Neuron realisieren: Zu diesem<br />

Zweck integriert man ein zusätzliches, immer 1 ausgebendes Biasneuron in das Netz,<br />

verbindet es mit den Neuronen j1, j2, . . . , jn und gibt diesen neuen Verbindungen die<br />

Gewichte −Θj1 , . . . , −Θjn, also die negativen Schwellenwerte.<br />

Definition 3.15. Ein Biasneuron ist ein Neuron, welches immer 1 ausgibt und als<br />

BIAS<br />

dargestellt wird. Es wird verwendet, um Schwellwerte als Gewichte zu repräsentieren,<br />

so dass beliebige Lernverfahren sie direkt mitsamt den Gewichten trainieren können.<br />

Den Schwellenwert der Neurone j1, j2, . . . , jn setzt man dann auf 0. Nun sind die Schwellenwerte<br />

als Verbindungsgewichte implementiert (Abb. 3.9 auf der folgenden Seite) und<br />

können beim Training von Verbindungsgewichten direkt mittrainiert werden, was uns<br />

das Lernen erheblich vereinfacht.<br />

Anders ausgedrückt: Wir verschieben die Einrechnung des Schwellenwerts von der Aktivierungsfunktion<br />

in die Propagierungsfunktion. Noch kürzer: Der Schwellenwert wird<br />

jetzt einfach von der <strong>Netze</strong>ingabe subtrahiert, ist also Teil der <strong>Netze</strong>ingabe. Formaler:<br />

Seien j1, j2, . . . , jn Neurone mit Schwellenwerten Θj1 , . . . , Θjn. Durch Einsetzen eines<br />

immer 1 ausgebenden Biasneurons, Erstellen von Verbindungen von diesem zu den<br />

Neuronen j1, j2, . . . , jn und Gewichtung dieser Verbindungen wBIAS,j1 , . . . , wBIAS,jnmit<br />

−Θj1 , . . . , −Θjn kann man Θj1 = . . . = Θjn = 0 setzen und erhält ein äquivalentes <strong>Neuronale</strong>s<br />

Netz, bei dem sämtliche Schwellenwerte durch Verbindungsgewichte realisiert<br />

sind.<br />

Der Vorteil des Biasneurons ist ohne Zweifel die vielfach einfachere Implementierung<br />

des <strong>Netze</strong>s. Als Nachteil sei genannt, dass die Darstellung des <strong>Netze</strong>s schon bei nur


Θ1 ❇❇❇<br />

❇❇❇<br />

❇❇<br />

⑤<br />

❇<br />

⑤⑤⑤⑤⑤⑤⑤⑤<br />

Θ2<br />

Θ3<br />

<br />

<br />

<br />

BIAS −Θ1 <br />

❆❚<br />

<br />

❆<br />

❚❚<br />

❆ ❚<br />

0<br />

❚<br />

❆ ❚❚❚❚❚<br />

−Θ2 ❆ −Θ3 ❆ ❚<br />

❆<br />

❚❚<br />

❆<br />

❚❚<br />

<br />

<br />

❚❚❚❚❚<br />

<br />

0<br />

0<br />

Abbildung 3.9: Zwei äquivalente <strong>Neuronale</strong> <strong>Netze</strong>, links eins ohne, rechts eins mit Biasneuron. Die<br />

Neuronenschwellenwerte stehen in den Neuronen, Verbindungsgewichte an den Verbindungen. Der<br />

Übersichtlichkeit zuliebe habe ich Gewichte der schon vorhandenen (rechts gepunktet dargestellten)<br />

Verbindungen nicht extra aufgeschrieben.<br />

wenigen Neuronen recht unansehnlich wird, von einer großen Neuronenanzahl ganz zu<br />

schweigen. Übrigens wird ein Biasneuron auch oft On-Neuron genannt.<br />

Wir wollen mit dem Biasneuron so verfahren, dass es ab hier der Übersichtlichkeit<br />

halber nicht mehr mit abgebildet wird, wir aber wissen, dass es so etwas gibt und dass<br />

man die Schwellenwerte damit einfach als Gewichte behandeln kann.<br />

SNIPE: Auch in Snipe wurde anstatt Schwellwerten ein Biasneuron implementiert, es trägt den<br />

Index 0.<br />

3.5 Darstellung von Neuronen<br />

Wir haben oben bereits gesehen, dass man in Neuronen ihren Namen oder aber ihren<br />

Schwellenwert schreiben kann. Eine weitere sinnvolle Darstellungsmethode, welche wir<br />

auch in der weiteren Arbeit mehrfach anwenden werden, ist, Neurone nach ihrer Datenverarbeitungsart<br />

darzustellen. Einige Beispiele ohne weitere Erläuterungen seien in<br />

Abb. 3.10 auf der rechten Seite gegeben – erläutert werden die Neuronenarten, sobald<br />

sie gebraucht werden.


||c,x||<br />

Gauß<br />

Σ<br />

Tanh<br />

<br />

Σ<br />

Fermi<br />

Σ<br />

<br />

Σ<br />

fact<br />

Σ<br />

<br />

BIAS<br />

Abbildung 3.10: Verschiedene Neuronenarten, denen wir im Text noch begegnen werden.<br />

3.6 Es ist nicht egal, in welcher Reihenfolge<br />

Neuronenaktivierungen berechnet werden<br />

Für ein <strong>Neuronale</strong>s Netz ist es von großer Bedeutung, in welcher Reihenfolge die<br />

einzelnen Neurone ihre Eingaben empfangen, verarbeiten, und Ergebnisse ausgeben.<br />

Hierbei werden zwei Modellklassen unterschieden:<br />

3.6.1 Synchrone Aktivierung<br />

Alle Neurone ändern ihre Werte synchron, berechnen also simultan <strong>Netze</strong>ingaben,<br />

Aktivierung und Ausgabe und geben diese weiter. Synchrone Aktivierung kommt dem<br />

biologischen Vorbild am nächsten, macht aber – wenn sie in Hardware implementiert<br />

werden soll – nur auf bestimmten Parallelrechnern Sinn und speziell keinen Sinn für<br />

FeedForward-<strong>Netze</strong>. Diese Variante ist die allgemeinste und kann mit <strong>Netze</strong>n beliebiger<br />

Topologie sinnvoll angewandt werden.<br />

Definition 3.16 (Synchrone Aktivierung). Alle Neurone eines <strong>Netze</strong>s berechnen<br />

gleichzeitig <strong>Netze</strong>ingaben mittels Propagierungsfunktion, Aktivierung mittels Aktivierungsfunktion<br />

und Ausgabe mittels Ausgabefunktion. Hiernach ist der Aktivierungszyklus<br />

abgeschlossen.<br />

SNIPE: Softwaretechnisch würde man diese sehr allgemeine Aktivierungsreihenfolge realisieren,<br />

indem man in jedem neuen Zeitschritt zunächst alle <strong>Netze</strong>ingaben aus den existierenden<br />

Aktivierungen berechnet, zwischenspeichert, und anschließend aus den <strong>Netze</strong>ingaben alle Aktivierungen.<br />

Und so ist das auch genau das, was in Snipe passiert, denn Snipe muss ja beliebige<br />

Topologien realisieren können.


3.6.2 Asynchrone Aktivierung<br />

Hier ändern die Neurone ihre Werte nicht simultan, sondern zu verschiedenen Zeitpunkten.<br />

Hierfür gibt es verschiedene Ordnungen, von denen ich ausgewählte vorstelle:<br />

3.6.2.1 Zufällige Ordnung<br />

Definition 3.17 (Zufällige Aktivierungsordnung). Bei der zufälligen Aktivierungsordnung<br />

wird jeweils ein Neuron i zufällig gewählt und dessen neti, ai und oi<br />

aktualisiert. Bei n vielen Neuronen ist ein Zyklus die n-malige Durchführung dieses<br />

Schrittes. Offensichtlich werden manche Neurone pro Zyklus mehrfach aktualisiert,<br />

andere hingegen gar nicht.<br />

Es ist klar, dass diese Aktivierungsordnung nicht immer sinnreich ist.<br />

3.6.2.2 Zufällige Permutation<br />

Bei der Zufälligen Permutation wird pro Zyklus jedes Neuron genau einmal berücksichtigt,<br />

das Ganze allerdings in zufälliger Reihenfolge.<br />

Definition 3.18 (Zufällige Permutation). Zunächst wird eine Permutation der Neurone<br />

zufällig berechnet, welche die Aktivierungsreihenfolge festlegt. In dieser Reihenfolge<br />

werden die Neurone dann sukzessive abgearbeitet.<br />

Auch diese Aktivierungsreihenfolge wird nicht oft eingesetzt, weil erstens die Reihenfolge<br />

im Allgemeinen nicht sinnvoll ist und es zweitens sehr zeit- bzw. rechenaufwändig<br />

ist, bei jedem Zyklus eine neue Permutation zu berechnen. Wir werden in Form<br />

der Hopfield-<strong>Netze</strong> (Kap. 8) zwar eine Topologie kennenlernen, welche nominell eine<br />

zufällige oder zufällig permutierte Aktivierungsreihenfolge besitzt – die praktische Umsetzung<br />

sieht dort allerdings so aus, dass man aus o.g. Gründen eine feste Reihenfolge<br />

verwendet.<br />

Bei allen Ordnungen können wahlweise entweder die alten Aktivierungen der Neurone<br />

des Zeitpunkts t als Ausgangspunkt genommen werden, oder aber, wo vorhanden,<br />

bereits die Aktivierungen des Zeitpunkts t + 1, für den wir eigentlich gerade die Aktivierungen<br />

errechnen.


3.6.2.3 Topologische Ordnung<br />

Definition 3.19 (Topologische Aktivierung). Bei der Topologischen Aktivierungsordnung<br />

werden die Neurone pro Zyklus in fester Ordnung aktualisiert, welche<br />

durch die Netztopologie definiert ist.<br />

Dieses Verfahren kommt nur für zyklenfreie, also rückkopplungsfreie <strong>Netze</strong> in Frage, da<br />

man sonst keine Aktivierungsreihenfolge finden kann. In FeedForward-<strong>Netze</strong>n (für die<br />

das Verfahren äußerst günstig ist) würden so erst die Eingabeneurone aktualisiert, danach<br />

die inneren Neurone, als letztes die Ausgabeneurone. Dies spart eine Menge Zeit:<br />

Bei synchroner Aktivierung würde man für ein Feed-Forward-Netz mit drei Schichten<br />

beispielsweise drei vollständige Propagierungszyklen benötigen, damit eine Eingabe<br />

auch Auswirkungen auf die Ausgabeneurone haben kann. Mittels topologischer Aktivierung<br />

ist dies mit nur einem Propagierungszyklus geschafft. Allerdings lässt sich<br />

nicht für jede Netztopologie eine sinnvolle Ordnung finden, um auf diese Weise Zeit zu<br />

sparen.<br />

SNIPE: Wenn der Leser mit Snipe FeedForward-<strong>Netze</strong> realisieren und auf diese Weise Rechenzeit<br />

einsparen möchte, so kann er in der Dokumentation zur Klasse NeuralNetworkDescriptor<br />

nach der Funktion Fastprop suchen und diese aktivieren. Während der Propagierung werden<br />

die Neurone dann nacheinander durchgegangen und für jedes Neuron <strong>Netze</strong>ingabe und Aktivierung<br />

auf einmal berechnet. Da die Neurone von Eingabeschicht über die verschiedenen Schichten<br />

bis hin zur Ausgabeschicht durchgehend aufsteigend nummeriert sind, entspricht diese Propagierungsvariante<br />

der topologisch sinnvollen Ordnung für FeedForward-<strong>Netze</strong>.<br />

3.6.2.4 Feste Aktivierungsordnungen in der Implementierung<br />

Offensichtlich kann man sich auch feste Aktivierungsordnungen definieren. Es ist<br />

daher eine beliebte Methode bei der Implementierung von z.B. FeedForward-<strong>Netze</strong>n,<br />

die Aktivierungsreihenfolge einmal nach der Topologie zu ermitteln und zur Laufzeit<br />

diese ermittelte Reihenfolge ohne weitere Prüfung weiter zu verwenden. Dies ist jedoch<br />

bei <strong>Netze</strong>n, die ihre Topologie verändern können, nicht unbedingt sinnvoll.<br />

3.7 Kommunikation mit der Außenwelt: Ein- und Ausgabe<br />

von Daten in und von <strong>Neuronale</strong>n <strong>Netze</strong>n<br />

Zuletzt sei noch betrachtet, dass in viele Arten von <strong>Neuronale</strong>n <strong>Netze</strong>n natürlich auch<br />

Daten eingegeben werden können. Diese werden dann verarbeitet und können eine


Ausgabe hervorrufen. Betrachten wir beispielsweise das FeedForward-Netz aus Abb. 3.3<br />

auf Seite 51: Es hat zwei Eingabe- und zwei Ausgabeneurone, also auch zwei numerische<br />

Eingaben x1, x2 und Ausgaben y1, y2. Diese Schreibweise wird natürlich für <strong>Netze</strong> mit<br />

vielen Ein- und Ausgabeneuronen mühselig – insofern machen wir es uns einfach und<br />

fassen die Ein- und Ausgabekomponenten für n Ein- bzw. Ausgabeneurone in den<br />

Vektoren x = (x1, x2, . . . , xn) und y = (y1, y2, . . . , yn) zusammen.<br />

Definition 3.20 (Eingabevektor). Ein Netz mit n vielen Eingabeneuronen benötigt<br />

n Eingaben x1, x2, . . . , xn. Wir fassen diese als Eingabevektor x = (x1, x2, . . . , xn)<br />

auf. Die Eingabedimension bezeichnen wir also mit n. Daten werden in ein <strong>Neuronale</strong>s<br />

Netz eingegeben, indem die Komponenten des Eingabevektors einfach bei den<br />

Eingabeneuronen als <strong>Netze</strong>ingabe verwendet werden.<br />

Definition 3.21 (Ausgabevektor). Ein Netz mit m vielen Ausgabeneuronen liefert<br />

m Ausgaben y1, y2, . . . , ym. Wir fassen diese als Ausgabevektor y = (y1, y2, . . . , ym)<br />

auf. Die Ausgabedimension bezeichnen wir also mit m. Daten werden von einem<br />

<strong>Neuronale</strong>n Netz ausgegeben, indem die Komponenten des Ausgabevektors von den<br />

Ausgabewerten der Ausgabeneurone übernommen werden.<br />

SNIPE: Um Daten durch eine NeuralNetwork-Instanz zu propagieren, wird die propagate-<br />

Methode genutzt. Sie nimmt den Eingabevektor als Array von Doubles entgegen und liefert<br />

einen ebensolchen Ausgabevektor.<br />

Wir haben nun die Grundbausteine der <strong>Neuronale</strong>n <strong>Netze</strong> definiert und näher betrachtet<br />

– ohne jedoch ein Netz einmal in Aktion zu sehen. Wir wollen mit dieser rein<br />

erklärenden Ansicht zunächst etwas weiter fortfahren und ganz allgemein beschreiben,<br />

wie ein <strong>Neuronale</strong>s Netz lernen könnte.<br />

Übungsaufgaben<br />

Aufgabe 5. Ist es (Ihrer Meinung nach) sinnvoll, bei schichtenbasierten <strong>Netze</strong>n wie<br />

z.B. FeedForward-<strong>Netze</strong>n ein Biasneuron pro Schicht einzufügen? Erörtern Sie dies in<br />

Bezug auf die Darstellung und die Implementierung des <strong>Netze</strong>s. Ändert sich etwas am<br />

Ergebnis des <strong>Netze</strong>s?<br />

Aufgabe 6. Zeigen Sie sowohl für die Fermifunktion f(x), als auch für den Tangens<br />

Hyperbolicus tanh(x), dass sich die Ableitungen der Funktionen durch die Funktion<br />

selbst ausdrücken lassen, dass also die beiden Behauptungen<br />

1. f ′ (x) = f(x) · (1 − f(x)) und


2. tanh ′ (x) = 1 − tanh 2 (x)<br />

gelten.


Kapitel 4<br />

Grundlagen zu Lernprozess und<br />

Trainingsbeispielen<br />

Ansätze und Gedanken, auf welche Arten Maschinen etwas beizubringen ist.<br />

Korrigiert man <strong>Neuronale</strong> <strong>Netze</strong>? Bestärkt man sie nur? Lässt man sie gar<br />

ganz alleine ohne Hilfe lernen? Gedanken darüber, was wir während des<br />

Lernvorganges überhaupt verändern möchten, wie wir es verändern, über<br />

Fehlermessung und wann wir mit dem Lernen fertig sind.<br />

Wie schon beschrieben, besteht das interessanteste Merkmal <strong>Neuronale</strong>r <strong>Netze</strong> in ihrer<br />

Fähigkeit, sich Problemen durch Training vertraut zu machen und, nach ausreichendem<br />

Training, auch bis dato unbekannte Probleme derselben Klasse lösen zu können, was<br />

man als Generalisierung bezeichnet. Bevor wir konkrete Lernverfahren kennenlernen,<br />

möchte ich in diesem Kapitel zunächst grundsätzliche Gedanken zum Lernprozess<br />

anregen.<br />

4.1 Es gibt verschiedene Paradigmen zu lernen<br />

Lernen ist ein weiter Begriff. Es bedeutet, das ein System sich in irgendeiner Form<br />

verändert, um sich z.B. an Veränderungen in seiner Umwelt anzupassen. Grundsätzlich<br />

verändert sich ein <strong>Neuronale</strong>s Netz mit der Veränderung seiner Bestandteile, die wir<br />

eben kennengelernt haben. Theoretisch könnte ein <strong>Neuronale</strong>s Netz also lernen, indem<br />

es<br />

1. neue Verbindungen entwickelt,<br />

2. vorhandene Verbindungen löscht,<br />

65


3. Verbindungsgewichte verändert,<br />

4. Schwellenwerte von Neuronen ändert,<br />

5. eine oder mehrere der drei Neuronenfunktionen (wir erinnern uns: Aktivierungs-,<br />

Propagierungs- und Ausgabefunktion) abwandelt,<br />

6. neue Neurone entwickelt<br />

7. oder aber vorhandene Neurone löscht (und damit natürlich Verbindungen).<br />

Wir behandeln die Gewichtsveränderung zunächst als die gängigste. Weiterhin kann<br />

das Löschen von Verbindungen hierdurch realisiert werden, dass man zusätzlich noch<br />

dafür Sorge trägt, dass eine zum Löschen auf 0 gesetzte Verbindung nicht weiter trainiert<br />

wird. Man kann weiterhin Verbindungen entwickeln durch das Setzen einer nicht<br />

vorhandenen Verbindung (welche ja in der Verbindungsmatrix den Wert 0 innehat)<br />

auf einen von 0 verschiedenen Wert. Für die Modifikation der Schwellenwerte verweise<br />

ich auf die Möglichkeit, diese als Gewichte zu implementieren (Abschnitt 3.4). Wir<br />

erschlagen also gleich vier der obigen Punkte durch reines Training von Verbindungsgewichten.<br />

Die Veränderung von Neuronenfunktionen ist schwierig zu implementieren, nicht sehr<br />

intuitiv und auch nicht wirklich biologisch motiviert. Sie ist daher nicht verbreitet und<br />

wird hier zunächst nicht behandelt werden. Die Möglichkeiten, Neurone zu entwickeln<br />

oder zu löschen, liefern während des Trainings eines <strong>Neuronale</strong>n <strong>Netze</strong>s nicht nur gut<br />

eingestellte Gewichte, sondern optimieren auch noch die Netztopologie - sie gewinnen<br />

daher immer mehr an Interesse und werden oft mit evolutionären Verfahren realisiert.<br />

Da wir aber einsehen, dass wir einen Großteil der Lernmöglichkeiten bereits durch<br />

Gewichtsveränderungen abdecken können, sind auch sie zunächst nicht Gegenstand<br />

dieser Arbeit (es ist aber geplant, die Arbeit in diese Richtung zu erweitern).<br />

SNIPE: Methoden der Klasse NeuralNetwork erlauben das Ändern von Verbindungsgewichten<br />

und Schwellenwerten sowie das Hinzufügen und Entfernen von Verbindungen sowie ganzen<br />

Neuronen. Methoden der Klasse NeuralNetworkDescriptor erlauben das Ändern der Aktivierungsfunktion<br />

pro Schicht.<br />

Wir lassen also unser <strong>Neuronale</strong>s Netz lernen, indem wir es die Verbindungsgewichte<br />

modifizieren lassen nach Regeln, die wir in Algorithmen fassen können – ein Lernverfahren<br />

ist also immer ein Algorithmus, den wir einfach mithilfe einer Programmiersprache<br />

implementieren können. Ich werde später voraussetzen, dass wir definieren können,<br />

was eine erwünschte, lernenswerte Ausgabe ist (und an dieser stelle auch die Trainingsbeispiele<br />

formal definieren) und dass wir eine Trainingsmenge an Lernbeispielen<br />

besitzen. Eine Trainingsmenge sei folgendermaßen definiert:


Definition 4.1 (Trainingsmenge). Als Trainingsmenge P bezeichnen wir eine Menge<br />

von Trainingsbeispielen, welche wir zum Training unseres <strong>Neuronale</strong>s <strong>Netze</strong>s verwenden.<br />

Ich stelle nun die drei wesentlichen Paradigmen des Lernens anhand der Unterschiede<br />

in der Beschaffenheit der Trainingsmenge vor.<br />

4.1.1 Unüberwachtes Lernen gibt dem Netz nur Eingabemuster, aber<br />

keine Lernhilfen<br />

Unüberwachtes Lernen (engl. unsupervised learning) ist die biologisch plausibelste<br />

Methode, die aber nicht für alle Fragestellungen geeignet ist. Gegeben sind nur<br />

Eingabemuster; das Netz versucht, ähnliche Muster zu identifizieren und in ähnliche<br />

Kategorien zu klassifizieren.<br />

Definition 4.2 (Unüberwachtes Lernen). Die Trainingsmenge besteht nur aus Eingabemustern,<br />

das Netz versucht selbst, Ähnlichkeiten herauszufinden und Musterklassen<br />

zu bilden.<br />

Als bekanntes Beispiel sei wieder auf die selbstorganisierenden Karten von Kohonen<br />

(Kap. 10) verwiesen.<br />

4.1.2 Bestärkendes Lernen gibt dem Netz Feedback, ob es sich gut oder<br />

schlecht verhält<br />

Beim bestärkenden Lernen (engl. reinforcement learning) wird dem Netz nach<br />

erfolgtem Durchlauf immerhin ein Wahrheits- oder reeller Wert geliefert, der definiert,<br />

ob das Ergebnis richtig oder falsch ist. Intuitiv ist klar, dass dieses Verfahren für viele<br />

Anwendungen zielstrebiger funktionieren sollte als unüberwachtes Lernen, erhält das<br />

Netz doch konkrete Anhaltspunkte zur Lösungsfindung.<br />

Definition 4.3 (Bestärkendes Lernen). Die Trainingsmenge besteht aus Eingabemustern,<br />

nach erfolgtem Durchlauf wird dem Netz ein Wert zurückgegeben, ob das Ergebnis<br />

falsch oder richtig war, u.U. noch wie falsch oder richtig es war.


4.1.3 Überwachtes Lernen hilft dem Netz mit Trainingsbeispielen und<br />

zugehörigen Lösungen<br />

Beim überwachten Lernen (engl. supervised learning) existiert eine Trainingsmenge<br />

von Eingabemustern sowie deren korrekte Ergebnisse in Form der genauen Aktivierung<br />

sämtlicher Ausgabeneurone. Für jedes in das Netz eingegebene Trainingsmuster<br />

kann so beispielsweise die Ausgabe direkt mit der korrekten Lösung verglichen werden<br />

und anhand der Differenz die Netzgewichtungen geändert werden. Ziel ist eine<br />

Veränderung der Gewichte dahingehend, dass das Netz nach dem Training nicht nur<br />

selbstständig Ein- und Ausgabemuster assoziieren, sondern bis dato unbekannte, ähnliche<br />

Eingabemuster einem plausiblen Ergebnis zuführen, also generalisieren kann.<br />

Definition 4.4 (Überwachtes Lernen). Die Trainingsmenge besteht aus Eingabemustern<br />

mit jeweiliger korrekter Lösung, so dass dem Netz nach Ausgabe ein genauer<br />

Fehlervektor 1 zurückgegeben werden kann.<br />

Dieses Lernverfahren ist biologisch nicht immer plausibel, aber exorbitant zielgerichteter<br />

als die anderen und daher sehr praktikabel.<br />

Wir möchten hier zunächst die überwachten Lernverfahren allgemein betrachten, welche<br />

sich innerhalb dieser Abeit zunächst an folgendes Schema halten:<br />

Eingabe des Eingabemusters (Aktivierung der Eingabeneurone),<br />

Vorwärtspropagierung der Eingabe durch das Netz, Erzeugung der Ausgabe,<br />

Vergleich der Ausgabe mit der korrekten Ausgabe (Teaching Input), liefert Fehlervektor<br />

(Differenzvektor),<br />

Verbesserungen des <strong>Netze</strong>s werden aufbauend auf den Fehlervektor berechnet.<br />

Anwendung der Verbesserung um die vorher berechneten Werte.<br />

4.1.4 Offline oder Online lernen?<br />

Zu beachten ist, dass das Lernen offline erfolgen kann (eine Menge von Trainingsbeispielen<br />

wird präsentiert, danach werden die Gewichte verändert, der Gesamtfehler<br />

wird mit Hilfe einer Fehlerfunktion errechnet bzw. einfach aufkumuliert; näheres<br />

hierzu im Abschnitt 4.4) oder aber online (nach jedem präsentierten Beispiel werden<br />

die Gewichte verändert). Beides bietet Vor- und Nachteile, auf die wir bei den<br />

1 Den Begriff des Fehlervektors werden wir in Abschnitt 4.2 noch definieren, wenn es an die mathematische<br />

Formalisierung des Lernens geht.


Lernverfahren nötigenfalls eingehen werden. Offline-Trainingsverfahren werden auch<br />

Batch-Trainingsverfahren genannt, da ein Stapel Ergebnisse auf einmal korrigiert<br />

wird. Einen solchen Trainingsabschnitt eines ganzen Stapels Trainingsbeispiele samt<br />

der zugehörigen Veränderung der Gewichtswerte nennt man Epoche.<br />

Definition 4.5 (Offline-Lernen). Man gibt mehrere Trainingsbeispiele auf einmal in<br />

das Netz ein, kumuliert die Fehler auf, und lernt für alle Trainingsbeispiele gleichzeitig.<br />

Definition 4.6 (Online-Lernen). Man lernt direkt durch den Fehler eines jeden Trainingsbeispiels.<br />

4.1.5 Fragen, über die man sich vor dem Lernen Gedanken machen sollte<br />

Die Anwendung der Schemata setzt natürlich voraus, dass man sich vorher über einige<br />

Fragen Gedanken gemacht hat, die ich hier gewissermaßen als Checkliste einbringen<br />

und im Laufe der Arbeit sukzessive beantworten möchte, soweit möglich:<br />

⊲ Woher kommt die Lerneingabe und in welcher Form erhalten wir sie?<br />

⊲ Auf welche Weise muss man die Gewichte modifizieren, so dass man möglichst<br />

schnell und sicher lernt?<br />

⊲ Wie kann man objektiv messen, wie erfolgreich der Lernprozess ist?<br />

⊲ Kann man ermitteln, welches das „beste“ Lernverfahren ist?<br />

⊲ Kann man vorhersagen, ob ein Lernverfahren terminiert, ob es also nach endlicher<br />

Zeit einen optimalen Zustand erreicht oder z.B. zwischen verschiedenen<br />

Zuständen oszilliert?<br />

⊲ Wie wird das Gelernte im Netz gespeichert?<br />

⊲ Kann man verhindern, dass neu gelernte Muster alte erlernte Assoziationen wieder<br />

zerstören (das sog. Stabilitäts-Plastizitäts-Dilemma)?<br />

Wir werden feststellen, dass alle diese Fragen nicht allgemein beantwortet werden können,<br />

sondern für jedes Lernverfahren und jede Topologie von Netzwerk neu diskutiert<br />

werden müssen.


4.2 Trainingsmuster und Teaching Input<br />

Bevor wir unsere erste Lernregel kennenlernen, muss der Teaching Input eingeführt<br />

werden. Im (hier vorliegenden) Falle des überwachten Lernens setzen wir voraus, dass<br />

eine Trainingsmenge aus Trainingsmustern und dazugehörigen richtigen Ausgabewerten<br />

vorliegt, die man nach erfolgtem Training an den Ausgabeneuronen sehen möchte.<br />

Diese Ausgabewerte werden, bis das Netz trainiert ist d.h. solange es falsche Ausgaben<br />

erzeugt, als sogenannter Teaching Input bezeichnet, und zwar für jedes Neuron<br />

einzeln. Für ein Neuron j mit fehlerhafter Ausgabe oj ist tj also die Bezeichnung für<br />

den Teaching Input, die richtige oder gewünschte Ausgabe zu einem Trainingsmuster<br />

p.<br />

Definition 4.7 (Trainingsmuster). Als Trainingsmuster bezeichnen wir einen Eingabevektor<br />

p mit Komponenten p1, p2, . . . , pn, dessen gewünschte Ausgabe wir kennen.<br />

Indem wir das Trainingsmuster in das Netz eingeben, erhalten wir eine Ausgabe, die<br />

wir mit dem Teaching Input, also der gewünschten Ausgabe vergleichen. Die Menge<br />

der Trainingsmuster nennen wir P . Sie enthält eine endliche Anzahl geordneter<br />

Paare (p, t) von Trainingsmustern mit zugehörigem gewünschten Output.<br />

Trainingsmuster heißen im englischen Pattern, weswegen sie hier mit p bezeichnet<br />

werden. Sie besitzen in der Literatur und in der weiteren Arbeit viele Synonyme, wie<br />

z.B. Pattern, Trainingsbeispiel, Muster, usw.<br />

Definition 4.8 (Teaching Input). Sei j Ausgabeneuron. Der Teaching Input tj ist<br />

definiert als der gewünschte, korrekte Wert, den j nach der Eingabe eines bestimmten<br />

Trainingsmusters ausgeben sollte. Analog zum Vektor p kann man auch Teaching Inputs<br />

t1, t2, . . . , tn der Neurone zu einem Vektor t zusammenfassen. t ist immer auf ein<br />

bestimmtes Trainingsmuster p bezogen und ist, wie oben schon gesagt, in der Menge<br />

P der Trainingsmuster enthalten.<br />

SNIPE: Für die Trainingsdaten relevante Klassen befinden sich im Paket training. Die Klasse<br />

TrainingSampleLesson ist zum Speichern von Trainingsmustern und Teaching Inputs gedacht<br />

und erlaubt auch einfache Vorverarbeitung der daten.<br />

Definition 4.9 (Fehlervektor). Für mehrere Ausgabeneurone Ω1, Ω2, . . . , Ωn wird die<br />

Differenz von Ausgabevektor und Teaching Input unter einem Trainingsbeispiel p<br />

Ep =<br />

⎛<br />

⎜<br />

⎝<br />

t1 − y1<br />

.<br />

tn − yn<br />

⎞<br />

⎟<br />


als Fehlervektor, manchmal auch als Differenzvektor bezeichnet. Je nachdem, ob<br />

man offline oder online lernt, bezieht er sich auf ein bestimmtes Trainingsmuster, oder<br />

den auf bestimmte Weise normalisierten Fehler aus einer Menge von Trainingsmustern.<br />

Ich fasse noch einmal kurz zusammen, was wir jetzt an diesbezüglichen Vektoren definiert<br />

haben. Es gibt einen<br />

Eingabevektor x, der in das <strong>Neuronale</strong> Netz eingegeben werden kann. Das <strong>Neuronale</strong><br />

Netz gibt dann je nach Netzart einen<br />

Ausgabevektor y aus. Das<br />

Trainingsbeispiel p ist im Grunde nichts weiter als ein Eingabevektor. Wir verwenden<br />

ihn nur zum Trainieren, weil wir den dazugehörigen<br />

Teaching Input t kennen, der nichts anderes als der gewünschte Ausgabevektor zu<br />

dem Trainingsbeispiel ist. Der<br />

Fehlervektor Ep ist die Differenz zwischen Teaching Input t und tatsächlicher Ausgabe<br />

y.<br />

Was also x und y für den allgemeinen Betrieb des <strong>Netze</strong>s sind, sind p und t für das<br />

Training des <strong>Netze</strong>s – und während des Trainings versuchen wir, y möglichst nah an<br />

t heranzubringen. Noch ein Tip zur Nomenklatur. Wir haben die Ausgabewerte eines<br />

Neurons i mit oi bezeichnet. Die Ausgabe eines Ausgabeneurons Ω heißt also oΩ. Wir<br />

nennen aber Ausgabewerte des <strong>Netze</strong>s yΩ. Diese Netzausgaben sind natürlich auch nur<br />

Neuronenausgaben, allerdings von Ausgabeneuronen. Insofern gilt<br />

yΩ = oΩ.<br />

4.3 Umgang mit Trainingsbeispielen<br />

Wir haben gesehen, wie wir grundsätzlich lernen können und welche Schritte wir dafür<br />

durchführen müssen. Nun sollten wir noch die Wahl der Trainingsdaten und die Lernkurve<br />

betrachten. Insbesondere interessant nach erfolgtem Lernvorgang ist auch die<br />

Frage, ob das Netz vielleicht nur auswendig gelernt hat – also unsere Trainingsbeispiele<br />

recht exakt der richtigen Ausgabe zuführen kann, jedoch für sämtliche anderen<br />

Probleme derselben Klasse falsche Antworten liefert.<br />

Angenommen, wir wollen das Netz eine Abbildung R 2 → B 1 trainieren lassen, und<br />

die Trainingsbeispiele aus Abb. 4.1 auf der folgenden Seite ansetzen: Dann könnte<br />

es sein, dass das Netz zum Schluss exakt die farblich markierten Bereiche um die


Abbildung 4.1: Veranschaulichung von Trainingsergebnissen derselben Trainingsmenge auf <strong>Netze</strong>n<br />

zu hoher (oben), richtiger (Mitte) oder zu niedriger Kapazität (unten).


Trainingsbeispiele herum mit der Ausgabe 1 markiert (Abb. 4.1 oben), und ansonsten<br />

überall 0 ausgibt – es hat also genug Speicherkapazität gehabt, sich auf die sechs<br />

Trainingsbeispiele mit einer 1 als Ausgabe zu konzentrieren, was auf ein zu großes<br />

Netz mit zu viel freier Speicherkapazität schließen lässt.<br />

Andersherum kann auch ein Netz zu wenig Kapazität haben (Abb. 4.1 unten) – diese<br />

grobe Darstellung der Eingangsdaten entspricht auch nicht der guten Generalisierung,<br />

die wir uns wünschen. Es gilt also, hier den Mittelweg zu finden (Abb. 4.1 Mitte).<br />

4.3.1 Es ist nützlich, die Menge der Trainingsbeispiele zu unterteilen<br />

Ein Lösungsansatz für diese Probleme ist häufig, die Trainingsmenge zu teilen, und<br />

zwar<br />

⊲ in eine Trainingsmenge, mit der wir wirklich trainieren,<br />

⊲ und eine Testmenge, mit der wir unsere Fortschritte testen<br />

– vorausgesetzt, wir haben ausreichend Trainingsbeispiele. Übliche Teilungsrelationen<br />

sind z.B. 70% für Trainingsdaten und 30% für Testdaten (zufällig gewählt). Wir können<br />

das Training beenden, wenn das Netz auf den Trainings- und Testdaten gute Werte<br />

liefert.<br />

SNIPE: Die Methode splitLesson der Klasse TrainingSampleLesson erlaubt, eine Training-<br />

SampleLesson anhand eines wählbaren Verhältnisses entzwei zu teilen.<br />

Doch Achtung: Wenn man aufgrund eines schlechten Ergebnisses in den Testdaten an<br />

der Netzstruktur schraubt, bis auch diese gute Ergebnisse liefern, läuft man schnell<br />

Gefahr, das Netz auch auf die Testdaten zuzuschneiden, so dass diese zumindest indirekt<br />

auch ins Training eingehen, auch wenn sie nicht explizit für das Training genutzt<br />

werden. Abhilfe schafft ein dritter Validierungsdatensatz, der nach dem mutmaßlich<br />

erfolgreichen Training zum reinen Validieren benutzt wird.<br />

Offensichtlich enthalten wir dem <strong>Neuronale</strong>n Netz dadurch, dass wir weniger Muster<br />

trainieren, Information vor und laufen damit Gefahr, dass es schlechter lernt. Es geht<br />

uns hier aber nicht um das 100% exakte Reproduzieren gegebener Beispiele, sondern<br />

um erfolgreiches Generalisieren und um Approximation einer ganzen Funktion – wofür<br />

es durchaus von Nutzen sein kann, weniger Informationen in das Netz zu trainieren.


4.3.2 Reihenfolgen der Musterpräsentation<br />

Man kann auch verschiedene Strategien finden, in welcher Reihenfolge man Muster<br />

präsentiert: Präsentiert man sie zufällig, so gibt es keine Garantie, dass die Muster<br />

gleichverteilt erlernt werden (dennoch ist dies die gängigste Methode). Immer dieselbe<br />

Musterreihenfolge hingegen provoziert z.B. bei rekurrenten <strong>Netze</strong>n (später mehr dazu)<br />

ein Auswendiglernen der Muster. Abhilfe gegen beide Probleme würde hier eine zufällige<br />

Permutation schaffen, die aber – wie schon erwähnt – aufwändig zu berechnen<br />

ist.<br />

SNIPE: Die Methode shuffleSamples der Klasse TrainingSampleLesson permutiert die Lesson.<br />

4.4 Lernkurve und Fehlermessung<br />

Die Lernkurve beschreibt den zeitlichen Verlauf des Fehlers, der auf verschiedene Weisen<br />

ermittelt werden kann – die Motivation für die Erschaffung einer Lernkurve liegt<br />

darin, dass man mit ihr darstellen kann, ob das Netz Fortschritte macht oder nicht.<br />

Der Fehler sollte hierbei normiert sein, also ein Abstandsmaß zwischen richtigem und<br />

aktuellem Output des <strong>Netze</strong>s darstellen. Beispielsweise können wir den musterspezifischen,<br />

quadratischen Fehler mit Vorfaktor nehmen, wie wir ihn für die Herleitung<br />

von Backpropagation of Error verwenden werden (Seien Ω Outputneurone und O die<br />

Menge derselben.):<br />

Errp = 1<br />

2<br />

<br />

(tΩ − yΩ) 2<br />

Ω∈O<br />

Definition 4.10 (Spezifischer Fehler). Der spezifische Fehler Errp wird über ein<br />

einziges Trainingsbeispiel, also online, gebildet.<br />

Weiter üblich sind der Root-Mean-Square (kurz: RMS) sowie der Euklidische<br />

Abstand.<br />

Der Euklidische Abstand (Verallgemeinerung des Satzes des Pythagoras) ist gut für<br />

niedere Dimensionen, wo wir uns seinen Nutzen auch noch bildlich vorstellen können.<br />

Definition 4.11 (Euklidischer Abstand).<br />

t und y ist definiert zu<br />

Der Euklidische Abstand zweier Vektoren<br />

<br />

<br />

Errp = (tΩ − yΩ) 2 . (4.2)<br />

Ω∈O<br />

(4.1)


Der Root-Mean-Square wird allgemein häufig verwendet, weil er auf grobe Ausreißer<br />

mehr Rücksicht nimmt.<br />

Definition 4.12 (Root-Mean-Square). Der Root-Mean-Square zweier Vektoren t und<br />

y ist definiert zu<br />

Ω∈O<br />

Errp =<br />

(tΩ − yΩ) 2<br />

. (4.3)<br />

|O|<br />

Für Offline-Lernen ist auch der gesamte Fehler über eine Trainingsepoche von Interesse<br />

und Nutzen:<br />

Err = <br />

Errp<br />

p∈P<br />

Definition 4.13 (Gesamtfehler). Der Gesamtfehler Err wird über alle Trainingsbeispiele,<br />

also offline, gebildet.<br />

Analog können wir einen Gesamt-RMS und einen Gesamt-Euklidischen Abstand über<br />

eine ganze Epoche bilden. Natürlich sind auch andere Fehlermaße als das euklidische<br />

oder der RMS denkbar. Für weitere Varianten der Fehlermessungen kann ich nur raten,<br />

einen Blick in den Technical Report von Prechelt [Pre94] zu werfen – hier werden sowohl<br />

Fehlermaße als auch Beispielproblemstellungen intensiv diskutiert (darum kommt dazu<br />

später auch noch einmal eine ähnliche Anmerkung im Rahmen der Diskussion von<br />

Beispielproblemen).<br />

SNIPE: In der Klasse ErrorMeasurement befinden sich verschiedene statische Methoden, welche<br />

verschiedene Verfahren der Fehlermessung implementieren.<br />

Abhängig von unserem Fehlermessverfahren sieht natürlich unsere Lernkurve auch anders<br />

aus. Eine ideale Lernkurve sieht aus wie eine negative Exponentialfunktion, ist<br />

also proportional zu e −t (Abb. 4.2 auf der folgenden Seite). Insofern stellt man die<br />

Lernkurve am anschaulichsten mit einer logarithmischen Skala dar (Abb. 4.2, zweites<br />

Diagramm von unten) – bei dieser Skalierungskombination bedeutet eine absinkende<br />

Gerade einen exponentiellen Abfall des Fehlers.<br />

Bei guter Arbeit des <strong>Netze</strong>s, einfachen Problemstellungen und logarithmischer Darstellung<br />

von Err sieht man also bildlich gesprochen eine absinkende Gerade, die unten<br />

oft „Zacken“ bildet – hier stoßen wir an das Auflösungsvermögen unserer 64-Bit-<br />

Darstellung im Computer und haben tatsächlich das Optimum dessen erlernt, was<br />

unser Netz lernen kann.<br />

(4.4)


Fehler<br />

Fehler<br />

0.00025<br />

0.0002<br />

0.00015<br />

0.0001<br />

5e−005<br />

0<br />

0 100 200 300 400 500 600 700 800 900 1000<br />

1<br />

1e−005<br />

1e−010<br />

1e−015<br />

1e−020<br />

1e−025<br />

1e−030<br />

Epoche<br />

1e−035<br />

0 100 200 300 400 500 600 700 800 900 1000<br />

Epoche<br />

Fehler<br />

Fehler<br />

0.0002<br />

0.00018<br />

0.00016<br />

0.00014<br />

0.00012<br />

0.0001<br />

8e−005<br />

6e−005<br />

4e−005<br />

2e−005<br />

1<br />

1e−005<br />

1e−010<br />

1e−015<br />

1e−020<br />

1e−025<br />

1e−030<br />

0<br />

1 10 100 1000<br />

Epoche<br />

1e−035<br />

1 10 100 1000<br />

Epoche<br />

Abbildung 4.2: Alle vier Abbildungen stellen dieselbe (idealisierte, da sehr glatte) Lernkurve dar.<br />

Achten Sie auf die wechselnden logarithmischen und linearen Skalierungen! Beachten Sie auch den<br />

kleinen „Ungenauigkeits-Zacken“, sichtbar am Knick der Kurve im ersten und zweiten Diagramm<br />

von unten.


Typische Lernkurven können auch einige wenige flache Bereiche aufweisen, also Stufen<br />

beschreiben, dies ist kein Zeichen für einen schlecht funktionierenden Lernvorgang. Wie<br />

wir weiterhin an der Abbildung 4.2 sehen, kann man mit geeigneter Darstellung fast<br />

jede nur etwas sinkende Lernkurve schön aussehen lassen – insofern sollte man beim<br />

Lesen der Literatur etwas vorsichtig sein.<br />

4.4.1 Wann hört man auf zu lernen?<br />

Nun ist die große Frage: Wann hört man auf zu lernen? Üblicherweise hört das Training<br />

auf, wenn derjenige, der vor dem trainierenden Computer sitzt, das „Gefühl“ hat, der<br />

Fehler wäre gering genug. In der Tat gibt es dafür wie so oft keine Patentlösung und so<br />

kann ich hier wieder nur Denkansätze geben, welche allerdings alle für eine objektivere<br />

Sicht auf das Vergleichen mehrerer Lernkurven setzen.<br />

Es stärkt beispielsweise das Vertrauen in ein Ergebnis, wenn das Netz für mehrere verschiedene<br />

zufällige Initialisierungen immer ungefähr die gleiche Endfehlerrate erreicht –<br />

mehrmals initialisieren und trainieren macht das Ergebnis also ein wenig objektiver.<br />

Auf der anderen Seite kann sich auch ein Bild ergeben, bei dem eine anfangs schneller<br />

fallende Kurve nach längerem Lernen von einer anderen Kurve noch überholt wird:<br />

Dies kann darauf hinweisen, dass entweder die Lernrate der schlechteren Kurve zu<br />

hoch war oder aber die schlechtere einfach in einem Nebenminimum hängen geblieben<br />

ist, dieses aber schneller gefunden hat.<br />

Noch einmal zur Erinnerung: Größere Fehlerwerte sind schlechter.<br />

Auf jeden Fall sei aber beachtet: Worauf sich viele beim Lernen verlassen (und sich<br />

danach wundern, dass wenig funktioniert), ist, die Lernkurve nur in Bezug auf die<br />

Trainingsdaten zu bilden – man sollte also der Objektivität halber nicht vergessen,<br />

die Testdaten der Übersichtlichkeit halber auf eine zweite Lernkurve aufzutragen, die<br />

üblicherweise etwas schlechtere Werte liefert und auch stärker oszilliert, aber bei guter<br />

Generalisierung auch sinkt.<br />

Wenn das Netz dann irgendwann anfängt, die Beispiele auswendig zu lernen, kann man<br />

so durch die Lernkurve Hinweise darauf erhalten: Wenn die Lernkurve der Testbeispiele<br />

plötzlich rapide steigt, während die Lernkurve für die Trainingsdaten weiter sinkt,<br />

kann dies ein Indikator für Auswendiglernen und schlechter werdende Generalisierung<br />

sein. Hier könnte man dann entscheiden, ob das Netz am nächsten Punkt der beiden<br />

Kurven bereits gut genug gelernt hat und der Endzeitpunkt des Lernens vielleicht hier<br />

anzusetzen ist (dieses Verfahren wird Early Stopping genannt).


Abbildung 4.3: Veranschaulichung des Gradientenabstiegs auf zweidimensionaler Fehlerfunktion.<br />

Wir gehen entgegengesetzt von g, also mit dem steilsten Abstieg einem Tiefpunkt entgegen,<br />

wobei die Schrittweite proportional zu |g| ist (je steiler der Abstieg, desto größer<br />

die Schrittweite). Links ist die Fläche in 3D gezeigt, rechts die Schritte über die<br />

Höhenlinien in 2D. Hier wird ersichtlich, wie eine Bewegung in Gegenrichtung von g in<br />

Richtung Minimum der Funktion erfolgt und proportional zu |g| ständig langsamer wird.<br />

Quelle: http://webster.fhs-hagenberg.ac.at/staff/sdreisei/Teaching/WS2001-2002/<br />

PatternClassification/graddescent.pdf<br />

Ich weise noch einmal darauf hin, dass dies alles nur Indikatoren und keine Wenn-Dann-<br />

Schlüsse sind.<br />

4.5 Gradientenbasierte Optimierungsverfahren<br />

Um die mathematische Grundlage für einige der folgenden Lernverfahren zu schaffen,<br />

möchte ich zunächst kurz erklären, was man unter einem Gradientenabstieg versteht –<br />

das Lernverfahren Backpropagation of Error beispielsweise baut auf diesen mathematischen<br />

Grundlagen auf und erbt so die Vor- und Nachteile des Gradientenabstiegs.<br />

Gradientenabstiegsverfahren werden im Allgemeinen verwendet, um Maxima oder Minima<br />

n-dimensionaler Funktionen auszumachen. In der Illustration (Abb. 4.3) beschränke<br />

ich mich übersichtlicherweise auf zwei Dimensionen, der Dimensionsanzahl sind aber<br />

prinzipiell keine Grenzen gesetzt.


Hierbei ist der Gradient ein Vektor g, der für jeden differenzierbaren Punkt einer Funktion<br />

definiert ist, genau in die Richtung des steilsten Anstiegs von diesem Punkt aus<br />

deutet und durch seinen Betrag |g| den Steigungsgrad in diese Richtung angibt. Der<br />

Gradient ist also die Verallgemeinerung der Ableitung für mehrdimensionale Funktionen.<br />

Folglich deutet der negative Gradient −g genau in die Richtung des steilsten Abstiegs.<br />

Der Operator für einen Gradienten ∇ wird als Nabla-Operator bezeichnet, die<br />

Gesamtschreibweise für den Gradienten g des Punktes (x, y) einer zweidimensionalen<br />

Funktion f lautet dabei z.B. g(x, y) = ∇f(x, y).<br />

Definition 4.14 (Gradient). Sei g Gradient. Dann ist g ein n-komponentiger<br />

Vektor, der für jeden Punkt einer (differenzierbaren) n-dimensionalen Funktion<br />

f(x1, x2, . . . , xn) bestimmt ist. Die Operatorschreibweise für den Gradienten ist<br />

definiert als<br />

g(x1, x2, . . . , xn) = ∇f(x1, x2, . . . , xn)<br />

g zeigt für jeden Punkt von f in Richtung des stärksten Anstiegs von diesem Punkt<br />

aus, wobei |g| dem Grad dieser Steigung entspricht.<br />

Als Gradientenabstieg bezeichnen wir, von beliebigem Startpunkt unserer Funktion<br />

aus entgegen dem Gradienten g schrittweise bergab zu gehen (anschaulich gesprochen<br />

in die Richtung, in die auch eine Kugel vom Startpunkt aus rollen würde), wobei die<br />

Schrittgröße proportional zu |g| ist. Auf flachen Plateaus bewegen wir uns also langsam,<br />

bei großer Steigung schnell den steilsten Weg hinab. Geraten wir in ein Tal, so werden<br />

wir es je nach Größe unserer Schritte überspringen oder auf dem gegenüberliegenden<br />

Hang wieder ins Tal umkehren, um durch hin- und hergehen dem tiefsten Punkt des<br />

Tals immer näher zu kommen, ähnlich der Bewegung unserer Kugel innerhalb einer<br />

runden Schüssel.<br />

Definition 4.15 (Gradientenabstieg). Sei f eine n-dimensionale Funktion und s =<br />

(s1, s2, . . . , sn) gegebener Startpunkt. Als Gradientenabstieg bezeichnen wir, von<br />

f(s) aus entgegen der Richtung von g, also in Richtung von −g mit Schritten in Größe<br />

von |g| in Richtung immer kleinerer Werte von f zu gehen.<br />

Gradientenabstiegsverfahren sind kein fehlerfreies Optimierungsverfahren (wie wir in<br />

den nächsten Abschnitten sehen werden), aber sie funktionieren doch so gut, dass<br />

sie in der Praxis häufig eingesetzt werden. Dennoch wollen wir uns ihre potenziellen<br />

Nachteile kurz vor Augen führen.


Err<br />

b)<br />

c)<br />

Globales Minimum<br />

Abbildung 4.4: Mögliche Fehler während eines Gradientenabstiegs: a) Finden schlechter Minima,<br />

b) Quasi-Stillstand bei kleinem Gradienten, c) Oszillation in Schluchten, d) Verlassen guter Minima.<br />

4.5.1 Gradientenverfahren bringen verschiedene Probleme mit sich<br />

Wie in Abschnitt 4.5 angedeutet, ist der Gradientenabstieg (und damit Backpropagation)<br />

erfolgversprechend, jedoch nicht fehlerresistent, wobei eines der Probleme ist,<br />

dass man nicht immer anhand des Ergebnisses ersehen kann, ob ein Fehler passiert ist.<br />

4.5.1.1 Häufig konvergieren Gradientenverfahren nur gegen suboptimale Minima<br />

Jedes Gradientenabstiegsverfahren kann zum Beispiel in einem lokalen Minimum hängen<br />

bleiben (ein Beispiel findet sich in Teil a der Abb. 4.4) – dieses Problem wächst mit<br />

der Größe der Fehlerfläche an und hierfür gibt es keine allgemeingültige Lösung. In der<br />

Realität kann man nicht wissen, ob man das optimale Minimum gefunden hat – also<br />

gibt man sich zufrieden, sobald man ein Minimum ausreichender Qualität gefunden<br />

hat.<br />

a)<br />

d)<br />

W


4.5.1.2 Flache Plateaus in der Fehleroberfläche können das Training sehr<br />

verlangsamen<br />

Auch wird der Gradient beispielsweise beim Durchlaufen eines flachen Plateaus verschwindend<br />

klein (es ist eben kaum Steigung vorhanden (Teil b der Abb. 4.4), was<br />

sehr viele weitere Schritte nötig macht. Ein theoretisch möglicher Gradient von 0 würde<br />

den Abstieg gar ganz zum Stillstand bringen.<br />

4.5.1.3 Gute Minima können wieder verlassen werden<br />

Auf der anderen Seite ist der Gradient an einem steilen Hang sehr groß, so dass man<br />

große Schritte macht und u.U. ein gutes Minimum übersieht (Teil d der Abb. 4.4).<br />

4.5.1.4 Steile Schluchten in der Fehlerfunktion können Oszillationen hervorrufen<br />

Ein plötzlicher Wechsel von einem sehr stark negativen zu einem sehr stark positiven<br />

Gradienten kann sogar zu einer Oszillation führen (Teil c der Abb. 4.4). An und für sich<br />

hört man von diesem Fehler in der Natur selten, so dass wir uns über Möglichkeiten b<br />

und d Gedanken machen können.<br />

4.6 Beispielproblemstellungen sind nützlich, um das selbst<br />

programmierte Netz und Lernverfahren zu testen<br />

Wir haben nun das Lernen noch nicht sehr, aber zumindest ein wenig von der formalen<br />

Seite betrachtet – nun ist es an der Zeit, dass ich ein paar Beispielprobleme vorstelle,<br />

mit denen man sehr gut ausprobieren kann, ob ein implementiertes Netz und ein<br />

Lernverfahren korrekt arbeiten.<br />

4.6.1 Boolesche Funktionen<br />

Gerne wird als Beispiel das genommen, was in den 1960er Jahren nicht ging: Die XOR-<br />

Funktion (B 2 → B 1 ), welches wir noch ausführlich besprechen werden. Trivial erwarten<br />

wir hier die Ausgaben 1.0 bzw. −1.0 je nachdem , ob die Funktion XOR 1 oder 0 ausgibt<br />

– und genau hier liegt der erste Anfängerfehler, den man machen kann.


i1 i2 i3 Ω<br />

0 0 0 1<br />

0 0 1 0<br />

0 1 0 0<br />

0 1 1 1<br />

1 0 0 0<br />

1 0 1 1<br />

1 1 0 1<br />

1 1 1 0<br />

Tabelle 4.1: Darstellung der Paritätsfunktion mit drei Eingaben.<br />

Für Ausgaben nahe 1 oder -1, also nahe den Grenzwerten des Tangens Hyperbolicus<br />

(bzw. im Falle der Fermifunktion 0 oder 1), benötigt das Netz sehr große <strong>Netze</strong>ingaben.<br />

Die einzige Chance, diese <strong>Netze</strong>ingaben zu erreichen, ist durch große Gewichte, die<br />

erlernt werden müssen: Der Lernvorgang wird sehr verlängert. Es ist also klüger, als<br />

gewünschte Ausgaben in die Teaching Inputs 0.9 bzw. −0.9 einzugeben oder aber<br />

zufrieden zu sein, wenn das Netz diese anstatt 1 und −1 ausgibt.<br />

Beliebt als Beispiel für Singlelayerperceptrons sind auch die Booleschen Funktionen<br />

AND und OR.<br />

4.6.2 Die Paritätsfunktion<br />

Die Paritätsfunktion bildet eine Menge von Bits auf 1 oder 0 ab, je nachdem, ob eine<br />

gerade Anzahl Inputbits auf 1 gesetzt ist oder nicht – es handelt sich also grundsätzlich<br />

um eine Funktion B n → B 1 . Sie ist durch leichte Lernbarkeit bis ca. n = 3 gekennzeichnet<br />

(dargestellt in Tab. 4.1), der Lernaufwand steigt aber ab n = 4 rapide an. Der Leser<br />

möge doch einmal eine Wertetabelle für die 2-bit-Paritätsfunktion erstellen – was fällt<br />

auf?<br />

4.6.3 Das 2-Spiralen-Problem<br />

Nehmen wir als Trainingsbeispiel für eine Funktion zwei ineinander gewundene Spiralen<br />

(Abb. 4.5 auf der rechten Seite), wobei die Funktion natürlich eine Abbildung R 2 → B 1<br />

repräsentiert. Eine der Spiralen ist mit dem Outputwert 1 belegt, die andere mit 0. Hier


Abbildung 4.5: Skizze zum Trainingsbeispiel des 2-Spiralen-Problems<br />

hilft Auswendiglernen nicht groß weiter, das Netz muss wirklich die Abbildung an sich<br />

verstehen. Auch dieses Beispiel kann mit einem MLP gelöst werden.<br />

4.6.4 Das Schachbrettproblem<br />

Wir kreieren uns wieder eine zweidimensionale Funktion der Form R 2 → B 1 und geben<br />

schachbrettartige Trainingsbeispiele an (Abb. 4.6 auf der folgenden Seite), wobei ein<br />

eingefärbtes Feld eine 1 repräsentiert, alle anderen 0. Hier steigt die Schwierigkeit<br />

wieder mit Größe der Funktion: Während ein 3 × 3-Feld noch leicht zu lernen ist, sieht<br />

es mit größeren Feldern schon schwierig aus.<br />

Das 2-Spiralen-Problem ist dem Schachbrettproblem sehr ähnlich, nur dass bei ersterem<br />

mathematisch gesehen Polarkoordinaten statt kartesischen Koordinaten verwendet<br />

werden. Eine letzte Kleinigkeit möchte ich noch als Beispiel vorstellen: Die Identität.<br />

4.6.5 Die Identitätsfunktion<br />

Mit linearen Aktivierungsfunktionen wäre die Identitätsabbildung von R 1 nach R 1<br />

(natürlich fairerweise im Wertebereich der verwendeten Aktivierungsfunktion) für das


Abbildung 4.6: Skizze von Trainingsbeispielen des Schachbrettproblems<br />

Netz kein Problem, doch wir legen ihm durch Verwendung unserer sigmoiden Funktionen<br />

Steine in den Weg, so dass es für das Netz sehr schwierig ist, die Identität zu<br />

lernen. Versuchen Sie es doch einmal spaßeshalber.<br />

4.6.6 Es gibt eine Vielzahl von Beispielproblemstellungen<br />

Für die Einarbeitung in weitere beispielhafte Problemstellungen möchte ich ausdrücklich<br />

den Technical Report von Prechelt [Pre94] ans Herz legen, der auch schon im<br />

Rahmen der Fehlermessungsverfahren erwähnt wurde.<br />

Nun können wir unsere erste mathematische Lernregel betrachten.<br />

4.7 Die Hebbsche Lernregel ist der Grundstein für die<br />

meisten anderen Lernregeln<br />

Die 1949 von Donald O. Hebb formulierte Hebbsche Lernregel [Heb49] bildet den<br />

Grundstein für die meisten komplizierteren Lernregeln, welche wir in dieser Arbeit


esprechen. Hierbei wird unterschieden zwischen der Urform und der allgemeineren<br />

Form, einer Art Grundgerüst für viele andere Lernregeln.<br />

4.7.1 Urform<br />

Definition 4.16 (Hebbsche Lernregel). „Wenn Neuron j eine Eingabe von Neuron i<br />

erhält und beide gleichzeitig stark aktiv sind, dann erhöhe das Gewicht wi,j (also die<br />

Stärke der Verbindung von i nach j).“ Mathematisch ausgedrückt lautet sie also:<br />

∆wi,j ∼ ηoiaj<br />

wobei ∆wi,j die Änderung des Gewichtes von i nach j bezeichnet, welche proportional<br />

zu folgenden Faktoren ist:<br />

⊲ der Ausgabe oi des Vorgängerneurons i,<br />

⊲ der Aktivierung aj des Nachfolgerneurons j,<br />

⊲ sowie einer Konstante η, der Lernrate, auf die wir in Abschnitt 5.4.3 noch genau<br />

eingehen.<br />

Gewichtsänderungen ∆wi,j werden einfach auf das Gewicht wi,j aufaddiert.<br />

Warum spreche ich in der umgangssprachlichen Formulierung zweimal von Aktivierung,<br />

schreibe jedoch in der Formel von oi und aj, also von der Ausgabe des Neurons i und<br />

der Aktivierung des Neurons j? Wir erinnern uns, dass sehr oft die Identität als Ausgabefunktion<br />

verwendet wird und so ai und oi eines Neurons oft identisch sind – weiterhin<br />

postulierte Hebb seine Lernregel weit vor der Spezifikation technischer Neurone. Wenn<br />

man bedenkt, dass diese Lernregel gerne bei binären Aktivierungen verwendet wurde,<br />

ist klar, dass die Gewichte bei möglichen Aktivierungen (1, 0) entweder anwachsen<br />

oder gleichbleiben. Sie würden also über kurz oder lang ins unendliche gehen, da sie<br />

bei Fehlern nur „nach oben“ korrigiert werden können. Dies kann ausgeglichen werden,<br />

indem man die Aktivierungen (−1, 1) verwendet 2 . So werden die Gewichte bei Nichtübereinstimmung<br />

der Aktivierung von Vorgänger- und Nachfolgerneuron verringert,<br />

sonst verstärkt.<br />

2 Das ist dann aber nicht mehr die „Originalversion“ der Hebbschen Lernregel.<br />

(4.5)


4.7.2 Verallgemeinerte Form<br />

Die meisten weiteren hier besprochenen Lernregeln sind eine Spezialisierung der mathematisch<br />

allgemeineren Form [MR86] der Hebbschen Lernregel.<br />

Definition 4.17 (Hebb-Regel, allgemeiner). Die verallgemeinerte Form der<br />

Hebbschen Regel benennt nur die Proportionalität der Gewichtsänderung zum<br />

Produkt zweier nicht näher definierter Funktionen, allerdings mit definierten<br />

Eingabewerten.<br />

Hierbei ergibt das Produkt der Funktionen<br />

⊲ g(aj, tj) und<br />

⊲ h(oi, wi,j)<br />

⊲ sowie wieder der konstanten Lernrate η<br />

∆wi,j = η · h(oi, wi,j) · g(aj, tj) (4.6)<br />

die Gewichtsänderung. Wie man sieht, nimmt h also die Ausgabe der Vorgängerzelle<br />

oi sowie das Gewicht von Vorgänger zu Nachfolger wi,j entgegen, während g die<br />

tatsächliche und gewünschte Aktivierung des Nachfolgers aj sowie tj (t steht hier für<br />

den erwähnten Teaching Input) erwartet. In dieser allgemeinen Definition sind g und<br />

h, wie schon angemerkt, nicht konkretisiert – wir werden uns daher jetzt auf den<br />

vor Gleichung 4.6 angesprochenen Pfad der Spezialisierung begeben und unser erstes<br />

Netzparadigma samt Lernverfahren kennenlernen, nachdem wir nun eine kurze Ansicht<br />

dessen gehabt haben, wie eine Lernregel aussehen kann und uns Gedanken zum Lernen<br />

an sich gemacht haben.<br />

Übungsaufgaben<br />

Aufgabe 7. Berechnen Sie für die folgenden Datenpunkte den Mittelwert µ und die<br />

Standardabweichung σ.<br />

p1 = (2, 2, 2)<br />

p2 = (3, 3, 3)<br />

p3 = (4, 4, 4)<br />

p4 = (6, 0, 0)<br />

p5 = (0, 6, 0)<br />

p6 = (0, 0, 6)


Teil II<br />

Überwacht lernende<br />

Netzparadigmen<br />

87


Kapitel 5<br />

Das Perceptron, Backpropagation und<br />

seine Varianten<br />

Der Klassiker unter den <strong>Neuronale</strong>n <strong>Netze</strong>n. Wenn von einem <strong>Neuronale</strong>n<br />

Netz gesprochen wird, ist meistens ein Perceptron oder eine Variation davon<br />

gemeint. Perceptrons sind mehrschichtige <strong>Netze</strong> ohne Rückkopplung, mit<br />

festen Eingabe- und Ausgabeschichten. Beschreibung des Perceptrons, seiner<br />

Grenzen und seiner Erweiterungen, welche die Grenzen umgehen sollen.<br />

Herleitung von Verfahren, es lernen zu lassen, und Diskussion über deren<br />

Probleme.<br />

Wie schon in der Geschichte <strong>Neuronale</strong>r <strong>Netze</strong> erwähnt, wurde das Perceptron von<br />

Frank Rosenblatt 1958 beschrieben [Ros58]. Rosenblatt legte als Komponenten des<br />

Perceptrons zunächst die schon besprochene gewichtete Summe, sowie eine nichtlineare<br />

Aktivierungsfunktion fest.<br />

Obwohl es keine wirklich feste Definition des Perceptrons gibt, ist meistens<br />

ein FeedForward-Netz mit ShortCut-Connections gemeint, das eine Schicht von<br />

Abtastneuronen (Retina) mit statisch gewichteten Verbindungen zur nächsten Schicht<br />

besitzt, die wir Eingabeschicht nennen (Abb. 5.1 auf Seite 91); alle Gewichte ab<br />

der Eingabeschicht dürfen aber verändert werden. Die der Retina nachgeordneten<br />

Neuronen stellen Musterdetektoren dar. Wir verwenden hier zunächst ein binäres<br />

Perceptron, bei dem jedem Outputneuron genau zwei mögliche Ausgabewerte zur<br />

Verfügung stehen (z.B. {0, 1} oder {−1, 1}). Wir verwenden also eine binäre Schwellenwertfunktion<br />

als Aktivierungsfunktion, abhängig vom jeweiligen Schwellenwert Θ<br />

des Outputneurons.<br />

89


Gewissermaßen stellt eine binäre Aktivierungsfunktion also eine IF-Abfrage dar, die<br />

man durch negative Gewichte auch negieren kann – man kann also mit dem Perceptron<br />

wirkliche logische Informationsverarbeitung durchführen.<br />

Ob das sinnvoll ist, sei einmal dahingestellt – Boolesche Logik kann man natürlich<br />

auch einfacher haben. Ich möchte nur darstellen, dass Perceptrons durchaus als simple<br />

logische Bausteine nutzbar sind und man mit geschickten hintereinander- und zusammengeschalteten<br />

Perceptrons theoretisch jede Boolesche Funktion realisieren kann.<br />

Wir werden aber noch sehen, dass dies ohne Hintereinanderschaltung nicht möglich ist.<br />

Bevor wir das Perceptron an sich definieren, möchte ich zunächst einige Neuronenarten,<br />

welche wir in diesem Kapitel verwenden werden, definieren.<br />

Definition 5.1 (Eingabeneuron). Ein Eingabeneuron (auch Inputneuron<br />

genannt) ist ein Identitätsneuron – es gibt genau das weiter, was es als Eingabe<br />

erhält. Es repräsentiert also die Identitätsfunktion, die wir durch das Symbol <br />

andeuten wollen. Wir stellen ein Eingabeneuron daher mit dem Symbol dar.<br />

Definition 5.2 (Informationsverarbeitendes Neuron). Informationsverarbeitende<br />

Neurone verarbeiten die eingegebene Information auf irgendeine Weise, repräsentieren<br />

also nicht die Identitätsfunktion. Ein Binäres Neuron summiert alle Eingaben,<br />

die es erhält, durch die gewichtete Summe als Propagierungsfunktion auf, was wir<br />

mit dem Summenzeichen Σ skizzieren wollen. Die Aktivierungsfunktion des Neurons<br />

ist dann die binäre Schwellenwertfunktion, die mit skizziert werden kann. Dies<br />

bringt uns insgesamt zu der Symboldarstellung Σ<br />

. Analog werden andere Neurone<br />

mit gewichteter Summe als Propagierungsfunktion, jedoch den Aktivierungsfunktionen<br />

Tangens Hyperbolicus, Fermifunktion oder einer separat definierten Aktivierungsfunktion<br />

fact als<br />

Σ<br />

Tanh<br />

Σ<br />

Fermi<br />

<br />

Σ<br />

dargestellt. Diese Neurone bezeichnen wir dann z.B. auch als Fermi-Neuron oder<br />

Tanh-Neuron.<br />

Ausgabeneurone werden auch oft Outputneuron genannt. Nachdem wir nun die Bestandteile<br />

eines Perceptrons kennen, können wir es auch definieren.<br />

Definition 5.3 (Perceptron). Das Perceptron (Abb. 5.1 auf der rechten Seite) ist 1<br />

ein FeedForward-Netz, in welchem es eine Retina gibt, die der reinen Datenaufnahme<br />

1 Es mag dem einen oder anderen Leser sauer aufstoßen, dass ich behaupte, es gäbe keine Definition für ein<br />

Perceptron, das Perceptron aber im nächsten Absatz definiere. Ich schlage daher vor, meine Definition<br />

im Hinterkopf zu behalten, aber nur für diese Arbeit als wirklich gegeben anzusehen.<br />

fact


Kapitel 5 Das Perceptron dkriesel.com<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Σ<br />

<br />

<br />

i1 <br />

<br />

i2<br />

i3<br />

i4<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

i5<br />

<br />

<br />

Ω<br />

Abbildung Abbildung 5.1: Aufbau 5.1: eines Aufbau Perceptrons eines Perceptrons mit einer mitSchicht einer Schicht variabler variabler Verbindungen in verschiede- in verschiedenen<br />

Ansichten. nen Ansichten. Die durchgezogene Die durchgezogene Gewichtsschicht Gewichtsschicht in deninunteren den unteren beiden beiden Abbildungen ist ist trainierbar.bar.<br />

Links: AmOben: Beispiel Amder Beispiel Informationsabtastung der Informationsabtastung im Auge. im Auge.<br />

Mitte: Skizze desselben mit eingezeichneter fester Gewichtsschicht unter Verwendung der definier-<br />

Rechts oben: Skizze desselben mit eingezeichneter fester Gewichtsschicht unter Verwendung der<br />

ten funktionsbeschreibenden Designs für Neurone.<br />

definierten funktionsbeschreibenden Designs für Neurone.<br />

Unten: Ohne eingezeichnete feste Gewichtsschicht, mit Benennung der einzelnen Neuronen nach<br />

Rechts unten: unserer Ohne Konvention. eingezeichnete Wir werden feste dieGewichtsschicht, feste Gewichtschicht mitimBenennung weiteren Verlauf der einzelnen der Arbeit Neuronen nicht mehr<br />

nach unserer betrachten. Konvention. Wir werden die feste Gewichtschicht im weiteren Verlauf der Arbeit nicht<br />

mehr betrachten.<br />

70 D. <strong>Kriesel</strong> – Ein kleiner Überblick über <strong>Neuronale</strong> <strong>Netze</strong> (EPSILON-DE)


dient und fest gewichtete Verbindungen zur ersten Neuronenschicht (Eingabeschicht)<br />

besitzt. Der festen Gewichtsschicht folgt mindestens eine trainierbare Gewichtsschicht.<br />

Eine Neuronenschicht ist zur jeweils nächsten vollverknüpft. Die erste Schicht des Perceptrons<br />

besteht aus den oben definierten Eingabeneuronen.<br />

Oft enthält ein FeedForward-Netz auch ShortCuts, was aber nicht exakt der ursprünglichen<br />

Beschreibung entspricht und daher hier auch nicht der Definition hinzugefügt<br />

wird. Wir sehen, dass die Retina gar nicht in den unteren Teil der Abb. 5.1 mit einbezogen<br />

wird – in der Tat wird meist (vereinfachend und für die Implementierung<br />

ausreichend) die erste Neuronenschicht nach der Retina als Eingabeschicht betrachtet,<br />

da diese die Inputwerte sowieso nur weitergibt. Die Retina selbst und die statischen<br />

Gewichte dahinter werden also nicht weiter erwähnt oder abgebildet, da sie sowieso<br />

nicht informationsverarbeitend sind. Die Abbildung eines Perceptrons beginnt also bei<br />

den Inputneuronen.<br />

SNIPE: Die Methoden setSettingsTopologyFeedForward sowie die Variante -WithShortcuts<br />

einer NeuralNetworkDescriptor-Instanz konfigurieren den Descriptor für FeedForward-<strong>Netze</strong><br />

bzw. solche mit Shortcuts, indem sie die entsprechenden Verbindungsklassen erlauben. Andere<br />

Verbindungsklassen werden verboten und Fastprop wird aktiviert.<br />

5.1 Das Singlelayerperceptron besitzt nur eine trainierbare<br />

Gewichtsschicht<br />

Hier gehen von der Eingabeschicht Verbindungen mit trainierbaren Gewichten zu einem<br />

Ausgabeneuron Ω, welches ausgibt, ob das an den Eingabeneuronen eingegebene<br />

Muster erkannt wird oder nicht. Ein Singlelayerperceptron (kurz: SLP) besitzt also<br />

nur eine Ebene trainierbarer Gewichte (Abb. 5.1 auf der vorangehenden Seite).<br />

Definition 5.4 (Singlelayerperceptron). Als Singlelayerperceptron (SLP) wird<br />

ein Perceptron bezeichnet, welches nach der Schicht Eingabeneurone nur eine variable<br />

Gewichtsschicht und eine Schicht Ausgabeneurone Ω besitzt. Die technische Sicht eines<br />

SLPs findet sich in Abb. 5.2 auf der rechten Seite.<br />

Es ändert am Prinzip des Perceptrons natürlich nichts wesentlich, wenn mehrere Ausgabeneurone<br />

Ω1, Ω2, . . . , Ωn vorkommen (Abb. 5.3 auf der rechten Seite): Ein Perceptron<br />

mit mehreren Ausgabeneuronen kann man auch als mehrere verschiedene Perceptrone<br />

mit derselben Eingabe ansehen.<br />

Als triviale, zusammensetzbare Beispiele sind die in Abb. 5.4 auf Seite 94 dargestellten<br />

Booleschen Funktionen AND und OR zu sehen.


BIAS<br />

i1<br />

wBIAS,Ωwi1<br />

,Ω wi2 ,Ω ⑧⑧⑧⑧<br />

<br />

<br />

⑧⑧⑧⑧<br />

Ω<br />

<br />

i2<br />

Abbildung 5.2: Ein Singlelayerperceptron mit zwei Eingabeneuronen und einem Outputneuron.<br />

Durch den aus dem Netz herausführenden Pfeil gibt das Netz die Ausgabe aus. In der Mitte befindet<br />

sich die trainierbare Schicht von Gewichten (beschriftet). Zur Erinnerung habe ich hier noch einmal<br />

das Biasneuron mit abgebildet. Obwohl das Gewicht wBIAS,Ω ein ganz normales Gewicht ist und auch<br />

so behandelt wird, habe ich es hier nur gepunktet gezeichnet – dies erhöht die Übersichtlichkeit bei<br />

größeren <strong>Netze</strong>n stark. In Zukunft werden wir das Biasneuron nicht mehr mit abbilden.<br />

i1 ❅<br />

❯ ❯<br />

<br />

❅<br />

❯<br />

i2<br />

❯<br />

❅<br />

❯<br />

<br />

<br />

❯<br />

i3<br />

❯<br />

❆<br />

❅<br />

<br />

❯ ❯<br />

❆ <br />

❅ ❯ ❯<br />

❆ <br />

❅<br />

<br />

❯ ❆<br />

<br />

❯<br />

❅ <br />

❆<br />

<br />

❯<br />

<br />

❯ ❯<br />

❅ ❆ <br />

❯<br />

<br />

❯<br />

❅<br />

<br />

❆ <br />

❯ <br />

❯<br />

<br />

<br />

❆<br />

❯<br />

<br />

❯<br />

<br />

<br />

❯ <br />

⑥<br />

❆<br />

❯ <br />

❯ ❯<br />

<br />

⑥⑥⑥⑥⑥⑥⑥⑥<br />

i4 ❆❆❆<br />

❆❆❆<br />

❆<br />

<br />

❆❆<br />

♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥<br />

⑥<br />

<br />

<br />

⑥⑥⑥⑥⑥⑥⑥⑥<br />

i5<br />

⑦⑦⑦⑦⑦⑦⑦⑦⑦<br />

✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐<br />

♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥<br />

Ω1<br />

Ω2<br />

Ω3<br />

<br />

<br />

Abbildung 5.3: Singlelayerperceptron mit mehreren Ausgabeneuronen


❆<br />

<br />

❆<br />

1❆<br />

❆ 1<br />

❆<br />

<br />

⑥⑥⑥⑥<br />

⑥⑥⑥⑥<br />

1.5<br />

<br />

<br />

<br />

❆<br />

<br />

❆<br />

1❆<br />

❆ 1<br />

❆<br />

<br />

⑥⑥⑥⑥<br />

⑥⑥⑥⑥<br />

0.5<br />

<br />

Abbildung 5.4: Zwei Singlelayerperceptrons für Boolesche Funktionen. Das obere Singlelayerperceptron<br />

realisiert ein AND, das untere ein OR. Die Aktivierungsfunktion des informationsverarbeitenden<br />

Neurons ist jeweils die binäre Schwellenwertfunktion, wo vorhanden stehen die Schwellenwerte<br />

in den Neuronen.


Wir möchten nun erfahren, wie wir ein Singlelayerperceptron trainieren können, und betrachten<br />

hierzu zunächst den Perceptron-Lernalgorithmus und anschließend die Delta-<br />

Regel.<br />

5.1.1 Perceptron-Lernalgorithmus und Konvergenz-Theorem<br />

Der ursprüngliche Perceptron-Lernalgorithmus mit binärer Aktivierungsfunktion<br />

in den Neuronen ist beschrieben in Alg. 1. Es ist bewiesen, dass der Algorithmus<br />

in endlicher Zeit konvergiert – das Perceptron also in endlicher Zeit alles lernen kann,<br />

was ihm möglich ist, zu repräsentieren (Perceptron-Konvergenz-Theorem, [Ros62]).<br />

Der Leser sollte sich hierbei nicht zu früh freuen. Was das Perceptron repräsentieren<br />

kann, werden wir noch erforschen.<br />

Während der Erforschung der linearen Separierbarkeit von Problemen werden wir noch<br />

behandeln, dass zumindest das Singlelayerperceptron leider viele Probleme nicht repräsentieren<br />

kann.<br />

5.1.2 Die Delta-Regel als gradientenbasiertes Lernverfahren für SLPs<br />

Im Folgenden weichen wir von unserer binären Schwellenwertfunktion als Aktivierungsfunktion<br />

ab, denn zumindest für Backpropagation of Error brauchen wir, wie wir gleich<br />

sehen werden, eine differenzierbare oder gar semilineare Aktivierungsfunktion – für<br />

die nun folgende Delta-Regel (ebenfalls hergeleitet in [MR86]) ist sie nicht zwangsweise<br />

erforderlich, aber nützlich. Auf diesen Umstand wird aber auch noch einmal<br />

an Ort und Stelle hingewiesen. Die Delta-Regel hat gegenüber dem obigen Perceptron-<br />

Lernalgorithmus im Wesentlichen die Vorteile, für nicht-binäre Aktivierungsfunktionen<br />

geeignet zu sein und, bei großer Entfernung zum Lernziel, automatisch schneller zu lernen.<br />

Angenommen, wir besitzen ein Singlelayerperceptron mit zufällig gesetzten Gewichten,<br />

dem wir eine Funktion anhand von Trainingsbeispielen beibringen möchten. Die Menge<br />

dieser Trainingsbeispiele nennen wir P – sie enthält, wie schon definiert, Paare (p, t)<br />

von Trainingsbeispielen p und zugehörigem Teaching Input t. Ich rufe auch noch einmal<br />

in Erinnerung, dass<br />

⊲ x Inputvektor und<br />

⊲ y Outputvektor eines <strong>Neuronale</strong>n <strong>Netze</strong>s ist,<br />

⊲ Outputneurone Ω1, Ω2, . . . , Ω |O| genannt werden und


1: while ∃p ∈ P and Fehler zu groß do<br />

2: Gebe ein p in Netz ein, berechne Ausgabe y {P Menge der Trainingsmuster}<br />

3: for jedes Ausgabeneuron Ω do<br />

4: if yΩ = tΩ then<br />

5: Ausgabe richtig, keine Gewichtsänderung<br />

6: else<br />

7: if yΩ = 0 then<br />

8: for jedes Eingabeneuron i do<br />

9: wi,Ω := wi,Ω + oi {...Gewicht zu Ω um oi vergrößern}<br />

10: end for<br />

11: end if<br />

12: if yΩ = 1 then<br />

13: for jedes Eingabeneuron i do<br />

14: wi,Ω := wi,Ω − oi {...Gewicht zu Ω um oi verkleinern}<br />

15: end for<br />

16: end if<br />

17: end if<br />

18: end for<br />

19: end while<br />

Algorithmus 1: Perceptron-Lernalgorithmus. Der Perceptron-Lernalgorithmus verringert<br />

Gewichte zu Ausgabeneuronen, welche 1 statt 0 ausgeben, und erhöht Gewichte<br />

im umgekehrten Fall.


⊲ i Input sowie<br />

⊲ o Output eines Neurons ist.<br />

Ferner haben wir definiert, dass<br />

⊲ der Fehlervektor Ep die Differenz (t − y) unter einem bestimmten Trainingsbeispiel<br />

p darstellt.<br />

⊲ Sei weiterhin wie gehabt O die Menge der Ausgabeneurone und<br />

⊲ I die Menge der Eingabeneurone.<br />

Als weitere Namenskonvention wollen wir vereinbaren, dass z.B. für Output o und<br />

Teaching Input t ein zusätzlicher Index p gesetzt werden darf, um anzuzeigen, dass<br />

diese Größe musterspezifisch ist – dies erhöht manchmal die Übersichtlichkeit ganz<br />

erheblich.<br />

Unser Lernziel ist jetzt natürlich, dass bei allen Trainingsbeispielen der Output y des<br />

<strong>Netze</strong>s annähernd gleich dem gewünschten Output t ist, also formal gilt<br />

∀p : y ≈ t bzw. ∀p : Ep ≈ 0.<br />

Hierfür müssen wir erst lernen, den Gesamtfehler Err als Funktion der Gewichte zu<br />

betrachten: Der Gesamtfehler nimmt zu oder ab, je nachdem, wie wir die Gewichte<br />

ändern.<br />

Definition 5.5 (Fehlerfunktion). Die Fehlerfunktion<br />

Err : W → R<br />

fasst die Menge 2 der Gewichte W als Vektor auf und bildet die Gewichtswerte auf den<br />

normalisierten Ausgabefehler ab (normalisiert daher, weil man sämtliche Ausgabefehler<br />

sonst nicht in einem einzelnen e ∈ R abbilden kann, um einen Gradientenabstieg darauf<br />

durchzuführen). Dass sich analog eine spezifische Fehlerfunktion für ein einzelnes<br />

Muster p bilden lässt, ist offensichtlich.<br />

Wie wir bereits in Abschnitt 4.5 zum Thema Gradientenabstiegsverfahren gesehen haben,<br />

berechnen Gradientenabstiegsverfahren den Gradienten einer beliebig- aber endlichdimensionalen<br />

Funktion (hier der Fehlerfunktion Err(W )) und gehen entgegen dem<br />

Gradienten nach unten, bis ein Minimum erreicht ist. Err(W ) ist auf der Menge sämtlicher<br />

Gewichte definiert, die wir hier als Vektor W ansehen. Es wird also versucht,<br />

2 Der Tradition anderer Literatur folgend, habe ich W vorher als Gewichtsmatrix definiert – ich bin mir<br />

dieses Konfliktes bewusst, er wird uns hier aber nicht weiter stören.


5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

−2<br />

−1<br />

w1<br />

0<br />

1<br />

2<br />

Abbildung 5.5: Beispielhafte Fehlerfläche eines <strong>Neuronale</strong>n <strong>Netze</strong>s mit zwei trainierbaren Verbindungen<br />

w1 und w2. In der Regel haben <strong>Neuronale</strong> <strong>Netze</strong> mehr als zwei Verbindungen, was hier nicht<br />

so übersichtlich abzubilden gewesen wäre. Weiterhin ist die Fehlerfläche meist sehr viel zerklüfteter,<br />

was die Suche nach dem Minimum erschwert.<br />

den Fehler zu verringern bzw. zu minimieren, indem man, salopp gesagt, an den Gewichten<br />

dreht – man bekommt also Informationen darüber, wie man die Gewichte<br />

verändern soll (die Veränderung aller Gewichte bezeichnen wir mit ∆W ), indem man<br />

die Fehlerfunktion Err(W ) nach diesen ableitet:<br />

−2<br />

−1<br />

0<br />

1<br />

w2<br />

∆W ∼ −∇Err(W ). (5.1)<br />

Aufgrund dieser Proportionalität gibt es eine Proportionalitätskonstante η, so dass<br />

Gleichheit gilt (η wird bald noch eine weitere Bedeutung und wirklich praktischen<br />

Nutzen außerhalb der bloßen Bedeutung als Proportionalitätskonstante bekommen.<br />

Ich möchte den Leser bitten, sich bis dahin noch etwas zu gedulden.):<br />

∆W = −η∇Err(W ). (5.2)<br />

Die Ableitung der Fehlerfunktion nach den Gewichten schreiben wir jetzt als normale<br />

partielle Ableitung nach einem Gewicht wi,Ω (es gibt nur variable Gewichte zu Ausgabeneuronen<br />

Ω), um damit rechnerisch etwas mehr anfangen zu können. Wir drehen<br />

also an jedem einzelnen Gewicht und schauen, wie sich die Fehlerfunktion dabei ändert,<br />

leiten also die Fehlerfunktion nach einem Gewicht wi,Ω ab und erhalten so die<br />

Information ∆wi,Ω, wie wir dieses Gewicht verändern sollen.<br />

∂Err(W )<br />

∆wi,Ω = −η . (5.3)<br />

∂wi,Ω<br />

Nun stellt sich langsam die Frage: Wie ist denn genau unsere Fehlerfunktion definiert?<br />

Es ist schlecht für uns, wenn sich viele Ergebnisse fern der gewünschten finden, die<br />

2


Fehlerfunktion sollte dann also große Werte liefern – auf der anderen Seite ist es auch<br />

nicht gut, wenn viele Ergebnisse nahe der gewünschten sind, es aber vielleicht einen<br />

sehr weit entfernten Ausreißer gibt. Es bietet sich also der Quadratische Abstand<br />

zwischen dem Ausgabevektor y und dem Teaching Input t an, der uns den für ein<br />

Trainingsbeispiel p spezifischen Fehler Errp über die Ausgabe aller Outputneurone Ω<br />

liefert:<br />

Errp(W ) = 1<br />

2<br />

<br />

(tp,Ω − yp,Ω) 2 . (5.4)<br />

Ω∈O<br />

Wir quadrieren also die Differenzen der Komponenten der Vektoren t und y unter einem<br />

Muster p und summieren diese Quadrate auf. Die Fehlerdefinition Err und damit die<br />

der Fehlerfunktion Err(W ) ergibt sich dann einfach durch die Aufsummierung der<br />

spezifischen Fehler Errp(W ) aller Muster p:<br />

Err(W ) = <br />

Errp(W ) (5.5)<br />

p∈P<br />

= 1<br />

2<br />

Summe über alle p<br />

⎛ <br />

<br />

⎝ <br />

(tp,Ω − yp,Ω) 2<br />

⎞<br />

⎠ . (5.6)<br />

p∈P Ω∈O<br />

<br />

Summe über alle Ω<br />

Der aufmerksame Leser wird sich natürlich fragen, woher denn in Gleichung 5.4 der<br />

Faktor 1<br />

2 plötzlich kommt, und wo denn, da die Gleichung dem euklidischen Abstand<br />

so ähnlich sieht, die Wurzel geblieben ist. Beides folgt aus einfacher Pragmatik: Es<br />

geht nur um die Fehlerminimierung. Die Wurzelfunktion ist monoton und sinkt mit<br />

ihrem Argument, also können wir sie auch dem Rechen- und Implementationsaufwand<br />

zuliebe weglassen, da wir sie für die Minimierung nicht brauchen. Ebenso ist egal, ob<br />

wir den zu minimierenden Term durch den Vorfaktor 1<br />

2 halbieren: Ich darf also mit<br />

1<br />

2 multiplizieren – aus der reinen Faulheit heraus, damit es sich im weiteren Verlauf<br />

unserer Rechnungen gegen eine 2 herauskürzt.<br />

Nun wollen wir fortfahren, die Delta-Regel für lineare Aktivierungsfunktionen herzuleiten.<br />

Wir haben bereits behandelt, dass man etwas an den einzelnen Gewichten wi,Ω<br />

dreht und schaut, wie sich der Fehler Err(W ) verändert – was der Ableitung der Fehlerfunktion<br />

Err(W ) nach eben diesem Gewicht wi,Ω entspricht. Diese Ableitung entspricht


(da sich der Gesamtfehler Err(W ) aus der Summe der spezifischen Fehler ergibt) der<br />

Summe der Ableitungen aller spezifischen Fehler Errp nach diesem Gewicht:<br />

∂Err(W )<br />

∆wi,Ω = −η<br />

∂wi,Ω<br />

= <br />

p∈P<br />

(5.7)<br />

−η ∂Errp(W )<br />

. (5.8)<br />

∂wi,Ω<br />

An dieser Stelle möchte ich noch einmal darüber nachdenken, wie ein <strong>Neuronale</strong>s Netz<br />

denn Daten verarbeitet. Im Grunde werden die Daten nur durch eine Funktion geschickt,<br />

das Ergebnis der Funktion durch eine weitere und so weiter und so fort. Lassen<br />

wir die Outputfunktion einmal außen vor, so besteht der Weg von Neuronenausgaben<br />

oi1 und oi2 , die von Neuronen i1 und i2 in ein Neuron Ω eingegeben werden,<br />

zunächst aus der Propagierungsfunktion (hier gewichtete Summe), aus der wir dann<br />

die <strong>Netze</strong>ingabe erhalten. Diese wird dann durch die Aktivierungsfunktion des Neurons<br />

Ω geschickt, so dass wir den Output dieses Neurons erhalten, der auch gleichzeitig eine<br />

Komponente des Ausgabevektors y ist:<br />

netΩ → fact<br />

= fact(netΩ)<br />

= oΩ<br />

= yΩ.<br />

Wie wir sehen, resultiert dieser Output aus vielen ineinander geschachtelten Funktionen:<br />

oΩ = fact(netΩ) (5.9)<br />

= fact(oi1 · wi1,Ω + oi2 · wi2,Ω). (5.10)<br />

Dass wir den Output auch bis in die Eingabeneurone aufschlüsseln können, ist klar<br />

(das ist hier nicht notwendig, da diese bei einem SLP keine Informationsverarbeitung<br />

betreiben). Wir wollen also die Ableitungen von Gleichung 5.8 durchführen und können<br />

durch die Funktionsschachtelung die Kettenregel anwenden, um die in Gleichung 5.8<br />

enthaltene Ableitung zu zerlegen.<br />

∂Errp(W )<br />

∂wi,Ω<br />

∂Errp(W )<br />

∂wi,Ω<br />

= ∂Errp(W )<br />

∂op,Ω<br />

· ∂op,Ω<br />

. (5.11)<br />

∂wi,Ω


Betrachten wir den ersten multiplikativen Faktor der obigen Gleichung 5.11 auf der<br />

linken Seite, der die Ableitung des spezifischen Fehlers Errp(W ) nach dem Output<br />

darstellt, also die Veränderung des Fehlers Errp mit dem Output op,Ω: Es ist bei Betrachtung<br />

von Errp (Gleichung 5.4 auf Seite 99) klar, dass diese Veränderung sich genau<br />

mit der Differenz zwischen Teaching Input und Ausgabe (tp,Ω − op,Ω) verändert (wir<br />

erinnern uns: Da Ω Ausgabeneuron, gilt op,Ω = yp,Ω). Ist der Output dem Teaching<br />

Input näher, so ist der spezifische Fehler kleiner. Wir können also das eine durch das<br />

andere ersetzen, wobei wir diese Differenz auch δp,Ω nennen (daher hat die Delta-Regel<br />

ihren Namen):<br />

∂Errp(W )<br />

∂wi,Ω<br />

= −(tp,Ω − op,Ω) · ∂op,Ω<br />

∂wi,Ω<br />

= −δp,Ω · ∂op,Ω<br />

∂wi,Ω<br />

(5.12)<br />

(5.13)<br />

Der zweite multiplikative Faktor der Gleichung 5.11 auf der linken Seite und der folgenden<br />

ist die Ableitung des Outputs des Neurons Ω zum Muster p nach dem Gewicht wi,Ω.<br />

Wie verändert sich also op,Ω bei der Veränderung des Gewichts von i nach Ω? Da wir<br />

nach der Forderung am Anfang der Herleitung nur eine lineare Aktivierungsfunktion<br />

fact haben, können wir genauso gut die Veränderung der <strong>Netze</strong>ingabe bei Veränderung<br />

von wi,Ω betrachten:<br />

<br />

∂Errp(W ) ∂ i∈I<br />

= −δp,Ω · (op,iwi,Ω)<br />

. (5.14)<br />

Diese Ableitung<br />

tion <br />

∂wi,Ω<br />

<br />

∂<br />

i∈I (op,iwi,Ω)<br />

∂wi,Ω<br />

∂wi,Ω<br />

können wir nun vereinfachen: Die abzuleitende Funk-<br />

i∈I (op,iwi,Ω) besteht aus vielen Summanden, und nur der Summand op,iwi,Ω<br />

<br />

∂<br />

i∈I (op,iwi,Ω)<br />

= op,i und<br />

∂wi,Ω<br />

enthält die Variable wi,Ω, nach der wir ableiten. Es gilt also<br />

damit:<br />

∂Errp(W )<br />

∂wi,Ω<br />

= −δp,Ω · op,i<br />

(5.15)<br />

= −op,i · δp,Ω. (5.16)<br />

Dies setzen wir in die Gleichung 5.8 auf der linken Seite ein und erhalten so unsere<br />

Modifikationsregel für ein Gewicht wi,Ω:<br />

∆wi,Ω = η · <br />

op,i · δp,Ω. (5.17)<br />

p∈P


Allerdings: Wir haben die Herleitung schon von Anfang an als Offline-Regel begonnen,<br />

indem wir uns Gedanken gemacht haben, wie wir die Fehler aller Muster aufsummieren<br />

und jeweils nach der Präsentation aller Muster lernen. Dies ist der mathematisch korrekte<br />

Weg, aber aufwändiger zu implementieren und, wie wir später in diesem Kapitel<br />

sehen werden, auch teilweise rechenaufwändiger während des Trainings.<br />

Für die „Online-Learning-Version“ der Delta-Regel wird die Aufsummierung einfach<br />

weggelassen und direkt nach der Präsentation jedes Musters gelernt, was uns auch die<br />

Schreibweise vereinfacht (sie muss nicht mehr auf ein Muster p bezogen sein):<br />

∆wi,Ω = η · oi · δΩ. (5.18)<br />

Diese Version der Delta-Regel möchte ich auch für die folgende Definition verwenden.<br />

Definition 5.6 (Delta-Regel). Bestimmen wir analog zu obiger Herleitung, dass die<br />

Funktion h aus der Hebb-Regel (Gleichung 4.6 auf Seite 86) nur den Ausgabewert oi des<br />

Vorgängerneurons i wieder ausgibt und die Funktion g die Differenz von gewünschter<br />

Aktivierung tΩ und tatsächlicher Aktivierung aΩ ist, so erhalten wir die Delta-Regel,<br />

auch bekannt als Widrow-Hoff-Regel:<br />

∆wi,Ω = η · oi · (tΩ − aΩ) = ηoiδΩ<br />

(5.19)<br />

Wenn man als Teaching Input die gewünschte Ausgabe anstatt Aktivierung anlegt, die<br />

Ausgabefunktion der Outputneurone also keine Identität darstellt, erhält man<br />

∆wi,Ω = η · oi · (tΩ − oΩ) = ηoiδΩ<br />

und δΩ entspricht dann der Differenz zwischen tΩ und oΩ.<br />

(5.20)<br />

Bei der Delta-Regel ist die Gewichtsänderung aller Gewichte zu einem Ausgabeneuron<br />

Ω proportional<br />

⊲ zur Differenz der aktuellen Aktivierung bzw. Ausgabe aΩ bzw. oΩ und dem dazugehörigen<br />

Teaching Input tΩ. Diesen Faktor möchten wir δΩ nennen, er wird<br />

auch „Delta“ gesprochen.<br />

Offensichtlich gilt die Delta-Regel jedoch nur für SLPs, da sich die Formel immer auf<br />

den Teaching Input bezieht und für innere Verarbeitungsschichten von Neuronen kein<br />

Teaching Input existiert.


Ein. 1 Ein. 2 Ausgabe<br />

0 0 0<br />

0 1 1<br />

1 0 1<br />

1 1 0<br />

Tabelle 5.1: Definition des logischen XORs. Links die Eingabewerte, rechts die definierte Ausgabe.<br />

<br />

<br />

i1<br />

i2<br />

❇<br />

wi1 ,Ω wi ❇<br />

2 ,Ω<br />

❇<br />

<br />

⑤⑤⑤⑤<br />

⑤⑤⑤⑤<br />

Ω<br />

<br />

XOR?<br />

Abbildung 5.6: Skizze für ein Singlelayerperceptron, welches die XOR-Funktion darstellen soll –<br />

solch ein SLP kann es aber nicht geben.<br />

5.2 Ein SLP kann nur linear separierbare Daten repräsentieren<br />

Sei f die XOR-Funktion, welche zwei binäre Eingaben erwartet und eine binäre Ausgabe<br />

erzeugt (genaue Definition siehe Tabelle 5.1).<br />

Versuchen wir, durch ein SLP mit zwei Eingabeneuronen i1, i2 und einem Ausgabeneuron<br />

Ω die XOR-Funktion darzustellen (Abb. 5.6).<br />

Wir verwenden hier die gewichtete Summe als Propagierungsfunktion, eine binäre Aktivierungsfunktion<br />

mit Schwellenwert Θ und die Identität als Ausgabefunktion. Ω muss<br />

also in Abhängigkeit von i1 und i2 den Wert 1 ausgeben, wenn gilt:<br />

netΩ = oi1 wi1,Ω + oi2 wi2,Ω ≥ ΘΩ<br />

(5.21)


Abbildung 5.7: Lineare Separierung von n = 2 Eingaben von Inputneuronen i1 und i2 durch 1dimensionale<br />

Gerade. A und B bezeichnen die Zugehörigkeit der Eckpunkte zu den zu separierenden<br />

Mengen der XOR-Funktion.<br />

Gehen wir von einem positiven Gewicht wi2,Ω aus, so ist Ungleichung 5.21 auf der<br />

vorangehenden Seite äquivalent zu der Ungleichung<br />

oi1<br />

1<br />

≥ (ΘΩ − oi2<br />

wi1,Ω<br />

wi2,Ω) (5.22)<br />

Bei konstantem Schwellenwert ΘΩ stellt der rechte Teil der Ungleichung 5.22 eine<br />

Gerade durch ein von den möglichen Ausgaben oi1 und oi2 der Eingabeneurone i1 und<br />

i2 aufgespanntes Koordinatensystem (Abb. 5.7) dar.<br />

Für ein (wie für Ungleichung 5.22 gefordertes) positives wi2,Ω feuert das Ausgabeneuron<br />

Ω bei den Eingabekombinationen, welche über der erzeugten Geraden liegen. Für<br />

ein negatives wi2,Ω würde es für alle Eingabekombinationen feuern, welche unter der<br />

Geraden liegen. Es sei angemerkt, dass nur die vier Eckpunkte des Einheitsquadrates<br />

mögliche Eingaben sind, da die XOR-Funktion nur binäre Eingaben kennt.<br />

Um das XOR-Problem zu lösen, müssen wir also die Gerade so drehen und verschieben,<br />

dass sie die Eingabemenge A = {(0, 0), (1, 1)} von der Eingabemenge B =<br />

{(0, 1), (1, 0)} abgrenzt - was offensichtlich nicht möglich ist.


Abbildung 5.8: Lineare Separierung von n = 3 Eingaben von Inputneuronen i1, i2 und i3 durch<br />

2-dimensionale Ebene.<br />

Allgemein lassen sich die Eingabemöglichkeiten n vieler Eingabeneurone in einem ndimensionalen<br />

Würfel darstellen, der von einem SLP durch eine (n − 1)-dimensionale<br />

Hyperebene separiert wird (Abb. 5.8) – nur Mengen, die durch eine solche Hyperebene<br />

trennbar, also linear separierbar sind, kann ein SLP klassifizieren.<br />

Es spricht leider viel dafür, dass der Prozentsatz der linear separierbaren Probleme<br />

mit steigendem n schnell abnimmt (siehe Tabelle 5.2 auf der folgenden Seite), was die<br />

Funktionalität des SLPs einschränkt – weiterhin sind Prüfungen auf lineare Separierbarkeit<br />

schwierig. Für schwierigere Aufgaben mit mehr Eingaben benötigen wir also<br />

etwas Mächtigeres als das SLP. Das XOR-Problem stellt schon eine dieser Aufgaben<br />

dar, braucht doch ein Perceptron, das die XOR-Funktion repräsentieren will, bereits<br />

eine verdeckte Ebene (Abb. 5.9 auf der folgenden Seite).<br />

5.3 Ein Multilayerperceptron enthält mehr trainierbare<br />

Gewichtsschichten<br />

Mächtiger als ein SLP ist ein Perceptron mit zwei oder mehr trainierbaren Gewichtsschichten<br />

(Multilayerperceptron bzw. MLP genannt). Wie wir wissen, kann ein Single-


n Anzahl<br />

binärer<br />

Funktionen<br />

davon lin.<br />

separierbar<br />

Anteil<br />

1 4 4 100%<br />

2 16 14 87.5%<br />

3 256 104 40.6%<br />

4 65, 536 1, 772 2.7%<br />

5 4.3 · 10 9 94, 572 0.002%<br />

6 1.8 · 10 19 5, 028, 134 ≈ 0%<br />

Tabelle 5.2: Anzahl der Funktionen bezüglich n binärer Eingaben und Anzahl und Anteil der davon<br />

linear separierbaren Funktionen. Nach [Zel94, Wid89, Was89].<br />

<br />

<br />

❆<br />

<br />

✶✶<br />

❆<br />

✶ ❆<br />

✶<br />

❆<br />

✶ 1<br />

✶<br />

❆<br />

1<br />

✶ ❆<br />

✶ ❆<br />

1✶✶✶✶<br />

✶✶✶✶<br />

<br />

⑥⑥⑥⑥<br />

⑥⑥⑥⑥<br />

1 ✌✌✌✌✌✌✌✌<br />

✌✌✌✌✌✌✌✌<br />

1.5<br />

−2<br />

<br />

0.5<br />

<br />

XOR<br />

Abbildung 5.9: <strong>Neuronale</strong>s Netz, welches die XOR-Funktion realisiert. Schwellenwerte stehen (soweit<br />

vorhanden) innerhalb der Neurone.


layerperceptron den Inputraum durch eine Hyperebene (bei zweidimensionalem Inputraum<br />

eine Geraden) teilen. Ein zweistufiges Perceptron (2 trainierbare Gewichtsschichten,<br />

3 Schichten Neurone) kann konvexe Polygone klassifizieren, indem es diese<br />

Geraden weiterbehandelt, zum Beispiel in der Form „erkenne Muster, die über Gerade<br />

1, unter Gerade 2 und unter Gerade 3 liegen“. Wir haben also bildlich gesprochen ein<br />

SLP mit mehreren Ausgabeneuronen genommen und ein weiteres SLP „angehangen“<br />

(oberer Teil der Abb. 5.10 auf der folgenden Seite). Ein Multilayerperceptron stellt<br />

einen universellen Funktionsapproximator dar, wie aus dem Cybenko-Theorem<br />

hervorgeht [Cyb89].<br />

Eine weitere trainierbare Gewichtsschicht verfährt genauso, nur eben mit den konvexen<br />

Polygonen, die nun wieder durch eine Gewichtsschicht aufeinander addiert, voneinander<br />

abgezogen oder mit anderen Operationen nachbearbeitet werden können (unterer Teil<br />

der Abb. 5.10 auf der folgenden Seite).<br />

Allgemein kann mathematisch bewiesen werden, dass schon ein Multilayerperceptron<br />

mit einer Schicht versteckter Neurone eine Funktion mit endlich vielen Unstetigkeitsstellen<br />

sowie deren erste Ableitung beliebig genau approximieren kann – leider ist der<br />

Beweis aber nicht konstruktiv, und so ist es uns selbst überlassen, die richtige Neuronenanzahl<br />

und Gewichte zu finden.<br />

Im Folgenden möchten wir für verschiedene Multilayerperceptrons eine Kurzschreibweise<br />

verwenden, welche weite Verbreitung findet: So ist ein zweistufiges Perceptron<br />

mit 5 Neuronen in der Eingabeschicht, 3 Neuronen in der versteckten Schicht und 4<br />

Neuronen in der Ausgabeschicht ein 5-3-4-MLP.<br />

Definition 5.7 (Multilayerperceptron). Perceptrons mit mehr als einer Schicht variabel<br />

gewichteter Verbindungen bezeichnen wir als Multilayerperceptron (MLP).<br />

Ein n-Layer-Perceptron bzw. n-stufiges Perceptron hat dabei genau n variable Gewichtsschichten<br />

und n + 1 Schichten Neurone (die Retina lassen wir außer Acht), die<br />

Neuronenschicht 1 ist hierbei die Schicht Eingabeneurone.<br />

Da dreistufige Perceptrons durch Vereinigung und Schnitt beliebig vieler konvexer<br />

Polygone Mengen beliebiger Form klassifizieren können, bringt uns eine weitere Stufe<br />

für Funktionsdarstellungen durch <strong>Neuronale</strong> <strong>Netze</strong> keinen Vorteil mehr. Vorsicht beim<br />

Literaturlesen: An der Schichtendefinition scheiden sich die Geister. Manche Quellen<br />

zählen die Neuronenschichten, manche die Gewichtsschichten. Manche zählen die Retina<br />

hinzu, manche zählen die trainierbaren Gewichtsschichten. Manche zählen (aus<br />

welchen Gründen auch immer) die Ausgabeneuronenschicht nicht mit. Ich habe hier<br />

die Definition gewählt, die meiner Meinung nach am meisten über die Lernfähigkeiten<br />

aussagt – und werde sie hier auch konsistent durchhalten. Nochmal zur Erinnerung:


i1<br />

⑧⑧⑧⑧⑧⑧⑧⑧⑧<br />

❅<br />

❯ ❯<br />

<br />

❅<br />

❯<br />

i2<br />

❯<br />

❅<br />

❯ ❯<br />

❅<br />

❯ ❯ ❯<br />

❅ ❯ ❯<br />

❅ ❯ ❯<br />

❅<br />

❯ ❯<br />

❅<br />

❯ ❯<br />

❅<br />

❯ ❯<br />

<br />

⑧<br />

❯ ❯ ❯ ❯ ❯ ❯ <br />

⑧⑧⑧⑧⑧⑧⑧⑧<br />

❅<br />

❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥<br />

<br />

h1 <br />

<br />

<br />

h2<br />

h3<br />

<br />

<br />

<br />

<br />

<br />

<br />

♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦<br />

Ω<br />

<br />

i1<br />

⑦⑦⑦⑦⑦⑦⑦⑦⑦<br />

i2<br />

❅❅❅<br />

❅❅❅<br />

❅<br />

<br />

❅❅<br />

<br />

<br />

<br />

<br />

<br />

⑦<br />

<br />

<br />

⑦⑦⑦⑦⑦⑦⑦⑦<br />

❅❅❅<br />

❅❅❅<br />

❅<br />

<br />

❅❅<br />

<br />

h1 <br />

<br />

h2<br />

h3<br />

h4<br />

h5<br />

<br />

❅<br />

<br />

❅<br />

❅<br />

<br />

❅<br />

<br />

❅<br />

❅<br />

<br />

❅<br />

❅<br />

<br />

❅<br />

<br />

<br />

<br />

<br />

<br />

<br />

⑦<br />

<br />

⑦⑦⑦⑦⑦⑦⑦⑦<br />

h6<br />

<br />

♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥<br />

h7<br />

h8<br />

❅<br />

<br />

⑦⑦⑦⑦⑦⑦⑦⑦⑦<br />

Ω<br />

<br />

Abbildung 5.10: Wie wir wissen, repräsentiert ein SLP eine Gerade. Mit 2 trainierbaren Gewichtsschichten<br />

kann man mehrere Geraden zu konvexen Polygonen zusammensetzen (oben). Unter Verwendung<br />

von 3 trainierbaren Gewichtsschichten kann man mit mehreren Polygonen beliebige Mengen<br />

modellieren (unten).


n klassifizierbare Menge<br />

1 Hyperebene<br />

2 konvexes Polygon<br />

3 jede beliebige Menge<br />

4 auch jede beliebige Menge,<br />

also kein weiterer Vorteil<br />

Tabelle 5.3: Hier wird dargestellt, mit welchem Perceptron sich Mengen welcher Art klassifizieren<br />

lassen, wobei das n die Anzahl der trainierbaren Gewichtsschichten darstellt.<br />

Ein n-stufiges Perceptron besitzt genau n trainierbare Gewichtsschichten. Eine Zusammenfassung,<br />

welche Perceptrons welche Art von Menge klassifizieren können, findet<br />

sich noch einmal in Tabelle 5.3. Wir werden uns jetzt der Herausforderung widmen,<br />

Perceptrons mit mehr als einer Gewichtsschicht zu trainieren.<br />

5.4 Backpropagation of Error verallgemeinert die Delta-Regel<br />

auf MLPs<br />

Im Folgenden möchte ich die Backpropagation of Error-Lernregel (Kurz: Backpropagation,<br />

Backprop oder auch BP) herleiten und näher erläutern, mit der man mehrstufige<br />

Perceptrons, welche semilineare 3 Aktivierungsfunktionen besitzen, trainieren<br />

kann. Binäre Schwellenwertfunktionen und sonstige nicht-differenzierbare Funktionen<br />

werden nicht mehr unterstützt, das macht aber nichts: Wir haben ja gesehen, dass man<br />

die Fermifunktion bzw. den Tangens Hyperbolicus durch einen Temperatur-Parameter<br />

T der binären Schwellenwertfunktion beliebig annähern kann. Weitgehend werde ich<br />

der Herleitung nach [Zel94] bzw. [MR86] folgen – ich möchte aber noch einmal darauf<br />

hinweisen, dass das Verfahren bereits früher von Paul Werbos in [Wer74] publiziert<br />

wurde, jedoch wesentlich weniger Leser fand als in [MR86].<br />

Backpropagation ist ein Gradientenabstiegsverfahren (mit all den Stärken und Schwächen<br />

des Gradientenabstiegs), wobei die Fehlerfunktion Err(W ) hier sämtliche n Gewichte<br />

als Argument entgegennimmt (Abb. 5.5 auf Seite 98) und diese dem Ausgabefehler<br />

zuordnet, also n-dimensional ist. Auf Err(W ) sucht man durch Gradientenabstieg<br />

einen Punkt geringen oder gar geringsten Fehlers. Backpropagation trainiert also wie<br />

die Delta-Regel die Gewichte des <strong>Neuronale</strong>n <strong>Netze</strong>s – und genau die Delta-Regel bzw.<br />

3 Semilineare Funktionen sind monoton und differenzierbar – aber im Allgemeinen nicht linear.


ihre Größe δi für ein Neuron i wird durch Backpropagation von einer auf mehrere<br />

trainierbare Gewichtsschichten erweitert.<br />

5.4.1 Die Herleitung erfolgt völlig analog zur Deltaregel, aber mit<br />

allgemeinerem Delta<br />

Im Vorfeld sei definiert, dass sich die <strong>Netze</strong>ingabe der einzelnen Neurone i durch die<br />

gewichtete Summe ergibt. Weiterhin seien op,i, netp,i etc. wie schon bei Herleitung der<br />

Delta-Regel definiert als die gewohnten oi, neti, etc. unter dem Eingabemuster p, welches<br />

wir zum Trainieren verwenden. Auch sei die Ausgabefunktion wieder die Identität,<br />

es gilt also oi = fact(netp,i) für jedes Neuron i. Da es sich um eine Verallgemeinerung<br />

der Delta-Regel handelt, benutzen wir wieder das gleiche Formelgerüst wie bei der<br />

Delta-Regel (Gleichung 5.20 auf Seite 102). Was wir verallgemeinern müssen, ist, wie<br />

schon angedeutet, die Größe δ für jedes Neuron.<br />

Zunächst: Wo befindet sich das Neuron, für das wir ein δ errechnen wollen? Es liegt<br />

nahe, ein beliebiges inneres Neuron h zu wählen, welches eine Menge K von Vorgängerneuronen<br />

k sowie eine Menge L von Nachfolgerneuronen l besitzt, welche ebenfalls<br />

innere Neurone sind (Siehe Abb. 5.11 auf der rechten Seite). Es ist dabei irrelevant,<br />

ob die Vorgängerneurone bereits die Eingabeneurone sind.<br />

Wir führen nun das gleiche Spiel wie bei der Herleitung der Delta-Regel durch und<br />

spalten Funktionen durch die Kettenregel. Ich werde bei dieser Herleitung nicht ganz<br />

so ausführlich sein, das Prinzip ist aber dem der Delta-Regel ähnlich (die Unterschiede<br />

liegen eben wie gesagt im verallgemeinerten δ). Wir leiten also zunächst die Fehlerfunktion<br />

Err nach einem Gewicht wk,h ab.<br />

∂Err(wk,h)<br />

∂wk,h<br />

= ∂Err<br />

∂neth<br />

<br />

=−δh<br />

· ∂neth<br />

∂wk,h<br />

(5.23)<br />

Der erste Faktor der Gleichung 5.23 ist −δh, welches wir gleich noch betrachten wollen.<br />

Der zweite Faktor der Gleichung trägt im Zähler die <strong>Netze</strong>ingabe, also die gewichtete<br />

Summe, so dass wir diese auch direkt ableiten können. Es fallen wieder alle Summanden<br />

der Summe weg bis auf denjenigen, der wk,h enthält. Dieser Summand heißt wk,h · ok.<br />

Leitet man diesen ab, bleibt also der Output des Neurons k übrig:<br />

∂neth<br />

∂wk,h<br />

= ∂ <br />

= ok<br />

k∈K wk,hok<br />

∂wk,h<br />

(5.24)<br />

(5.25)


▲<br />

<br />

▲▲<br />

❂<br />

<br />

▲ ❂<br />

. . . k<br />

▲▲<br />

❂<br />

▲ ❂<br />

▲ ❂<br />

▲▲<br />

❂<br />

▲ ❂<br />

▲ ❂<br />

wk,h<br />

▲▲<br />

❂<br />

▲<br />

❂<br />

<br />

<br />

<br />

♣♣♣♣♣♣♣♣ K<br />

♣♣♣♣♣♣♣<br />

Σ<br />

fact<br />

<br />

✁✁✁✁✁✁✁✁✁✁<br />

◆ h H<br />

◆<br />

wh,l◆◆<br />

◆◆◆<br />

<br />

◆◆◆<br />

<br />

<br />

. . . l L<br />

Abbildung 5.11: Skizze der Lage unseres Neurons h im <strong>Neuronale</strong>n Netz. Es liegt in der Schicht<br />

H, Vorgängerschicht ist K, nachfolgende Schicht ist L.<br />

Wie versprochen, behandeln wir nun das −δh der Gleichung 5.23 auf der linken Seite,<br />

welches wir wieder mit der Kettenregel aufspalten:<br />

δh = − ∂Err<br />

∂neth<br />

= − ∂Err<br />

∂oh<br />

· ∂oh<br />

∂neth<br />

(5.26)<br />

(5.27)<br />

Die Ableitung des Outputs nach der <strong>Netze</strong>ingabe (der zweite Faktor in Gleichung 5.27)<br />

kommt natürlich der Ableitung der Aktivierungsfunktion nach der <strong>Netze</strong>ingabe<br />

gleich:<br />

∂oh<br />

∂neth<br />

= ∂fact(neth)<br />

∂neth<br />

(5.28)<br />

= fact ′ (neth) (5.29)<br />

Analog leiten wir nun den ersten Faktor in Gleichung 5.27 ab. Diese Stelle möge sich der<br />

Leser bitte gut durch den Kopf gehen lassen. Wir müssen uns hierfür nur klarmachen,<br />

dass die Ableitung der Fehlerfunktion nach dem Output einer inneren Neuronenschicht


abhängig ist vom Vektor sämtlicher <strong>Netze</strong>ingaben der Nachfolgeschicht. Dies schlägt in<br />

Gleichung 5.30 zu Buche:<br />

− ∂Err<br />

∂oh<br />

= − ∂Err(netl1 , . . . , netl |L| )<br />

∂oh<br />

l∈L<br />

(5.30)<br />

Nach der Definition der mehrdimensionalen Kettenregel folgt dann sofort die Gleichung<br />

5.31:<br />

− ∂Err<br />

=<br />

∂oh<br />

<br />

<br />

− ∂Err<br />

·<br />

∂netl<br />

∂netl<br />

<br />

(5.31)<br />

∂oh<br />

Die Summe in Gleichung 5.31 besitzt zwei Faktoren. Mit diesen Faktoren, summiert<br />

über die Nachfolgeschicht L, wollen wir uns nun beschäftigen. Wir rechnen den zweiten<br />

Faktor in der folgenden Gleichung 5.33 einfach aus:<br />

∂netl<br />

∂oh<br />

= ∂ <br />

h∈H wh,l · oh<br />

= wh,l<br />

∂oh<br />

Analog gilt für den ersten Faktor nach der Definition unseres δ:<br />

Wir setzen nun ein:<br />

− ∂Err<br />

∂netl<br />

⇒ − ∂Err<br />

∂oh<br />

= δl<br />

= <br />

l∈L<br />

δlwh,l<br />

(5.32)<br />

(5.33)<br />

(5.34)<br />

(5.35)<br />

Eine graphisch aufbereitete Version der δ-Verallgemeinerung mit allen Aufspaltungen<br />

findet sich in Abbildung 5.12 auf der rechten Seite.<br />

Dem Leser wird bereits aufgefallen sein, dass einige Zwischenergebnisse umrahmt wurden.<br />

Umrahmt wurden genau die Zwischenergebnisse, die in der Gewichtsveränderung<br />

von wk,h einen Faktor ausmachen. Führt man die obigen Gleichungen mit den umrahmten<br />

Zwischenergebnissen zusammen, so ergibt sich die gesuchte Gewichtsänderung<br />

∆wk,h zu<br />

∆wk,h = ηokδh mit (5.36)<br />

δh = f ′ act(neth) · <br />

l∈L<br />

(δlwh,l)


δh<br />

− ∂Err<br />

∂neth<br />

<br />

<br />

∂oh<br />

∂neth<br />

f ′ act(neth) − ∂Err<br />

∂netl<br />

− ∂Err<br />

∂oh<br />

<br />

<br />

δl<br />

<br />

l∈L ∂netl<br />

∂oh<br />

∂ <br />

h∈H wh,l·oh<br />

∂oh<br />

Abbildung 5.12: Graphische Darstellung der Gleichsetzungen (durch langgezogene Gleichzeichen)<br />

und Kettenregel-Aufspaltungen (durch Pfeile) im Rahmen der Herleitung von Backpropagation. Die<br />

Blätter des Baumes spiegeln die in der Herleitung umrahmten Endergebnisse aus der Verallgemeinerung<br />

des δ wieder.<br />

wh,l


– natürlich nur für den Fall, dass h ein inneres Neuron ist (sonst gibt es ja auch keine<br />

Nachfolgeschicht L).<br />

Den Fall, dass h Ausgabeneuron ist, haben wir ja schon in der Herleitung der Delta-<br />

Regel behandelt. Insgesamt ergibt sich also unsere Verallgemeinerung der Delta-Regel,<br />

genannt Backpropagation of Error, zu:<br />

∆wk,h = ηokδh <br />

mit<br />

f<br />

δh =<br />

′ act(neth) · (th − yh) (h außen)<br />

f ′ act(neth) · <br />

l∈L (δlwh,l) (h innen)<br />

(5.37)<br />

Im Unterschied zur Delta-Regel ist also die Behandlung des δ, je nachdem, ob es sich bei<br />

h um ein Ausgabe- oder aber inneres (also verdecktes) Neuron handelt, verschieden:<br />

1. Ist h Ausgabeneuron, so gilt<br />

δp,h = f ′ act(netp,h) · (tp,h − yp,h) (5.38)<br />

Das Gewicht wk,h von k nach h wird also unter unserem Übungsmuster p proportional<br />

zu<br />

⊲ Lernrate η,<br />

⊲ Ausgabe op,k des Vorgängerneurons k,<br />

⊲ Gradient der Aktivierungsfunktion an der Stelle der <strong>Netze</strong>ingabe des Nachfolgerneurons<br />

f ′ act(netp,h) und<br />

⊲ Differenz aus Teaching Input tp,h und Ausgabe yp,h des Nachfolgerneurons<br />

h<br />

geändert. In diesem Fall arbeitet Backpropagation also auf zwei Neuronenschichten,<br />

der Ausgabeschicht mit dem Nachfolgerneuron h und der Schicht davor mit<br />

dem Vorgängerneuron k.<br />

2. Ist h inneres, verdecktes Neuron, so gilt<br />

δp,h = f ′ act(netp,h) · <br />

(δp,l · wh,l) (5.39)<br />

An dieser Stelle sei ausdrücklich erwähnt, dass Backpropagation nun auf drei<br />

Schichten arbeitet. Hierbei ist das Neuron k der Vorgänger der zu ändernden<br />

Verbindung mit dem Gewicht wk,h, das Neuron h der Nachfolger der zu ändernden<br />

Verbindung, und die Neurone l liegen in der Schicht nach dem Nachfolgerneuron.<br />

Das Gewicht wk,h von k nach h wird also unter unserem Übungsmuster<br />

p proportional zu<br />

l∈L


⊲ Lernrate η,<br />

⊲ Ausgabe des Vorgängerneurons op,k,<br />

⊲ Gradient der Aktivierungsfunktion an der Stelle der <strong>Netze</strong>ingabe des Nachfolgerneurons<br />

f ′ act(netp,h),<br />

⊲ sowie, und hier liegt der Unterschied, aus der gewichteten Summe der Gewichtsveränderungen<br />

zu allen Neuronen, die h nachfolgen, <br />

l∈L (δp,l · wh,l)<br />

geändert.<br />

Definition 5.8 (Backpropagation). Fassen wir die Formeln 5.38 auf der linken Seite<br />

und 5.39 auf der linken Seite zusammen, so erhalten wir folgende Gesamtformel für<br />

Backpropagation (die Bezeichner p werden der Übersichtlichkeit halber weggelassen):<br />

∆wk,h = ηokδh <br />

mit<br />

f<br />

δh =<br />

′ act(neth) · (th − yh) (h außen)<br />

f ′ act(neth) · <br />

l∈L (δlwh,l) (h innen)<br />

SNIPE: Eine online-Variante von Backpropagation ist in der Methode<br />

trainBackpropagationOfError der Klasse NeuralNetwork implementiert.<br />

(5.40)<br />

Offensichtlich ist also, dass Backpropagation zunächst die hinterste Gewichtsschicht<br />

direkt mit dem Teaching Input bearbeitet und sich anschließend ebenenweise unter<br />

Berücksichtigung der jeweils vorhergehenden Gewichtsänderungen weiter nach vorn arbeitet.<br />

Der Teaching Input hinterlässt also Spuren in sämtlichen Gewichtsschichten.<br />

Ich beschreibe hier gerade den ersten Teil (Delta-Regel) und zweiten Teil von Backpropagation<br />

(Verallgemeinerte Delta-Regel auf mehr Schichten) in einem Zug, was<br />

vielleicht der Sache, nicht jedoch der Forschung daran gerecht wird. Der erste Teil<br />

ist offensichtlich, das werden wir gleich im Rahmen einer mathematischen Spielerei<br />

sehen. Zwischen dem ersten und zweiten, rekursiven Teil liegen jedoch Jahrzehnte an<br />

Entwicklungszeit und -arbeit, denn wie bei vielen bahnbrechenden Erfindungen merkte<br />

man auch dieser erst nach der Entwicklung an, wie einleuchtend sie eigentlich ist.<br />

5.4.2 Der mathematische Rückweg: Reduktion von Backpropagation auf<br />

Delta-Regel<br />

Wie oben erläutert, ist die Delta-Regel ein Spezialfall von Backpropagation für einstufige<br />

Perceptrons und lineare Aktivierungsfunktionen – diesen Umstand möchte ich<br />

hier kurz näher erläutern und die Delta-Regel aus Backpropagation entwickeln, um


das Verständnis für beide Regeln noch etwas zu schärfen. Wir haben gesehen, dass<br />

Backpropagation durch<br />

∆wk,h = ηokδh <br />

mit<br />

f<br />

δh =<br />

′ act(neth) · (th − yh) (h außen)<br />

f ′ act(neth) · <br />

l∈L (δlwh,l) (h innen)<br />

(5.41)<br />

definiert ist. Da wir sie nur für einstufige Perceptrons verwenden, fällt der zweite Teil<br />

von Backpropagation (heller dargestellt) ersatzlos weg, wir erhalten also:<br />

∆wk,h = ηokδh mit<br />

δh = f ′ act(neth) · (th − oh)<br />

(5.42)<br />

Weiterhin wollen wir nur lineare Aktivierungsfunktionen verwenden, so dass f ′ act (heller<br />

dargestellt) konstant ist. Konstanten lassen sich bekanntlich zusammenfassen, wir<br />

fassen also die konstante Ableitung f ′ act und die (mindestens pro Lernzyklus konstante)<br />

Lernrate η (auch heller dargestellt) direkt in η zusammen. Es ergibt sich also:<br />

Dies entspricht genau der Definition der Delta-Regel.<br />

∆wk,h = ηokδh = ηok · (th − oh) (5.43)<br />

5.4.3 Die Wahl der Lernrate hat enormen Einfluss auf den Lernprozeß<br />

Wie mittlerweile vielfach gesehen, ist die Gewichtsänderung in jedem Fall proportional<br />

zur Lernrate η. Die Wahl von η ist also sehr entscheidend für das Verhalten von<br />

Backpropagation und allgemein für Lernverfahren.<br />

Definition 5.9 (Lernrate). Die Geschwindigkeit und Genauigkeit eines Lernverfahrens<br />

ist immer steuerbar von und proportional zu einer Lernrate, welche als η geschrieben<br />

wird.<br />

Wird η zu groß gewählt, so sind die Sprünge auf der Fehlerfläche zu groß und es könnten<br />

z.B. enge Täler, also gute Werte, einfach übersprungen werden, zudem bewegt man sich<br />

sehr unkontrolliert über die Fehleroberfläche. Das Wunschmittel ist also ein kleines η,<br />

was aber einen riesigen, oft inakzeptablen Zeitaufwand mit sich bringen kann. Die<br />

Erfahrung zeigt, dass gute Werte für die Lernrate im Bereich<br />

0.01 ≤ η ≤ 0.9<br />

liegen. Die Wahl von η hängt maßgeblich von Problem, Netz und Trainingsdaten ab,<br />

so dass man kaum praktische Wahlhilfen geben kann. Beliebt ist jedoch, mit einem<br />

relativ großen η, z.B. 0.9, den Anfang des Lernens zu machen und η dann langsam<br />

bis auf z.B. 0.1 zu verringern, während für einfachere Probleme η oft einfach konstant<br />

gehalten werden kann.


5.4.3.1 Variation der Lernrate über die Zeit<br />

Weiteres Stilmittel beim Training kann eine variable Lernrate sein: Eine große Lernrate<br />

lernt am Anfang gut, aber später nicht mehr genau, eine kleinere ist aufwändiger,<br />

lernt aber genauer. Also verringert man einmal oder mehrere Male die Lernrate um<br />

eine Größenordnung – während des Lernvorgangs.<br />

Ein beliebter Fehler (der obendrein noch auf den ersten Blick sehr elegant wirkt) ist,<br />

die Lernrate kontinuierlich sinken zu lassen: Hier kommt es sehr leicht vor, dass der<br />

Abfall der Lernrate größer ist als die Steigung eines Hügels der Fehlerfunktion, die<br />

wir gerade erklimmen – was zur Folge hat, dass wir an dieser Steigung einfach hängen<br />

bleiben. Lösung: Lieber wie beschrieben die Lernrate stufenweise verringern.<br />

5.4.3.2 Verschiedene Schichten – verschiedene Lernraten<br />

Je weiter man sich während des Lernvorganges von der Ausgabeschicht wegbewegt,<br />

um so langsamer lernt Backpropagation – es ist also eine gute Idee, für die Gewichtsschichten<br />

nahe der Eingabeschicht eine größere Lernrate zu nehmen als für diejenigen<br />

nahe der Ausgabeschicht. Der Unterschied kann hier ruhig bis zu einer Größenordnung<br />

betragen.<br />

5.5 Resilient Backpropagation ist eine Erweiterung von<br />

Backpropagation of Error<br />

Gerade haben wir zwei Backpropagation-spezifische Eigenschaften angesprochen, die<br />

hin und wieder zum Problem werden können (zusätzlich zu denjenigen, die Gradientenabstiege<br />

ohnehin schon mit sich bringen): Zum einen kann der Benutzer von Backpropagation<br />

eine schlechte Lernrate wählen, und zum anderen lernt Backpropagation<br />

immer langsamer, je weiter die Gewichte von der Ausgabeschicht entfernt sind. Aus<br />

diesem Grund haben Martin Riedmiller et al. Backpropagation weiterentwickelt,<br />

und ihre Variante Resilient Backpropagation (kurz: Rprop) getauft [RB93,Rie94].<br />

Ich möchte Backpropagation und Rprop hier gegenüberstellen, ohne ausdrücklich eine<br />

Variante als „besser“ zu deklarieren. Bevor wir uns nun wirklich mit Formeln auseinandersetzen,<br />

wollen wir die zwei primären Ideen hinter Rprop (und ihre Folgen) erst<br />

einmal umgangsprachlich dem schon bekannten Backpropagation gegenüberstellen.


Lernrate: Backpropagation benutzt standardmäßig eine Lernrate η, die vom Benutzer<br />

gewählt wird, und für das ganze Netz gilt. Sie bleibt statisch, bis sie manuell geändert<br />

wird. Die Nachteile dieser Vorgehensweise haben wir schon erforscht. Rprop<br />

verfolgt hier einen komplett anderen Ansatz: Es gibt keine globale Lernrate. Erstens<br />

hat jedes einzelne Gewicht wi,j seine eigene Lernrate ηi,j, und zweitens<br />

werden diese Lernraten nicht vom Benutzer gewählt, sondern von Rprop selbst<br />

festgelegt. Drittens bleiben die Gewichtsänderungen nicht statisch, sondern werden<br />

von Rprop für jeden Zeitschritt angepasst. Um die zeitliche Änderung miteinzubeziehen,<br />

nennen wir sie korrekterweise ηi,j(t). Dies ermöglich nicht nur<br />

gezielteres Lernen, auch das Problem des schichtweise verlangsamten Lernens<br />

wird auf elegante Weise gelöst.<br />

Gewichtsänderung: In Backpropagation werden die Gewichte proportional zum Gradienten<br />

der Fehlerfunktion geändert. Das ist auf den ersten Blick wirklich intuitiv,<br />

allerdings übernehmen wir so jegliche Zerklüftung, die die Fehleroberfläche<br />

aufweist, mit in die Gewichtsänderung. Ob das immer sinnvoll ist, darf zumindest<br />

angezweifelt werden. Auch hier geht Rprop andere Wege: Der Betrag der<br />

Gewichtsänderung ∆wi,j entspricht einfach direkt der zugehörigen, automatisch<br />

angepassten Lernrate ηi,j. So ist die Gewichtsänderung nicht proportional zum<br />

Gradienten, nur noch das Vorzeichen des Gradienten geht in die Gewichtsänderung<br />

mit ein. Bis jetzt wissen wir noch nicht, auf welche Weise die ηi,j zur<br />

Laufzeit angepasst werden, aber es sei vorweggenommen, dass der Ergebnisprozess<br />

deutlich weniger zerklüftet aussieht als eine Fehlerfunktion.<br />

Gegenüber Backprop wird also der Gewichts-Updateschritt ersetzt, und ein zusätzlicher<br />

Lernraten-Anpassungsschritt hinzugefügt. Wie werden diese Ideen nun genau<br />

umgesetzt?<br />

5.5.1 Gewichtsänderungen sind nicht proportional zum Gradienten<br />

Betrachten wir zunächst die Gewichtsänderung. Wir haben schon bemerkt, dass die<br />

gewichtsspezifischen Lernraten direkt als Beträge der Gewichtsänderungen für ihr jeweiliges<br />

Gewicht herhalten. Bleibt die Frage, woher das Vorzeichen kommt – und das ist<br />

eine Stelle, bei welcher der Gradient ins Spiel kommt. Wie schon bei der Herleitung von<br />

Backpropagation, leiten wir die Fehlerfunktion Err(W ) nach den einzelnen Gewichten<br />

∂Err(W )<br />

wi,j ab und erhalten so Gradienten . Jetzt kommt der große Unterschied: An-<br />

∂wi,j<br />

statt den Betrag des Gradienten multiplikativ mit in die Gewichtsänderung einfließen<br />

zu lassen, betrachten wir nur das Vorzeichen des Gradienten. Der Gradient bestimmt<br />

also nicht mehr die Stärke, sondern nur noch die Richtung der Gewichtsänderung. Ist<br />

∂Err(W )<br />

das Vorzeichen des Gradienten ∂wi,j positiv, müssen wir das Gewicht wi,j verringern.


Vom Gewicht wird also ηi,j abgezogen. Ist das Vorzeichen des Gradienten hingegen negativ,<br />

so bedarf das Gewicht einer Verstärkung, bekommt also ηi,j addiert. Ist der<br />

Gradient genau 0, passiert einfach gar nichts. Wir gießen diese umgangssprachliche<br />

Beschreibung nun in eine Formel. Wir fügen jeweils ein (t) an, um darzustellen, dass<br />

alles im gleichen Zeitschritt passiert. Das ist unübersichtlicher, aber trotzdem wichtig,<br />

denn gleich werden wir noch eine weitere Formel betrachten, die über verschiedene<br />

Zeitschritte operiert. Dafür kürzen wir den Gradienten ab: g = .<br />

Definition 5.10 (Gewichtsänderung in Rprop).<br />

⎧<br />

⎪⎨ −ηi,j(t), wenn g(t) > 0<br />

∆wi,j(t) = +ηi,j(t),<br />

⎪⎩<br />

0<br />

wenn g(t) < 0<br />

sonst.<br />

∂Err(W )<br />

∂wi,j<br />

(5.44)<br />

Wir wissen nun, wie die Gewichte an sich geändert werden - jetzt bleibt noch die Frage,<br />

auf welche Weise die Lernraten selbstständig angepasst werden. Zuletzt, wenn wir das<br />

Gesamtsystem verstanden haben, klären wir dann die verbleibenden Kleinigkeiten wie<br />

Initialisierungswerte und ein paar konkrete Konstanten.<br />

5.5.2 Viele dynamisch angepasste Lernraten statt einer statischen<br />

Um die Lernraten ηi,j anzupassen, müssen wir wieder die zugehörigen Gradienten g<br />

betrachten, und zwar über zwei Zeitschritte hinweg: Den gerade vergangenen (t − 1)<br />

und den jetzigen (t). Wieder ist für uns nur das Vorzeichen des Gradienten wichtig,<br />

und wir müssen uns nun fragen: Was kann mit dem Vorzeichen über zwei Schritte<br />

hinweg passieren? Es kann gleich bleiben, und es kann wechseln.<br />

Wechselt das Vorzeichen von g(t − 1) zu g(t), so haben wir im Gradienten ein lokales<br />

Minimum übersprungen, das letzte Update ist also zu groß gewesen, folglich muss<br />

ηi,j(t) im Vergleich zu dem vorherigen ηi,j(t − 1) verkleinert werden, die Suche muss<br />

genauer werden. Mathematisch ausgedrückt: Wir erhalten ein neues ηi,j(t), in dem wir<br />

das alte ηi,j(t − 1) mit einer Konstante η ↓ multiplizieren, die zwischen 1 und 0 liegt.<br />

In diesem Falle wissen wir ja, dass im letzten Zeitschritt (t − 1) etwas schiefgelaufen<br />

ist – also wird zusätzlich noch das Gewichtsupdate für das Gewicht wi,j im Zeitschritt<br />

(t) hart auf 0 gesetzt, also gar nicht erst durchgeführt (nicht in der folgenden Formel<br />

angegeben).<br />

Bleibt das Vorzeichen aber gleich, kann eine (behutsame!) Vergrößerung von ηi,j stattfinden,<br />

um über flache Bereiche der Fehlerfunktion hinwegzukommen. Hier erhalten wir


unser neues ηi,j(t), in dem wir das alte ηi,j(t−1) mit einer Konstante η ↑ multiplizieren,<br />

die größer als 1 ist.<br />

Definition 5.11 (Anpassung der Lernraten in Rprop).<br />

⎧<br />

⎪⎨<br />

ηi,j(t) =<br />

⎪⎩<br />

ηi,j(t − 1) sonst.<br />

η ↑ ηi,j(t − 1), g(t − 1)g(t) > 0<br />

η ↓ ηi,j(t − 1), g(t − 1)g(t) < 0<br />

(5.45)<br />

Achtung: Daraus folgt auch, dass Rprop ausschließlich für Offline-Lernen konzipiert<br />

ist, denn wenn die Gradienten nicht eine gewisse Kontinuität aufweisen, bremst das<br />

Lernverfahren auf niedrigstes Tempo ab (und verweilt dort). Wer online lernt, wechselt<br />

ja – salopp gesprochen – mit jeder neuen Epoche die Fehlerfunktion, da diese nur auf<br />

jeweils ein Trainingsmuster bezogen ist. Das geht zwar bei Backpropagation oft sehr gut<br />

und sogar sehr oft schneller als die Offline-Variante, weshalb es dort gerne eingesetzt<br />

wird. Es fehlt aber die saubere mathematische Motivation, und genau diese benötigen<br />

wir hier.<br />

5.5.3 Uns fehlen noch ein paar Kleinigkeiten, um Rprop in der Praxis zu<br />

verwenden<br />

Es bleiben noch ein paar kleinere Fragen offen, nämlich<br />

1. Wie groß sind η ↑ und η ↓ (wie stark werden Lernraten verstärkt, bzw. abgeschwächt)?<br />

2. Wie groß ist ηi,j(0) (wie werden die gewichtsspezifischen Lernraten initialisiert)? 4<br />

3. Wie sind die oberen und unteren Grenzen ηmin bzw. ηmax für die ηi,j gesetzt?<br />

Die Antworten auf diese Fragen handeln wir nun mit kurzer Motivation ab. Der Initialisierungswert<br />

für die Lernraten sollte irgendwo in der Größenordnung der Gewichtsinitialisierung<br />

liegen, und so hat sich bewährt, ηi,j(0) = 0.1 zu setzen. Die Autoren der<br />

Rprop-Veröffentlichung beschreiben einleuchtenderweise, dass dieser Wert – solange er<br />

positiv gesetzt wird und keinen exorbitant hohen Betrag hat – eher unkritisch zu sehen<br />

ist, da er ohnehin schnell von der automatischen adaption überschrieben wird.<br />

Ebenso unkritisch ist ηmax, für das ohne weitere mathematische Begründung ein Wert<br />

von 50 empfohlen und über die meiste weitere Literatur verwendet wird. Man kann<br />

4 Protipp: Da die ηi,j ausschließlich durch Multiplikation verändert werden, ist 0 als Initialisierungswert<br />

eher suboptimal :-)


diesen Parameter niedriger setzen, um ausschließlich sehr vorsichtige Updateschritte<br />

zu erlauben. Kleine Updateschritte sollten in jedem Fall erlaubt sein, also setzen wir<br />

ηmin = 10 −6 .<br />

Bleiben die Parameter η ↑ und η ↓ . Fangen wir mit η ↓ an: Wenn dieser Wert zum Einsatz<br />

kommt, haben wir ein Minimum übersprungen, von dem wir nicht genau wissen, wo<br />

auf der übersprungenen Strecke es liegt. Analog zur Vorgehensweise der binären Suche,<br />

wo das Zielobjekt ebenfalls oft übersprungen wird, gehen wir davon aus, es läge in der<br />

Mitte der übersprungenen Strecke. Also müssen wir die Lernrate halbieren, weswegen<br />

sich ein η ↓ = 0.5 kanonischerweise anbietet. Wenn der Wert η ↑ zum Einsatz kommt,<br />

sollen Lernraten umsichtig vergrößert werden, hier können wir also nicht die binäre<br />

Suche generalisieren und einfach den Wert 2.0 verwenden, sonst besteht das Lernraten-<br />

Update nachher fast nur noch aus Richtungswechseln. Problemunabhängig hat sich<br />

ein Wert von η ↑ = 1.2 als erfolgsversprechend erwiesen, wobei leichte Änderungen die<br />

Konvergenzgeschwindigkeit nicht signifikant beeinflusst haben. So konnte auch dieser<br />

Wert einfach als Konstante gesetzt werden.<br />

Mit fortschreitender Rechengeschwindigkeit der Computer ist eine immer größere Verbreitung<br />

von sehr tiefen Netzwerken (Deep networks) , also Netzwerken mit sehr<br />

vielen Schichten, zu beobachten. Für solche <strong>Netze</strong> ist Rprop dem originalen Backpropagation<br />

unbedingt vorzuziehen, weil Backprop, wie schon angedeutet, auf Gewichten<br />

fern der Ausgabeschicht sehr langsam lernt. Bei Problemen mit kleineren Schichtenzahlen<br />

würde ich empfehlen, das verbreitete Backpropagation (sowohl mit offline- als<br />

auch mit online-Lernen) und das weniger verbreitete Rprop zunächst gleichwertig zu<br />

testen.<br />

SNIPE: Resilient Backpropagation wird in Snipe über die Methode<br />

trainResilientBackpropagation der Klasse NeuralNetwork unterstützt. Wahlweise kann<br />

man hier auch noch eine weitere Verbesserung zu Resilient Propagation zuschalten, die in<br />

dieser Arbeit jedoch nicht weiter behandelt wird. Für die verschiedenen Rprop-Parameter<br />

finden sich Getter und Setter.<br />

5.6 Backpropagation wurde auch außerhalb von Rprop<br />

vielfach erweitert und variiert<br />

Backpropagation ist vielfach erweitert worden – viele dieser Erweiterungen kann man<br />

einfach als optionale Features von Backpropagation implementieren, um größeren Testspielraum<br />

zu haben. Ich möchte im folgenden einige von ihnen kurz beschreiben.


5.6.1 Masseträgheit zum Lernprozeß hinzufügen<br />

Angenommen, wir fahren auf Skiern einen steilen Hang hinab – was hindert uns, am<br />

Rande des Hangs zum Plateau sofort stehenzubleiben? Genau – der Schwung. Der<br />

Momentum-Term [RHW86b] sorgt bei Backpropagation dafür, dass der Schrittweite<br />

eine Art Trägheitsmoment (Momentum) hinzugefügt wird (Abb. 5.13 auf der rechten<br />

Seite), indem jeder neuen Gewichtsänderung immer ein Anteil der vorherigen Änderung<br />

hinzuaddiert wird:<br />

(∆pwi,j)jetzt = ηop,iδp,j + α · (∆pwi,j)vorher<br />

Diese Schreibweise dient natürlich nur dem besseren Verständnis; in der Regel wird, wie<br />

bereits durch den Zeitbegriff definiert, der Zeitpunkt des aktuellen Durchlaufs durch<br />

(t) bezeichnet, der vorherige Durchlauf wird dann durch (t − 1) gekennzeichnet, was<br />

man sukzessive fortführt. Wir kommen also zur formalen Definition des Momentum-<br />

Terms:<br />

Definition 5.12 (Momentum-Term). Die Variation von Backpropagation durch den<br />

Momentum-Term ist wie folgt definiert:<br />

∆wi,j(t) = ηoiδj + α · ∆wi,j(t − 1) (5.46)<br />

Wir beschleunigen also auf Plateaus (verhindert Quasi-Stillstand auf Plateaus) und<br />

bremsen auf zerklüfteten Flächen (gegen Oszillationen). Weiterhin kann man den Effekt<br />

der Trägheit über den Vorfaktor α variieren, übliche Werte befinden sich zwischen<br />

0.6 und 0.9. Außerdem macht das Momentum den positiven Effekt möglich, dass unser<br />

Skifahrer in einem Minimum ein paar mal hin- und herpendelt, und schlussendlich in<br />

dem Minimum landet. Leider tritt trotz des schönen Aussehens im eindimensionalen<br />

der ansonsten seltene Fehler des Verlassens guter Minima durch den Momentum-Term<br />

häufiger auf – so dass auch hier wieder keine Patentlösung gegeben ist (wir gewöhnen<br />

uns ja langsam an diese Aussage).<br />

5.6.2 Flat spot elimination verhindert, dass sich Neurone verfangen<br />

Es ist zu beachten, dass sowohl beim Tangens Hyperbolicus sowie der Fermifunktion die<br />

Ableitung außerhalb unmittelbarer Nähe zu Θ fast 0 ist. Dieser Umstand führt dazu,<br />

dass sich Neurone nur schwer wieder aus den Grenzwerten der Aktivierung (flat spots)<br />

entfernen können , was die Lernzeit extrem verlängern kann. Diesem Problem kann<br />

durch Modifikation der Ableitung, z.B. Addition einer Konstanten (z.B. 0.1), begegnet<br />

werden, was als Flat spot elimination oder – umgangssprachlicher – Zuckern<br />

bezeichnet wird.


Abbildung 5.13: Wir möchten den Gradientenabstieg durchführen wie ein Skifahrer seine Abfahrt,<br />

der wohl kaum sofort an der Grenze zum Plateau anhalten wird.<br />

Eine interessante Beobachtung ist, dass man auch schon reinen Konstanten als Ableitungen<br />

Erfolge erzielt hat [Fah88]. Auch die schon in Abschnitt 3.2.6 auf Seite 46<br />

erwähnte schnelle Appoximation des Tangens Hyperbolicus von Anguita et al. benutzt<br />

in den äußeren Bereichen der ebenfalls approximierten Ableitung eine kleine Konstante.<br />

5.6.3 Die zweite Ableitung kann mit einbezogen werden<br />

Second Order Backpropagation nach David Parker [Par87] verwendet auch den<br />

zweiten Gradienten, also die zweite mehrdimensionale Ableitung der Fehlerfunktion,<br />

um genauere Schätzungen der korrekten ∆wi,j zu erhalten. Höhere Ableitungen verbessern<br />

die Schätzungen nur noch selten. So braucht man weniger Trainingszyklen,<br />

diese sind aber weitaus rechenaufwändiger.<br />

Bei Methoden höherer Ordnung im Allgemeinen werden weitere Ableitungen (also<br />

Hessesche Matrizen, da die Funktionen mehrdimensional sind) verwendet. Erwartungsgemäß<br />

reduzieren die Verfahren die Anzahl der Lernepochen, machen die einzelnen<br />

Epochen aber signifikant rechenaufwändiger – so dass am Ende die Lernzeit oft sogar<br />

länger ist als mit Backpropagation.


Das Lernverfahren Quickpropagation [Fah88] verwendet die zweite Ableitung der<br />

Fehlerfunktion und sieht die Fehlerfunktion lokal als eine Parabel an, deren Scheitelpunkt<br />

wir analytisch bestimmen und wohin wir direkt springen. Dieses Lernverfahren<br />

ist also ein Verfahren zweiter Ordnung. Es funktioniert natürlich nicht bei Fehleroberflächen,<br />

die nicht lokal durch eine Parabel approximierbar sind (ob das der Fall ist,<br />

kann man natürlich nicht immer direkt sagen).<br />

5.6.4 Weight Decay: Große Gewichte können bestraft werden<br />

Bei der Modifikation Weight Decay (zu Deutsch: Dämpfung der Gewichte) von Paul<br />

Werbos [Wer88] wird der Fehler um einen Term erweitert, der große Gewichte bestraft.<br />

Der Fehler unter Weight Decay<br />

ErrWD<br />

steigt also nicht nur mit dem eigentlichen Fehler, sondern auch mit dem Quadrat der<br />

Gewichte – was zur Folge hat, dass das Netz beim Lernen die Gewichte klein hält.<br />

ErrWD = Err + β · 1 <br />

(w)<br />

2<br />

w∈W<br />

2<br />

<br />

Bestrafung<br />

(5.47)<br />

Dies ist von der Natur inspiriert, in der synaptische Gewichte ebenfalls nicht unendlich<br />

stark werden können. Klein gehaltene Gewichte sorgen außerdem häufig dafür, dass<br />

die Fehlerfunktion weniger starke Schwankungen beinhaltet, was das Lernen einfacher<br />

und kontrollierter macht.<br />

Der Vorfaktor 1<br />

2 ist wieder aus einfacher Pragmatik heraus entstanden. Der Faktor β<br />

regelt die Stärke der Bestrafung: Werte von 0.001 bis 0.02 werden hier oft verwendet.<br />

5.6.5 Das Netz zurechtstutzen: Pruning und Optimal Brain Damage<br />

Wenn wir das Weight Decay lange genug durchgeführt haben und feststellen, dass<br />

bei einem Neuron im Eingabelayer alle Nachfolgegewichte Null oder fast Null sind,<br />

können wir das Neuron entfernen, haben ein Neuron und einige Gewichte verloren<br />

und reduzieren so die Chance, dass das Netz auswendig lernt. Dieser Vorgang wird als<br />

Pruning („Stutzen“) bezeichnet.<br />

Solch ein Verfahren, unnötige Gewichte und Neurone zu detektieren und wegzustreichen,<br />

nennt sich Optimal Brain Damage [lCDS90]. Es sei hier nur kurz beschrieben:


Der Fehler pro Outputneuron setzt sich hierbei aus zwei konkurrierenden Termen zusammen.<br />

Während der eine wie gewohnt die Differenz zwischen Output und Teaching<br />

Input berücksichtigt, versucht der andere, ein Gewicht gegen 0 zu „pressen“. Wird ein<br />

Gewicht nun stark benötigt, um den Fehler zu minimieren, gewinnt der erste Term<br />

– ist dies nicht der Fall, gewinnt der zweite. Neurone, die nur Nullgewichte besitzen,<br />

können zum Schluss wieder gestutzt werden.<br />

Es gibt noch viele weitere Variationen von Backprop bzw. ganze Bücher eigens hierüber<br />

– da mein Ziel aber ist, einen Überblick über <strong>Neuronale</strong> <strong>Netze</strong> zu bieten, möchte ich<br />

hier nur die obigen als Anstoß zum Weiterlesen nennen.<br />

Es ist bei manchen dieser Erweiterungen offensichtlich, dass sie nicht nur bei<br />

FeedForward-<strong>Netze</strong>n mit Backpropagation-Lernverfahren angewendet werden<br />

können.<br />

Wir haben nun Backpropagation und die FeedForward-Topologie kennen gelernt – nun<br />

fehlt uns noch Erfahrung, wie wir ein Netz aufbauen. Diese Erfahrung ist im Rahmen<br />

dieser Arbeit natürlich nicht vermittelbar, und um ein wenig davon zu erwerben, empfehle<br />

ich nun, ein paar der Beispielproblemstellungen aus Abschnitt 4.6 anzugehen.<br />

5.7 Wie fängt man an? Initialkonfiguration eines<br />

Multilayerperzeptrons<br />

Nachdem wir jetzt das Lernverfahren Backpropagation of Error behandelt haben und<br />

wissen, wie wir ein einmal vorhandenes Netz trainieren, ist es noch sinnvoll zu betrachten,<br />

wie wir denn überhaupt an so ein Netz gelangen können.<br />

5.7.1 Anzahl der Schichten: Zwei oder drei sind oft genug, mehr werden<br />

aber auch benutzt<br />

Fangen wir mit dem trivialen Umstand an, dass ein Netz eine Schicht Inputneurone<br />

und eine Schicht Outputneurone haben sollte, was uns zu mindestens zwei Schichten<br />

führt.<br />

Weiterhin benötigen wir, wie wir bereits während unserer Untersuchung der linearen<br />

Separierbarkeit erfahren haben, mindestens eine versteckte Schicht Neurone, falls unser<br />

Problem nicht linear separierbar ist (wie wir gesehen haben, ist das wahrscheinlich).


Es kann, wie schon gesagt, mathematisch bewiesen werden, dass dieses MLP mit einer<br />

versteckten Neuronenschicht bereits beliebige Funktionen beliebig genau approximieren<br />

kann 5 – doch müssen wir nicht nur die Repräsentierbarkeit eines Problems durch<br />

ein Perceptron betrachten, sondern auch die Lernbarkeit. Repräsentierbarkeit bedeutet,<br />

dass ein Perceptron eine Abbildung grundsätzlich realisieren kann – Lernbarkeit<br />

bezeichnet aber, dass wir sie ihm auch beibringen können.<br />

Insofern zeigt uns die Erfahrung, dass zwei versteckte Neuronenschichten bzw. drei<br />

trainierbare Gewichtsschichten für die Realisierung eines Problems sehr nützlich sein<br />

können, da viele Probleme zwar durchaus von einer versteckten Schicht repräsentiert<br />

werden können, jedoch leider nur schwer lernbar sind.<br />

Jede weitere Schicht erzeugt auch weitere Nebenminima der Fehlerfunktion, was bei<br />

der Wahl der Schichtenzahl beachtet werden sollte. Ein erfolgversprechender Weg ist<br />

also zusammenfassend, es erst mit einer versteckten Schicht zu probieren. Wenn das<br />

nicht klappt, versucht man es mit zweien, und erst wenn das nicht funktioniert auf mehr<br />

Schichten auszuweichen. Dennoch werden mit zunehmender Rechenkraft der Computer<br />

für manche Probleme bereits Deep networks mit sehr vielen Schichten erfolgreich<br />

angewandt.<br />

5.7.2 Anzahl der Neurone sollte getestet werden<br />

Die Zahl der Neurone (abseits von Eingabe- und Ausgabeschicht, die Anzahl der<br />

Eingabe- und Ausgabeneurone ist ja durch die Problemstellung bereits fest definiert)<br />

entspricht grundsätzlich der Zahl der freien Parameter des zu repräsentierenden Problems.<br />

Da wir ja schon die Netzkapazität in Bezug auf Auswendiglernen oder eine zu ungenaue<br />

Problemrepräsentation erforscht haben, ist klar, dass unser Ziel so wenig wie möglich,<br />

aber so viel wie nötig freie Parameter sind.<br />

Wie wir aber auch wissen, gibt es keine Patentformel, wie viele Neurone zu verwenden<br />

sind – die sinnvollste Herangehensweise besteht also darin, zunächst mit wenigen Neuronen<br />

zu trainieren und so lange neue <strong>Netze</strong> mit mehr Neuronen zu trainieren, wie das<br />

Ergebnis noch signifikant verbessert und vor allem die Generalisierungsleistung nicht<br />

beeinträchtigt wird (Bottom-Up-Ansatz).<br />

5 Achtung: Wir haben keine Aussage über die Neuronenanzahl in der versteckten Schicht gemacht, nur<br />

über die theoretische Möglichkeit.


tanh(x)<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

−0.2<br />

−0.4<br />

−0.6<br />

−0.8<br />

−1<br />

Tangens Hyperbolicus<br />

−4 −2 0 2 4<br />

x<br />

f(x)<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

Fermi−Funktion mit Temperaturparameter<br />

−4 −2 0 2 4<br />

Abbildung 5.14: Zur Erinnerung noch einmal die Darstellung des Tangens Hyperbolicus (links)<br />

und der Fermifunktion (rechts). Die Fermifunktion wurde um einen Temperaturparameter erweitert.<br />

Die ursprüngliche Fermifunktion ist hierbei dunkel herausgestellt, die Temperaturparameter bei den<br />

modifizierten Fermifunktionen betragen von außen nach innen (aufsteigend geordnet nach Anstieg)<br />

1<br />

2<br />

, 1<br />

5<br />

, 1<br />

10<br />

und 1<br />

25 .<br />

5.7.3 Wahl der Aktivierungsfunktion<br />

Ein weiterer sehr wichtiger Parameter für die Informationsverarbeitungsweise eines<br />

<strong>Neuronale</strong>n <strong>Netze</strong>s ist die Wahl der Aktivierungsfunktion. Für die Inputneuronen<br />

steht die Aktivierungsfunktion ja fest, da sie nicht informationsverarbeitend sind.<br />

Eine Frage, die man sich zunächst stellen kann, ist, ob man überhaupt in der versteckten<br />

und der Ausgabeschicht die gleiche Aktivierungsfunktion verwenden möchte – niemand<br />

hindert uns daran, hier zu variieren. In aller Regel ist die Aktivierungsfunktion<br />

aber für alle versteckten Neurone untereinander gleich, ebenso für die Outputneurone.<br />

Für Aufgaben der Funktionsapproximation hat es sich als sinnvoll erwiesen, als<br />

Aktivierungsfunktion der versteckten Neurone den Tangens Hyperbolicus (linker Teil<br />

der Abb. 5.14) zu verwenden, während eine lineare Aktivierungsfunktion in der Ausgabe<br />

verwendet wird – letzteres ist unbedingt erforderlich, damit wir kein begrenztes<br />

Ausgabeintervall erzeugen. Da die Outputschicht im Gegensatz zur ebenfalls linearen<br />

Inputschicht Schwellenwerte besitzt, ist sie trotzdem informationsverarbeitend. Lineare<br />

Aktivierungsfunktionen in der Ausgabe können aber auch für riesige Lernschritte<br />

sorgen, und dafür, dass man gute Minima in der Fehleroberfläche überspringt. Dies<br />

kann verhindert werden, indem man die Lernrate an der Ausgabeschicht auf sehr kleine<br />

Werte setzt.<br />

x


Für Aufgaben der Mustererkennung 6 ist ein unbegrenztes Ausgabeintervall nicht<br />

unbedingt erforderlich. Verwendet man überall den Tangens Hyperbolicus, so ist das<br />

Ausgabeintervall etwas größer. Die Fermifunktion (rechter Teil der Abb. 5.14 auf der<br />

vorangehenden Seite) hat im Gegensatz zum Tangens Hyperbolicus weit vor dem<br />

Schwellenwert (wo ihr Ergebnis nahe 0 ist) kaum Möglichkeiten etwas zu lernen. Hier<br />

ist allerdings wieder viel Ermessensspielraum bei der Wahl der Aktivierungsfunktion<br />

gegeben. Sigmoide Funktionen haben allgemein aber den Nachteil, dass sie weit weg<br />

von ihrem Schwellenwert kaum noch etwas lernen, wenn man das Netz nicht etwas<br />

modifiziert.<br />

5.7.4 Gewichte sollten klein und zufällig initialisiert werden<br />

Die Initialisierung der Gewichte ist nicht so trivial wie man vielleicht denken mag:<br />

Initialisiert man sie einfach mit 0, wird gar keine Gewichtsänderung stattfinden. Initialisiert<br />

man sie alle mit demselben Wert, werden sie im Training immer gleichermaßen<br />

geändert. Die einfache Lösung dieses Problems nennt man Symmetry Breaking. So<br />

wird die Initialisierung der Gewichte mit kleinen, zufälligen Werten bezeichnet. Als<br />

Bereich für die Zufallswerte könnte man das Intervall [−0.5; 0.5] verwenden, jedoch<br />

ohne die Null oder Werte, die sehr nah bei Null liegen. Diese Zufallsinitialisierung<br />

hat einen schönen Nebeneffekt, nämlich dass der Durchschnitt der <strong>Netze</strong>ingaben wahrscheinlich<br />

nahe 0 ist. Dies ist nützlich, denn bei den gängigen Aktivierungsfunktionen<br />

liegt die 0 im Bereich der stärksten Ableitung der Aktivierungsfunktion, was kräftige<br />

Lernimpulse direkt zu Beginn des Lernens ermöglicht.<br />

SNIPE: In Snipe werden die Gewichte zufällig initialisiert, falls eine Synapseninitialisierung<br />

gewünscht ist. Den maximalen Absolutbetrag eines Gewichts kann man in einem<br />

NeuralNetworkDescriptor mit der Methode setSynapseInitialRange festlegen.<br />

5.8 Das 8-3-8-Kodierungsproblem und verwandte Probleme<br />

Das 8-3-8-Kodierungsproblem ist ein Klassiker unter den Testtrainingsproblemen für<br />

Multilayerperceptrons. Wir besitzen in unserem MLP eine Eingabeschicht von acht<br />

Neuronen i1, i2, . . . , i8, eine Ausgabeschicht von acht Neuronen Ω1, Ω2, . . . , Ω8, und<br />

eine versteckte Schicht von drei Neuronen. Dieses Netz repräsentiert also eine Funktion<br />

B 8 → B 8 . Die Trainingsaufgabe ist nun, dass, wenn in ein Neuron ij der Wert 1<br />

6 Mustererkennung wird in der Regel als Spezialfall der Funktionsapproximation mit wenigen diskreten<br />

Ausgabemöglichkeiten gesehen.


Abbildung 5.15: Skizze der Funktionsweise der Kodierung eines 8-2-8 <strong>Netze</strong>s. Die Punkte repräsentieren<br />

die Vektoren der Aktivierung der beiden inneren Neuronen. Wie Sie sehen, lassen sich<br />

durchaus Aktivierungsformationen finden, so dass jeder der Punkte durch eine Gerade vom Rest der<br />

Punkte separierbar ist. Diese Separierung ist im Bild für einen der Punkte exemplarisch durchgeführt.<br />

eingegeben wird, genau im Neuron Ωj der Wert 1 ausgegeben wird (es soll jeweils nur<br />

ein Neuron aktiviert werden, dies führt uns zu 8 Trainingsbeispielen).<br />

Sie werden bei Analyse des trainierten <strong>Netze</strong>s sehen, dass das Netz mit den 3 versteckten<br />

Neuronen eine Art Binärkodierung repräsentiert und die obige Abbildung so<br />

möglich ist (mutmaßliche Trainingszeit hierfür sind ≈ 10 4 Epochen). Wir haben mit<br />

unserem Netz also eine Maschine gebaut, die Daten kodiert und diese anschließend<br />

wieder dekodiert.<br />

Analog hierzu kann man ein 1024-10-1024 Kodierungsproblem trainieren –<br />

doch geht das auch effizienter? Kann es beispielsweise ein 1024-9-1024 oder ein<br />

8-2-8-Kodierungsnetz geben?<br />

Ja, selbst das geht, da das Netz nicht auf binäre Kodierungen angewiesen ist: Ein 8-<br />

2-8-Netz funktioniert also für unsere Problemstellung. Die Kodierung, die dieses Netz<br />

realisiert, ist allerdings schwieriger zu durchschauen (Abb. 5.15) und es muss auch<br />

wesentlich länger trainiert werden.


Ein 8-1-8-Netz funktioniert nicht mehr, da die Möglichkeit vorhanden sein muss, dass<br />

die Ausgabe eines Neurons von einem anderen ausgeglichen wird, und bei nur einem<br />

versteckten Neuron natürlich kein Ausgleichsneuron vorhanden ist.<br />

SNIPE: Die statische Methode getEncoderSampleLesson der Klasse TrainingSampleLesson<br />

erlaubt es, einfache Trainingsamples für derartige Encoderprobleme beliebiger Dimensionalität<br />

zu generieren.<br />

Übungsaufgaben<br />

Aufgabe 8. Ein 2-15-15-2-MLP soll durch ein MLP mit nur einer einzigen verdeckten<br />

Schicht, aber gleich vielen Gewichten ersetzt werden. Berechnen Sie, wieviele Neurone<br />

dieses Netz in seiner verdeckten Schicht hat. Hinweis: Vergessen Sie das BIAS-Neuron<br />

nicht.<br />

Aufgabe 9. In Abb. 5.4 auf Seite 94 sehen Sie jeweils ein kleines Netz für die Booleschen<br />

Funktionen AND und OR. Schreiben Sie Tabellen, die sämtliche Berechnungsgrößen<br />

in den <strong>Neuronale</strong>n <strong>Netze</strong>n beinhalten (z.B. <strong>Netze</strong>ingabe, Aktivierungen, etc).<br />

Exerzieren Sie die vier möglichen Eingaben der <strong>Netze</strong> durch und notieren Sie die Werte<br />

dieser Größen für die jeweiligen Eingaben. Verfahren Sie in gleicher Weise für XOR-Netz<br />

(Abb. 5.9 auf Seite 106).<br />

Aufgabe 10.<br />

1. Nennen Sie alle Booleschen Funktionen B 3 → B 1 , welche linear separierbar sind,<br />

bzw. charakterisieren Sie sie genau.<br />

2. Nennen Sie diejenigen, die es nicht sind, bzw. charakterisieren Sie sie genau.<br />

Aufgabe 11. Ein einfaches 2-1-Netz soll mittels Backpropagation of Error und η = 0.1<br />

mit einem einzigen Muster trainiert werden. Prüfen Sie, ob der Fehler<br />

Err = Errp = 1<br />

(t − y)2<br />

2<br />

konvergiert und wenn ja, zu welchem Wert. Wie sieht die Fehlerkurve aus? Das Muster<br />

(p, t) sei definiert zu p = (p1, p2) = (0.3, 0.7) und tΩ = 0.4. Initialisieren Sie die<br />

Gewichte zufällig im Intervall [1; −1].<br />

Aufgabe 12. Ein einstufiges Perceptron mit zwei Inputneuronen, Biasneuron und<br />

binärer Schwellenwertfunktion als Aktivierungsfunktion trennt den zweidimensionalen<br />

Raum durch eine Gerade g in zwei Teile. Berechnen Sie für ein solches Perceptron


analytisch einen Satz Gewichtswerte, so dass die folgende Menge P der 6 Muster der<br />

Form (p1, p2, tΩ) mit ε ≪ 1 richtig klassifiziert wird.<br />

P ={(0, 0, −1);<br />

(2, −1, 1);<br />

(7 + ε, 3 − ε, 1);<br />

(7 − ε, 3 + ε, −1);<br />

(0, −2 − ε, 1);<br />

(0 − ε, −2, −1)}<br />

Aufgabe 13. Berechnen Sie einmal und nachvollziehbar den Vektor ∆W sämtlicher<br />

Gewichtsänderungen mit dem Verfahren Backpropagation of Error mit η = 1. Gegeben<br />

Sei ein 2-2-1-MLP mit Biasneuron, das Muster sei definiert zu<br />

p = (p1, p2, tΩ) = (2, 0, 0.1).<br />

Die Initialwerte der Gewichte sollen bei allen Gewichten, welche Ω als Ziel haben, 1<br />

betragen – sämtliche anderen Gewichte sollten den Initialwert 0.5 besitzen. Was fällt<br />

an den Änderungen auf?


Kapitel 6<br />

Radiale Basisfunktionen<br />

RBF-<strong>Netze</strong> nähern Funktionen an, indem sie Gaußglocken strecken, stauchen<br />

und anschließend räumlich versetzt aufsummieren. Beschreibung ihrer<br />

Funktion und ihres Lernvorganges, Gegenüberstellung mit<br />

Multilayerperceptrons.<br />

Radiale Basisfunktionennetze (RBF-<strong>Netze</strong>) nach Poggio und Girosi [PG89] sind ein<br />

Paradigma <strong>Neuronale</strong>r <strong>Netze</strong>, welches deutlich später entstand als das der Perceptrons.<br />

Sie sind wie Perceptrons schichtartig aufgebaute <strong>Netze</strong>, allerdings in diesem Fall mit<br />

exakt drei Schichten, also nur einer einzigen Schicht versteckter Neurone.<br />

Wie Perceptrons besitzen die <strong>Netze</strong> eine reine FeedForward-Struktur und Vollverknüpfung<br />

zwischen den Schichten, und auch hier trägt die Inputschicht nicht zur Informationsverarbeitung<br />

bei. Auch sind die RBF-<strong>Netze</strong> wie MLPs universelle Funktionsapproximatoren.<br />

Bei allen Gemeinsamkeiten: Was unterscheidet die RBF-<strong>Netze</strong> nun von den Perceptrons?<br />

Es ist die Informationsverarbeitung selbst bzw. die Berechnungsvorschriften<br />

innerhalb der Neurone, welche nicht in der Inputschicht liegen. Wir werden also gleich<br />

eine bis jetzt völlig unbekannte Art Neurone neu definieren.<br />

6.1 Bestandteile und Aufbau eines RBF-<strong>Netze</strong>s<br />

Wir wollen nun zunächst einige Begriffe rund um die RBF-<strong>Netze</strong> erst umgangssprachlich<br />

betrachten und danach definieren.<br />

133


Ausgabeneurone in einem RBF-Netz enthalten nur die Identität als Aktivierungsfunktion<br />

und eine gewichtete Summe als Propagierungsfunktion. Sie machen also<br />

nichts weiter, als alles, was in sie eingegeben wird, aufzusummieren und die Summe<br />

auszugeben.<br />

Versteckte Neurone heißen auch RBF-Neurone (so wie die Schicht, in der sie sich<br />

befinden, auch RBF-Schicht genannt wird). Jedes versteckte Neuron erhält als<br />

Propagierungsfunktion eine Norm, welche den Abstand zwischen der Eingabe in<br />

das Netz und dem sogenannten Ort des Neurons (Zentrum) errechnet. Diese wird<br />

in eine radiale Aktivierungsfunktion eingegeben, die die Aktivierung des Neurons<br />

berechnet und ausgibt.<br />

Definition 6.1 (RBF-Eingabeneuron). Die Definition und Darstellung ist identisch<br />

mit der Eingabeneuron-Definition 5.1 auf Seite 90.<br />

Definition 6.2 (Zentrum eines RBF-Neurons). Das Zentrum ch eines RBF-Neurons<br />

h ist der Punkt im Eingaberaum, in dem das RBF-Neuron angesiedelt ist. Je näher<br />

der Eingabevektor am Zentrumsvektor eines RBF-Neurons liegt, umso höher ist in der<br />

Regel seine Aktivierung.<br />

Definition 6.3 (RBF-Neuron). Die sogenannten RBF-Neurone h besitzen eine<br />

Propagierungsfunktion fprop, welche den Abstand zwischen dem Zentrum ch eines<br />

Neurons und dem Eingabevektor y feststellt. Dieser Abstand repräsentiert dann die<br />

<strong>Netze</strong>ingabe. Die <strong>Netze</strong>ingabe wird dann durch eine Radialbasisfunktion fact geschickt,<br />

welche die Aktivierung bzw. Ausgabe des Neurons ausgibt. RBF-Neurone werden durch<br />

das Symbol ||c,x||<br />

Gauß<br />

dargestellt.<br />

Definition 6.4 (RBF-Ausgabeneuron). RBF-Ausgabeneurone Ω besitzen die gewichtete<br />

Summe als Propagierungsfunktion fprop, und die Identität als Aktivierungs-<br />

funktion fact. Wir stellen sie durch das Symbol Σ<br />

dar.<br />

Definition 6.5 (RBF-Netz). Ein RBF-Netz besitzt exakt drei Schichten in der folgenden<br />

Reihenfolge: Die Eingabeschicht aus Eingabeneuronen, die versteckte Schicht<br />

(auch RBF-Schicht genannt) aus RBF-Neuronen und die Ausgabeschicht aus RBF-<br />

Ausgabeneuronen. Jede Schicht ist mit der nächsten vollverknüpft, ShortCuts existieren<br />

nicht (Abb. 6.1 auf der rechten Seite) – es handelt sich also um eine reine<br />

FeedForward-Topologie. Die Verbindungen zwischen Eingabeschicht und RBF-Schicht<br />

sind ungewichtet, leiten die Eingabe also nur weiter. Die Verbindungen zwischen RBFund<br />

Ausgabeschicht sind gewichtet. Die ursprüngliche Definition eines RBF-<strong>Netze</strong>s bezog<br />

sich auf nur ein Ausgabeneuron, analog zu den Perceptrons ist aber klar, dass sich


②②②②②②②②②②<br />

❊❘<br />

❱<br />

❊<br />

❘❱<br />

<br />

❘❱<br />

❊ ❘❱<br />

<br />

❊<br />

❘❱<br />

❘<br />

❱<br />

❊<br />

❘<br />

❱<br />

❊<br />

❱<br />

❘<br />

❱<br />

❊ ❘<br />

❱<br />

❊<br />

❱<br />

❊<br />

❘<br />

❱<br />

❊<br />

❘<br />

❱ ❱<br />

❊<br />

❘<br />

❱<br />

❊<br />

❘<br />

❱ ❱<br />

❊<br />

<br />

❊ ❘<br />

❱<br />

❊<br />

❘<br />

❱ ❱<br />

❊<br />

❘<br />

❱<br />

<br />

❘<br />

❱ ❊<br />

❱<br />

❘ ❱<br />

❘<br />

❱<br />

❊<br />

❱<br />

❘ ❱ ❊<br />

②<br />

<br />

<br />

❱ ❱ ❱<br />

❊<br />

❱ ❱<br />

<br />

<br />

②②②②②②②②②<br />

❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤<br />

❧❧❧❧❧❧❧❧❧❧❧❧❧❧❧❧❧❧❧❧<br />

||c,x||<br />

Gauß ❈◗❱<br />

||c,x|| ||c,x||<br />

❈<br />

◗❱<br />

◗❱<br />

❈<br />

◗❱<br />

◗<br />

❱ Gauß ❱<br />

❈ ◗❱<br />

❈<br />

◗<br />

❱<br />

❈◗<br />

◗<br />

❱ ❱ ❈<br />

◗◗<br />

Gauß<br />

❈ ◗<br />

❱<br />

◗<br />

❱ ❱<br />

❈<br />

◗◗<br />

❈ ◗ ❱ ❈ ◗<br />

❈<br />

◗<br />

❱ ❈<br />

◗<br />

◗<br />

❱<br />

◗<br />

❈❱<br />

◗<br />

❈ ◗<br />

❱ ◗<br />

❈<br />

◗<br />

❈ ❱ ❱<br />

◗<br />

◗ ❱<br />

<br />

<br />

❈<br />

◗<br />

◗<br />

❱ ❱<br />

◗<br />

◗<br />

❈ ❱<br />

◗<br />

◗<br />

❱<br />

◗<br />

❈ ❱<br />

◗<br />

❱<br />

◗<br />

④<br />

<br />

<br />

❱ ◗<br />

❱ ◗<br />

❱ ◗<br />

❱ ◗<br />

④④④④④④④④④<br />

||c,x||<br />

❈<br />

Gauß<br />

❈❈❈<br />

❈❈❈<br />

<br />

❈❈❈<br />

♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠<br />

④<br />

<br />

④④④④④④④④④<br />

||c,x||<br />

Gauß<br />

<br />

❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤<br />

♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠<br />

④④④④④④④④④④<br />

Σ Σ Σ<br />

<br />

<br />

<br />

<br />

<br />

<br />

i1, i2, . . . , i |I|<br />

h1, h2, . . . , h |H|<br />

Ω1, Ω2, . . . , Ω |O|<br />

Abbildung 6.1: Ein beispielhaftes RBF-Netz mit zwei Eingabeneuronen, fünf versteckten Neuronen<br />

und drei Ausgabeneuronen. Die Verbindungen zu den versteckten Neuronen besitzen keine Gewichte,<br />

sie leiten die Eingabe nur weiter. Rechts der Skizze ist die Benennung der Neurone zu finden, welche<br />

sich analog zu der bekannten Benennung der Neurone im MLP verhält: Inputneurone heißen i,<br />

versteckte Neurone h, Ausgabeneurone Ω. Die zugehörigen Mengen bezeichnen wir mit I, H und<br />

O.<br />

dies verallgemeinern lässt. Ein Biasneuron kennt das RBF-Netz nicht. Wir wollen die<br />

Menge der Eingabeneurone mit I, die Menge der versteckten Neurone mit H und die<br />

Menge der Ausgabeneurone mit O bezeichnen.<br />

Die inneren Neurone heißen daher Radiale Basisneurone, weil aus deren Definition<br />

direkt folgt, dass alle Eingabevektoren, welche den gleichen Abstand vom Zentrum<br />

eines Neurons haben, auch den gleichen Ausgabewert produzieren (Abb. 6.2 auf der<br />

folgenden Seite).<br />

6.2 Informationsverarbeitung eines RBF-<strong>Netze</strong>s<br />

Die Frage ist nun, was durch dieses Netz realisiert wird und wo der Sinn liegt. Gehen<br />

wir doch einmal das RBF-Netz von oben nach unten durch: Der Input wird durch die


Abbildung 6.2: Sei ch das Zentrum eines RBF-Neurons h. Dann liefert die Aktivierungsfunktion<br />

facth für alle Eingaben, welche auf dem Kreis liegen, den gleichen Wert.<br />

ungewichteten Verbindungen in ein RBF-Neuron eingebracht. Dieses schickt den Inputvektor<br />

durch eine Norm, so dass ein Skalar herauskommt. Dieser Skalar (der aufgrund<br />

der Norm übrigens nur positiv sein kann) wird durch eine Radiale Basisfunktion, also<br />

zum Beispiel eine Gaußglocke (Abb. 6.3 auf der rechten Seite) verarbeitet.<br />

Die Ausgabewerte der verschiedenen Neurone der RBF-Schicht bzw- der verschiedenen<br />

Gaußglocken werden nun in der dritten Schicht aufsummiert: Faktisch werden, auf den<br />

ganzen Eingaberaum bezogen, also Gaußglocken aufsummiert.<br />

Stellen wir uns vor, wir haben ein zweites, drittes und viertes RBF-Neuron und daher<br />

insgesamt vier unterschiedlich lokalisierte Zentren. Jedes dieser Neurone misst nun<br />

einen anderen Abstand von der Eingabe zum eigenen Zentrum und liefert de facto<br />

selbst bei gleicher Gaußglocke andere Werte. Da diese zum Schluß in der Ausgabeschicht<br />

nur aufkumuliert werden, ist leicht einsehbar, dass man durch Zerren, Stauchen<br />

und Verschieben von Gaußglocken und durch das anschließende Aufkumulieren jede beliebige<br />

Oberfläche modellieren kann. Die Entwicklungsterme für die Superposition der<br />

Gaußglocken liegen hierbei in den Gewichten der Verbindungen von RBF-Schicht zu<br />

Outputschicht.


h(r)<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

Gauss−Glocke in 1D<br />

0<br />

−2 −1.5 −1 −0.5 0 0.5 1 1.5 2<br />

r<br />

−2<br />

−1<br />

0<br />

Gauss−Glocke in 2D<br />

Abbildung 6.3: Zwei einzelne Gaußglocken im Ein- und Zweidimensionalen. In beiden Fällen gilt<br />

σ = 0.4 und in beiden Fällen ist das Zentrum der Gaußglocke im Nullpunkt. Der Abstand r zum<br />

Zentrum (0, 0) berechnet sich schlicht aus dem Satz des Pythagoras: r = x 2 + y 2 .<br />

Die Netzarchitektur bietet weiterhin die Möglichkeit, Höhe und Breite der Gaußglocken<br />

frei zu bestimmen oder zu trainieren – was dieses Netzparadigma noch vielfältiger<br />

macht. Methoden und Vorgehensweisen hierzu werden wir noch kennenlernen.<br />

6.2.1 RBF-Neurone verarbeiten Information durch Normen und<br />

Radialbasisfunktionen<br />

Nehmen wir zunächst ein einfaches 1-4-1-RBF-Netz als Beispiel. Es ist hier klar, dass<br />

wir eine eindimensionale Ausgabe erhalten werden, die wir als Funktion darstellen können<br />

(Abb. 6.4 auf der folgenden Seite). Das Netz besitzt weiterhin Zentren c1, c2, . . . , c4<br />

der vier inneren Neurone h1, h2, . . . , h4, und somit Gaußglocken, die zum Schluss im<br />

Ausgabeneuron Ω aufsummiert werden. Das Netz besitzt auch vier Werte σ1, σ2, . . . , σ4,<br />

welche die Breite der Gaußglocken beeinflussen. Die Höhe der Gaußglocke wird hingegen<br />

von den nachfolgenden Gewichten beeinflusst, da damit die einzelnen Ausgabewerte<br />

der Glocken multipliziert werden.<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

h(r)<br />

x<br />

1<br />

−2<br />

−1<br />

0<br />

y<br />

1<br />

2


y<br />

1.4<br />

1.2<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

−0.2<br />

−0.4<br />

−0.6<br />

−2 0 2 4 6 8<br />

Abbildung 6.4: Vier verschiedene durch RBF-Neurone gebildete Gaußglocken im Eindimensionalen<br />

werden von einem Outputneuron des RBF-<strong>Netze</strong>s aufsummiert. Die Gaußglocken haben verschiedene<br />

Höhen, Breiten und Orte. Die Zentren c1, c2, . . . , c4 lagen bei 0, 1, 3, 4, die Breiten σ1, σ2, . . . , σ4<br />

bei 0.4, 1, 0.2, 0.8. Ein Beispiel für den zweidimensionalen Fall findet sich in Abb. 6.5 auf der rechten<br />

Seite.<br />

Da wir eine Norm zum Berechnen des Abstands des Inputvektors zum Neuronenzentrum<br />

eines Neurons h verwenden, haben wir verschiedene Wahlmöglichkeiten: Oft wird<br />

der Euklidische Abstand zur Abstandsberechnung gewählt:<br />

x<br />

rh = ||x − ch|| (6.1)<br />

<br />

<br />

= (xi − ch,i) 2<br />

(6.2)<br />

i∈I<br />

Wir erinnern uns: Mit x haben wir den Eingabevektor benannt. Hierbei durchläuft der<br />

Index i die Eingabeneurone und damit die Komponenten des Eingabevektors und des<br />

Neuronenzentrums. Wie wir sehen, bildet der Euklidische Abstand die Quadrate der<br />

Differenzen aller Vektorkomponenten, summiert sie auf und zieht aus der Summe die<br />

Wurzel, was im zweidimensionalen dem Satz des Pythagoras gleich kommt. Aus der<br />

Definition einer Norm folgt direkt, dass der Abstand nur positiv sein kann, weswegen<br />

wir genaugenommen den positiven Teil der Aktivierungsfunktion verwenden. Übrigens<br />

sind auch andere Aktivierungsfunktionen als die Gaußglocke möglich, in aller Regel<br />

werden Funktionen gewählt, die im Intervall [0; ∞] monoton abfallen.


−0.5<br />

−1<br />

0<br />

0.5<br />

1<br />

1.5<br />

2<br />

−2<br />

−0.5<br />

−1<br />

0<br />

0.5<br />

1<br />

1.5<br />

2<br />

−2<br />

h(r)<br />

h(r)<br />

−1<br />

x<br />

−1<br />

x<br />

0<br />

0<br />

2<br />

1.75<br />

1.5<br />

1.25<br />

1<br />

0.75<br />

0.5<br />

0.25<br />

0<br />

−0.25<br />

−0.5<br />

−0.75<br />

−1<br />

1<br />

1<br />

Gaussglocke 1<br />

−2<br />

−1<br />

Gaussglocke 3<br />

−2<br />

−1<br />

0<br />

0<br />

1<br />

y<br />

1<br />

y<br />

2<br />

2<br />

−0.5<br />

−1<br />

0<br />

0.5<br />

1<br />

1.5<br />

2<br />

−2<br />

−0.5<br />

−1<br />

0<br />

0.5<br />

1<br />

1.5<br />

2<br />

−2<br />

h(r)<br />

h(r)<br />

−1<br />

x<br />

−1<br />

x<br />

0<br />

0<br />

1<br />

1<br />

Gaussglocke 2<br />

−2<br />

−1<br />

Gaussglocke 4<br />

||c,x|| ||c,x||<br />

||c,x||<br />

Gauß ◗◗<br />

Gauß ◗◗◗<br />

❆<br />

Gauß<br />

◗◗<br />

❆<br />

◗ ❆<br />

◗◗<br />

❆<br />

◗ ❆<br />

◗◗<br />

❆<br />

◗◗<br />

❆<br />

◗ ❆<br />

◗◗<br />

❆<br />

◗ ❆<br />

◗<br />

<br />

⑥⑥⑥⑥⑥⑥⑥⑥⑥⑥<br />

||c,x||<br />

Gauß<br />

♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠♠<br />

Σ<br />

<br />

−2<br />

−1.5<br />

−1<br />

−0.5<br />

x<br />

0<br />

0.5<br />

1<br />

<br />

Aufsummierung der 4 Gaussglocken<br />

1.5<br />

2 −2<br />

Abbildung 6.5: Vier verschiedene durch RBF-Neurone gebildete Gaußglocken im Zweidimensionalen<br />

werden von einem Outputneuron des RBF-<strong>Netze</strong>s aufsummiert. Für den Abstand gilt wieder<br />

r = x 2 + y 2 . Die Höhen w, Breiten σ und Zentren c = (x, y) sind: w1 = 1, σ1 = 0.4, c1 =<br />

(0.5, 0.5), w2 = −1, σ2 = 0.6, c2 = (1.15, −1.15), w3 = 1.5, σ3 = 0.2, c3 = (−0.5, −1),<br />

w4 = 0.8, σ4 = 1.4, c4 = (−2, 0).<br />

−1.5<br />

−1<br />

−0.5<br />

0<br />

0.5<br />

−2<br />

y<br />

1<br />

−1<br />

1.5<br />

0<br />

0<br />

2<br />

1<br />

y<br />

1<br />

y<br />

2<br />

2


Nachdem wir nun den Abstand rh des Inputvektors x zum Zentrum ch des RBF-<br />

Neurons h kennen, muss dieser Abstand durch die Aktivierungsfunktion fact geschickt<br />

werden – wir verwenden hier, wie schon gesagt, eine Gaußglocke:<br />

<br />

fact(rh) = e<br />

−r 2 h<br />

Es ist klar, dass sowohl Zentrum ch als auch die Breite σh als Bestandteil der Aktivierungsfunktion<br />

fact gesehen werden können und nach dieser Ansicht die Aktivierungsfunktionen<br />

nicht alle mit fact bezeichnet werden dürften. Eine Lösung wäre, die<br />

Aktivierungsfunktionen nach dem Muster fact1, fact2, . . . , fact|H| mit H als Menge der<br />

versteckten Neurone durchzunummerieren – was die Erklärungen aber unübersichtlich<br />

macht. Insofern verwende ich einfach für alle Aktivierungsfunktionen die Bezeichnung<br />

fact und betrachte σ und c als Größen, die zwar für einzelne Neurone definiert, aber<br />

nicht direkt in der Aktivierungsfunktion enthalten sind.<br />

Dem Leser fällt bestimmt auf, dass die Gaußglocke bei ihren vielen Verwendungen<br />

in anderer Literatur oft mit einem multiplikativen Faktor versehen wird – aufgrund<br />

der sowieso vorhandenen Multiplikation durch die nachfolgenden Gewichte und der<br />

Aufwiegbarkeit von Konstantenmultiplikationen brauchen wir diesen Faktor jedoch<br />

hier nicht (zumal das Integral der Gaußglocke für unsere Zwecke nicht immer 1 sein<br />

darf) und lassen ihn daher einfach weg.<br />

6.2.2 Einige analytische Gedanken im Vorfeld zum Training<br />

Die Ausgabe yΩ eines RBF-Ausgabeneurons Ω ergibt sich also, indem wir die Funktionen<br />

eines RBF-Neurons zusammensetzen zu<br />

yΩ = <br />

h∈H<br />

2σ 2 h<br />

(6.3)<br />

wh,Ω · fact (||x − ch||) . (6.4)<br />

Nehmen wir an, wir besitzen wie beim Multilayerperceptron eine Menge P , die |P | viele<br />

Trainingsbeispiele (p, t) enthält. Dann erhalten wir |P | viele Funktionen der Form<br />

yΩ = <br />

h∈H<br />

nämlich für jedes Trainingsbeispiel p eine.<br />

wh,Ω · fact (||p − ch||) , (6.5)<br />

Das Ziel des Aufwands ist es natürlich wieder, die Ausgabe y für alle Trainingsmuster<br />

p gegen den zugehörigen Teaching Input t gehen zu lassen.


6.2.2.1 Gewichte können einfach als Lösung eines Gleichungssystems<br />

ausgerechnet werden<br />

Wir sehen also, dass wir |P | viele Gleichungen gegeben haben. Betrachten wir nun die<br />

Breiten σ1, σ2, . . . , σk, die Zentren c1, c2, . . . , ck und die Trainingsbeispiele p samt Teaching<br />

Input t als gegeben. Gesucht sind die Gewichte wh,Ω, wovon es |H| Stück für ein<br />

einzelnes Ausgabeneuron Ω gibt. Wir können unser Problem also als Gleichungssystem<br />

sehen, da das einzige, was wir im Moment verändern möchten, die Gewichte sind.<br />

Dies bringt uns dazu, eine Fallunterscheidung zu treffen bezüglich der Anzahl der<br />

Trainingsbeispiele |P | und der Anzahl der RBF-Neurone |H|:<br />

|P | = |H|: Ist die Zahl der RBF-Neurone gleich der Zahl der Muster, also |P | = |H|,<br />

so können wir die Gleichung auf eine Matrixmultiplikation<br />

zurückführen, wobei<br />

T = M · G (6.6)<br />

⇔ M −1 · T = M −1 · M · G (6.7)<br />

⇔ M −1 · T = E · G (6.8)<br />

⇔ M −1 · T = G (6.9)<br />

⊲ T der Vektor der Teaching Inputs für alle Trainingsbeispiele ist,<br />

⊲ M die |P | × |H|-Matrix der Ausgaben von allen |H| RBF-Neuronen zu |P |<br />

vielen Beispielen (Wir erinnern uns: |P | = |H|, die Matrix ist quadratisch<br />

und daher können wir versuchen, sie zu invertieren),<br />

⊲ G der Vektor der gewünschten Gewichte und<br />

⊲ E eine Einheitsmatrix passend zu G.<br />

Wir können also die Gewichte mathematisch gesehen einfach ausrechnen: Im Fall<br />

|P | = |H| haben wir pro Trainingsbeispiel genau ein RBF-Neuron zur Verfügung.<br />

Das heißt nichts anderes, als dass das Netz nach erfolgtem Errechnen der Gewichte<br />

die |P | vielen Stützstellen, die wir haben, exakt trifft, also eine exakte<br />

Interpolation durchführt – für ein solches Gleichungs-Ausrechnen benötigen wir<br />

aber natürlich kein RBF-Netz, so dass wir zum nächsten Fall übergehen wollen.<br />

Exakte Interpolation ist nicht mit dem bei den MLPs erwähnten Auswendiglernen<br />

zu verwechseln: Erstens reden wir im Moment noch gar nicht über das Trainieren


von RBF-<strong>Netze</strong>n, zweitens kann es auch sehr gut für uns und durchaus gewollt<br />

sein, wenn das Netz zwischen den Stützstellen exakt interpoliert.<br />

|P | < |H|: Das Gleichungssystem ist unterbestimmt, es existieren mehr RBF-Neurone<br />

als Trainingsbeispiele, also |P | < |H|. Dieser Fall taucht natürlich normalerweise<br />

nicht sehr oft auf. In diesem Fall gibt es eine Lösungsvielfalt, die wir gar nicht<br />

im Detail brauchen: Wir können uns aus vielen offensichtlich möglichen Sätzen<br />

von Gewichten einen auswählen.<br />

|P | > |H|: Für die weitere Betrachtung am interessantesten ist jedoch der Fall, dass es<br />

signifikant mehr Trainingsbeispiele gibt als RBF-Neurone, also gilt |P | > |H| –<br />

wir wollen also wieder die Generalisierungsfähigkeit der <strong>Neuronale</strong>n <strong>Netze</strong> nutzen.<br />

Wenn wir viel mehr Trainingsmuster als RBF-Neurone haben, können wir fairerweise<br />

nicht mehr davon ausgehen, dass jedes Trainingsmuster exakt getroffen<br />

wird. Wenn wir die Punkte also nicht exakt treffen können und daher auch nicht<br />

nur interpolieren können wie im obigen Idealfall |P | = |H|, so müssen wir versuchen,<br />

eine Funktion zu finden, die unsere Trainingsmenge P so genau wie möglich<br />

approximiert: Wir versuchen wie beim MLP, die Summe der Fehlerquadrate<br />

auf ein Minimum zu reduzieren.<br />

Wie fahren wir also im Fall |P | > |H| mit der Berechnung fort? Wie oben müssen<br />

wir, um das Gleichungssystem zu lösen, eine Matrixmultiplikation<br />

T = M · G (6.10)<br />

mit einer Matrix M lösen. Problem ist aber, dass wir die |P |×|H|-Matrix M dieses<br />

mal nicht invertieren können, weil sie nicht quadratisch ist (es gilt |P | = |H|).<br />

Hier müssen wir also, um überhaupt weiterzukommen, die Moore-Penrose-<br />

Pseudoinverse mit<br />

M + = (M T · M) −1 · M T<br />

(6.11)


verwenden. Die Moore-Penrose-Pseudoinverse ist nicht die Inverse einer Matrix,<br />

kann aber in diesem Fall so verwendet werden 1 . Wir erhalten Gleichungen, die<br />

denen im Fall |P | = |H| sehr ähnlich sind:<br />

T = M · G (6.12)<br />

⇔ M + · T = M + · M · G (6.13)<br />

⇔ M + · T = E · G (6.14)<br />

⇔ M + · T = G (6.15)<br />

Ein weiterer Hauptgrund für die Verwendung der Moore-Penrose-Pseudoinversen<br />

ist hier, dass sie die quadratische Abweichung minimiert (was unser Ziel ist): Die<br />

Schätzung des Vektors G in Gleichung 6.15 entspricht dem aus der Statistik<br />

bekannten Gauß-Markov-Modell zur Minimierung des quadratischen Fehlers.<br />

In den obigen Gleichungen 6.11 auf der linken Seite und folgenden sei das T<br />

in M T (der transponierten Matrix M) bitte nicht mit dem T des Vektors aller<br />

Teaching Inputs zu verwechseln.<br />

6.2.2.2 Die Verallgemeinerung auf mehrere Ausgaben ist trivial und wenig<br />

rechenintensiv<br />

Wir haben also jeweils einen mathematisch exakten Weg gefunden, die Gewichte direkt<br />

zu errechnen. Was passiert nun bei mehreren Ausgabeneuronen, also |O| > 1, wobei O<br />

wie gewohnt die Menge der Ausgabeneurone Ω ist?<br />

In diesem Fall ändert sich, wie wir schon angedeutet haben, nicht viel: Diese weiteren<br />

Ausgabeneurone haben ja einen eigenen Satz Gewichte, während wir die σ und c der<br />

RBF-Schicht nicht ändern. Für ein RBF-Netz ist es also für gegebene σ und c einfach,<br />

sehr viele Outputneurone zu realisieren, da wir nur für jedes neue Outputneuron Ω<br />

einzeln den Vektor der zu ihm führenden Gewichte<br />

GΩ = M + · TΩ<br />

(6.16)<br />

errechnen müssen, wobei die sehr aufwändig zu errechnende Matrix M + immer gleich<br />

bleibt: Das Hinzufügen von mehr Ausgabeneuronen ist also, was die Berechnungskomplexität<br />

angeht, recht preiswert.<br />

1 Insbesondere gilt M + = M −1 , falls M invertierbar. Auf die Begründung für diese Umstände und Verwendungsmöglichkeiten<br />

von M + möchte ich hier nicht weiter eingehen – diese sind aber in der Linearen<br />

Algebra einfach zu finden.


6.2.2.3 Berechnungsaufwand und Genauigkeit<br />

Bei realistischen Problemstellungen gilt jedoch in aller Regel, dass es wesentlich mehr<br />

Trainingsbeispiele als RBF-Neurone gibt, also |P | ≫ |H|: Man kann ohne weiteres den<br />

Wunsch haben, mit 10 6 Trainingsbeispielen zu trainieren. Wir können zwar theoretisch<br />

mathematisch korrekt an der Tafel die Terme für die richtige Lösung finden (in sehr<br />

sehr langer Zeit), die Berechnung am Computer erweist sich aber oft als ungenau und<br />

sehr zeitaufwändig (Matrixinversionen haben einen großen Rechenaufwand).<br />

Weiterhin ist unsere Moore-Penrose-Pseudoinverse, trotz numerischer Stabilität, noch<br />

keine Garantie dafür, dass der Outputvektor dem Teachingvektor entspricht, da bei<br />

den aufwändigen Berechnungen sehr viele Ungenauigkeiten auftreten können, obwohl<br />

die Rechenwege mathematisch natürlich korrekt sind: Unsere Computer können uns<br />

die pseudoinversen Matrizen auch nur näherungsweise liefern (wenn auch gute Näherungen).<br />

De facto erhalten wir also auch nur eine Näherung der richtigen Gewichte<br />

(womöglich mit vielen aufgeschaukelten Ungenauigkeiten) und damit auch nur eine<br />

(vielleicht sehr grobe oder gar unerkennbare) Näherung der Outputwerte an den gewünschten<br />

Output.<br />

Falls wir genug Rechenpower besitzen, um einen Gewichtsvektor analytisch zu bestimmen,<br />

sollten wir ihn also auf jeden Fall nur als Startwert für unseren Lernvorgang<br />

benutzen, womit wir zu den wirklichen Trainingsverfahren kommen – aber sonst wäre<br />

es ja auch langweilig, oder?<br />

6.3 Kombinationen aus Gleichungssystem und<br />

Gradientenverfahren sind zum Training sinnvoll<br />

Analog zum MLP führen wir also zum Finden passender Gewichte einen Gradientenabstieg<br />

durch, und zwar über die bereits hinlänglich bekannte Delta-Regel. Backpropagation<br />

ist hier gar nicht notwendig, da wir nur eine einzige Gewichtsschicht trainieren<br />

müssen – ein Umstand, der sehr rechenzeitfreundlich ist.<br />

Wie wir wissen, lautet die Delta-Regel an sich<br />

wobei wir in unserem Fall nun einsetzen:<br />

∆wh,Ω = η · δΩ · oh, (6.17)<br />

∆wh,Ω = η · (tΩ − yΩ) · fact(||p − ch||) (6.18)


Ich möchte noch einmal ausdrücklich darauf hinweisen, dass es sehr beliebt ist, das Training<br />

in zwei Phasen zu unterteilen, indem man zunächst einen Gewichtssatz analytisch<br />

berechnet und diesen mit der Delta-Regel nachtrainiert.<br />

Oft wird das Training sogar in drei Phasen gegliedert: Es bleibt nämlich noch die Frage<br />

zu klären, ob man offline oder online lernt. Hier kann man Ähnliches sagen wie bei<br />

Multilayerperceptrons: Es wird oft zunächst online gelernt (schnellere Bewegung über<br />

die Fehleroberfläche). Anschließend, wenn man der Meinung ist, sich der Lösung zu<br />

nähern, werden in einer dritten Lernphase noch einmal die Fehler aufkumuliert und<br />

für eine noch genauere Annäherung offline gelernt. Ähnlich wie bei den MLPs erreicht<br />

man aber hier mit vielen Methoden gute Erfolge.<br />

Wir haben aber schon angedeutet, dass man auch andere Dinge an einem RBF-Netz<br />

optimieren kann als nur die Gewichte vor der Outputschicht – betrachten wir also<br />

einmal die Möglichkeiten, die σ und c zu variieren.<br />

6.3.1 Zentren und Breiten von RBF-Neuronen zu bestimmen, ist nicht<br />

immer trivial<br />

Es ist klar, dass man die Approximationsgenauigkeit von RBF-<strong>Netze</strong>n erhöhen kann,<br />

indem man die Breiten und Positionen der Gaußglocken im Inputraum an das zu<br />

approximierende Problem anpasst. Es gibt mehrere Methoden, mit den Zentren c und<br />

Breiten σ der Gaußglocken zu verfahren:<br />

Feste Wahl: Die Zentren und Breiten kann man fest und ohne Rücksicht auf die Muster<br />

wählen – hiervon sind wir bis jetzt ausgegangen.<br />

Bedingte, feste Wahl: Wieder werden Zentren und Breiten fest gewählt, man besitzt<br />

allerdings Vorwissen über die zu approximierende Funktion und kann sich etwas<br />

danach richten.<br />

Adaptiv zum Lernprozess: Zweifellos die eleganteste Variante, aber natürlich auch die<br />

anspruchsvollste. Eine Realisierung dieses Ansatzes wird in diesem Kapitel nicht<br />

besprochen, ist aber im Zusammenhang mit einer anderen Netztopologie zu finden<br />

(Abschnitt 10.6.1).<br />

6.3.1.1 Feste Wahl<br />

In jedem Fall ist es das Ziel, den Eingangsraum möglichst gleichmäßig abzudecken. Hier<br />

des Abstandes der Zentren zueinander wählen, so dass<br />

kann man dann Breiten von 2<br />

3


Abbildung 6.6: Beispiel einer gleichmäßigen Abdeckung eines zweidimensionalen Inputraumes<br />

durch Radialbasisfunktionen.<br />

sich die Gaußglocken zu ca. „einem Drittel“ 2 überlappen (Abb. 6.6). Je dichter wir die<br />

Glocken setzen, desto genauer, aber desto Rechenaufwändiger wird das Ganze.<br />

Dies mag sehr unelegant aussehen, allerdings kommen wir in Bereichen der Funktionsapproximation<br />

kaum um die gleichmäßige Abdeckung herum – hier bringt es uns<br />

nämlich im Allgemeinen wenig, wenn die zu approximierende Funktion an einigen Stellen<br />

sehr genau repräsentiert wird, an anderen Stellen aber nur 0 als Rückgabewert<br />

geliefert wird.<br />

Allerdings erfordert eine hohe Eingangsdimension gigantisch viele RBF-Neurone, was<br />

den Rechenaufwand exponentiell zur Dimension in die Höhe schnellen läßt – und dafür<br />

sorgt, dass wir sechs- bis zehndimensionale Probleme bei RBF-<strong>Netze</strong>n bereits „hochdimensional“<br />

nennen (ein MLP macht hier beispielsweise überhaupt keine Probleme).<br />

2 Es ist klar, dass eine Gaußglocke mathematisch unendlich breit ist, ich bitte also den Leser, diese saloppe<br />

Formulierung zu entschuldigen.


Abbildung 6.7: Beispiel einer ungleichmäßigen Abdeckung eines zweidimensionalen Inputraumes,<br />

über den wir Vorwissen besitzen, durch Radialbasisfunktionen.<br />

6.3.1.2 Bedingte, feste Wahl<br />

Angenommen, unsere Trainingsbeispiele sind nicht gleichmäßig über den Eingangsraum<br />

verteilt – dann liegt es nahe, die Zentren und Sigmas der RBF-Neurone anhand der<br />

Musterverteilung auszurichten. Man kann also seine Trainingsmuster mit statistischen<br />

Verfahren wie einer Clusteranalyse analysieren und so herausfinden, ob es statistische<br />

Gegebenheiten gibt, nach denen wir unsere Verteilung der Zentren und Sigmas richten<br />

sollten (Abb. 6.7).<br />

Eine trivialere Möglichkeit wäre es, |H| viele Zentren auf zufällig aus der Mustermenge<br />

ausgewählte Positionen zu setzen: Es bestünde also bei dieser Vorgehensweise für jedes<br />

Trainingsmuster p die Möglichkeit, direkt Zentrum eines Neurons zu sein (Abb. 6.8 auf<br />

der folgenden Seite). Das ist auch noch nicht sehr elegant, aber keine schlechte Lösung,<br />

wenn es schnell gehen soll. Bei dieser Vorgehensweise werden die Breiten in der Regel<br />

fest gewählt.<br />

Wenn wir Grund zu der Annahme haben, dass die Menge der Trainingsbeispiele Häufungspunkte<br />

besitzt, können wir Clusteringverfahren benutzen, um diese zu finden. Es<br />

gibt verschiedene Arten, Cluster in einer beliebigdimensionalen Menge von Punkten<br />

zu finden, von denen wir einige im Exkurs A kennenlernen werden. Ein neuronales


Abbildung 6.8: Beispiel einer ungleichmäßigen Abdeckung eines zweidimensionalen Inputraumes<br />

durch Radialbasisfunktionen. Die Breiten wurden fest gewählt, die Zentren der Neurone zufällig über<br />

die Trainingsmuster verteilt. Diese Verteilung kann natürlich leicht zu unrepräsentativen Ergebnissen<br />

führen, wie auch deutlich an dem allein stehenden Datenpunkt unten links zu sehen ist.<br />

Clusteringverfahren sind die sogenannten ROLFs (Abschnitt A.5), und auch Self Organizing<br />

Maps haben sich als sinnvoll im Zusammenhang mit der Positionsbestimmung<br />

von RBF-Neuronen erwiesen (Abschnitt 10.6.1). Bei den ROLFs können sogar Anhaltspunkte<br />

für sinnvolle Radien der RBF-Neurone gefunden werden. Auch mit Learning<br />

Vector Quantisation (Kap. 9) wurden schon gute Ergebnisse erzielt. Alle diese Verfahren<br />

haben nichts direkt mit den RBF-<strong>Netze</strong>n zu tun, sondern dienen der reinen<br />

Erzeugung von Vorwissen – wir behandeln sie daher nicht in diesem Kapitel, sondern<br />

eigenständig in den genannten Kapiteln.<br />

Ein weiterer Ansatz ist, auf Bewährtes zurückzugreifen: Wir können an den Positionen<br />

der Zentren drehen und schauen, wie sich unsere Fehlerfunktion Err damit verändert<br />

– einen Gradientenabstieg, wie von den MLPs gewohnt. Wir können auch auf gleiche<br />

Weise schauen, wie der Fehler von den Werten σ abhängt. Analog zur Herleitung von<br />

Backpropagation bilden wir also die Ableitungen<br />

∂Err(σhch)<br />

∂σh<br />

und ∂Err(σhch)<br />

.<br />

∂ch


Da die Herleitung dieser Terme sich analog zu der von Backpropagation verhält, wollen<br />

wir sie hier nicht ausführen.<br />

Die Erfahrung zeigt aber, dass es keine sehr überzeugenden Ergebnisse liefert, wenn<br />

wir betrachten, wie sich der Fehler abhängig von den Zentren und Sigmas verhält.<br />

Auch wenn die Mathematik uns lehrt, dass Verfahren dieser Art erfolgversprechend<br />

sind, ist der Gradientenabstieg, wie wir wissen, problembehaftet bei sehr zerklüfteten<br />

Fehleroberflächen.<br />

Genau hier liegt der Knackpunkt: RBF-<strong>Netze</strong> bilden naturgemäß sehr zerklüftete Fehleroberflächen,<br />

denn wenn wir an einem c oder σ etwas verändern, verändern wir das<br />

Aussehen der Fehlerfunktion sehr stark.<br />

6.4 Wachsende RBF-<strong>Netze</strong> passen die Neuronendichte<br />

automatisch an<br />

Bei wachsenden RBF-<strong>Netze</strong>n ist die Anzahl |H| der RBF-Neurone nicht konstant.<br />

Man wählt vorab eine bestimmte Zahl |H| Neurone, sowie deren Zentren ch und Breiten<br />

σh (beispielsweise anhand eines Clusteringverfahrens) und erweitert bzw. reduziert<br />

diese anschließend. Im Folgenden werden nur einfache Mechanismen angeschnitten,<br />

genauere Informationen finden Sie unter [Fri94].<br />

6.4.1 Neurone werden Stellen großen Fehlers hinzugefügt<br />

Nach Bildung dieser Startkonfiguration berechnet man analytisch den Vektor der Gewichte<br />

G. Man errechnet als nächstes alle spezifischen Fehler Errp bezüglich der Menge<br />

P der Trainingsbeispiele und sucht den maximalen spezifischen Fehler<br />

max<br />

P (Errp).<br />

Die Erweiterung des <strong>Netze</strong>s ist einfach: An die Stelle dieses größten Fehlers setzen wir<br />

nun ein neues RBF-Neuron. Hierbei müssen wir natürlich ein wenig aufpassen: Bei kleinen<br />

σ beeinflussen sich die Neurone nur bei wenig Entfernung zueinander. Bei großen σ<br />

hingegen findet aufgrund der Überlappung der Gaußglocken eine große Beeinflussung<br />

der schon vorhandenen Neurone durch das neue Neuron statt.<br />

Es liegt also nahe, dass wir beim Hinzufügen eines neuen Neurons die bereits vorhandenen<br />

RBF-Neurone etwas anpassen.


Diese Anpassung geschieht salopp gesagt, indem man die Zentren c der anderen Neurone<br />

etwas von dem neuen Neuron wegbewegt und deren Breite σ etwas verkleinert.<br />

Danach wird der aktuelle Outputvektor y des <strong>Netze</strong>s mit dem Teaching Input t verglichen<br />

und der Gewichtsvektor G durch Training verbessert. Anschließend kann man,<br />

sofern erforderlich, wieder ein neues Neuron einfügen. Dieses Verfahren eignet sich<br />

insbesondere für Funktionsapproximationen.<br />

6.4.2 Begrenzung der Neuronenanzahl<br />

Es ist hierbei unbedingt darauf zu achten, dass das Netz nicht ins Unendliche wächst,<br />

was sehr schnell passieren kann. Es ist also sinnvoll, sich im Vorhinein eine Maximalanzahl<br />

für Neurone |H|max zu definieren.<br />

6.4.3 Weniger wichtige Neurone werden gelöscht<br />

Dies bringt uns zu der Frage, ob man noch weiterlernen kann, wenn diese Grenze |H|max<br />

erreicht ist. Auch hier ist dem Lernen noch kein Riegel vorgeschoben: Man sucht sich<br />

das „unwichtigste“ Neuron und löscht es. Ein Neuron ist beispielsweise für das Netz<br />

nicht wichtig, wenn es ein anderes Neuron gibt, welches fast genau das gleiche tut: Es<br />

kommt oft vor, dass sich zwei Gaußglocken genau überlappen, an solchen Stellen würde<br />

beispielsweise ein einziges Neuron mit entsprechend größerer Höhe seiner Gaußglocke<br />

genügen.<br />

Automatisierte Verfahren für das Finden von weniger relevanten Neuronen zu entwickeln,<br />

ist aber sehr stark problemabhängig und sei an dieser Stelle dem Programmierer<br />

überlassen.<br />

Mit RBF-<strong>Netze</strong>n und Multilayerperceptrons haben wir nun bereits zwei Netzparadigmen<br />

für ähnliche Problemstellungen kennengelernt und ausführlich betrachtet. Wir<br />

wollen diese beiden Paradigmen daher einander gegenüberstellen und ihre Vor- und<br />

Nachteile vergleichen.<br />

6.5 Gegenüberstellung von RBF-<strong>Netze</strong>n und<br />

Multilayerperceptrons<br />

Wir nehmen den Vergleich von Multilayerperceptrons und RBF-<strong>Netze</strong>n anhand verschiedener<br />

Aspekte vor.


Eingabedimension: Bei RBF-<strong>Netze</strong>n ist in hochdimensionalen Funktionsräumen etwas<br />

Vorsicht geboten, da das Netz sehr schnell sehr speicher- und rechenaufwändig<br />

werden kann – hier macht ein Multilayerperceptron weniger Probleme, da dessen<br />

Neuronenanzahl nicht exponentiell mit der Eingabedimension wächst.<br />

Wahl der Zentren: Allerdings ist die Wahl der Zentren c bei RBF-<strong>Netze</strong>n (trotz der<br />

hier vorgestellten Ansätze) nach wie vor ein großes Problem – bitte nutzen Sie bei<br />

deren Anwendung also wirklich jedes Vorwissen, das sie haben. Solche Probleme<br />

haben wir beim MLP nicht.<br />

Ausgabedimension: Vorteil der RBF-<strong>Netze</strong> ist, dass es dem Training wenig macht,<br />

wenn das Netz eine hohe Output-Dimension aufweist – ein Lernverfahren wie<br />

Backpropagation bei einem MLP wird dabei sehr in die Länge gezogen.<br />

Extrapolation: Vorteil und Nachteil von RBF-<strong>Netze</strong>n ist die mangelnde Extrapolationsfähigkeit:<br />

Ein RBF-Netz liefert weit weg von den Zentren der RBF-Schicht<br />

das Ergebnis 0. Dies ist gut und schlecht: Zum einen extrapoliert es eben nicht,<br />

es ist im Gegensatz zum MLP hierfür nicht verwertbar (wobei wir beim MLP<br />

nie wissen können, ob die extrapolierten Werte vernünftig sind, die Erfahrung<br />

zeigt aber, dass MLPs hier gutmütig sind). Zum anderen hat das Netz aber im<br />

Gegensatz zum MLP die Möglichkeit, uns durch diese 0 zu sagen „Ich weiss es<br />

nicht“, was sehr vom Vorteil sein kann.<br />

Läsionstoleranz: Für den Output eines MLPs ist es nicht so wichtig, wenn irgendwo<br />

ein Gewicht oder Neuron fehlt, er wird insgesamt ein wenig schlechter werden.<br />

Fehlt ein Gewicht oder Neuron beim RBF-Netz, so sind weite Teile des Outputs<br />

so gut wie unbeeinflusst – eine Stelle des Outputs ist jedoch sehr betroffen, weil<br />

eben direkt eine Gaußglocke fehlt. Hier kann man also wählen zwischen starkem<br />

lokalem Fehler bei Läsion und schwachem, aber globalem Fehler.<br />

Verbreitung: Hier ist das MLP „im Vorteil“, da RBF-<strong>Netze</strong> wesentlich weniger angewandt<br />

werden – ein Umstand, der von professionellen Stellen nicht immer<br />

verstanden wird (was niedrigdimensionale Eingaberäume angeht). MLPs haben<br />

anscheinend eine wesentlich höhere Tradition und funktionieren zu gut, als dass<br />

es nötig wäre, sich ein paar Seiten in dieser Arbeit über RBF-<strong>Netze</strong> durchzulesen<br />

:-).<br />

Übungsaufgaben<br />

Aufgabe 14. Mit einem |I|-|H|-|O|-RBF-Netz mit festen Breiten und Zentren der<br />

Neurone soll eine Zielfunktion u approximiert werden. Hierfür sind |P | viele Trainings-


eispiele der Form (p, t) der Funktion u gegeben. Es gelte |P | > |H|. Die Bestimmung<br />

der Gewichte soll analytisch über die Moore-Penrose-Pseudoinverse erfolgen. Geben<br />

Sie das Laufzeitverhalten bezüglich |P | und |O| möglichst genau an.<br />

Hinweis: Für Matrixmultiplikationen und Matrixinvertierungen existieren Verfahren,<br />

welche effizienter sind als die kanonischen Verfahren. Für bessere Abschätzungen recherchieren<br />

Sie nach solchen Verfahren (und deren Komplexität). Geben Sie bei Ihrer<br />

Komplexitätsberechnung die verwendeten Verfahren samt ihrer Komplexität an.


Kapitel 7<br />

Rückgekoppelte <strong>Netze</strong><br />

Gedanken über <strong>Netze</strong>, welche eigene interne Zustände besitzen.<br />

Rückgekoppelte <strong>Netze</strong> im Allgemeinen bezeichnen <strong>Netze</strong>, die die Fähigkeit haben, sich<br />

durch Rückkopplungen selbst zu beeinflussen, beispielsweise indem die Ausgabe des<br />

<strong>Netze</strong>s in die folgenden Berechnungsschritte mit eingeht. Es gibt viele Arten rückgekoppelter<br />

<strong>Netze</strong> von nahezu beliebiger Gestalt, fast alle überschneidend als rückgekoppelte<br />

<strong>Neuronale</strong> <strong>Netze</strong> bezeichnet – demzufolge verwende ich für die wenigen<br />

hier vorgestellten Paradigmen den Namen rückgekoppelte Multilayerperceptrons.<br />

W Dass man mit einem rückgekoppelten Netz mehr berechnen kann als mit einem<br />

normalen MLP, ist offensichtlich: Setzt man die Rückkopplungsgewichte auf 0, reduziert<br />

man das rückgekoppelte Netz ja auf ein normales MLP. Insbesondere erzeugt die<br />

Rückkopplung verschiedene netzinterne Zustände, so dass auch auf gleiche Eingaben<br />

im Kontext des Netzzustands verschiedene Ausgaben ausgegeben werden können.<br />

Rückgekoppelte <strong>Netze</strong> an sich besitzen eine große Dynamik, die mathematisch sehr<br />

schwer zu erfassen und äußerst umfangreich zu betrachten ist. Das Ziel dieses Kapitels<br />

wird es nur sein, kurz zu betrachten, wie Rückkopplungen aufgebaut sein können und<br />

netzinterne Zustände erzeugt werden können. So werde ich nur kurz zwei Paradigmen<br />

rückgekoppelter <strong>Netze</strong> vorstellen, und anschließend grob deren Training umreißen.<br />

Bei einem rückgekoppelten Netz können für eine zeitlich konstante Eingabe x verschiedene<br />

Dinge passieren: Zum einen kann das Netz konvergieren, sich also in einen festen<br />

Zustand bringen und irgendwann eine feste Ausgabe y ausgeben, oder es konvergiert<br />

eben nicht bzw. nach so langer Zeit, dass wir es nicht mehr mitbekommen, was eine<br />

ständige Veränderung von y zur Folge hat.<br />

Falls es nicht konvergiert, kann man beispielsweise die Ausgabe auf Periodika oder<br />

Attraktoren (Abb. 7.1 auf der folgenden Seite) untersuchen – wir können hier die<br />

153


Abbildung 7.1: Der Rössler-Attraktor<br />

komplette Vielfalt von dynamischen Systemen erwarten, weswegen ich auch speziell<br />

auf die Literatur zu dynamischen Systemen verweisen möchte.<br />

Durch weitergehende Betrachtungen kann man dann herausfinden, was passiert, wenn<br />

bei rückgekoppelten <strong>Netze</strong>n der Input verändert wird.<br />

Vorgestellt werden sollen in diesem Kapitel die verwandten Paradigmen rückgekoppelter<br />

<strong>Netze</strong> nach Jordan und Elman.<br />

7.1 Jordannetze<br />

Ein Jordannetz [Jor86] ist ein Multilayerperceptron mit einer Menge K von sogenannten<br />

Kontextneuronen k1, k2, . . . , k |K| – pro Output-Neuron existiert ein Kontextneuron<br />

(illustriert in Abb. 7.2 auf der rechten Seite). Ein Kontextneuron macht im<br />

Grunde nichts anderes, als einen Output zwischenzuspeichern, so dass er im nächsten<br />

Zeitschritt verwertet werden kann. Es gibt also gewichtete Verbindungen von jedem


i1<br />

⑥⑥⑥⑥⑥⑥⑥⑥⑥ <br />

<br />

<br />

<br />

❆<br />

❯ ❯<br />

<br />

❆<br />

❯<br />

i2<br />

❯<br />

❆<br />

❯ ❯ ❯<br />

❆ ❯ ❯<br />

❆<br />

❯ ❯<br />

❆<br />

❯ ❯ ❯<br />

❆ ❯ ❯<br />

❆ ❯ ❯<br />

❆<br />

❯ ❯ ❯ ❯ ❯<br />

✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐<br />

⑥ ❯ ❯ ❯<br />

⑥⑥⑥⑥⑥⑥⑥⑥<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

❆❆❆<br />

❆❆❆<br />

❆❆❆<br />

h1 ❆<br />

❯ ❯<br />

<br />

❆<br />

❯<br />

h2<br />

❯<br />

❆<br />

❯ ❯ ❯<br />

❆ ❯ ❯<br />

❆<br />

❯ ❯<br />

❆<br />

❯ ❯<br />

❆<br />

❯ ❯ ❯<br />

❆ ❯ ❯<br />

❆<br />

❯ ❯<br />

⑥<br />

❯ ❯ ❯ ❯ ❯ ❯<br />

k2<br />

k1<br />

⑥⑥⑥⑥⑥⑥⑥⑥ <br />

<br />

h3<br />

❆<br />

⑥⑥⑥⑥⑥⑥⑥⑥⑥ <br />

<br />

✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐<br />

Ω1<br />

Ω2<br />

<br />

<br />

<br />

Abbildung 7.2: Darstellung eines Jordannetzes. Die Ausgabe des <strong>Netze</strong>s wird in den Kontextneuronen<br />

gepuffert und beim nächsten Zeitschritt zusammen mit der neuen Eingabe in das Netz<br />

eingebracht.<br />

Ausgabeneuron zu einem Kontextneuron. Die gespeicherten Werte werden durch Vollverknüpfungen<br />

von den Kontextneuronen zur Eingabeschicht wieder an das eigentliche<br />

Netz zurückgegeben.<br />

In der ursprünglichen Definition eines Jordannetzes sind die Kontextneurone auch<br />

noch über ein Verbindungsgewicht λ zu sich selbst rückgekoppelt – in den meisten Anwendungen<br />

wird diese Rückkopplung aber weggelassen, da das Jordannetz ohne diese<br />

zusätzlichen Rückkopplungen schon sehr dynamisch und schwer analysierbar ist.<br />

Definition 7.1 (Kontextneuron). Ein Kontextneuron k nimmt einen Outputwert<br />

eines anderen Neurons i zu einem Zeitpunkt t entgegen und gibt diesen im Zeitpunkt<br />

(t + 1) wieder in das Netz ein.<br />

Definition 7.2 (Jordannetz). Ein Jordannetz ist ein Multilayerperceptron, welches<br />

pro Outputneuron ein Kontextneuron besitzt. Die Menge der Kontextneurone nennen<br />

wir K. Die Kontextneurone sind vollverknüpft in Richtung der Eingabeschicht des<br />

<strong>Netze</strong>s.


i1<br />

⑦⑦⑦⑦⑦⑦⑦⑦⑦⑦ <br />

<br />

<br />

<br />

❅<br />

❯ ❯<br />

<br />

❅<br />

❯<br />

i2<br />

❯<br />

❅<br />

❯ ❯<br />

❅<br />

❯ ❯<br />

❅<br />

❯ ❯<br />

❅<br />

❯ ❯<br />

❅<br />

❯ ❯<br />

❅<br />

❯ ❯<br />

❅<br />

❯ ❯<br />

❅<br />

❯ ❯ ❯ ❯ ❯<br />

✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐<br />

⑦ ❯ ❯ ❯<br />

⑦⑦⑦⑦⑦⑦⑦⑦⑦ <br />

<br />

<br />

<br />

<br />

❅<br />

h1 ❅<br />

❯ ❯<br />

<br />

❅<br />

❯<br />

h2<br />

❯<br />

❅<br />

❯ ❯ ❯<br />

❅ ❯ ❯<br />

❅<br />

❯ ❯<br />

❅<br />

❯ ❯ ❯<br />

❅ ❯ ❯<br />

❅ ❯ ❯<br />

❅<br />

❯ ❯<br />

⑦<br />

❯ ❯ ❯ ❯ ❯ ❯<br />

⑦⑦⑦⑦⑦⑦⑦⑦<br />

<br />

<br />

<br />

h3<br />

❅❅❅ ❅❅❅<br />

❅❅❅<br />

⑦⑦⑦⑦⑦⑦⑦⑦⑦ <br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐<br />

Ω1<br />

Ω2<br />

kh1<br />

kΩ1<br />

kh2<br />

kΩ2<br />

kh3<br />

<br />

<br />

Abbildung 7.3: Darstellung eines Elmannetzes. Der ganze informationsverarbeitende Teil des <strong>Netze</strong>s<br />

ist sozusagen zweimal vorhanden. Die Ausgabe eines jeden Neurons (bis auf die der Eingabeneurone)<br />

wird gepuffert und in die zugeordnete Schicht wieder eingegeben. Ich habe die Kontextneurone<br />

zur Übersichtlichkeit anhand ihrer Vorbilder im eigentlichen Netz benannt, das muss man aber nicht<br />

so machen.<br />

7.2 Elmannetze<br />

Auch die Elmannetze (eine Variation der Jordannetze) [Elm90] haben Kontextneurone<br />

– allerdings pro informationsverarbeitender Neuronenschicht eine Schicht Kontextneurone<br />

(Abb. 7.3). Die Ausgaben eines jeden versteckten Neurons oder Ausgabeneurons<br />

werden also in die zugehörige Kontextschicht geleitet (wieder pro Neuron<br />

genau ein Kontextneuron) und von da im nächsten Zeitschritt wieder in die komplette<br />

Neuronenschicht eingegeben (auf dem Rückweg also wieder eine Vollverknüpfung).<br />

Es existiert also der gesamte informationsverarbeitende Teil 1 des MLPs noch einmal<br />

als „Kontextversion“ – was die Dynamik und Zustandsvielfalt noch einmal wesentlich<br />

erhöht.<br />

Gegenüber Jordannetzen haben Elmannetze oft den Vorteil, etwas zielgerichteter zu<br />

agieren, da jede Schicht auf ihren eigenen Kontext zurückgreifen kann.<br />

1 Wir erinnern uns: die Inputschicht ist nicht informationsverarbeitend


Definition 7.3 (Elmannetz). Ein Elmannetz ist ein MLP, welches pro informationsverarbeitendem<br />

Neuron ein Kontextneuron besitzt. Die Menge der Kontextneurone<br />

nennen wir K. Pro informationsverarbeitender Neuronenschicht existiert also eine<br />

Kontextschicht mit exakt gleichvielen Kontextneuronen. Jedes Neuron besitzt eine gewichtete<br />

Verbindung zu exakt einem Kontextneuron, während die Kontextschicht in<br />

Richtung ihrer Ursprungsschicht vollverknüpft ist.<br />

Interessant ist nun, das Training rückgekoppelter <strong>Netze</strong> zu betrachten, da z.B. das<br />

normale Backpropagation of Error nicht auf rückgekoppelten <strong>Netze</strong>n funktionieren<br />

kann. Dieser Teil ist wieder etwas informeller gehalten, so dass ich dort keine formalen<br />

Definitionen verwenden werde.<br />

7.3 Training rückgekoppelter <strong>Netze</strong><br />

Um das Training so anschaulich wie möglich darzustellen, müssen wir einige Vereinfachungen<br />

verabreden, die das Lernprinzip an sich aber nicht beeinträchtigen.<br />

Gehen wir für das Training also davon aus, dass die Kontextneurone zu Anfang mit<br />

einer Eingabe initiiert werden, da sie sonst eine undefinierte Eingabe haben (das ist<br />

keine Vereinfachung, sondern wird tatsächlich gemacht).<br />

Weiterhin verwenden wir für unsere Trainingsgehversuche ein Jordannetz, welches keine<br />

versteckte Neuronenschicht hat, so dass die Outputneurone direkt wieder Input liefern.<br />

Dies ist eine starke Vereinfachung, da in der Regel kompliziertere <strong>Netze</strong> verwendet<br />

werden. Dies verändert soweit aber nichts am Lernprinzip.<br />

7.3.1 Unfolding in Time<br />

Erinnern wir uns an unser eigentliches Lernverfahren für MLPs, Backpropagation of<br />

Error, das die Deltawerte rückwärts propagiert. Im Falle rückgekoppelter <strong>Netze</strong> würden<br />

die Deltawerte also zyklisch immer wieder rückwärts durch das Netz propagiert, was<br />

das Training schwieriger macht. Zum einen kann man nicht wissen, welche der vielen<br />

generierten Deltawerte für ein Gewicht nun für das Training gewählt werden sollen,<br />

also sinnvoll sind, zum anderen können wir auch nicht unbedingt wissen, wann das<br />

lernen nun beendet werden soll. Der Vorteil von rückgekoppelten <strong>Netze</strong>n ist eine große<br />

Zustandsdynamik innerhalb des Netzbetriebs – der Nachteil rückgekoppelter <strong>Netze</strong> ist,<br />

dass diese Dynamik auch dem Training zuteil wird und dieses somit erschwert.


Ein Lernansatz wäre der Versuch, die zeitlichen Zustände des <strong>Netze</strong>s aufzufalten<br />

(Abb. 7.4 auf der rechten Seite): Man löst die Rekursionen auf, indem man ein<br />

gleichförmiges Netz über die Kontextneurone setzt, also die Kontextneurone sozusagen<br />

die Ausgabeneurone des angefügten <strong>Netze</strong>s bilden. Allgemeiner ausgedrückt, Verfolgt<br />

man die Rekurrenzen zurück und hängt so „frühere“ Instanzen von Neuronen in<br />

das Netz ein. So erzeugt man ein Großes, vorwärtsgerichtetes Netz, verliert aber im<br />

Gegenzug die Rekurrenzen und kann so das Netz mit Verfahren für nicht-rekurrente<br />

<strong>Netze</strong> trainieren In jede „Kopie“ der Eingabeneurone wird hierbei die Eingabe als<br />

Teaching Input eingegeben. Dies kann man für eine diskrete Anzahl Zeitschritte<br />

tun. Wir nennen dieses Trainingsparadigma Unfolding in Time [MP69]. Nach der<br />

Auffaltung ist ein Training durch Backpropagation of Error möglich.<br />

Offensichtlich erhält man für ein Gewicht wi,j aber mehrere Änderungswerte ∆wi,j,<br />

mit denen man auf verschiedene Weise verfahren kann: Aufkumulieren, Durchschnittsberechnung,<br />

etc. Kumuliert man sie einfach auf, können sich u.U. zu große Änderungen<br />

pro Gewicht ergeben, falls alle Änderungen das gleiche Vorzeichen haben. Demzufolge<br />

ist auch der Durchschnitt nicht zu verachten. Man könnte auch einen discounting factor<br />

einführen, der den Einfluss weiter in der Vergangenheit liegender ∆wi,j abschwächt.<br />

Unfolding in Time ist besonders dann sinnvoll, wenn man den Eindruck hat, dass die<br />

nähere Vergangenheit wichtiger für das Netz ist als die weiter entfernte, da Backpropagation<br />

in den von der Ausgabe weiter entfernten Schichten nur wenig Einfluss hat (wir<br />

erinnern uns: Der Einfluss von Backpropagation wird immer kleiner, je weiter man von<br />

der Ausgabeschicht weggeht).<br />

Nachteile: Das Training des so auseinandergefalteten <strong>Netze</strong>s kann sehr lange dauern,<br />

da man unter Umständen eine große Anzahl Schichten produziert. Ein nicht mehr vernachlässigbares<br />

Problem ist die begrenzte Rechengenauigkeit normaler Computer, die<br />

bei derartig vielen geschachtelten Rechnungen sehr schnell erschöpft ist (der Einfluss<br />

von Backpropagation wird, je weiter man von den Ausgabeschichten weg kommt, immer<br />

kleiner, so dass man an diese Grenze stößt). Weiterhin kann das Verfahren bei<br />

mehreren Ebenen Kontextneurone sehr große zu trainierende <strong>Netze</strong> produzieren.<br />

7.3.2 Teacher Forcing<br />

Weitere Verfahren sind die deckungsgleichen Teacher Forcing und Open Loop Learning.<br />

Sie schneiden während des Lernens die Rückkopplung auf: Während des Lernens<br />

tun wir einfach so, als gäbe es die Rückkopplung nicht, und legen den Teaching Input


i1 ❖❯<br />

❖❯<br />

<br />

❖❯<br />

i2<br />

❖❯<br />

❖<br />

❯<br />

❖<br />

❯ ❅<br />

<br />

❯<br />

❖ ❯<br />

❖<br />

❯<br />

❅<br />

i3<br />

k1<br />

<br />

❯<br />

❖ ❯<br />

❅ ❆<br />

❖<br />

❯ ❅<br />

<br />

❆<br />

❅❯<br />

❆<br />

❖ ❅❯<br />

<br />

❖<br />

❯<br />

❖ ❅ ❯<br />

<br />

❆<br />

❯<br />

<br />

❖ ❅ ❯ <br />

❆<br />

❖<br />

❯ ❯<br />

❆<br />

❖❅<br />

❯<br />

<br />

❯ <br />

❆<br />

❯ ❆<br />

❯ <br />

❯ ❆<br />

♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥<br />

⑥⑥⑥⑥⑥⑥⑥⑥⑥ <br />

<br />

<br />

k2<br />

✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐<br />

♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥<br />

Ω1<br />

Ω2<br />

<br />

<br />

<br />

.<br />

<br />

<br />

<br />

❘❱<br />

❘❱<br />

❘❱<br />

<br />

❘❱<br />

❘❱<br />

❘❱<br />

❈<br />

❘❱<br />

❘<br />

❱<br />

❈<br />

<br />

❘<br />

❱ ❱ ❈<br />

❘ ❱<br />

❘<br />

❱ ❈<br />

<br />

❄<br />

<br />

❄<br />

❘<br />

❱ ❈ <br />

❱<br />

❘<br />

❈<br />

❄<br />

❱ <br />

<br />

<br />

<br />

❘ ❈❱<br />

❘<br />

❱<br />

<br />

❄<br />

❱<br />

❘<br />

❈<br />

❄<br />

❱<br />

❘❈<br />

❱<br />

<br />

<br />

❱ ❄<br />

<br />

❱ <br />

❱ <br />

❄<br />

❱ ❄<br />

♦♦♦♦♦♦♦♦♦♦♦♦♦♦<br />

<br />

⑧⑧⑧⑧⑧⑧⑧⑧<br />

<br />

❘❱<br />

❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥<br />

♦♦♦♦♦♦♦♦♦♦♦♦♦♦<br />

❘❱<br />

❘❱<br />

<br />

❘❱<br />

❘❱<br />

❘❱<br />

❉◗<br />

❘<br />

❱<br />

❘<br />

❱<br />

❉◗<br />

<br />

❱<br />

❘ ❱ ❉◗<br />

❘<br />

❱<br />

❘<br />

❱ ❱<br />

❉<br />

◗<br />

❈<br />

<br />

◗<br />

❘<br />

❱ ❉ ◗<br />

❈<br />

❉<br />

◗ ❈<br />

❘<br />

❱<br />

◗<br />

❉❱<br />

◗ ❈<br />

<br />

<br />

<br />

❘ ❱ ◗<br />

❘<br />

❉ ❱ ❱<br />

◗<br />

❈<br />

❘ ❉ ❱ ◗<br />

❘<br />

❱<br />

❘<br />

❉ ❱<br />

◗<br />

❈<br />

❱<br />

◗ ❈<br />

<br />

<br />

<br />

❱ ◗<br />

❱ ◗ ❈<br />

❱ ◗❱<br />

◗<br />

❈<br />

♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥<br />

<br />

<br />

⑧⑧⑧⑧⑧⑧⑧⑧⑧<br />

<br />

❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥❥<br />

♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣<br />

i1 ❖❯<br />

❖❯<br />

<br />

❖❯<br />

i2<br />

❖❯<br />

❖<br />

❯<br />

❖<br />

❯ ❅<br />

<br />

❯<br />

❖ ❯<br />

❖<br />

❯<br />

❅<br />

i3<br />

k1<br />

<br />

❯<br />

❖ ❯<br />

❅ ❆<br />

❖<br />

❯ ❅<br />

<br />

❆<br />

❅❯<br />

❆<br />

❖ ❅❯<br />

<br />

❖<br />

❯<br />

❖ ❅ ❯<br />

<br />

❆<br />

❯<br />

<br />

❖ ❅ ❯ <br />

❆<br />

❖<br />

❯ ❯<br />

❆<br />

❖❅<br />

❯<br />

<br />

<br />

<br />

❯ <br />

❆<br />

<br />

❯ ❆<br />

❯ <br />

❯ ❆<br />

♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥<br />

<br />

<br />

⑥⑥⑥⑥⑥⑥⑥⑥⑥<br />

k2<br />

✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐✐<br />

♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥<br />

Ω1<br />

Ω2<br />

<br />

<br />

Abbildung 7.4: Darstellung des Unfolding in Time bei einem kleinen beispielhaften rückgekoppelten<br />

MLP. Oben: Das rückgekoppelte MLP. Unten: Das aufgefaltete Netz. Um der Übersichtlichkeit<br />

zu dienen, habe ich im aufgefalteten Netz nur dem untersten Teilnetz Benennungen hinzugefügt.<br />

Gepunktete Pfeile, welche in das Netz hineinführen, markieren Eingaben. Gepunktete Pfeile, welche<br />

aus dem Netz herausführen, markieren Ausgaben. Jede „Netzkopie“ repräsentiert einen Zeitschritt<br />

des <strong>Netze</strong>s, unten ist der aktuellste Zeitschritt.<br />

.<br />

.<br />

.<br />

.


während des Trainings an den Kontextneuronen an. Auch so wird ein Backpropagation-<br />

Training möglich. Nachteil: Ein Teaching Input bei Kontextneuronen oder allgemein<br />

nicht-ausgabe-Neuronen ist ja nicht verfügbar.<br />

7.3.3 Rekurrentes Backpropagation<br />

Ein weiteres beliebtes Verfahren ohne beschränkten Zeithorizont ist rekurrentes<br />

Backpropagation, das dem Problem mit Hilfe von Lösungsmethoden für<br />

Differentialgleichungen zu Leibe rückt [Pin87].<br />

7.3.4 Training mit Evolution<br />

Gerade bei rückgekoppelten <strong>Netze</strong>n haben sich aufgrund des ohnehin langen Trainings<br />

evolutionäre Algorithmen bewährt, da diese nicht nur in Bezug auf Rückkopplungen<br />

keinen Beschränkungen unterliegen, sondern bei geeigneter Wahl der Mutationsmechanismen<br />

auch weitere Vorteile haben: So können zum Beispiel Neurone und Gewichte<br />

angepasst und so die Netztopologie optimiert werden (es muss dann nach dem Lernen<br />

natürlich kein Jordan- oder Elmannetz herauskommen). Bei normalen MLPs hingegen<br />

sind die Evolutionsstrategien weniger gefragt, da sie natürlich viel mehr Zeit benötigen<br />

als ein gerichtetes Lernverfahren wie Backpropagation.


Kapitel 8<br />

Hopfieldnetze<br />

In einem magnetischen Feld übt jedes Teilchen Kraft auf jedes andere Teilchen<br />

aus, so dass sich die Teilchen insgesamt so ausrichten, wie es am energetisch<br />

günstigsten für sie ist. Wir kopieren diesen Mechanismus der Natur, um<br />

verrauschte Eingaben zu ihren richtigen Vorbildern zu korrigieren.<br />

Ein weiteres überwacht lernendes Beispiel aus dem Zoo der <strong>Neuronale</strong>n <strong>Netze</strong> wurde<br />

von John Hopfield entwickelt: die nach ihm benannten Hopfieldnetze [Hop82].<br />

Hopfield und seine physikalisch motivierten <strong>Netze</strong> haben viel zur Renaissance der <strong>Neuronale</strong>n<br />

<strong>Netze</strong> beigetragen.<br />

8.1 Hopfieldnetze sind inspiriert durch Teilchen in einem<br />

magnetischen Feld<br />

Die Idee für die Hopfieldnetze ist aus dem Verhalten von Teilchen im Magnetismus<br />

entstanden: Jedes Teilchen „redet“ (durch die magnetischen Kräfte) mit jedem anderen<br />

(also eine Vollverknüpfung), wobei es aber jeweils versucht, einen energetisch<br />

günstigen Zustand (sozusagen ein Minimum der Energiefunktion) zu erreichen. Diesen<br />

Eigenzustand kennen wir bei den Neuronen als Aktivierung. Die Teilchen bzw. Neurone<br />

drehen sich also alle und animieren sich dadurch wieder gegenseitig zur Drehung.<br />

Unser <strong>Neuronale</strong>s Netz ist also sozusagen eine Wolke von Teilchen.<br />

Ausgehend von der Tatsache, dass die Teilchen die Minima in der Energiefunktion<br />

selbsttätig aufspüren, hatte Hopfield nun die Idee, den „Drehwinkel“ der Teilchen<br />

zu nutzen, um Informationsverarbeitung zu betreiben: Warum nicht die Teilchen auf<br />

selbstdefinierten Funktionen Minima suchen lassen? Selbst wenn wir nur zwei dieser<br />

161


↑ ❙<br />

<br />

❙<br />

<br />

<br />

❁<br />

❙❙<br />

<br />

<br />

❁ ❙❙<br />

<br />

↓<br />

❁ ❙❙<br />

<br />

❁<br />

❙❙<br />

❁<br />

❙❙❙<br />

❁ ❙❙<br />

❁ ❙❙<br />

❁ ❙❙<br />

<br />

❙❙<br />

❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦<br />

✂<br />

❙❙❙<br />

<br />

<br />

<br />

✂✂✂✂✂✂✂✂ ❁<br />

❁<br />

<br />

↑ ❙❙❙❙❙❙<br />

❙❙❙❙❙❙<br />

❙❙❙❙❙❙<br />

❙❙❙❙❙❙<br />

<br />

<br />

<br />

✂<br />

✂<br />

✂<br />

✂<br />

✂<br />

✂<br />

<br />

↓<br />

<br />

↑<br />

❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦<br />

<br />

<br />

<br />

✂✂✂✂✂✂✂✂✂<br />

<br />

❁❁❁❁❁❁❁❁❁<br />

✂<br />

❁<br />

✂ ❁❁❁❁❁❁❁❁<br />

✂<br />

✂<br />

<br />

✂<br />

<br />

✂<br />

✂<br />

<br />

↓ <br />

<br />

↑<br />

Abbildung 8.1: Darstellung eines beispielhaften Hopfieldnetzes. Die Pfeile ↑ und ↓ markieren die<br />

binären „Drehwinkel“. Durch die vollständige Verknüpfung der Neurone können keine Schichten<br />

voneinander abgegrenzt werden, so dass ein Hopfieldnetz einfach eine Menge von Neuronen umfasst.<br />

Drehwinkel (Spins) verwenden, also eine binäre Aktivierung, werden wir feststellen,<br />

dass das entwickelte Hopfieldnetz erstaunliche Dynamik besitzt.<br />

8.2 In einem Hopfieldnetz beeinflussen sich alle Neurone<br />

symmetrisch gegenseitig<br />

Kurz gesagt besteht ein Hopfieldnetz also aus einer Menge K von untereinander vollverknüpften<br />

Neuronen mit binärer Aktivierung (wir verwenden ja nur zwei Drehwinkel),<br />

wobei die Gewichte zwischen den einzelnen Neuronen symmetrisch sind und ein Neuron<br />

keine Direktverbindung zu sich selbst aufweist (Abb. 8.1). Der Zustand von |K|<br />

vielen Neuronen mit zwei möglichen Zuständen ∈ {−1, 1} lässt sich also durch eine<br />

Zeichenkette x ∈ {−1, 1} |K| beschreiben.<br />

Die Vollverknüpfung sorgt dafür, dass wir eine volle quadratische Matrix an Gewichten<br />

unter den Neuronen haben. Was die Gewichte bedeuten, wollen wir gleich erforschen.<br />

Weiter werden wir gleich durchschauen, nach welchen Regeln die Neurone sich drehen,<br />

also ihren Zustand ändern.<br />

Die Vollverknüpfung sorgt weiterhin dafür, dass wir keine Input-, Output- oder versteckten<br />

Neurone kennen. Wir müssen uns also Gedanken machen, wie wir etwas in<br />

die |K| Neurone eingeben.


Definition 8.1 (Hopfieldnetz). Ein Hopfieldnetz besteht aus einer Menge K von<br />

vollverknüpften Neuronen ohne direkte Rückkopplungen. Die Aktivierungsfunktion der<br />

Neurone ist die binäre Schwellenwertfunktion mit Ausgaben ∈ {1, −1}.<br />

Definition 8.2 (Zustand eines Hopfieldnetzes). Die Gesamtheit der Aktivierungszustände<br />

aller Neurone ist der Zustand des <strong>Netze</strong>s. Der Netzzustand kann also als<br />

Binärstring z ∈ {−1, 1} |K| aufgefasst werden.<br />

8.2.1 Eingabe und Ausgabe eines Hopfieldnetzes werden durch<br />

Neuronenzustände repräsentiert<br />

Wir haben gelernt, dass das Netz, also die Menge der |K| vielen Teilchen, von einem<br />

Zustand aus selbsttätig ein Minimum sucht. Ein Inputmuster eines Hopfieldnetzes ist<br />

genau so ein Zustand: Ein Binärstring x ∈ {−1, 1} |K| , welcher die Neurone initialisiert.<br />

Das Netz sucht dann zur Eingabe das Minimum auf seiner Energieoberfläche (das wir<br />

vorher durch Eingabe von Trainingsbeispielen selbst definiert haben).<br />

Woher wissen wir nun, dass das Minimum gefunden ist? Auch das ist einfach: Wenn<br />

das Netz stillsteht. Man kann beweisen, dass ein Hopfieldnetz mit symmetrischer Gewichtsmatrix<br />

und Nullen in der Diagonale immer konvergiert [CG88] , es wird also<br />

irgendwann still stehen. Die Ausgabe ist dann ein Binärstring y ∈ {−1, 1} |K| , nämlich<br />

die Zustandszeichenkette des <strong>Netze</strong>s, das ein Minimum gefunden hat.<br />

Betrachten wir nun die Inhalte der Gewichtsmatrix und die Regeln für den Zustandswechsel<br />

der Neurone etwas genauer.<br />

Definition 8.3 (Eingabe und Ausgabe eines Hopfieldnetzes). Die Eingabe in ein<br />

Hopfieldnetz ist ein Binärstring x ∈ {−1, 1} |K| , welcher den Netzzustand initialisiert.<br />

Nach erfolgter Konvergenz des <strong>Netze</strong>s ist der aus dem neuen Netzzustand erzeugte<br />

Binärstring y ∈ {−1, 1} |K| die Ausgabe.<br />

8.2.2 Bedeutung der Gewichte<br />

Wir haben gesagt, dass die Neurone ihre Zustände, also ihre Ausrichtung von −1<br />

nach 1 oder umgekehrt ändern. Diese Drehungen finden abhängig von den aktuellen<br />

Zuständen der anderen Neurone und von den Gewichten zu diesen statt. Die Gewichte<br />

sind also in der Lage, die Gesamtveränderung des <strong>Netze</strong>s zu steuern. Die Gewichte<br />

können positiv, negativ oder 0 sein. Hierbei gilt umgangsprachlich für ein Gewicht wi,j<br />

zwischen zwei Neuronen i und j:


Ist wi,j positiv, versucht es die beiden Neurone zur Gleichheit zu zwingen, je größer<br />

wi,j, desto stärker ist der Zwang. Wenn das Neuron i den Zustand 1 hat, das<br />

Neuron j aber den Zustand −1, vermittelt ein hohes positives Gewicht den beiden<br />

Neuronen, dass es energetisch günstiger ist, wenn sie gleich sind.<br />

Ist wi,j negativ, verhält es sich analog, nur werden hier i und j zur Unterschiedlichkeit<br />

gedrängt. Ein Neuron i mit Zustand −1 würde versuchen, ein Neuron j in den<br />

Zustand 1 zu drängen.<br />

Null-Gewichte sorgen dafür, dass sich die beiden beteiligten Neurone nicht beeinflussen.<br />

Die Gesamtheit der Gewichte beschreibt also offensichtlich den Weg zum nächsten<br />

Minimum der Energiefunktion vom aktuellen Netzzustand aus – wir wollen nun untersuchen,<br />

auf welche Weise die Neurone diesen Weg einschlagen.<br />

8.2.3 Ein Neuron wechselt den Zustand anhand des Einflusses der<br />

anderen Neurone<br />

Die Funktionsweise des einmal trainierten und mit einem Anfangszustand initialisierten<br />

<strong>Netze</strong>s liegt darin, die Zustände xk der einzelnen Neurone k nach dem Schema<br />

⎛<br />

xk(t) = fact ⎝ <br />

⎞<br />

wj,k · xj(t − 1) ⎠ (8.1)<br />

j∈K<br />

mit jedem Zeitschritt zu ändern, wobei die Funktion fact in aller Regel die binäre<br />

Schwellenwert-Funktion (Abb. 8.2 auf der rechten Seite) mit Schwellenwert 0 ist. Umgangssprachlich:<br />

Ein Neuron k berechnet die Summe der wj,k · xj(t − 1), die angibt,<br />

wie stark und in welche Richtung das Neuron k von den anderen Neuronen j gedrängt<br />

wird. Der neue Zustand des <strong>Netze</strong>s (Zeitpunkt t) ergibt sich also aus dem Netzzustand<br />

zum vorherigen Zeitpunkt t − 1. Die Summe ergibt dann die Gesamtrichtung, in die<br />

das Neuron k gedrängt wird. Je nach Vorzeichen der Summe nimmt das Neuron den<br />

Zustand 1 oder −1 an.<br />

Ein weiterer Unterschied der Hopfieldnetze zu anderen Netztopologien, welche wir<br />

bereits kennengelernt haben, ist das asynchrone Update: Es wird jedes mal ein Neuron k<br />

zufällig gewählt, welches dann die Aktivierung neu errechnet. Die neuen Aktivierungen<br />

der jeweils vorher geänderten Neurone nehmen also direkt Einfluss, ein Zeitschritt<br />

bezeichnet also die Änderung eines einzigen Neurons.<br />

Ungeachtet der hier beschriebenen zufälligen Wahl des Neurons findet die Implementierung<br />

eines Hopfieldnetzes oft einfacher statt: die Neurone werden einfach nacheinander


f(x)<br />

1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

Heaviside−Funktion<br />

−4 −2 0 2 4<br />

Abbildung 8.2: Darstellung der binären Schwellenwertfunktion.<br />

durchgegangen und deren Aktivierungen neu berechnet – so lange, bis sich nichts mehr<br />

ändert.<br />

Definition 8.4 (Zustandswechsel eines Hopfieldnetzes). Der Zustandswechsel der<br />

Neurone findet asynchron statt, wobei das zu aktualisierende Neuron jeweils zufällig<br />

bestimmt wird und der neue Zustand durch die Vorschrift<br />

⎛<br />

xk(t) = fact ⎝ <br />

⎞<br />

wj,k · xj(t − 1) ⎠<br />

gebildet wird.<br />

j∈K<br />

Nachdem wir jetzt wissen, wie die Gewichte die Zustandsänderungen der Neurone beeinflussen<br />

und das gesamte Netz in Richtung eines Minimums treiben, ist nun noch die<br />

Frage offen, wie man den Gewichten beibringt, das Netz in Richtung eines bestimmten<br />

Minimums zu treiben.<br />

8.3 Die Gewichtsmatrix wird direkt anhand der<br />

Trainingsbeispiele erzeugt<br />

Es ist das Ziel, Minima auf der genannten Energieoberfläche zu erzeugen, in die das<br />

Netz bei einer Eingabe konvergiert. Wie schon bei vielen anderen Netzparadigmen,<br />

verwenden wir hier wieder eine Menge P von Mustereingaben p ∈ {1, −1} |K| , die die<br />

Minima unserer Energieoberfläche darstellen.<br />

x


Im Unterschied zu vielen anderen Netzparadigmen suchen wir hier nicht die Minima<br />

einer uns unbekannten Fehlerfunktion, sondern definieren uns selbst Minima auf einer<br />

solchen – mit dem Zweck, dass das Netz das naheliegendste Minimum von selbst<br />

annehmen soll, wenn man ihm eine Eingabe präsentiert. Dies ist für uns erst einmal<br />

ungewohnt – den Sinn und Zweck werden wir aber noch verstehen.<br />

Das Training eines Hopfieldnetzes spielt sich grob gesagt so ab, dass man jedes Trainingsmuster<br />

genau einmal mit der im Folgenden beschriebenen Vorschrift trainiert<br />

(Single Shot Learning), wobei pi und pj die Zustände der Neurone i und j in dem<br />

Beispiel p ∈ P sind:<br />

wi,j = <br />

pi · pj<br />

p∈P<br />

Hieraus ergibt sich dann die Gewichtsmatrix W . Umgangssprachlich: Wir initialisieren<br />

das Netz mit einem Trainingsmuster, und gehen dann alle Gewichte wi,j durch. Für<br />

jedes dieser Gewichte schauen wir: Sind die Neurone i, j im gleichen Zustand oder sind<br />

die Zustände unterschiedlich? Im ersten Fall addieren wir 1 zum Gewicht, im zweiten<br />

Fall −1.<br />

Dies machen wir für alle Trainingsmuster p ∈ P . Zum Schluss haben also Gewichte<br />

wi,j hohe Werte, wenn i und j bei vielen Trainingsmustern übereingestimmt haben.<br />

Der hohe Wert sagt diesen Neuronen umgangssprachlich: „Es ist sehr oft energetisch<br />

günstig, wenn ihr den gleichen Zustand innehabt“. Entsprechendes gilt für negative<br />

Gewichte.<br />

Durch dieses Training können wir also eine gewisse feste Anzahl Muster p in der Gewichtsmatrix<br />

abspeichern. Das Netz wird dann bei einer Eingabe x zu dem abgespeicherten<br />

Muster konvergieren, dass der Eingabe p am nächsten liegt.<br />

Leider ist die Zahl der maximal speicherbaren und rekonstruierbaren Muster p auf<br />

(8.2)<br />

|P |MAX ≈ 0.139 · |K| (8.3)<br />

beschränkt, was auch wiederum nur für orthogonale Muster gilt. Dies wurde durch<br />

genaue (und aufwändige) mathematische Analysen gezeigt, auf die wir jetzt nicht<br />

eingehen wollen. Gibt man mehr Muster als diese Anzahl ein, zerstört man bereits<br />

gespeicherte Informationen.<br />

Definition 8.5 (Lernregel für Hopfieldnetze). Die einzelnen Elemente der Gewichtsmatrix<br />

W werden durch das einmalige Ausführen der Lernregel<br />

wi,j = <br />

pi · pj<br />

p∈P


estimmt, wobei die Diagonale der Matrix mit Nullen belegt ist. Hierbei können nicht<br />

mehr als |P |MAX ≈ 0.139 · |K| Trainingsbeispiele funktionserhaltend trainiert werden.<br />

Wir haben nun die Funktionalität von Hopfieldnetzen kennen gelernt, jedoch noch<br />

nicht ihren praktischen Nährwert.<br />

8.4 Autoassoziation und traditionelle Anwendung<br />

Hopfieldnetze, wie sie oben beschrieben wurden, sind sogenannte Autoassoziatoren.<br />

Ein Autoassoziator a legt genau das oben beschriebene Verhalten an den Tag: Erstens<br />

gibt er bei Eingabe eines bekannten Musters p genau dieses bekannte Muster wieder<br />

aus, es gilt also<br />

a(p) = p,<br />

wobei a die Assoziator-Abbildung ist. Zum Zweiten, und genau hier liegt der Nährwert<br />

des Ganzen, funktioniert das auch mit Eingaben, die in der Nähe von einem Muster<br />

liegen:<br />

a(p + ε) = p.<br />

Der Autoassoziator ist hinterher in jedem Fall in einem stabilen Zustand, nämlich im<br />

Zustand p.<br />

Nimmt man als Mustermenge P beispielsweise Buchstaben oder sonstige Schriftzeichen<br />

in Pixelform, so wird das Netz in der Lage sein, deformierte oder verrauschte<br />

Buchstaben mit hoher Wahrscheinlichkeit richtig zu erkennen (Abb. 8.3 auf der folgenden<br />

Seite).<br />

Anwendung von Hopfieldnetzen sind daher prinzipiell Mustererkennung und Mustervervollständigung,<br />

so zum Beispiel Ende der 1980er Jahre die Erkennung von Postleitzahlen<br />

auf Briefen. Bald sind die Hopfieldnetze aber in den meisten ihrer Anwendungsgebiete<br />

von anderen Systemen überholt worden, so in der Buchstabenerkennung<br />

von modernen OCR-Systemen. Heute werden Hopfieldnetze so gut wie überhaupt nicht<br />

mehr verwendet, sie haben sich nicht durchgesetzt.<br />

8.5 Heteroassoziation und Analogien zur neuronalen<br />

Datenspeicherung<br />

Bis jetzt haben wir Hopfieldnetze kennengelernt, die für eine beliebige Eingabe in das<br />

naheliegendste Minimum einer statischen Energieoberfläche konvergieren.


Abbildung 8.3: Darstellung der Konvergenz eines beispielhaften Hopfieldnetzes. Jedes der Bilder<br />

hat 10 × 12 = 120 binäre Pixel. Jeder Pixel entspricht im Hopfieldnetz einem Neuron. Oben sind<br />

die Trainingsbeispiele abgebildet, unten die Konvergenz einer stark verrauschten 3 zum korrespondierenden<br />

Trainingsbeispiel.


Eine weitere Variante wäre eine dynamische Energieoberfläche: Hier sieht die Energieoberfläche<br />

je nach aktuellem Zustand anders aus und wir erhalten keinen Autoassoziator<br />

mehr, sondern einen Heteroassoziator. Für einen Heteroassoziator gilt nicht mehr<br />

sondern vielmehr<br />

a(p + ε) = p,<br />

h(p + ε) = q,<br />

was bedeutet, dass ein Muster auf ein anderes abgebildet wird. h ist die<br />

Heteroassoziator-Abbildung. Man erreicht solche Heteroassoziationen durch eine<br />

asymmetrische Gewichtsmatrix V .<br />

Durch hintereinandergeschaltete Heteroassoziationen der Form<br />

h(p + ε) = q<br />

h(q + ε) = r<br />

h(r + ε) = s<br />

.<br />

h(z + ε) = p<br />

wird es möglich, einen schnellen Zustandsdurchlauf<br />

p → q → r → s → . . . → z → p<br />

zu provozieren, wobei ein einzelnes Muster aber niemals vollständig angenommen wird:<br />

Bevor ein Muster vollständig zustandegekommen ist, versucht die Heteroassoziation ja<br />

bereits, dessen Nachfolger zu erzeugen. Außerdem würde unser Netz nie zum Stillstand<br />

kommen, da es ja nach Erreichen des letzten Zustands z wieder zum ersten Zustand p<br />

übergeht.<br />

8.5.1 Erzeugung der Heteroassoziationsmatrix<br />

Wir erzeugen die Matrix V mit Elementen v sehr ähnlich der Autoassoziationsmatrix,<br />

wobei (pro Übergang) p das Trainingsbeispiel vor dem Übergang ist und q das aus p<br />

zu erzeugende Trainingsbeispiel:<br />

vi,j = <br />

p,q∈P,p=q<br />

piqj<br />

(8.4)


Die Diagonale der Matrix ist wieder mit Nullen belegt. Die Adaption der Neuronenzustände<br />

erfolgt im laufenden Betrieb, wie gehabt. Mehrere Übergänge können einfach<br />

durch Aufsummierung in die Matrix eingebracht werden, wobei auch hier wieder die<br />

genannte Begrenzung gegeben ist.<br />

Definition 8.6 (Lernregel für Heteroassoziationsmatrix). Für zwei Trainingsbeispiele<br />

p als Vorgänger und q als Nachfolger eines Heteroassoziationsübergangs ergeben sich<br />

die Gewichte der Heteroassoziationsmatrix V durch die Lernregel<br />

vi,j = <br />

p,q∈P,p=q<br />

piqj,<br />

wobei sich mehrere Heteroassoziationen durch einfache Aufsummierung in ein Netz<br />

einbringen lassen.<br />

8.5.2 Stabilisierung der Heteroassoziationen<br />

Wir haben oben das Problem angesprochen, dass die Muster nicht vollständig erzeugt<br />

werden, sondern schon vor Ende der Erzeugung bereits das nächste Muster in Angriff<br />

genommen wird.<br />

Dieses Problem kann umgangen werden, indem das Netz nicht nur durch die Heteroassoziationsmatrix<br />

V beeinflusst wird, sondern zusätzlich durch die bereits bekannte<br />

Autoassoziationsmatrix W .<br />

Zusätzlich wird die Neuronenadaptionsregel so verändert, dass konkurrierende Terme<br />

entstehen: Einer, der ein vorhandenes Muster autoassoziiert, und einer, der versucht,<br />

eben dieses Muster in seinen Nachfolger umzuwandeln. Die Assoziationsregel bewirkt<br />

hierbei, dass das Netz ein Muster stabilisiert, dort eine Weile bleibt, zum nächsten<br />

Muster übergeht, und so weiter.<br />

xi(t + 1) = (8.5)<br />

⎛<br />

⎞<br />

⎜ <br />

fact<br />

⎜ wi,jxj(t)<br />

⎝j∈K<br />

<br />

Autoassoziation<br />

+ <br />

⎟<br />

vi,kxk(t − ∆t) ⎟<br />

k∈K<br />

⎠<br />

<br />

Heteroassoziation<br />

Der Wert ∆t bewirkt hierbei anschaulich gesprochen, dass der Einfluss der Matrix V<br />

verzögert eintritt, da sie sich nur auf eine um ∆t zurückliegende Version des <strong>Netze</strong>s<br />

bezieht. Hierdurch ergibt sich ein Zustandswechsel, in dem die einzelnen Zustände aber


zwischendurch für kurze Zeit stabil sind. Setzen wir ∆t auf z.B. zwanzig Schritte, so bekommt<br />

die asymmetrische Gewichtsmatrix jegliche Veränderung im Netz erst zwanzig<br />

Schritte später mit, so dass sie zunächst mit der Autoassoziationsmatrix zusammenarbeitet<br />

(da sie noch das Vorgängermuster vom aktuellen wahrnimmt) und erst später<br />

gegen sie.<br />

8.5.3 Biologische Motivation der Heteroassoziation<br />

Die Übergänge von stabilen in andere stabile Zustände sind hierbei biologisch stark<br />

motiviert: Es gab zumindest Anfang der 1990er Jahre Vermutungen, dass mit dem<br />

Hopfieldmodell eine Näherung der Zustandsdynamik im Gehirn erreicht wird, welches<br />

vieles durch Zustandsketten realisiert: Wenn ich Sie, lieber Leser, nun bitte, das Alphabet<br />

aufzusagen, werden Sie das in der Regel wesentlich besser schaffen als mir (bitte<br />

sofort versuchen) die Frage zu beantworten:<br />

Welcher Buchstabe folgt im Alphabet auf den Buchstaben P ?<br />

Ein anderes Beispiel ist das Phänomen, dass man etwas vergisst, jedoch den Ort noch<br />

kennt, an dem man zuletzt daran gedacht hat. Geht man nun an diesen Ort zurück,<br />

fällt einem das Vergessene oftmals wieder ein.<br />

8.6 Kontinuierliche Hopfieldnetze<br />

Bis jetzt haben wir nur Hopfieldnetze mit binären Aktivierungen erforscht. Hopfield beschrieb<br />

aber auch eine Version seiner <strong>Netze</strong> mit kontinuierlichen Aktivierungen [Hop84],<br />

die wir zumindest kurz anschauen wollen: kontinuierliche Hopfieldnetze. Hier wird<br />

die Aktivierung nicht mehr durch die binäre Schwellenwertfunktion berechnet, sondern<br />

durch die Fermifunktion mit Temperaturparameter (Abb. 8.4 auf der folgenden<br />

Seite).<br />

Auch hier ist das Netz für symmetrische Gewichtsmatrizen mit Nullen auf der Diagonalen<br />

stabil.<br />

Hopfield selbst nennt als Anwendungsbeispiel für kontinuierliche Hopfieldnetze, recht<br />

gute Lösungen für das NP-harte Travelling Salesman Problem zu finden [HT85]. Nach<br />

einem in [Zel94] beschriebenen Feldversuch kann dieses Statement aber nicht ohne<br />

weiteres aufrecht erhalten werden. Es gibt heute aber ohnehin schnellere Algorithmen,<br />

um gute Lösungen für dieses Problem zu finden, weswegen das Hopfieldnetz auch hier<br />

keine Anwendung mehr finden kann.


f(x)<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

Fermi−Funktion mit Temperaturparameter<br />

−4 −2 0 2 4<br />

Abbildung 8.4: Die bereits bekannte Fermifunktion mit verschiedenen Variationen des<br />

Temperaturparameters.<br />

Übungsaufgaben<br />

Aufgabe 15. Geben Sie den Speicherbedarf für ein Hopfieldnetz mit |K| = 1000<br />

Neuronen an, wenn die Gewichte wi,j als ganze Zahlen gespeichert werden sollen. Kann<br />

der Wertebereich der Gewichte eingegrenzt werden, um Speicher zu sparen?<br />

Aufgabe 16. Berechnen Sie die Gewichte wi,j für ein Hopfieldnetz unter Verwendung<br />

der Trainingsmenge<br />

P ={(−1, −1, −1, −1, −1, 1);<br />

(−1, 1, 1, −1, −1, −1);<br />

(1, −1, −1, 1, −1, 1)}.<br />

x


Kapitel 9<br />

Learning Vector Quantization<br />

Learning Vector Quantization ist ein Lernverfahren mit dem Ziel, in<br />

vordefinierte Klassen unterteilte Trainingsmengen von Vektoren durch wenige<br />

Repräsentanten-Vektoren möglichst gut wiederzugeben. Ist dies geschafft, so<br />

ist eine einfache Zuordnung bis dato unbekannter Vektoren in eine dieser<br />

Klassen möglich.<br />

Allmählich neigt sich Teil II dieser Arbeit dem Ende entgegen – und so möchte ich auch<br />

ein Kapitel für den Abschluss dieses Teils schreiben, welches einen schönen Übergang<br />

darstellt: Ein Kapitel über die von Teuvo Kohonen beschriebene Learning Vector<br />

Quantization (Kurz: LVQ) [Koh89], welche man als verwandt mit den Self Organizing<br />

Feature Maps bezeichnen kann. Diese werden direkt im Anschluss beschrieben,<br />

nämlich im nächsten Kapitel, welches sich bereits in Teil III der Arbeit befindet, da<br />

SOMs unüberwacht lernen. Ich möchte also nach der Untersuchung von LVQ Abschied<br />

vom überwachten Lernen nehmen.<br />

Gleich im Voraus möchte ich ankündigen, dass es verschiedene Variationen von LVQ<br />

gibt, die ich zwar erwähnen, aber nicht genau darstellen werde – es ist mehr das Ziel<br />

dieses Kapitels, das zugrundeliegende Prinzip zu erforschen.<br />

9.1 Über Quantisierung<br />

Um die Learning Vector Quantization zu erforschen, sollten wir uns zunächst klarmachen,<br />

was denn Quantization, zu Deutsch Quantisierung ist, die man auch mit<br />

Diskretisierung bezeichnen kann.<br />

173


Jeder von uns kennt den diskreten Zahlenraum<br />

N = {1, 2, 3, . . .},<br />

in dem die natürlichen Zahlen liegen. Diskret bedeutet, dass dieser Raum aus voneinander<br />

abgetrennten Elementen besteht, die nicht miteinander verbunden sind. In<br />

unserem Beispiel sind diese Elemente eben diese Zahlen, denn in den natürlichen Zahlen<br />

gibt es ja beispielsweise keine Zahl zwischen 1 und 2. Kontinuierlich ist dagegen<br />

beispielsweise der Raum der reellen Zahlen R: Egal, wie nah man daraus zwei Zahlen<br />

wählt, es wird immer eine Zahl zwischen ihnen geben.<br />

Quantisierung bedeutet nun die Unterteilung eines kontinuierlichen Raums in diskrete<br />

Abschnitte: Indem man der reellen Zahl 2.71828 beispielsweise alle Nachkommastellen<br />

entfernt, könnte man diese Zahl der natürlichen Zahl 2 zuweisen. Hierbei ist klar, dass<br />

jede andere Zahl mit einer 2 vor dem Komma ebenfalls der natürlichen Zahl 2 zugewiesen<br />

würde, die 2 wäre also eine Art Repräsentant für alle reellen Zahlen im Intervall<br />

[2; 3).<br />

Zu beachten ist, dass wir einen Raum auch unregelmäßig quantisieren können: So wäre<br />

der Zeitstrahl einer Woche beispielsweise in Arbeitstage und Wochenende quantisierbar.<br />

Ein Spezialfall der Quantisierung ist die Digitalisierung: Im Fall der Digitalisierung<br />

sprechen wir immer von einer gleichmäßigen Quantisierung eines kontinuierlichen<br />

Raums in ein Zahlensystem zu einer bestimmten Basis. Geben wir beispielsweise Zahlen<br />

in den Computer ein, werden diese in das Binärsystem (Basis 2) digitalisiert.<br />

Definition 9.1 (Quantisierung). Unterteilung eines kontinuierlichen Raums in diskrete<br />

Abschnitte.<br />

Definition 9.2 (Digitalisierung). Gleichmäßige Quantisierung.<br />

9.2 LVQ unterteilt den Eingaberaum in separate Bereiche<br />

Nun können wir schon fast anhand des Namens beschreiben, was LVQ uns ermöglichen<br />

soll: Es soll einen Eingaberaum durch eine Menge von repräsentativen Vektoren in<br />

Klassen unterteilen, die ihn möglichst gut wiedergeben (Abb. 9.1 auf der rechten Seite).<br />

Jedes Element des Eingaberaums soll also einem Vektor als Repräsentanten, also einer<br />

Klasse zugeordnet werden können, wobei die Menge dieser Repräsentanten den ganzen<br />

Eingaberaum möglichst genau repräsentieren soll. Einen solchen Vektor nennt man<br />

Codebookvektor. Ein Codebookvektor ist dann der Repräsentant genau derjenigen


Abbildung 9.1: Beispielquantisierungen eines zweidimensionalen Eingaberaums. Die Linien stellen<br />

die Klassengrenzen dar, die × markieren die Codebookvektoren.<br />

Vektoren des Eingaberaums, die am nächsten bei ihm liegen, was den Eingaberaum in<br />

besagte diskrete Bereiche unterteilt.<br />

Hervorzuheben ist, dass wir im Voraus wissen müssen, wieviele Klassen wir haben und<br />

welches Trainingsbeispiel zu welcher Klasse gehört. Weiter ist wichtig, dass die Klassen<br />

nicht disjunkt sein müssen, sie dürfen sich also überlappen.<br />

Solche Unterteilungen der Daten in Klassen sind interessant bei vielen Problemstellungen,<br />

bei denen es nützlich ist, anstatt der unter Umständen riesigen Ursprungsmenge<br />

von Daten nur ein paar typische Vertreter zu betrachten – sei es, weil es weniger Aufwand<br />

ist, oder weil es an Genauigkeit einfach genügt.<br />

9.3 Benutzung von Codebookvektoren: Der nächste gewinnt<br />

Die Benutzung eines einmal angefertigten Satzes Codebookvektoren ist sehr einfach:<br />

Für einen Eingabevektor y entscheidet man die Klassenzugehörigkeit ganz einfach<br />

daran, welcher Codebookvektor am nächsten zu ihm liegt – die Codebookvektoren bilden<br />

also ein Voronoidiagramm in unserer Eingabemenge. Da jeder Codebookvektor


eindeutig einer Klasse zuzuordnen ist, ist hierdurch jeder Eingabevektor einer Klasse<br />

zugeordnet.<br />

9.4 Ausrichtung der Codebookvektoren<br />

Wie wir schon angedeutet haben, handelt es sich bei LVQ um ein überwachtes Lernverfahren.<br />

Wir besitzen also einen Teaching Input, der dem Lernverfahren sagt, ob ein<br />

Eingangsmuster richtig oder falsch klassifiziert wurde: Anders ausgedrückt müssen wir<br />

bereits im Vorhinein die Anzahl der zu repräsentierenden Klassen bzw. die Anzahl der<br />

Codebookvektoren kennen.<br />

Das Ziel des Lernvorganges ist also grob gesprochen, dass wir eine im Vorhinein bestimmte<br />

Anzahl zufällig initialisierter Codebookvektoren durch Trainingsbeispiele dazu<br />

bringen, die Trainingsdaten möglichst gut wiederzuspiegeln.<br />

9.4.1 Vorgehensweise beim Lernen<br />

Das Lernen funktioniert nach einem einfachen Schema. Man besitzt (da das Lernen<br />

überwacht ist) eine Menge P von |P | vielen Trainingsbeispielen. Wie wir außerdem<br />

schon wissen, sind auch die Klassen vordefiniert, man besitzt also weiterhin eine Klassenmenge<br />

C. Jeder Klasse ist ein Codebookvektor eindeutig zugeordnet, wir können<br />

also sagen, dass die Klassenmenge |C| viele Codebookvektoren C1, C2, . . . , C |C| enthält.<br />

Dies führt uns zum Aufbau der Trainingsbeispiele: Sie sind von der Form (p, c), enthalten<br />

also zum einen den Trainings-Eingabevektor p und zum anderen dessen Klassenzugehörigkeit<br />

c. Für die Klassenzugehörigkeit gilt hierbei<br />

c ∈ {1, 2, . . . , |C|},<br />

sie ordnet also das Trainingsbeispiel eindeutig einer Klasse bzw. einem Codebookvektor<br />

zu.<br />

Intuitiv könnte man zum Lernen nun sagen: „Wozu ein Lernverfahren? Wir rechnen<br />

den Durchschnitt aller Klassenmitglieder aus, platzieren dort deren Codebookvektor<br />

und gut.“ Dass unser Lernverfahren aber wesentlich mehr macht, werden wir gleich<br />

sehen.<br />

Wir wollen nun kurz die Schritte des grundsätzlichen LVQ-Lernverfahrens betrachten:


Initialisierung: Wir platzieren unseren Satz Codebookvektoren auf zufällige Orte im<br />

Eingaberaum.<br />

Trainingsbeispiel: Ein Trainingsbeispiel p aus unserer Trainingsmenge P wird gewählt<br />

und präsentiert.<br />

Abstandsmessung: Wir messen den Abstand ||p − C|| aller Codebookvektoren<br />

C1, C2, . . . , C |C| zu unserer Eingabe p.<br />

Gewinner: Der naheliegendste Codebookvektor gewinnt, also derjenige mit<br />

min ||p − Ci||.<br />

Ci∈C<br />

Lernvorgang: Der Lernvorgang findet durch die Regel<br />

∆Ci = η(t) · h(p, Ci) · (p − Ci) (9.1)<br />

Ci(t + 1) = Ci(t) + ∆Ci<br />

statt, die wir nun aufschlüsseln wollen.<br />

⊲ Der erste Faktor η(t) ist, wie wir schon oft gesehen haben, eine zeitabhängige<br />

Lernrate, die es uns ermöglicht, zwischen großen Lernschritten und Fine-Tuning<br />

zu differenzieren.<br />

⊲ Der letzte Faktor (p − Ci) ist offensichtlich die Richtung, in die wir den Codebookvektor<br />

verschieben.<br />

⊲ Kernstück aber ist die Funktion h(p, Ci): Sie trifft eine Fallunterscheidung.<br />

Zuweisung richtig: Der Gewinnervektor ist der Codebookvektor der Klasse, der<br />

p zugehörig ist. In diesem Fall liefert die Funktion positive Werte, der Codebookvektor<br />

bewegt sich auf das p zu.<br />

Zuweisung falsch: Der Gewinnervektor repräsentiert nicht die Klasse, der p zugehörig<br />

ist. Er bewegt sich daher von p weg.<br />

Wir sehen, dass wir die Funktion h nicht genau definiert haben. Aus gutem Grund:<br />

Ab hier teilt sich LVQ in verschiedene Nuancen auf, abhängig davon wie exakt h<br />

und die Lernrate bestimmt sein sollen (genannt LVQ1, LVQ2, LVQ3, OLVQ, etc).<br />

Die Unterschiede liegen beispielsweise in der Stärke der Codebookvektor-Bewegungen.<br />

Sie haben aber alle das gleiche hier dargestellte Grundprinzip gemeinsam, und wie<br />

angekündigt möchte ich sie nicht weiter betrachten – insofern schreibe ich auch keine<br />

formalen Definitionen zu obiger Lernregel und LVQ an sich auf.<br />

(9.2)


9.5 Verbindung zu <strong>Neuronale</strong>n <strong>Netze</strong>n<br />

Bis jetzt kann man sich trotz des Lernvorganges fragen, was denn LVQ mit <strong>Neuronale</strong>n<br />

<strong>Netze</strong>n zu tun hat. Man kann die Codebookvektoren als Neuronen mit festem Ort im<br />

Inputraum ansehen, ähnlich wie bei RBF-<strong>Netze</strong>n. Zudem ist es in der Natur oft so, dass<br />

ein Neuron pro Gruppe feuern darf (ein Gewinnerneuron, hier ein Codebookvektor),<br />

während alle anderen von ihm inhibiert werden.<br />

Ich setze das kurze Kapitel über Learning Vector Quantization an diese Stelle im Script,<br />

weil wir im folgenden Kapitel über Self Organizing Maps den Ansatz weiterverfolgen<br />

wollen: Wir werden weitere Eingaben mithilfe von im Eingangsraum verteilten Neuronen<br />

klassifizieren, nur, dass wir diesmal nicht wissen, welche Eingabe zu welcher Klasse<br />

gehört.<br />

Kommen wir nun zu den unüberwacht lernenden <strong>Netze</strong>n!<br />

Übungsaufgaben<br />

Aufgabe 17. Geben Sie eine Quantisierung an, die im 5-dimensionalen Einheitswürfel<br />

H alle Vektoren H ∈ H gleichmäßig in eine von 1024 Klassen einteilt.


Teil III<br />

Unüberwacht lernende<br />

Netzparadigmen<br />

179


Kapitel 10<br />

Self Organizing Feature Maps<br />

Ein Paradigma unüberwacht lernender <strong>Neuronale</strong>r <strong>Netze</strong>, welches einen<br />

Eingaberaum durch seine feste Topologie kartographiert und so selbstständig<br />

nach Ähnlichkeiten sucht. Funktion, Lernverfahren, Variationen und<br />

<strong>Neuronale</strong>s Gas.<br />

Betrachtet man die Konzepte biologischer <strong>Neuronale</strong>r <strong>Netze</strong> in der Einleitung, so kann<br />

man sich die Frage stellen, wie denn unser Gehirn die Eindrücke, die es täglich erhält,<br />

speichert und abruft – hier sei hervorgehoben, dass das Gehirn keine Trainingsbeispiele,<br />

also keine „gewünschte Ausgabe“ hat, und wo wir schon darüber nachdenken, merken<br />

wir, dass auch keine Ausgabe in diesem Sinne vorhanden ist: Unser Gehirn ist nicht<br />

wie eine Abbildung oder ein Perceptron, das Eingabewerte auf Ausgabewerte abbildet.<br />

Unser Gehirn reagiert auf Eingaben von außen mit Zustandsänderungen – diese sind<br />

sozusagen seine Ausgabe.<br />

Basierend auf diesem Grundsatz und der Frage nachgehend, wie biologische <strong>Neuronale</strong><br />

<strong>Netze</strong> sich selbst organisieren können, schuf Teuvo Kohonen in den 1980er Jahren<br />

seine Self Organizing Feature Maps [Koh82,Koh98], kurz Self Organizing Maps oder<br />

SOMs genannt – ein Paradigma <strong>Neuronale</strong>r <strong>Netze</strong>, in dem der Zustand des <strong>Netze</strong>s<br />

die Ausgabe ist, und das vollkommen unüberwacht, also ohne Teacher lernt.<br />

Im Unterschied zu anderen Netzparadigmen, welche wir bereits kennengelernt haben,<br />

stellt man bei SOMs keine Fragen danach, was die Neurone berechnen – man fragt<br />

nur, welches Neuron gerade aktiv ist. Dies ist biologisch sehr gut motiviert: Sind in<br />

der Biologie Neurone mit bestimmten Muskeln verbunden, interessiert es in aller Regel<br />

weniger, wie stark ein bestimmter Muskel kontrahiert wird, sondern welcher Muskel angesteuert<br />

wird. Anders ausgedrückt: Es interessiert nicht, was genau Neurone ausgeben,<br />

sondern welches Neuron etwas ausgibt. SOMs sind also wesentlich biologieverwandter<br />

als z.B. die FeedForward-<strong>Netze</strong>, die wir vermehrt für Rechenaufgaben nutzen.<br />

181


10.1 Aufbau einer Self Organizing Map<br />

SOMs haben – wie das Gehirn – typischerweise die Aufgabe, einen hochdimensionalen<br />

Input (N Dimensionen) auf Bereiche in einem niedrigdimensionalen Gitter (G Dimensionen)<br />

abzubilden, also sozusagen eine Karte von dem hochdimensionalen Raum zu<br />

zeichnen. Um diese Karte zu erschaffen, erhält die SOM einfach beliebig viele Punkte<br />

aus dem Inputraum. Die SOM wird während der Eingabe der Punkte versuchen,<br />

die Orte, auf denen die Punkte auftreten, so gut wie möglich mit ihren Neuronen abzudecken.<br />

Dies bedeutet insbesondere, dass jedes Neuron einem bestimmten Ort im<br />

Inputraum zuzuordnen ist.<br />

Diese Fakten sind zunächst etwas verwirrend, man muss sie kurz durchdenken. Es gibt<br />

also zwei Räume, in denen SOMs arbeiten:<br />

⊲ Den N-dimensionalen Eingaberaum und<br />

⊲ das G-dimensionale Gitter, auf dem die Neurone liegen bzw. das die Nachbarschaftsbeziehungen<br />

der Neurone und damit die Netztopologie angibt.<br />

Bei einem eindimensionalen Gitter könnten die Neurone beispielweise wie an einer Perlenkette<br />

aufgereiht sein, jedes Neuron würde genau zwei Nachbarn besitzen (bis auf<br />

die beiden End-Neurone). Ein zweidimensionales Gitter könnte eine rechtwinklige Anordnung<br />

von Neuronen sein (Abb. 10.1 auf der rechten Seite). Eine weitere denkbare<br />

Anordnung im zweidimensionalen wäre in einer Art Wabenform. Auch ungleichmäßige<br />

Topologien sind möglich, wenn auch nicht sehr häufig. Topologien mit mehr Dimensionen<br />

und wesentlich mehr Nachbarschaftsbeziehungen wären auch denkbar, werden<br />

aber aufgrund der mangelnden Visualisierungsfähigkeit nicht oft eingesetzt.<br />

Auch dann, wenn N = G gilt, sind die beiden Räume nicht gleich und müssen unterschieden<br />

werden – sie haben in diesem Spezialfall nur die gleiche Dimension.<br />

Wir werden die Funktionsweise einer Self Organizing Map nun zunächst kurz formal<br />

betrachten und dann an einigen Beispielen klarmachen.<br />

Definition 10.1 (SOM-Neuron). Ähnlich den Neuronen in einem RBF-Netz besitzt<br />

ein SOM-Neuron k eine feste Position ck (ein Zentrum) im Eingaberaum.<br />

Definition 10.2 (Self Organizing Map). Eine Self Organizing Map ist eine Menge K<br />

von SOM-Neuronen. Bei Eingabe eines Eingabevektors wird genau dasjenige Neuron<br />

k ∈ K aktiv, welches dem Eingabemuster im Eingaberaum am nächsten liegt. Die<br />

Dimension des Eingaberaumes nennen wir N.


Abbildung 10.1: Beispieltopologien einer Self Organizing Map – Oben eine eindimensionale Topologie,<br />

unten eine zweidimensionale.<br />

Definition 10.3 (Topologie). Die Neurone sind untereinander durch Nachbarschaftsbeziehungen<br />

verbunden. Diese Nachbarschaftsbeziehungen nennen wir Topologie. Die<br />

Topologie nimmt starken Einfluss auf das Training einer SOM. Sie wird durch die<br />

Topologiefunktion h(i, k, t) definiert, wobei i das Gewinnerneuron 1 ist, k das gerade<br />

zu adaptierende Neuron (hierzu kommen wir später noch) und t der Zeitschritt. Wir<br />

bezeichnen die Dimension der Topologie mit G.<br />

10.2 SOMs aktivieren immer das Neuron, was der Eingabe<br />

am nächsten liegt<br />

Wie viele andere <strong>Neuronale</strong> <strong>Netze</strong>, muss die SOM erst trainiert werden, bevor man sie<br />

benutzt. Betrachten wir aber vor dem Training noch die sehr einfache Funktionsweise<br />

einer fertigen Self Organizing Map, da sie einige Analogien zum Training besitzt. Die<br />

Funktionsweise setzt sich aus folgenden Schritten zusammen:<br />

Eingabe eines beliebigen Wertes p aus dem Eingangsraum R N .<br />

1 Wir werden noch erfahren, was ein Gewinnerneuron ist.


Abstandsberechnung von jedem Neuron k zu p durch eine Norm – also Berechnung<br />

von ||p − ck||.<br />

Ein Neuron wird aktiv, nämlich genau das Neuron i mit dem kürzesten oben berechneten<br />

Abstand zur Eingabe – alle anderen Neurone sind nicht aktiv. Dieses Paradigma<br />

der Aktivität heißt auch Winner-Takes-All-Schema. Die Ausgabe, welche<br />

wir zu einer Eingabe von einer SOM erwarten, ist, welches Neuron aktiv wird.<br />

Viele Literaturstellen beschreiben die SOM wesentlich formaler: Es wird oft eine Eingabeschicht<br />

beschrieben, die in Richtung einer SOM-Schicht vollverknüpft ist. Die Eingabeschicht<br />

(N Neurone) leitet dann alle Eingaben an die SOM-Schicht weiter. Die<br />

SOM-Schicht ist in sich lateral vollverknüpft, so dass sich ein Gewinnerneuron herausbilden<br />

und die anderen Neurone inhibieren kann. Ich finde diese Art, eine SOM zu<br />

beschreiben, nicht sehr anschaulich und habe versucht, den Netzaufbau hier anschaulicher<br />

zu beschreiben.<br />

Nun ist die Frage, welches Neuron bei welcher Eingabe aktiv wird – und genau dies ist<br />

die Frage, die uns das Netz während des Trainings von alleine beantwortet.<br />

10.3 Training bringt die SOM-Topologie dazu, den<br />

Eingaberaum abzudecken<br />

Das Training einer SOM ist ähnlich überschaubar wie die eben beschriebene Funktionsweise.<br />

Es gliedert sich im Wesentlichen in fünf Schritte, die teilweise deckungsgleich<br />

mit denen der Funktionsweise sind.<br />

Initialisierung: Start des <strong>Netze</strong>s mit zufälligen Neuronenzentren ck ∈ R N aus dem<br />

Eingangsraum.<br />

Anlegen eines Eingangsmusters: Es wird ein Stimulus, also ein Punkt p aus dem<br />

Eingangsraum R N gewählt. Dieser Stimulus wird nun in das Netz eingegeben.<br />

Abstandsmessung: Für jedes Neuron k im Netz wird nun der Abstand ||p − ck|| bestimmt.<br />

Winner takes all: Es wird das Gewinnerneuron i ermittelt, welches den kleinsten<br />

Abstand zu p besitzt, das also der Bedingung<br />

||p − ci|| ≤ ||p − ck|| ∀ k = i<br />

genügt. Wie aus der Bedingung ersichtlich, kann man bei mehreren Gewinnerneuronen<br />

eines nach Belieben wählen.


Adaption der Zentren: Die Zentren der Neurone werden innerhalb des Eingangsraumes<br />

nach der Vorschrift 2<br />

∆ck = η(t) · h(i, k, t) · (p − ck),<br />

versetzt, wobei die Werte ∆ck einfach auf die bisherigen Zentren addiert werden.<br />

Aus dem letzten Faktor wird bereits offensichtlich, dass die Ortsänderung der<br />

Neurone k proportional zu der Entfernung zum eingegebenen Muster p und wie<br />

gewohnt zu einer zeitabhängigen Lernrate η(t) ist. Die oben besprochene Topologie<br />

des <strong>Netze</strong>s nimmt ihren Einfluss durch die Funktion h(i, k, t), die wir im<br />

Folgenden erforschen werden.<br />

Definition 10.4 (SOM-Lernregel). Eine SOM wird trainiert, indem ihr ein Eingabemuster<br />

präsentiert und das Gewinnerneuron dazu ermittelt wird. Das Gewinnerneuron<br />

und seine durch die Topologiefunktion definierten Nachbarneuronen adaptieren dann<br />

ihre Zentren nach der Vorschrift<br />

∆ck = η(t) · h(i, k, t) · (p − ck), (10.1)<br />

ck(t + 1) = ck(t) + ∆ck(t). (10.2)<br />

10.3.1 Die Topologiefunktion bestimmt, wie stark ein lernendes Neuron<br />

seine Nachbarn beeinflusst<br />

Die Topologiefunktion h ist nicht auf dem Eingangsraum, sondern auf dem Gitter<br />

definiert und stellt die Nachbarschaftsbeziehungen zwischen den Neuronen dar – also<br />

die Topologie des <strong>Netze</strong>s. Sie kann zeitabhängig sein (und ist es auch oft) – dies erklärt<br />

den Parameter t. Der Parameter k ist der durch alle Neurone laufende Index, und der<br />

Parameter i ist der Index des Gewinnerneurons.<br />

Prinzipiell ist der Sinn der Funktion, einen großen Wert anzunehmen, falls k Nachbar<br />

des Gewinners oder gar der Gewinner selbst ist, und kleine Werte, falls nicht. Schärfer<br />

definiert: Die Topologiefunktion muss unimodal sein, also genau ein Maximum besitzen<br />

– dieses Maximum muss beim Gewinnerneuron i liegen, das zu sich selbst natürlich die<br />

Entfernung 0 hat.<br />

Zusätzlich macht es uns die Zeitabhängigkeit beispielsweise möglich, die Nachbarschaft<br />

mit der Zeit schrumpfen zu lassen.<br />

2 Achtung: Viele Quellen schreiben diese Vorschrift ηh(p − ck), was dem Leser fälschlicherweise suggeriert,<br />

dass es sich bei h um eine Konstante handelt. Dieses Problem ist einfach lösbar, indem man die<br />

Multiplikationspunkte · nicht weglässt.


i <br />

1 <br />

k<br />

<br />

<br />

k<br />

<br />

<br />

i <br />

<br />

<br />

<br />

2.23<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Abbildung 10.2: Beispiel-Abstände einer eindimensionalen SOM-Topologie (oben) und einer zweidimensionalen<br />

SOM-Topologie (unten) zwischen zwei Neuronen i und k. Im unteren Fall bilden wir<br />

den Euklidischen Abstand (im zweidimensionalen äquivalent zum Satz des Pythagoras). Im oberen<br />

Fall wird einfach die diskrete Weglänge zwischen i und k abgezählt. In beiden Fällen habe ich der<br />

Einfachheit halber eine feste Gitterkantenlänge von 1 gefordert.<br />

Um große Werte für Nachbarn von i und kleine Werte für Nicht-Nachbarn ausgeben zu<br />

können, braucht die Funktion h eine Art Abstandsbegriff auf dem Gitter, irgendwoher<br />

muss sie also wissen, wie weit i und k auf dem Gitter voneinander entfernt sind. Es<br />

gibt verschiedene Methoden zur Berechnung des Abstandes.<br />

Hierfür könnte bei einem zweidimensionalen Gitter z.B. der euklidische Abstand (unterer<br />

Teil der Abb. 10.2) verwendet werden oder bei einem eindimensionalen Gitter<br />

einfach die Anzahl der Verbindungen zwischen den Neuronen i und k (oberer Teil<br />

derselben Abbildung).<br />

Definition 10.5 (Topologiefunktion). Die Topologiefunkton h(i, k, t) beschreibt die<br />

Nachbarschaftsbeziehungen in der Topologie. Sie kann eine beliebige unimodale Funktion<br />

sein, die maximal wird, wenn i = k gilt. Eine Zeitabhängigkeit ist optional, wird<br />

aber oft verwendet.


10.3.1.1 Vorstellung gängiger Abstands- und Topologiefunktionen<br />

Eine gängige Abstandsfunktion wäre beispielsweise die uns schon bekannte Gaußglocke<br />

(siehe auch Abb. 10.3 auf der folgenden Seite). Sie ist unimodal mit einem Maximum<br />

bei 0, zusätzlich kann sie durch ihren Parameter σ in ihrer Breite verändert<br />

werden, was wir für die Realisierung der mit der Zeit schrumpfenden Nachbarschaft<br />

nutzen können: Wir beziehen die Zeitabhängigkeit einfach auf das σ, erhalten also ein<br />

monoton sinkendes σ(t). Unsere Topologiefunktion könnte dann wie folgt aussehen:<br />

h(i, k, t) = e<br />

<br />

− ||g i −g k ||2<br />

2·σ(t) 2<br />

<br />

, (10.3)<br />

wobei hier gi und gk die Positionen der Neurone auf dem Gitter sind, nicht im Eingaberaum,<br />

welche wir mit ci und ck bezeichnen würden.<br />

Weitere Funktionen, die anstatt der Gaußfunktion eingesetzt werden können, sind<br />

zum Beispiel die Kegelfunktion, die Zylinderfunktion oder die Mexican-Hat-<br />

Funktion (Abb. 10.3 auf der folgenden Seite). Die Mexican-Hat-Funktion bietet hierbei<br />

eine besondere biologische Motivation: Sie stößt durch ihre negativen Stellen manche<br />

Neurone in der Umgebung des Gewinnerneurons ab, was man auch in der Natur<br />

schon beobachtet hat. Dies kann für schärfere Abgrenzung der Kartenbereiche sorgen<br />

– genau aus diesem Grund wurde sie auch von Teuvo Kohonen selbst vorgeschlagen.<br />

Diese Regulierungseigenschaft ist aber für die Funktion der Karte an sich nicht notwendig,<br />

es kann sogar passieren, dass dadurch die Karte divergiert, also gewissermaßen<br />

explodiert.<br />

10.3.2 Lernraten und Nachbarschaften können über die Zeit monoton<br />

sinken<br />

Damit in den späteren Phasen des Trainings nicht mehr die ganze Karte sehr stark in<br />

Richtung eines neuen Musters gezogen wird, wird bei den SOMs oft mit zeitlich monoton<br />

sinkenden Lernraten und Nachbarschaftsgrößen gearbeitet. Sprechen wir zunächst<br />

über die Lernrate: Typische Größenordnungen für den Zielwert der Lernrate sind zwei<br />

Größenordnungen kleiner als der Startwert, beispielsweise könnte gelten<br />

0.01 < η < 0.6.<br />

Diese Größe ist aber auch wieder abhängig zu machen von der Netztopologie bzw. der<br />

Größe der Nachbarschaft.


h(r)<br />

f(x)<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

Gauss−Glocke in 1D<br />

0<br />

−2 −1.5 −1 −0.5 0 0.5 1 1.5 2<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

r<br />

Zylinderfunktion<br />

−4 −2 0 2 4<br />

x<br />

f(x)<br />

f(x)<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

3.5<br />

3<br />

2.5<br />

2<br />

1.5<br />

1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

Kegelfunktion<br />

−4 −2 0 2 4<br />

−1.5<br />

−3 −2 −1 0 1 2 3<br />

x<br />

Mexican Hat Function<br />

Abbildung 10.3: Gaußglocke, Kegelfunktion, Zylinderfunktion und die von Kohonen vorgeschlagene<br />

Mexican-Hat-Funktion als Beispiele für Topologiefunktionen einer SOM.<br />

x


Eine sinkende Nachbarschaftsgröße kann, wie wir gesehen haben, beispielsweise mit<br />

einem zeitabhängig monoton sinkenden σ bei Benutzung der Gaußglocke in der Topologiefunktion<br />

realisiert werden.<br />

Der Vorteil bei einer sinkenden Nachbarschaftsgröße ist, dass ein sich bewegendes<br />

Neuron zu Anfang viele Neurone in seiner Umgebung „mitzieht“, sich das zufällig<br />

initialisierte Netz also am Anfang schnell und sauber entfalten kann. Zum Ende des<br />

Lernvorganges hin werden nur noch wenige Neurone auf einmal beeinflusst, was das<br />

Netz im Gesamten steifer macht, aber ein gutes „fine tuning“ der einzelnen Neurone<br />

ermöglicht.<br />

Zu beachten ist weiterhin, dass stets<br />

h · η ≤ 1<br />

gelten muss, sonst würden Neurone andauernd am aktuellen Trainingsbeispiel vorbeischießen.<br />

Doch nun genug der Theorie – betrachten wir eine SOM im Einsatz!<br />

10.4 Beispiele für die Funktionsweise von SOMs<br />

Beginnen wir mit einem einfachen, im Kopf nachvollziehbaren Beispiel.<br />

In diesem Beispiel verwenden wir einen zweidimensionalen Eingangsraum, es gilt also<br />

N = 2. Die Gitterstruktur sei eindimensional (G = 1). Weiterhin soll unsere Beispiel-<br />

SOM aus insgesamt 7 Neuronen bestehen und die Lernrate sei η = 0.5.<br />

Auch unsere Nachbarschaftsfunktion halten wir recht einfach, um das Netz im Kopf<br />

nachvollziehen zu können:<br />

⎧<br />

⎪⎨ 1 k direkter Nachbar von i,<br />

h(i, k, t) = 1<br />

⎪⎩<br />

0<br />

k = i,<br />

sonst.<br />

(10.4)<br />

Wir betrachten jetzt das soeben beschriebene Netz mit zufälliger Initialisierung der<br />

Zentren (Abb. 10.4 auf der folgenden Seite) und geben ein Trainingsmuster p ein.<br />

Offensichtlich liegt das Eingangsmuster in unserem Beispiel dem Neuron 3 am nächsten<br />

– dieses ist also der Gewinner.


1<br />

4 ❃❃❃<br />

❃❃❃<br />

❃❃<br />

<br />

3<br />

7<br />

☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞<br />

2<br />

6<br />

<br />

<br />

p 5<br />

Abbildung 10.4: Darstellung des zweidimensionalen Eingaberaumes (links) und des eindimensionalen<br />

Topologieraumes (rechts) einer Self Organizing Map. Neuron 3 ist das Gewinnerneuron, da es p<br />

am nächsten liegt. Die Nachbarn von 3 in der Topologie sind die Neurone 2 und 4. Die Pfeile markieren<br />

die Bewegung des Gewinnerneurons und seiner Nachbarn in Richtung des Trainingsbeispiels<br />

p.<br />

Die eindimensionale Topologie des <strong>Netze</strong>s ist hier zur Veranschaulichung durch die gepunkteten<br />

Linien in den Eingangsraum aufgetragen. Die Pfeile markieren die Bewegung des Gewinners und<br />

seiner Nachbarn auf das Muster zu.<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7


Wir erinnern uns an die Lernvorschrift für SOMs<br />

∆ck = η(t) · h(i, k, t) · (p − ck)<br />

und arbeiten die drei Faktoren von hinten nach vorne ab:<br />

Lernrichtung: Wir erinnern uns, dass die Neuronenzentren ck Vektoren im Eingangsraum<br />

sind, genau wie das Muster p. Der Faktor (p − ck) gibt uns also den Vektor<br />

vom Neuron k zum Muster p an. Dieser wird nun mit verschiedenen Skalaren<br />

multipliziert:<br />

Unsere Topologiefunktion h besagt, dass nur das Gewinnerneuron und seine beiden<br />

nächsten Nachbarn (hier: 2 und 4) lernen dürfen, indem sie bei allen anderen<br />

Neuronen 0 ausgibt. Eine Zeitabhängigkeit ist nicht gegeben. Unser Vektor (p −<br />

ck) wird also entweder mit 1 oder mit 0 multipliziert.<br />

Die Lernrate gibt, wie immer, die Stärke des Lernens an. Es gilt wie schon gesagt η =<br />

0.5 – wir kommen also insgesamt auf das Ergebnis, dass sich das Gewinnerneuron<br />

und seine Nachbarn (hier: Die Neurone 2, 3 und 4) dem Muster p um die Hälfte<br />

des Weges nähern (dies markieren die Pfeile in der Abbildung).<br />

Obwohl das Zentrum von Neuron 7 vom Eingangsraum aus gesehen wesentlich näher<br />

am Eingangsmuster p liegt als das Neuron 2, lernt das Neuron 2, und das Neuron 7 nicht.<br />

Ich möchte daran noch einmal deutlich machen, dass die Netztopologie bestimmt,<br />

welches Neuron mitlernen darf, und nicht die Lage im Eingangsraum. Dies ist genau der<br />

Mechanismus, durch den eine Topologie einen Eingangsraum aussagekräftig abdecken<br />

kann, ohne mit ihm auf irgendeine Weise verwandt sein zu müssen.<br />

Nach der Adaption der Neurone 2, 3 und 4 wird das nächste Muster angelegt, und so<br />

weiter, und so fort. Ein weiteres Beispiel, wie sich eine solche eindimensionale SOM<br />

im zweidimensionalen Inputraum bei gleichverteilten Inputmustern über die Zeit entwickeln<br />

kann, sehen wir an der Abbildung 10.5 auf Seite 193.<br />

Endzustände von ein- und zweidimensionalen SOMs bei verschieden geformten Inputräumen<br />

sehen wir in der Abbildung 10.6 auf Seite 194. Wie wir sehen, sind nicht alle<br />

Inputräume durch jede Netztopologie schön abdeckbar, es gibt sogenannte freiliegende<br />

Neurone – Neurone, welche in einem Bereich liegen, in dem kein Inputmuster je aufgetreten<br />

ist. Eine eindimensionale Topologie produziert in der Regel weniger freiliegende<br />

Neurone als eine zweidimensionale: Beispielsweise beim Training auf ringförmig angeordnete<br />

Eingabemuster ist es bei einer zweidimensionalen quadratischen Topologie so<br />

gut wie unmöglich, die freiliegenden Neurone in der Mitte des Rings zu verhindern – diese<br />

werden ja während des Trainings in jede Richtung gezogen, so dass sie schlussendlich<br />

einfach in der Mitte bleiben. Das macht die eindimensionale Topologie aber keineswegs


zur Optimaltopologie, da sie nur weniger komplexe Nachbarschaftsbeziehungen finden<br />

kann als eine mehrdimensionale.<br />

10.4.1 Topologische Defekte sind Fehlentfaltungen der SOM<br />

Es kann während des Entfaltens einer SOM vorkommen, dass diese einen Topologischen<br />

Defekt (Abb. 10.7 auf Seite 195) bildet, sich also nicht richtig entfaltet.<br />

Ein Topologischer Defekt kann am besten mit dem Wort „Verknotung“ beschrieben<br />

werden.<br />

Ein Mittel gegen Topologische Defekte kann sein, die Startwerte für die Nachbarschaftsgröße<br />

zu erhöhen, denn je komplexer die Topologie ist (bzw. je mehr Nachbarn jedes<br />

Neuron besitzt, man könnte ja auch dreidimensionale oder wabenförmige zweidimensionale<br />

Topologien erzeugen) desto schwerer ist es für eine zufällig initialisierte Karte,<br />

sich zu entfalten.<br />

10.5 Man kann die Auflösung einer SOM ortsabhängig<br />

dosieren<br />

Wir haben gesehen, dass eine SOM trainiert wird, indem hintereinander immer wieder<br />

Eingabemuster aus dem Eingangsraum R N eingegeben werden, so dass sich die SOM<br />

an diesen Mustern ausrichten und diese kartographieren wird. Es kann nun vorkommen,<br />

dass wir eine bestimmte Untermenge U des Eingaberaums genauer kartographiert haben<br />

möchten als den Rest.<br />

Die Lösung dieses Problems kann mit SOMs denkbar einfach realisiert werden: Wir präsentieren<br />

der SOM während des Trainings ganz einfach überproportional viele Eingabemuster<br />

aus diesem Bereich U. Werden der SOM mehr Trainingsmuster aus U ⊂ R N<br />

präsentiert als aus dem Rest R N \ U, so werden sich dort auch mehr Neurone zusammenfinden,<br />

während sich die restlichen Neurone auf R N \U dünner verteilen (Abb. 10.8<br />

auf Seite 196).<br />

Wie in der Abbildung ersichtlich, kann so der Rand der SOM etwas deformiert werden<br />

– dies ist ausgleichbar, indem man dem Rand des Inputraumes ebenfalls eine etwas<br />

höhere Wahrscheinlichkeit zuweist, von Trainingsmustern getroffen zu werden (eine<br />

Taktik, die man sowieso oft anwendet, um mit den SOMs besser „in die Ecken zu<br />

kommen“).


Abbildung 10.5: Verhalten einer SOM mit eindimensionaler Topologie (G = 1) nach Eingabe von<br />

0, 100, 300, 500, 5000, 50000, 70000 und 80000 zufällig verteilten Eingabemustern p ∈ R 2 . η fiel<br />

während des Trainings von 1.0 auf 0.1, der σ-Parameter der als Nachbarschaftsmaß eingesetzten<br />

Gauß-Funktion von 10.0 auf 0.2.


Abbildung 10.6: Endzustände von eindimensionalen (linke Spalte) und zweidimensionalen (rechte<br />

Spalte) SOMs auf verschieden abgedeckten Inputräumens. Genutzt wurden bei eindimensionaler<br />

Topologie 200 Neurone, bei zweidimensionaler 10 × 10 Neurone und bei allen Karten 80.000<br />

Eingabemuster.


Abbildung 10.7: Ein Topologischer Defekt in einer zweidimensionalen SOM.<br />

Auch wird oft bei den Rand- bzw. Eckneuronen eine höhere Lernrate angewandt, da sie<br />

durch die Topologie nur nach innen gezogen werden - auch dies sorgt für eine signifikant<br />

bessere Eckabdeckung.<br />

10.6 Anwendung von SOMs<br />

Self Organizing Maps und ihre Variationen haben eine Vielzahl von Anwendungsgebieten<br />

in Bezug auf die biologisch inspirierte assoziative Speicherung von Daten.<br />

Beispielsweise ist es gelungen, auf einer SOM mit einer zweidimensionalen diskreten<br />

Gittertopologie die verschiedenen Phoneme der Finnischen Sprache abzubilden und so<br />

Nachbarschaften zu finden (eine SOM macht ja nichts anderes, als Nachbarschaftsbeziehungen<br />

zu finden). Man versucht also wieder, einen hochdimensionalen Raum auf einen<br />

niederdimensionalen Raum (die Topologie) herabzubrechen, schaut, ob sich irgendwelche<br />

Strukturen herausbilden – und siehe da: Es bilden sich klar definierte Bereiche für<br />

die einzelnen Phoneme heraus.


Abbildung 10.8: Training einer SOM mit G = 2 auf einen zweidimensionalen Inputraum. Links<br />

war die Wahrscheinlichkeit für jede Koordinate des Inputraumes, zum Trainingsmuster zu werden,<br />

gleich. Rechts war sie für den zentralen Kreis im Inputraum mehr als zehnmal so groß wie für<br />

den Rest des Inputraumes (sichtbar an der größeren Musterdichte im Hintergrund). Offensichtlich<br />

drängen sich die Neurone in diesem Kreis viel stärker und der restliche Bereich ist etwas undichter<br />

abgedeckt, aber immer noch jeweils einigermaßen gleichmäßig. Beide SOMs wurden mit 80.000<br />

Trainingsbeispielen und abfallendem η (1 → 0.2) sowie abfallendem σ (5 → 0.5) trainiert.


Teuvo Kohonen selbst hat sich die Mühe gemacht, eine Vielzahl von Papern, welche<br />

seine SOMs erwähnen, nach Schlüsselwörtern zu durchsuchen. In diesem großen<br />

Eingangsraum besetzen jetzt die einzelnen Paper einzelne Positionen, je nach Schlüsselwortvorkommen.<br />

Kohonen hat dann eine SOM mit G = 2 kreiert und damit den von<br />

ihm erstellten hochdimensionalen „Paper-Raum“ durch sie kartographieren lassen.<br />

Man kann also ein Paper, an dem man Gefallen findet, in die fertig trainierte SOM<br />

eingeben und schauen, welches Neuron in der SOM davon aktiviert wird. Wahrscheinlich<br />

wird man feststellen, dass man an den in der Topologie benachbarten Papern auch<br />

Gefallen findet. Diese Art von Gehirn-ähnlicher kontextbasierter Suche funktioniert<br />

noch bei vielen anderen Inputräumen.<br />

Festzuhalten ist, dass das System selbst festlegt, was innerhalb der Topologie benachbart,<br />

also ähnlich ist – genau das macht es so interessant.<br />

An diesem Beispiel ist direkt ersichtlich, dass die Lage c der Neurone im Inputraum<br />

nicht aussagekräftig ist. Interessant ist es vielmehr, nun zu schauen, welches Neuron bei<br />

Eingabe eines bis jetzt unbekannten Inputmusters aktiv wird. Man kann als nächstes<br />

schauen, bei welchen bisherigen Eingaben genau dieses Neuron ebenfalls aktiv war –<br />

und hat sofort eine Gruppe von einander sehr ähnlichen Eingaben entdeckt. Je weiter<br />

nun Eingaben innerhalb der Topologie auseinander liegen, um so weniger Gemeinsamkeiten<br />

haben sie. Die Topologie bildet also quasi eine Karte der Merkmale der Eingaben<br />

– reduziert auf anschaulich wenige Dimensionen im Vergleich zur Inputdimension.<br />

Oftmals ist die Topologie einer SOM daher zweidimensional, da sie sich so sehr gut<br />

visualisieren lässt, während der Eingaberaum sehr hochdimensional sein kann.<br />

10.6.1 Mit SOMSs kann man Zentren für RBF-Neurone finden<br />

SOMs richten sich genau auf die Orte der ausgehenden Eingaben aus – demzufolge<br />

werden sie z.B. gerne genutzt, um die Zentren eines RBF-<strong>Netze</strong>s zu wählen. Das Paradigma<br />

der RBF-<strong>Netze</strong> haben wir bereits in Kapitel 6 kennengelernt.<br />

Wie wir bereits gesehen haben, kann man sogar steuern, welche Bereiche des Inputraums<br />

mit höherer Auflösung abgedeckt werden sollen – oder im Zusammenhang mit<br />

RBF-<strong>Netze</strong>n gesprochen, welche Bereiche unserer Funktion das RBF-Netz mit mehr<br />

Neuronen, also genauer bearbeiten soll. Als zusätzliches nützliches Merkmal der Kombination<br />

aus RBF-Netz und SOM kann man die durch die SOM erhaltene Topologie<br />

nutzen, um beim schlussendlichen Training eines Neurons des RBF-<strong>Netze</strong>s „benachbarte“<br />

RBF-Neurone auf verschiedene Weisen mit zu beeinflussen.


Abbildung 10.9: Eine Figur, die verschiedene Unterräume des eigentlichen Eingaberaums zu verschiedenen<br />

Orten ausfüllt und daher durch eine SOM nur schwer ausgefüllt werden kann.<br />

Viele Simulatoren <strong>Neuronale</strong>r <strong>Netze</strong> bieten hierfür eine zusätzliche sogenannte SOM-<br />

Schicht im Zusammenhang mit der Simulation von RBF-<strong>Netze</strong>n an.<br />

10.7 Variationen von SOMs<br />

Für verschiedene Variationen der Repräsentationsaufgaben gibt es auch verschiedene<br />

Variationen der SOMs:<br />

10.7.1 Ein <strong>Neuronale</strong>s Gas ist eine SOM ohne feste Topologie<br />

Das <strong>Neuronale</strong> Gas ist eine Variation der Self Organizing Maps von Thomas Martinetz<br />

[MBS93], die aus der Schwierigkeit heraus entstanden ist, komplizierte Inputformationen<br />

abzubilden, welche sich teilweise nur in Unterräumen des Inputraums<br />

abspielen oder die Unterräume sogar wechseln (Abb. 10.9).<br />

Die Idee von einem <strong>Neuronale</strong>n Gas besteht grob gesprochen darin, ein SOM ohne<br />

Gitterstruktur zu realisieren. Die Lernschritte sehen aufgrund der Abstammung von<br />

den SOMs den SOM-Lernschritten auch sehr ähnlich, haben aber einen zusätzlichen<br />

Zwischenschritt:


⊲ Wieder zufällige Initialisierung der ck ∈ R n<br />

⊲ Wahl und Präsentation eines Musters aus dem Eingangsraum p ∈ R n<br />

⊲ Neuronenabstandsmessung<br />

⊲ Ermittlung des Gewinnerneurons i<br />

⊲ Zwischenschritt: Bilden einer nach der Entfernung zum Gewinnerneuron aufsteigend<br />

sortierten Liste L von Neuronen. Erstes Neuron in der Liste L ist also das<br />

Neuron, was dem Gewinnerneuron am nächsten liegt.<br />

⊲ Ändern der Zentren durch die bekannte Vorschrift, aber der leicht modifizierten<br />

Topologiefunktion<br />

hL(i, k, t).<br />

Die gegenüber der ursprünglichen Funktion h(i, k, t) modifizierte Funktion hL(i, k, t)<br />

sieht nun jeweils die ersten Elemente der Liste als Nachbarschaft des Gewinnerneurons<br />

i an. Dies hat direkt zur Folge, dass sich – ähnlich der frei schwebenden Moleküle in<br />

einem Gas – die Nachbarschaftsbeziehungen zwischen den Neuronen jederzeit ändern<br />

können, auch die Anzahl der Nachbarn ist nahezu beliebig. Die Entfernung innerhalb<br />

der Nachbarschaft wird nun durch die Entfernung innerhalb des Eingaberaums repräsentiert.<br />

Die Masse der Neurone kann durch eine stetig sinkende Nachbarschaftsgröße genauso<br />

versteift werden, wie eine SOM – sie hat aber keine feste Dimension, sondern kann<br />

jeweils die Dimension annehmen, die lokal gerade gebraucht wird, was sehr vorteilhaft<br />

sein kann.<br />

Von Nachteil kann sein, dass nicht durch ein festes Gitter erzwungen wird, dass der<br />

Inputraum relativ gleichmäßig abgedeckt wird, und so Löcher in der Abdeckung entstehen<br />

oder Neurone vereinsamen können.<br />

Es bleibt wie immer in der Pflicht des Anwenders, diese Arbeit bei allen Praxistipps<br />

nicht als Katalog für Patentlösungen zu verstehen, sondern selbst die Vor- und Nachteile<br />

zu erforschen.<br />

Anders als bei einer SOM muss sich die Nachbarschaft in einem <strong>Neuronale</strong>n Gas anfangs<br />

auf die Gesamtheit aller Neurone beziehen, weil sonst einige Ausreißer der zufälligen<br />

Initialisierung vielleicht nie in die Nähe der restlichen Gruppe kommen. Dies<br />

zu vergessen, ist ein sehr beliebter Fehler bei der Implementierung eines <strong>Neuronale</strong>n<br />

Gases.<br />

Mit einem <strong>Neuronale</strong>n Gas kann man auch eine sehr komplexe Inputform lernen,<br />

da wir nicht an ein festdimensionales Gitter gebunden sind. Rechenaufwändig werden


kann aber das dauernde Sortieren der Liste (hier kann es viel bringen, die Liste gleich<br />

in einer von sich aus geordneten Datenstruktur abzulegen). Ein Beispiel für solche<br />

Inputformen findet sich in Abb. 10.9 auf Seite 198.<br />

Definition 10.6 (<strong>Neuronale</strong>s Gas). Ein <strong>Neuronale</strong>s Gas unterscheidet sich von einer<br />

SOM durch eine vollständig dynamische Nachbarschaftsfunktion. In jedem Lernzyklus<br />

wird neu entschieden, welche Neurone die Nachbarneurone des Gewinnerneurons sind.<br />

In der Regel ist das Kriterium für diese Entscheidung die Entfernung der Neurone zum<br />

Gewinnerneuron im Inputraum.<br />

10.7.2 Eine Multi-SOM besteht aus mehreren separaten SOMs<br />

Um eine weitere Variante der SOMs zu präsentieren, möchte ich eine erweiterte Problemstellung<br />

formulieren: Was machen wir bei Eingabemustern, von denen wir vorher<br />

wissen, dass sie sich in verschiedene (vielleicht disjunkte) Bereiche abgrenzen?<br />

Die Idee hierzu ist, nicht nur eine SOM zu nehmen, sondern gleich mehrere: Eine<br />

Multi Self Organizing Map, kurz M-SOM [GKE01b, GKE01a, GS06]. Die SOMs<br />

müssen nicht die gleiche Topologie oder Größe haben, eine M-SOM ist nur ein Zusammenschluss<br />

aus M vielen SOMs.<br />

Der Lernvorgang funktioniert analog zu den einfachen SOMs – allerdings werden nur<br />

die Neurone, die zum Gewinner-SOM eines jeden Trainingsschritts gehören, adaptiert.<br />

Mit zwei SOMs ist es also einfach, zwei disjunkte Cluster Daten zu repräsentieren,<br />

selbst wenn einer davon nicht in allen Dimensionen des Eingangsraumes R N vertreten<br />

ist. Die einzelnen SOMs spiegeln sogar genau die Cluster wieder.<br />

Definition 10.7 (Multi-SOM). Eine Multi-SOM ist nichts weiter als eine gleichzeitige<br />

Verwendung von M vielen SOMs.<br />

10.7.3 Ein Multi-<strong>Neuronale</strong>s Gas besteht aus mehreren separaten<br />

neuronalen Gasen<br />

Analog zum Multi-SOM haben wir hier wieder eine Menge von M vielen <strong>Neuronale</strong>n<br />

Gasen: ein Multi-<strong>Neuronale</strong>s Gas [GS06, SG06]. Dieses Konstrukt verhält sich<br />

analog zu <strong>Neuronale</strong>m Gas und M-SOM: Es werden wieder nur die Neurone adaptiert,<br />

die im Gewinner-Gas sind.<br />

Der Leser wird sich natürlich fragen, was denn ein Multi-<strong>Neuronale</strong>s Gas für Vorteile<br />

bringt, da bereits ein einzelnes <strong>Neuronale</strong>s Gas in der Lage ist, sich in Cluster zu


zerteilen und auch auf komplizierten Inputmustern mit wechselnder Dimension zu arbeiten.<br />

Das ist zwar grundsätzlich richtig, doch es gibt zwei gravierende Vorteile eines<br />

Multi-<strong>Neuronale</strong>n Gases gegenüber einem einfachen <strong>Neuronale</strong>n Gas.<br />

1. Bei mehreren Gasen kann man jedem Neuron direkt ansehen, zu welchem Gas<br />

es gehört. Das ist insbesondere bei Clustering-Aufgaben wichtig, für die Multi-<br />

<strong>Neuronale</strong> Gase in jüngster Zeit genutzt werden. Einfache <strong>Neuronale</strong> Gase können<br />

zwar auch Cluster finden und abdecken, man sieht aber nicht, welches Neuron<br />

jetzt zu welchem Cluster gehört.<br />

2. Es spart enorm Rechenzeit, große Ursprungs-Gase in mehrere kleinere aufzuteilen,<br />

da (wie schon angesprochen) das Sortieren der Liste L sehr viel Rechenzeit in Anspruch<br />

nehmen kann, das Sortieren von mehreren kleineren Listen L1, L2, . . . , LM<br />

aber weniger aufwändig ist – selbst dann, wenn diese Listen insgesamt genausoviele<br />

Neurone enthalten.<br />

Man erhält zwar nur lokale Sortierungen und keine globale, diese reichen aber in den<br />

meisten Fällen aus.<br />

Wir können nun zwischen zwei Extremfällen des Multi-<strong>Neuronale</strong>n Gases wählen: Der<br />

eine Extremfall ist das normale <strong>Neuronale</strong> Gas M = 1, wir verwenden also nur ein<br />

einziges <strong>Neuronale</strong>s Gas. Interessanterweise verhält sich der andere Extremfall (sehr<br />

großes M, wenige oder nur ein Neuron pro Gas) analog zum K-Means-Clustering (siehe<br />

zum Thema Clusteringverfahren auch den Exkurs A).<br />

Definition 10.8 (Multi-<strong>Neuronale</strong>s Gas). Ein Multi-<strong>Neuronale</strong>s Gas ist nichts weiter<br />

als eine gleichzeitige Verwendung von M vielen <strong>Neuronale</strong>n Gasen.<br />

10.7.4 Wachsende neuronale Gase können sich selbst Neurone hinzufügen<br />

Ein Wachsendes <strong>Neuronale</strong>s Gas ist eine Variation des beschriebenen <strong>Neuronale</strong>n<br />

Gases, dem nach bestimmten Regeln mehr und mehr Neurone hinzugefügt werden. Man<br />

versucht so, der Vereinsamung von Neuronen oder der Bildung großer Abdeckungslöcher<br />

entgegenzuwirken.<br />

Es sei hier nur benannt, aber nicht weiter erforscht.<br />

Eine wachsende SOM zu konstruieren ist insofern schwieriger, als dass neue Neurone<br />

in die Nachbarschaft eingegliedert werden müssen.


Übungsaufgaben<br />

Aufgabe 18. Mit einem regelmäßigen zweidimensionalen Gitter soll eine zweidimensionale<br />

Fläche möglichst „gut“ ausgelegt werden.<br />

1. Welche Gitterstruktur wäre hierfür am besten geeignet?<br />

2. Welche Kriterien für „gut“ bzw. „am besten“ haben Sie verwendet?<br />

Diese Aufgabe ist bewusst sehr schwammig formuliert.


Kapitel 11<br />

Adaptive Resonance Theory<br />

Ein ART-Netz in seiner ursprünglichen Form soll binäre Eingabevektoren<br />

klassifizieren, also einer 1-aus-n-Ausgabe zuordnen. Gleichzeitig sollen bis jetzt<br />

unklassifizierbare Muster erkannt und einer neuen Klasse zugeordnet werden.<br />

Wie in anderen kleinen Kapiteln wollen wir wieder versuchen, die grundlegende Idee<br />

der Adaptive Resonance Theory (Kurz: ART) zu ergründen, ohne ihre Theorie<br />

wirklich in der Tiefe zu betrachten.<br />

Wir haben bereits in verschiedenen Abschnitten angedeutet, dass es schwierig ist, mit<br />

<strong>Neuronale</strong>n <strong>Netze</strong>n neue Information zusätzlich zu bestehender „hinzuzulernen“, ohne<br />

jedoch die bestehende Information zu zerstören – diesen Umstand bezeichnen wir als<br />

Stabilitäts-Plastizitäts-Dilemma.<br />

1987 veröffentlichten Stephen Grossberg und Gail Carpenter mit dem Ziel der<br />

Entschärfung dieser Problematik die erste Version ihres ART-<strong>Netze</strong>s [Gro76], der ab<br />

da eine ganze Familie von ART-Verbesserungen folgte (die wir ebenfalls noch kurz<br />

ansprechen wollen).<br />

Es handelt sich um eine Idee des unüberwachten Lernens, die (zunächst binäre) Mustererkennung<br />

zum Ziel hatte, genauer gesagt, die Einteilung von Mustern in Klassen –<br />

wobei ein ART-Netz aber zusätzlich in der Lage sein soll, neue Klassen zu finden.<br />

11.1 Aufgabe und Struktur eines ART-<strong>Netze</strong>s<br />

Ein ART-Netz ist aufgebaut aus genau zwei Schichten: Der Eingabeschicht I und der<br />

Erkennungsschicht O, wobei die Eingabeschicht in Richtung der Erkennungsschicht<br />

vollverknüpft ist. Diese Vollverknüpfung gibt uns eine Top-Down-Gewichtsmatrix<br />

203


i1<br />

✡ ✡✡✡✡✡✡✡✡✡✡✡✡✡<br />

<br />

<br />

<br />

<br />

<br />

<br />

✹❋❖<br />

❙<br />

✹❋❖<br />

❙<br />

<br />

❋❖<br />

❙ i2<br />

✹ ❋❖<br />

❙<br />

✹ ❋<br />

❖❙<br />

❖❙<br />

✹<br />

❋ ❖❙<br />

❋ ❖<br />

❙<br />

✹ ❋<br />

❖<br />

❙❙<br />

❖ ❙<br />

✹ ❋ ❖<br />

❙<br />

✹<br />

❋ ❖<br />

❙<br />

❋<br />

❖<br />

❙❙<br />

✹ ❋<br />

❖ ❙<br />

❖<br />

❙<br />

✹<br />

❋ ❖<br />

❙❙<br />

❋<br />

❖ ❙<br />

✹ ❋<br />

❖ ❙<br />

❖<br />

❙<br />

✹ ❋ ❖<br />

❙❙<br />

✹<br />

❋ ❖ ❙<br />

❋<br />

❖ ❙<br />

❖<br />

❙<br />

✹ ❋ ❖<br />

❙❙<br />

❋ ❖ ❙<br />

❋<br />

❖<br />

❙<br />

❖<br />

❙❙<br />

❖ ❙<br />

❖ ❙<br />

①<br />

❙❙❙<br />

①①①①①①①①①①①①①①①①①①①① ✡<br />

✡✡✡✡✡✡✡✡✡✡✡✡✡ <br />

<br />

<br />

<br />

<br />

✹❋❖<br />

<br />

✹❋❖<br />

i3<br />

❋❖<br />

✹ ❋❖<br />

✹ ❋<br />

❖❖<br />

✹<br />

❋ ❖<br />

❋ ❖<br />

✹ ❋<br />

❖❖<br />

✹ ❋ ❖<br />

✹<br />

❋ ❖<br />

❋<br />

❖<br />

✹ ❋<br />

❖❖<br />

✹<br />

❋ ❖<br />

❋<br />

❖<br />

✹ ❋<br />

❖❖<br />

✹ ❋ ❖<br />

✹<br />

❋ ❖<br />

❋<br />

❖❖<br />

✹ ❋ ❖<br />

❋ ❖<br />

❋<br />

❖❖❖<br />

♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦<br />

① ❖<br />

①①①①①①①①①①①①①①①①①①①① ✡<br />

✡✡✡✡✡✡✡✡✡✡✡✡✡ <br />

<br />

<br />

<br />

<br />

✹❋<br />

i4<br />

✹❋❋<br />

✹ ❋<br />

✹ ❋<br />

✹<br />

❋❋<br />

✹ ❋<br />

✹ ❋<br />

✹<br />

❋❋<br />

✹ ❋<br />

✹<br />

❋❋<br />

✹ ❋<br />

✹ ❋<br />

✹<br />

❋❋<br />

✹ ❋❋❋<br />

❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦❦<br />

♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦♦<br />

①①①①①①①①①①①①①①①①①①①①① ✡<br />

✡✡✡✡✡✡✡✡✡✡✡✡✡<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

✡ ①①<br />

♦♦<br />

❦<br />

✹❋❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖ ❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙❙<br />

✹<br />

✡ ① ♦<br />

❦<br />

✹<br />

✡ ①<br />

✡ ♦♦<br />

①①<br />

❦❦❦♦♦<br />

✹✹✹✹✹✹✹✹✹✹✹✹✹ ❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋ ✹❋❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖❖ ✹<br />

✡ ①①<br />

♦♦<br />

❦❦<br />

✡<br />

✡<br />

✹<br />

✡ ① ♦♦<br />

①①<br />

✡<br />

❦<br />

♦♦<br />

①<br />

✹✹✹✹✹✹✹✹✹✹✹✹✹ ❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋ ✹❋ ❦❦<br />

✹<br />

✡ ①<br />

✡<br />

① ✡ ✹✹✹✹✹✹✹✹✹✹✹✹✹ ❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋❋<br />

♦ ①<br />

♦ ① ❦<br />

✹<br />

✡ ①①<br />

♦♦<br />

❦❦❦✡<br />

✡ ①<br />

♦♦♦<br />

①①<br />

✡ ✹<br />

✹<br />

✡ ① ♦♦<br />

❦❦<br />

✹<br />

✡ ①①<br />

♦♦✡<br />

✡ ①<br />

✡ ♦ ① ✡ ✹✹✹✹✹✹✹✹✹✹✹✹✹<br />

♦ ① ✡<br />

❦❦①<br />

❦ ✡<br />

✹<br />

✡ ① ♦♦<br />

✡ ❦❦①<br />

♦♦<br />

①<br />

✹<br />

✡ ① ♦ ❦❦<br />

① ♦♦<br />

✹<br />

✡ ①①<br />

♦♦♦<br />

❦✡<br />

❦❦<br />

①①<br />

♦♦✡<br />

✡ ①①<br />

✡<br />

✡<br />

✹<br />

✡ ① ♦ ❦❦<br />

✹<br />

✡ ①①<br />

♦♦♦<br />

❦❦❦<br />

✡<br />

✡ ①①<br />

♦♦♦<br />

✡ ①①<br />

❦<br />

✹<br />

①♦<br />

♦♦❦❦❦<br />

✡ ①①<br />

♦♦♦<br />

✡<br />

✡ ①①<br />

✡<br />

✡<br />

①<br />

❦❦❦<br />

✡<br />

✡ ①①<br />

♦♦<br />

✡ ①<br />

✡<br />

✡<br />

①①<br />

♦♦♦<br />

✡<br />

✡ ①①<br />

✡<br />

✡<br />

①<br />

♦♦<br />

✡ ①①<br />

✡<br />

✡<br />

① ✡<br />

Ω1<br />

Ω2<br />

Ω3<br />

Ω4<br />

Ω5<br />

Ω6<br />

<br />

<br />

<br />

Abbildung 11.1: Vereinfachte Darstellung des Aufbaus eines ART-<strong>Netze</strong>s. Oben die Eingabeschicht,<br />

unten die Erkennungsschicht. Für die Abbildung außer Acht gelassen worden sind die<br />

laterale Inhibition der Erkennungsschicht und die Steuerungsneurone.<br />

W an, die die Gewichtswerte von jedem Neuron der Eingabeschicht zu jedem Neuron<br />

der Erkennungsschicht enthält (Abb. 11.1).<br />

An der Eingabeschicht werden einfach binäre Muster eingegeben, welche an die Erkennungsschicht<br />

weitergegeben werden – während die Erkennungsschicht eine 1-aus-<br />

|O|-Kodierung ausgeben soll, also dem Winner-Takes-All-Schema folgen soll. Um diese<br />

1-aus-|O|-Kodierung zu realisieren, kann man beispielsweise das Prinzip der lateralen<br />

Inhibition nutzen – oder in der Implementierung pragmatischerweise per IF-Abfrage<br />

das am stärksten aktivierte Neuron suchen.<br />

11.1.1 Resonanz erfolgt, indem Aktivitäten hin- und hergeworfen werden<br />

Zusätzlich gibt es aber noch eine Bottom-Up-Gewichtsmatrix V , die die Aktivitäten<br />

in der Erkennungsschicht wieder in die Eingabeschicht propagiert. Es ist nun<br />

offensichtlich, dass diese Aktivitäten immer hin- und hergeworfen werden, was den Begriff<br />

der Resonanz ins Spiel bringt. Jede Aktivität der Eingabeschicht bewirkt eine<br />

Aktivität der Erkennungsschicht, während dort jede Aktivität wiederum eine Aktivität<br />

in der Eingabeschicht bewirkt.


Zusätzlich zu den zwei genannten Schichten existieren in einem ART-Netz noch einige<br />

wenige Neurone, welche Kontrollfunktionen ausüben wie z.B. eine Signalverstärkung.<br />

Deren Theorie soll hier nicht weiter betrachtet werden, da nur das grundlegende Prinzip<br />

der ART-<strong>Netze</strong> klar werden soll. Ich erwähne sie nur, um darzustellen, dass das Art-<br />

Netz nach einer Eingabe trotz der vorhandenen Rückkopplungen in einen stabilen<br />

Zustand gelangen wird.<br />

11.2 Der Lernvorgang eines Artnetzes ist geteilt in<br />

Top-Down- und Bottom-Up-Lernen<br />

Die Kunst der Adaptive Resonance Theory liegt nicht nur in der Gestaltung des ART-<br />

<strong>Netze</strong>s, sondern auch in ihrem Lernvorgang, der zweigeteilt ist: Wir trainieren zum<br />

einen die Top-Down-Matrix W und zum anderen die Bottom-Up-Matrix V (Abb. 11.2<br />

auf Seite 207).<br />

11.2.1 Mustereingabe und Top-Down-Lernen<br />

Wenn ein Muster in das Netz eingegeben wird, sorgt es wie schon gesagt für eine<br />

Aktivierung an den Ausgabeneuronen, wobei das stärkste Neuron gewinnt. Anschließend<br />

werden die zum Ausgabeneuron gehenden Gewichte der Matrix W dahingehend<br />

verändert, dass die Ausgabe des stärksten Neurons Ω noch verstärkt wird. Die Klassenzugehörigkeit<br />

des Eingabevektors zu der Klasse des Ausgabeneurons Ω wird also<br />

verstärkt.<br />

11.2.2 Resonanz und Bottom-Up-Lernen<br />

Etwas tricky ist nun das Trainieren der rückwärtsgerichteten Gewichte der Matrix V :<br />

Es werden nur die Gewichte vom jeweilige Gewinnerneuron zur Eingabeschicht trainiert<br />

und als Teaching Input unser aktuell angelegtes Eingabemuster verwendet. Das Netz<br />

wird also darauf trainiert, eingegebene Vektoren zu verstärken.<br />

11.2.3 Hinzufügen eines Ausgabeneurons<br />

Es kann natürlich vorkommen, dass die Neurone ungefähr gleich aktiviert sind oder<br />

mehrere Neurone aktiviert sind, das Netz also unentschlossen ist. In diesem Fall wird<br />

durch die Mechanismen der Steuerungsneurone ein Signal ausgelöst, das ein neues


Ausgabeneuron hinzufügt. Das aktuelle Muster wird dann diesem Ausgabeneuron zugeordnet<br />

und die Gewichtssätze des neuen Neurons wie gewohnt trainiert.<br />

Die Stärke des Systems liegt also nicht nur darin, Eingaben in Klassen zu unterteilen<br />

und neue Klassen zu finden – es kann uns bei Aktivierung eines Ausgabeneurons auch<br />

sagen, wie ein typischer Vertreter einer Klasse aussieht – ein bedeutendes Feature.<br />

Oft kann das System Muster aber nur mäßig gut unterscheiden. Die Frage ist, wann<br />

einem neuen Neuron erlaubt wird, aktiv zu werden und wann gelernt werden soll. Auch<br />

um diese Fragen zu beantworten, existieren in einem ART-Netz verschiedene zusätzliche<br />

Kontrollneurone, die diese Fragen nach verschiedenen mathematischen Regeln<br />

beantworten und dafür zuständig sind, Spezialfälle abzufangen.<br />

Hier benennen wir einen der größten Kritikpunkte an ART: Ein ART-Netz verwendet<br />

eine Spezialfallunterscheidung ähnlich einer IF-Abfrage, die man in den Mechanismus<br />

eines <strong>Neuronale</strong>n <strong>Netze</strong>s gepresst hat.<br />

11.3 Erweiterungen<br />

Wie schon eingangs erwähnt, wurden die ART-<strong>Netze</strong> vielfach erweitert.<br />

ART-2 [CG87] ist eine Erweiterung auf kontinuierliche Eingaben und bietet zusätzlich<br />

(in einer ART-2A genannten Erweiterung) Verbesserungen der Lerngeschwindigkeit,<br />

was zusätzliche Kontrollneurone und Schichten zur Folge hat.<br />

ART-3 [CG90] verbessert die Lernfähigkeit von ART-2, indem zusätzliche biologische<br />

Vorgänge wie z.B. die chemischen Vorgänge innerhalb der Synapsen adaptiert<br />

werden 1 .<br />

Zusätzlich zu den beschriebenen Erweiterungen existieren noch viele mehr.<br />

1 Durch die häufigen Erweiterungen der Adaptive Resonance Theory sprechen böse Zungen bereits von<br />

„ART-n-<strong>Netze</strong>n“.


Kapitel 11 Adaptive Resonance Theory dkriesel.com<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

i1<br />

i2<br />

i3<br />

i4<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Ω1<br />

Ω2<br />

<br />

<br />

0 1<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

i1 <br />

i2<br />

i3<br />

i4<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Ω1<br />

Ω2<br />

<br />

<br />

0 1<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

i1<br />

i2<br />

i3<br />

i4<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Ω1<br />

Ω2<br />

<br />

<br />

0 1<br />

einer IF-Abfrage, die man in den Mechanismus<br />

eines <strong>Neuronale</strong>n <strong>Netze</strong>s gepresst<br />

hat.<br />

11.3 Erweiterungen<br />

Wie schon eingangs erwähnt, wurden die<br />

ART-<strong>Netze</strong> vielfach erweitert.<br />

ART-2 [CG87] ist eine Erweiterung<br />

auf kontinuierliche Eingaben und bietet<br />

zusätzlich (in einer ART-2A genannten<br />

Erweiterung) Verbesserungen der Lerngeschwindigkeit,<br />

was zusätzliche Kontrollneurone<br />

und Schichten zur Folge hat.<br />

ART-3 [CG90] verbessert die Lernfähigkeit<br />

von ART-2, indem zusätzliche biologische<br />

Vorgänge wie z.B. die chemischen<br />

Vorgänge innerhalb der Synapsen adaptiert<br />

werden 1 .<br />

Zusätzlich zu den beschriebenen Erweiterungen<br />

existieren noch viele mehr.<br />

1 Durch die häufigen Erweiterungen der Adaptive<br />

Resonance Theory sprechen böse Zungen bereits<br />

von ” ART-n-<strong>Netze</strong>n“.<br />

Abbildung 11.2: VereinfachteAbbildung Darstellung 11.2: des Vereinfachte zweigeteilten Darstellung Trainings des eines ART-<strong>Netze</strong>s: Die jeweils<br />

trainierten Gewichte sindzweigeteilten durchgezogen Trainings dargestellt. eines ART-<strong>Netze</strong>s: NehmenDie wir an, ein Muster wurde in das<br />

jeweils 168 trainierten D. Gewichte <strong>Kriesel</strong> sind – Ein durchgezogen kleiner Überblick über <strong>Neuronale</strong> <strong>Netze</strong> (EPSILON-DE)<br />

Netz eingegeben und die Zahlen markieren Ausgaben. Oben: Wie wir sehen, ist Ω2 das Gewin-<br />

dargestellt. Nehmen wir an, ein Muster wurde in<br />

nerneuron. Mitte: Also werden dasdie NetzGewichte eingegebenzum und die Gewinnerneuron Zahlen markierenhin<br />

trainiert und (unten) die<br />

Gewichte vom Gewinnerneuron Ausgaben. zur Eingangsschicht Oben: Wir wir sehen, trainiert.<br />

ist Ω2 das Gewinnerneuron.<br />

Mitte: Also werden die Gewichte<br />

zum Gewinnerneuron hin trainiert und (unten)<br />

die Gewichte vom Gewinnerneuron zur Eingangsschicht<br />

trainiert.


Teil IV<br />

Exkurse, Anhänge und Register<br />

209


Anhang A<br />

Exkurs: Clusteranalyse und Regional and<br />

Online Learnable Fields<br />

Das Grimmsche Wörterbuch beschreibt das heute ausgestorbene deutsche<br />

Wort „Kluster“ mit „was dicht und dick zusammensitzet“. In der statistischen<br />

Clusteranalyse wird die Gruppenbildung innerhalb von Punktwolken<br />

untersucht. Vorstellung einiger Verfahren, Vergleich ihrer Vor- und Nachteile.<br />

Betrachtung eines lernenden Clusteringverfahrens auf Basis <strong>Neuronale</strong>r <strong>Netze</strong>.<br />

Ein Regional and Online Learnable Field modelliert aus einer Punktwolke mit<br />

womöglich sehr vielen Punkten eine vergleichsweise kleine Menge von für die<br />

Punktwolke repräsentativen Neuronen.<br />

Wie schon angedeutet, lassen sich viele Problemstellungen auf Probleme der Clusteranalyse<br />

zurückführen. Dies macht die Erforschung von Verfahren notwendig, die<br />

untersuchen, ob sich innerhalb von Punktwolken Gruppen (sog. Cluster) herausbilden.<br />

Da Verfahren zur Clusteranalyse für ihre Arbeit einen Abstandsbegriff zwischen zwei<br />

Punkten brauchen, muss auf dem Raum, in dem sich die Punkte finden, eine Metrik<br />

definiert sein. Wir wollen also kurz darauf eingehen, was eine Metrik ist.<br />

Definition A.1 (Metrik). Eine Relation dist(x1, x2), die für zwei Objekte x1, x2<br />

definiert ist, heißt Metrik, wenn jedes der folgenden Kriterien gilt:<br />

1. dist(x1, x2) = 0 genau dann, wenn x1 = x2,<br />

2. dist(x1, x2) = dist(x2, x1), also Symmetrie,<br />

3. dist(x1, x3) ≤ dist(x1, x2) + dist(x2, x3), d. h. die Dreiecksungleichung gilt.<br />

Umgangssprachlich ausgedrückt, ist eine Metrik ein Werkzeug, Abstände von Punkten<br />

in einem beliebig gearteten Raum festzustellen. Abstände müssen hierbei symmetrisch<br />

211


sein, und der Abstand zwischen zwei Punkten darf nur 0 sein, wenn beide Punkte<br />

gleich sind. Zudem muss die Dreiecksungleichung gelten.<br />

Metriken liefert uns beispielsweise der quadratische Abstand und der Euklidische<br />

Abstand, welche wir schon kennengelernt haben. Aufbauend auf eine solche Metrik<br />

kann man Clusteringverfahren definieren, die eine Metrik als Abstandsmaß verwenden.<br />

Wir wollen nun verschiedene Clusteringverfahren vorstellen und kurz diskutieren.<br />

A.1 k-Means Clustering teilt Daten in eine vordefinierte<br />

Anzahl Cluster ein<br />

k-Means Clustering nach J. MacQueen [Mac67] ist ein Algorithmus, der aufgrund<br />

seiner niedrigen Rechen- und Speicherkomplexität häufig verwendet wird und allgemein<br />

als „billig und gut“ angesehen wird. Der Algorithmus k-Means Clustering hat folgenden<br />

Arbeitsablauf:<br />

1. Daten bereitstellen, die untersucht werden sollen<br />

2. k, die Anzahl der Clusterzentren, definieren<br />

3. k viele zufällige Vektoren für die Clusterzentren wählen (auch Codebookvektoren<br />

genannt).<br />

4. Jeden Datenpunkt dem nächsten Codebookvektor 1 zuordnen<br />

5. Clusterschwerpunkte für alle Cluster berechnen<br />

6. Codebookvektoren auf neue Clusterschwerpunkte setzen.<br />

7. Bei 4 weitermachen, bis keine Zuordnungsänderungen mehr eintreten.<br />

Bei Punkt 2 sieht man schon eine der großen Fragen des k-Means-Algorithmus: Man<br />

muss im Vorhinein selbst die Anzahl k der Clusterzentren bestimmen, dies nimmt einem<br />

das Verfahren also nicht ab. Das Problem ist, dass man im Vorhinein nicht unbedingt<br />

weiß, wie k am besten bestimmt werden kann. Ein weiteres Problem ist, dass das<br />

Verfahren recht instabil werden kann, wenn die Codebookvektoren schlecht initialisiert<br />

werden. Da dies aber zufällig geschieht, hilft oft schon ein Neustart des Verfahrens, das<br />

zudem nicht sehr rechenaufwändig ist, was wiederum ein Vorteil ist. Verwenden Sie es<br />

im Bewusstsein dieser Schwächen, und Sie werden recht gute Ergebnisse erhalten.<br />

1 Der Name Codebookvektor entstand, weil die oft verwendete Bezeichnung Clustervektor zu missverständlich<br />

war.


Komplizierte Strukturen, wie „Cluster in Clustern“ können allerdings nicht erkannt<br />

werden. Bei einem hoch gewählten k würde der äußere Ring dieser Konstruktion in der<br />

Abbildung als viele einzelne Cluster erkannt, bei einer niedrigen Wahl von k würde der<br />

Ring mit dem kleinen innenliegenden Cluster als ein Cluster gesehen.<br />

Siehe für eine Veranschaulichung den oberen rechten Teil der Abb. A.1 auf Seite 215.<br />

A.2 k-Nearest Neighbouring sucht die k nächsten Nachbarn<br />

jeden Datenpunkts<br />

Das k-Nearest Neighbouring-Verfahren [CH67] verbindet jeden Datenpunkt mit<br />

den jeweils k vielen nächsten Nachbarn, was oft eine Unterteilung in Gruppen zur<br />

Folge hat. Eine solche Gruppe bildet dann einen Cluster. Der Vorteil ist hier, dass<br />

die Clusteranzahl von alleine entsteht – der Nachteil ein recht großer Speicher- und<br />

Rechenaufwand, um die nächten Nachbarn zu finden (es muss der Abstand von jedem<br />

zu jedem Datenpunkt ausgerechet und gespeichert werden).<br />

Es gibt außerdem Spezialfälle, in denen das Verfahren bei zu großer Wahl von k Datenpunkte<br />

zusammenschließt, die eigentlich in verschiedene Cluster gehören (siehe die<br />

beiden kleinen Cluster oben rechts in der Abbildung). Cluster, die nur aus einem<br />

einzigen Datenpunkt bestehen, werden grundsätzlich mit einem anderen Cluster zusammengeschlossen,<br />

auch das ist nicht immer gewollt.<br />

Weiterhin müssen die Bindungen unter den Punkten nicht symmetrisch sein.<br />

Das Verfahren ermöglicht es aber, Ringe und somit auch „Cluster in Clustern“ zu<br />

erkennen, ein eindeutiger Vorteil. Weiterer Vorteil ist, dass das Verfahren adaptiv auf<br />

die Entfernungen in und zwischen Clustern eingeht.<br />

Siehe für eine Veranschaulichung den unteren linken Teil der Abb. A.1.<br />

A.3 ε-Nearest Neighbouring sucht für jeden Datenpunkt<br />

Nachbarn im Radius ε<br />

Ein anderer Ansatz des Neighbourings: Hier geht die Nachbarschaftsfindung nicht über<br />

eine feste Anzahl k von Nachbarn, sondern über einen Radius ε – daher der Name<br />

Epsilon-Nearest Neighbouring. Punkte, die maximal ε weit voneinander entfernt<br />

sind, sind Nachbarn. Hier ist der Speicher- und Rechenaufwand augenscheinlich wieder<br />

sehr hoch, was ein Nachteil ist.


Achtung, auch hier gibt es Spezialfälle: Zwei an sich getrennte Cluster können hier<br />

durch die ungünstige Lage eines einzigen Datenpunkts einfach verbunden werden. Dies<br />

kann zwar auch beim k-Nearest Neighbouring passieren, jedoch schwerer, da die Anzahl<br />

der Nachbarn pro Punkt dort begrenzt ist.<br />

Vorteil ist die symmetrische Natur der Nachbarschaftsbeziehungen. Weiterer Vorteil ist,<br />

dass nicht aufgrund einer festen Nachbaranzahl Kleinstcluster zusammengeschlossen<br />

werden.<br />

Auf der anderen Seite muss aber ε geschickt initialisiert werden, um hier Erfolge zu<br />

erzielen, nämlich kleiner als die Hälfte des kleinsten Abstands zwischen zwei Clustern.<br />

Dies ist bei sehr variablen Clusterabständen und Punktabständen innerhalb von Clustern<br />

unter Umständen ein Problem.<br />

Siehe für eine Veranschaulichung den unteren rechten Teil der Abb. A.1.<br />

A.4 Der Silhouettenkoeffizient macht die Güte eines<br />

gegebenen Clusterings messbar<br />

Wie wir oben sehen, gibt es keine Patentlösung für Clusteringprobleme, denn jedes<br />

dargestellte Verfahren hat seine ganz spezifischen Nachteile. Insofern ist es wertvoll,<br />

ein Kriterium dafür zu haben, wie gut unsere Clustereinteilung ist. Genau diese Möglichkeit<br />

bietet uns der Silhouettenkoeffizient nach [Kau90]. Er misst, wie gut die<br />

Cluster voneinander abgegrenzt sind, und ist ein Indikator dafür, ob vielleicht Punkte<br />

in falsche Cluster einsortiert sind.<br />

Sei P eine Punktwolke und sei p ein Punkt ∈ P . Sei c ⊆ P ein Cluster in der Punktwolke<br />

und gehöre p in diesen Cluster, also p ∈ c. Die Menge der Cluster nennen wir C.<br />

Zusammengefasst gilt also<br />

p ∈ c ⊆ P.<br />

Um den Silhouettenkoeffizient zu errechnen, benötigen wir zunächst den durchschnittlichen<br />

Abstand des Punktes p zu allen seinen Clusternachbarn. Diese Größe nennen<br />

wir a(p) und definieren sie wie folgt:<br />

a(p) = 1<br />

|c| − 1<br />

<br />

q∈c,q=p<br />

dist(p, q) (A.1)


Abbildung A.1: Oben links: Unsere Punktmenge. An ihr werden wir die verschiedenen Clusteringverfahren<br />

erforschen. Oben rechts: k-Means Clustering. Bei der Anwendung dieses Verfahrens<br />

wurde k = 6 gewählt. Wie wir sehen, kann das Verfahren „Cluster in Clustern“ nicht erkennen<br />

(unten links im Bild). Auch lange „Linien“ von Punkten bereiten Schwierigkeiten: Sie würden als<br />

viele kleine Cluster erkannt werden (bei ausreichend großer Wahl von k). Unten links: k-Nearest<br />

Neighbouring. Bei zu großer Wahl von k (größer als die Punktanzahl des kleinsten Clusters)<br />

kommt es zu Clusterzusammenschlüssen, wie man oben rechts im Bild sehen kann. Unten rechts:<br />

ε-Nearest Neighbouring. Dieses Verfahren bereitet Schwierigkeiten, wenn ε größer gewählt ist als<br />

der minimale Abstand zwischen zwei Clustern (sichtbar oben links im Bild) – diese werden dann<br />

zusammengeschlossen.


Sei weiterhin b(p) der durchschnittliche Abstand unseres Punktes p zu allen Punkten<br />

des nächsten anderen Clusters (g läuft über alle Cluster außer c):<br />

1 <br />

b(p) = min dist(p, q) (A.2)<br />

g∈C,g=c |g| q∈g<br />

Der Punkt p ist gut klassifiziert, wenn der Abstand zum Schwerpunkt des eigenen<br />

Clusters minimal und der Abstand zu den Schwerpunkten der anderen Cluster maximal<br />

ist. Ist dies der Fall, so wird der folgende Term einen Wert nahe 1 ergeben:<br />

s(p) =<br />

b(p) − a(p)<br />

max{a(p), b(p)}<br />

Der ganze Term s(p) kann sich offensichtlich nur im Intervall [−1; 1] bewegen. Indikator<br />

für eine schlechte Klassifikation von p ist ein Wert nahe -1.<br />

Der Silhouettenkoeffizient S(P ) ergibt sich aus dem Durchschnitte aller s(p)-Werte: Es<br />

gilt<br />

(A.3)<br />

S(P ) = 1 <br />

s(p). (A.4)<br />

|P |<br />

p∈P<br />

Die Gesamtgüte der Clustereinteilung drückt sich wie oben durch das Intervall [−1; 1]<br />

aus.<br />

Nachdem wir nun die Charakteristiken verschiedener Clusteringmethoden sowie ein<br />

Maß zur Qualitätsbeurteilung einer bereits existierenden Unterteilung in Cluster kennengelernt<br />

haben (viel weiteres Material findet sich in [DHS01]), möchte ich ein 2005<br />

veröffentlichtes Clusteringverfahren auf Basis eines unüberwacht lernenden <strong>Neuronale</strong>n<br />

<strong>Netze</strong>s [SGE05] vorstellen, welches wie alle dieser Verfahren wahrscheinlich nicht perfekt<br />

ist, aber doch große Standard-Schwächen von den bekannten Clusteringverfahren<br />

ausmerzt – auch, um einmal eine vergleichsweise hochaktuelle Entwicklung im Bereich<br />

der <strong>Neuronale</strong>n <strong>Netze</strong> darzustellen.<br />

A.5 Regional and Online Learnable Fields sind ein neuronales<br />

Clusteringverfahren<br />

Das Paradigma <strong>Neuronale</strong>r <strong>Netze</strong>, welches ich nun vorstellen möchte, sind die Regional<br />

and Online Learnable Fields, kurz ROLFs genannt.


A.5.1 ROLFs versuchen, mit Neuronen Datenwolken abzudecken<br />

Grob gesagt sind die Regional and Online Learnable Fields eine Menge K von Neuronen,<br />

die versuchen, eine Menge von Punkten durch ihre Verteilung im Eingaberaum<br />

möglichst gut abzudecken. Hierfür werden während des Trainings bei Bedarf Neurone<br />

hinzugefügt, verschoben oder in ihrer Größe verändert. Die Parameter der einzelnen<br />

Neurone werden wir noch erforschen.<br />

Definition A.2 (Regional and Online Learnable Field). Ein Regional and Online<br />

Learnable Field (kurz: ROLF oder ROLF-Netz) ist eine Menge K von Neuronen, welche<br />

darauf trainiert werden, eine bestimmte Menge im Eingaberaum möglichst gut<br />

abzudecken.<br />

A.5.1.1 ROLF-Neurone besitzen Position und Radius im Eingaberaum<br />

Ein ROLF-Neuron k ∈ K hat hierbei zwei Parameter: Es besitzt ähnlich der RBF-<br />

<strong>Netze</strong> ein Zentrum ck, also einen Ort im Eingaberaum.<br />

Es besitzt aber noch einen weiteren Parameter: Den Radius σ, der den Radius der<br />

perzeptiven Fläche, welche das Neuron umgibt, erst definiert 2 . Ein Neuron deckt<br />

den Anteil des Eingaberaums ab, der innerhalb des Radius liegt.<br />

Sowohl ck als auch σk sind für jedes Neuron lokal definiert, das heißt insbesondere,<br />

dass die Neurone verschieden große Flächen abdecken können.<br />

Der Radius der perzeptiven Fläche ist durch r = ρ · σ gegeben (Abb. A.2 auf der<br />

folgenden Seite), wobei der Multiplikator ρ für alle Neurone global definiert ist und<br />

im Vorhinein festgelegt wird. Der Leser wird sich nun intuitiv fragen, wozu dieser<br />

Multiplikator gut ist. Wir werden seine Bedeutung später noch erforschen. Zu beachten<br />

ist weiterhin: Die perzeptive Fläche der verschiedenen Neurone muss nicht gleich groß<br />

sein.<br />

Definition A.3 (ROLF-Neuron). Ein ROLF-Neuron k besitzt als Parameter ein<br />

Zentrum ck sowie einen Radius σk.<br />

Definition A.4 (Perzeptive Fläche). Die perzeptive Fläche eines Rolf-Neurons k<br />

besteht aus allen Punkten, welche im Eingaberaum innerhalb des Radius ρ · σ liegen.<br />

2 Ich schreibe daher „definiert“ und nicht „ist“, weil der eigentliche Radius ja durch σ · ρ gegeben ist.


Abbildung A.2: Aufbau eines ROLF-Neurons.<br />

A.5.2 ROLFs lernen unüberwacht durch Online-Präsentation von<br />

Trainingsbeispielen<br />

Wie viele andere Paradigmen <strong>Neuronale</strong>r <strong>Netze</strong> lernt unser ROLF-Netz durch die Eingabe<br />

vieler Trainingsbeispiele p aus einer Trainingsmenge P . Das Lernen findet unüberwacht<br />

statt. Für jedes Trainingsbeispiel p, welches in das Netz eingegeben wird,<br />

können zwei Fälle eintreten:<br />

1. Es existiert ein akzeptierendes Neuron k für p oder<br />

2. es existiert kein akzeptierendes Neuron.<br />

Falls im ersteren Fall mehrere Neurone in Frage kommen, existiert insofern genau ein<br />

akzeptierendes Neuron, als dass das nächstgelegene akzeptierend ist. Beim akzeptierenden<br />

Neuron k werden ck und σk angepasst.<br />

Definition A.5 (Akzeptierendes Neuron). Damit ein ROLF-Neuron k ein akzeptierendes<br />

Neuron eines Punktes p ist, muss der Punkt p innerhalb der perzeptiven<br />

Fläche von k liegen. Liegt p in den perzeptiven Flächen mehrerer Neurone, so ist das<br />

nächstliegende akzeptierend. Gibt es mehrere nächste Neurone, kann willkürlich eines<br />

ausgewählt werden.


A.5.2.1 Sowohl Positionen als auch Radien werden beim Lernen adaptiert<br />

Angenommen, wir haben ein Trainingsbeispiel p in das Netz eingegeben und es existiert<br />

ein akzeptierendes Neuron k. Dann wandert der Radius in Richtung ||p − ck|| (also in<br />

Richtung des Abstandes zwischen p ud ck) und das Zentrum ck in Richtung von p.<br />

Zusätzlich seien zwei Lernraten ησ und ηc für Radien und Zentren definiert.<br />

ck(t + 1) = ck(t) + ηc(p − ck(t))<br />

σk(t + 1) = σk(t) + ησ(||p − ck(t)|| − σk(t))<br />

Hierbei ist zu beachten, dass σk ein Skalar ist, während ck ein Vektor im Eingaberaum<br />

ist.<br />

Definition A.6 (Adaption eines ROLF-Neurons). Ein zu einem Punkt p akzeptierendes<br />

Neuron k wird nach folgenden Regeln adaptiert:<br />

ck(t + 1) = ck(t) + ηc(p − ck(t)) (A.5)<br />

σk(t + 1) = σk(t) + ησ(||p − ck(t)|| − σk(t)) (A.6)<br />

A.5.2.2 Der Radiusmultiplikator sorgt dafür, dass Neurone nicht nur schrumpfen<br />

können<br />

Nun können wir auch verstehen, wozu der Multiplikator ρ da ist: Durch ihn umfasst die<br />

perzeptive Fläche eines Neurons mehr als nur alle Punkte um das Neuron im Radius σ.<br />

Das bedeutet, dass σ durch die obige Lernregel nicht nur schrumpfen, sondern auch<br />

wachsen kann.<br />

Definition A.7 (Radiusmultiplikator). Der Radiusmultiplikator ρ > 1 ist global<br />

definiert und vergrößert die perzeptive Fläche eines Neurons k auf ein Vielfaches von<br />

σk. So ist sichergestellt, dass der Radius σk auch wachsen und nicht nur schrumpfen<br />

kann.<br />

Der Radiusmultiplikator wird üblicherweise auf Werte im unteren einstelligen Bereich<br />

gesetzt, wie z.B. 2 oder 3.<br />

Wir haben bis jetzt nur den Fall im ROLF-Training betrachtet, dass für ein Trainingsbeispiel<br />

p ein akzeptierendes Neuron existiert.


A.5.2.3 Nach Bedarf werden neue Neurone erzeugt<br />

Dies legt nahe, die Vorgehensweise zu erforschen, falls kein akzeptierendes Neuron<br />

existiert.<br />

Wenn dies der Fall ist, so wird einfach ein akzeptierendes Neuron k für unser Trainingsbeispiel<br />

neu erzeugt. Dies hat zur Folge, dass natürlich ck und σk initialisiert werden<br />

müssen.<br />

Intuitiv verstehbar ist die Initialisierung von ck: Das Zentrum des neuen Neurons wird<br />

einfach auf das Trainingsbeispiel gesetzt, es gilt also<br />

ck = p.<br />

Wir erzeugen ein neues Neuron, weil keins in der Nähe von p ist – also setzen wir das<br />

Neuron sinnvollerweise genau auf p.<br />

Doch wie wird ein σ gesetzt, wenn ein neues Neuron gebildet wird? Hierfür gibt es<br />

verschiedene Taktiken:<br />

Init-σ: Es wird immer ein vorherbestimmtes, statisches σ gewählt.<br />

Minimum-σ: Wir schauen uns die σ aller Neurone an und wählen das Minimum.<br />

Maximum-σ: Wir schauen uns die σ aller Neurone an und wählen das Maximum.<br />

Mean-σ: Der Mittelwert der σ aller Neurone wird gewählt.<br />

Aktuell ist die Mean-σ-Variante die favorisierte, obwohl das Lernverfahren mit den anderen<br />

auch funktioniert. Die Minimum-σ-Variante lässt die Neurone hierbei tendenziell<br />

weniger Fläche einnehmen, die Maximum-σ-Variante tendenziell mehr.<br />

Definition A.8 (Erzeugen eines ROLF-Neurons). Wird ein neues ROLF-Neuron k<br />

durch Eingabe eines Trainingsbeispiels p erzeugt, so wird ck mit p initialisiert und σk<br />

nach einer der obigen Strategien (Init-σ, Minimum-σ, Maximum-σ, Mean-σ).<br />

Ein gutes Kriterium für ein Trainingsende ist, wenn nach immer wieder zufällig permutierter<br />

Präsentation der Muster bei einer Epoche kein neues Neuron mehr erzeugt<br />

wurde und die Neuronenpositionen sich kaum noch verändern.


A.5.3 Auswertung eines ROLFs<br />

Der Trainingsalgorithmus hat zur Folge, dass die ROLF-Neurone nach und nach die<br />

Trainingsmenge recht gut und genau abdecken, und dass eine hohe Konzentration von<br />

Punkten an einem Fleck des Eingaberaums nicht automatisch mehr Neurone erzeugen<br />

muss. Eine unter Umständen sehr große Punktwolke wird also auf (relativ zur<br />

Eingabemenge) sehr wenige Repräsentanten reduziert.<br />

Die Anzahl der Cluster lässt sich dann sehr einfach bestimmen: Zwei Neurone sind<br />

(nach Definition beim ROLF) verbunden, wenn deren perzeptive Flächen sich überlappen<br />

(es wird also eine Art Nearest Neighbouring mit den variablen perzeptiven<br />

Flächen ausgeführt). Ein Cluster ist eine Gruppe von verbundenen Neuronen bzw. von<br />

diesen Neuronen abgedeckten Punkten des Eingaberaums (Abb. A.3 auf der folgenden<br />

Seite).<br />

Selbstverständlich kann man das fertige ROLF-Netz auch mit anderen Clusteringverfahren<br />

auswerten, also Cluster in den Neuronen suchen. Insbesondere bei Clusteringverfahren,<br />

deren Speicheraufwand quadratisch zu |P | steigt, kann der Speicheraufwand<br />

so dramatisch reduziert werden, da es in aller Regel wesentlich weniger ROLF-Neurone<br />

als ursprüngliche Datenpunkte gibt, die Neurone die Datenpunkte aber recht gut repräsentieren.<br />

A.5.4 Vergleich mit populären Clusteringverfahren<br />

Es ist offensichtlich, dass der Löwenanteil des Speicheraufwands bei den ROLFs beim<br />

Speichern der Neurone liegt und nicht etwa beim Speichern von Eingabepunkten. Dies<br />

ist von großem Vorteil bei riesigen Punktwolken mit sehr vielen Punkten.<br />

Unser ROLF als neuronales Clusteringverfahren hat also, da die Datenpunkte nicht<br />

komplett gespeichert werden müssen, die Fähigkeit des Online-Lernens, was zweifellos<br />

einen großen Vorteil darstellt. Weiterhin kann es (ähnlich dem ε Nearest Neighbouring<br />

bzw. k Nearest Neighbouring) Cluster von eingeschlossenen Clustern unterscheiden –<br />

jedoch durch die Online-Präsentation der Daten ohne quadratischen Speicheraufwand,<br />

der mit Abstand der größte Nachteil der beiden Neighbouring-Verfahren ist.<br />

Es wird weiterhin durch die variablen perzeptiven Flächen auf die Größe der jeweiligen<br />

Cluster im Verhältnis zu ihrer Entfernung voneinander eingegangen – was ebenfalls bei<br />

den beiden genannten Verfahren nicht immer der Fall ist.


Abbildung A.3: Ablauf des Clusterings durch ein ROLF. Oben die Eingabemenge, in der Mitte die<br />

Abdeckung durch ROLF-Neurone, unten die reine Abdeckung durch die Neurone (Repräsentanten).


Im Vergleich mit dem k-Means-Clustering schneidet das ROLF auch gut ab: Erstens<br />

muss man nicht die Clusteranzahl im Vorhinein wissen, zum zweiten erkennt das k-<br />

Means-Clustering Cluster, die von anderen Clustern eingeschlossen sind, nicht als separate<br />

Cluster an.<br />

A.5.5 Die Initialisierung von Radien, Lernraten und Multiplikator ist nicht<br />

trivial<br />

Natürlich sollen auch die Nachteile des ROLFs nicht verschwiegen werden: Es ist nicht<br />

immer leicht, den Initialwert für die σ und das ρ gut zu wählen. In das ρ und den<br />

σ-Startwert kann man dem ROLF sozusagen das Vorwissen über die Datenmenge mitgeben:<br />

Feinkörnig geclusterte Daten sollten ein kleines ρ und einen kleinen σ-Startwert<br />

verwenden. Je kleiner aber das ρ, desto weniger Chance haben die Neuronen, größer<br />

zu werden, wenn nötig. Hier gibt es wieder keine Patentrezepte, genau wie für die<br />

Lernraten ηc und ησ.<br />

Beliebt für ρ sind Multiplikatoren im unteren einstelligen Bereich, wie 2 oder 3. Bei<br />

ηc und ησ wird mit Werten um 0.005 bis 0.1 erfolgreich gearbeitet, auch bei diesem<br />

Netztyp sind Variationen zur Laufzeit denkbar. Startwerte für σ hängen in der Regel<br />

sehr von der Cluster- und Datenstreuung ab (müssen also oft ausprobiert werden),<br />

wobei diese gegenüber falschen Initialisierungen zumindest bei der Mean-σ-Strategie<br />

nach einiger Trainingszeit relativ robust sind.<br />

Insgesamt muss sich das ROLF im Vergleich zu den anderen Clusteringverfahren durchaus<br />

nicht verstecken und wird insbesondere für speicherarme Systeme oder sehr große<br />

Datenmengen sehr interessant sein.<br />

A.5.6 Anwendungsbeispiele<br />

Ein erstes Anwendungsbeispiel könnte z.B. das Finden von Farbclustern in RGB-<br />

Bildern sein. Ein weiteres direkt in der ROLF-Veröffentlichung beschriebenes Einsatzgebiet<br />

ist das Erkennen von Worten, welche in einen 720dimensionalen Merkmalsraum<br />

überführt wurden – wir sehen also, dass die ROLFs auch gegenüber höheren Dimensionen<br />

relativ robust sind. Weitere mir bekannte Anwendungsgebiete liegen in der<br />

Entdeckung und Zuordnung von Angriffen auf Netzwerksysteme.


Übungsaufgaben<br />

Aufgabe 19. Bestimmen Sie mindestens vier Adaptionsschritte für ein einzelnes<br />

ROLF-Neuron k, wenn die vier untenstehenden Muster nacheinander in der angegebenen<br />

Reihenfolge präsentiert werden. Die Startwerte für das ROLF-Neuron seien<br />

ck = (0.1, 0.1) und σk = 1. Weiter gelte ηc = 0.5 sowie ησ = 0. Sei ρ = 3.<br />

P = {(0.1, 0.1);<br />

= (0.9, 0.1);<br />

= (0.1, 0.9);<br />

= (0.9, 0.9)}.


Anhang B<br />

Exkurs: <strong>Neuronale</strong> <strong>Netze</strong> zur Vorhersage<br />

Betrachtung einer Anwendung <strong>Neuronale</strong>r <strong>Netze</strong>: Ein Blick in die Zukunft von<br />

Zeitreihen.<br />

Nach Betrachtung verschiedenster Paradigmen <strong>Neuronale</strong>r <strong>Netze</strong> ist es sinnvoll, nun<br />

eine Anwendung <strong>Neuronale</strong>r <strong>Netze</strong> zu betrachten, die viel thematisiert und (wie wir<br />

noch sehen werden) auch für Betrug genutzt wird: Die Anwendung der Zeitreihenvorhersage.<br />

Dieses Exkurskapitel gliedert sich hierbei in die Beschreibung von Zeitreihen<br />

und Abschätzungen, unter welchen Voraussetzungen man überhaupt nur Werte einer<br />

Zeitreihe vorhersagen kann. Zum Schluß möchte ich noch etwas zu den häufigen Softwareangeboten<br />

sagen, die mit Hilfe <strong>Neuronale</strong>r <strong>Netze</strong> oder anderer Verfahren Aktienkurse<br />

oder andere wirtschaftliche Kenngrößen vorhersagen sollen.<br />

Das Kapitel soll weniger eine ausführliche Beschreibung sein, sondern vielmehr ein<br />

paar Denkansätze für die Zeitreihenvorhersage nennen, insofern werde ich mich mit<br />

formalen Definitionen wieder zurückhalten.<br />

B.1 Über Zeitreihen<br />

Eine Zeitreihe ist eine Reihe von Werten, welche in der Zeit diskretisiert ist. Beispielsweise<br />

könnten täglich gemessene Temperaturwerte oder andere Wetterdaten eines Ortes<br />

eine Zeitreihe darstellen – auch Aktienkurswerte stellen eine Zeitreihe dar. Zeitreihen<br />

sind häufig zeitlich äquidistant gemessen, und bei vielen Zeitreihen ist sehr von Interesse,<br />

wie denn die Zukunft ihrer Werte aussieht – nennen wir als Beispiel nur die tägliche<br />

Wettervorhersage.<br />

225


Abbildung B.1: Eine Funktion x der Zeit wird zu diskreten Zeitpunkten abgetastet (zeitdiskretisiert),<br />

wir erhalten also eine Zeitreihe. Die abgetasteten Werte werden in ein <strong>Neuronale</strong>s Netz<br />

eingegeben (hier im Beispiel ein SLP), welches lernen soll, Werte der Zeitreihe vorherzusagen, welche<br />

in der Zukunft liegen.<br />

Zeitreihen können auch in einem bestimmten zeitlichen Abstand ∆t abgetastete Werte<br />

einer eigentlich kontinuierlichen Funktion sein (Abb. B.1).<br />

Wenn wir eine Zeitreihe vorhersagen möchten, so suchen wir ein <strong>Neuronale</strong>s Netz, was<br />

vergangene Werte der Zeitreihe auf zukünftige abbildet – kennen wir eine Zeitreihe<br />

also auf längeren Abschnitten, so sind uns genug Trainingsbeispiele gegeben. Diese<br />

sind natürlich keine Beispiele der vorherzusagenden Zukunft, aber man versucht mit<br />

ihrer Hilfe, die Vergangenheit zu verallgemeinern und zu extrapolieren.<br />

Bevor wir uns allerdings an die Vorhersage einer Zeitreihe machen, müssen wir uns ein<br />

paar Gedanken zu Fragen über die betrachtete Zeitreihe machen – bzw. sicherstellen,<br />

dass unsere Zeitreihe einige Bedingungen erfüllt.


1. Haben wir überhaupt Anhaltspunkte dafür, dass die Zukunft der Zeitreihe auf<br />

irgendeine Weise von ihrer Vergangenheit abhängt? Steckt in der Vergangenheit<br />

der Zeitreihe also Information über ihre Zukunft?<br />

2. Haben wir genug vergangene Werte der Zeitreihe als Trainingsmuster?<br />

3. Im Falle einer Vorhersage einer kontinuierlichen Funktion: Wie müssen wir ∆t<br />

sinnvollerweise wählen?<br />

Wir wollen diese Fragen nun etwas näher beleuchten.<br />

Wieviel Information über die Zukuft ist in der Vergangenheit einer Zeitreihe vorhanden?<br />

Dies ist mit Abstand die wichtigste Frage, die wir für jede Zeitreihe, die wir in<br />

die Zukunft abbilden wollen, beantworten müssen. Sind die zukünftigen Werte einer<br />

Zeitreihe beispielsweise überhaupt nicht von den vergangenen abhängig, so ist überhaupt<br />

keine Zeitreihenvorhersage aus ihnen möglich.<br />

Wir gehen in diesem Kapitel von Systemen aus, deren Zustände auch auf ihre Zukunft<br />

schließen lassen – deterministische Systeme. Dies bringt uns erst einmal zu der Frage,<br />

was ein Systemzustand ist.<br />

Ein Systemzustand beschreibt ein System für einen bestimmten Zeitpunkt vollständig.<br />

Die Zukunft eines deterministischen Systems wäre durch die vollständige Beschreibung<br />

seines aktuellen Zustands also eindeutig bestimmt.<br />

Das Problem in der Realität ist, dass ein solcher Zustandsbegriff alle Dinge umfasst,<br />

die auf irgendeine Weise Einfluss auf unser System nehmen.<br />

Im Falle unserer Wettervorhersage für einen Ort könnten wir die Temperatur, den<br />

Luftdruck und die Wolkendichte als den Wetterzustand des Ortes zu einem Zeitpunkt<br />

t durchaus bestimmen – doch der gesamte Zustand würde wesentlich mehr umfassen.<br />

Hier wären weltweite wettersteuernde Phänomene von Interesse, genauso wie vielleicht<br />

kleine lokale Phänomene, z.B. die Kühlanlage des örtlichen Kraftwerks.<br />

Es ist also festzuhalten, dass der Systemzustand für die Vorhersage wünschenswert,<br />

aber nicht immer zu bekommen ist. Oft sind nur Teile des aktuellen Zustands erfassbar<br />

– wie beim Wetter die verschiedenen angesprochenen Wettergrößen.<br />

Wir können aber diese Schwäche teilweise ausgleichen, indem wir nicht nur die beobachtbaren<br />

Teile eines einzigen (des letzten) Zustandes in die Vorhersage mit einfließen<br />

lassen, sondern mehrere vergangene Zeitpunkte betrachten. Hieraus wollen wir nun<br />

unser erstes Vorhersagesystem formen:


xt−3<br />

xt−2<br />

xt−1<br />

xt<br />

<br />

Prediktor<br />

˜xt+1<br />

<br />

Abbildung B.2: Darstellung der One Step Ahead Prediction – aus einer Reihe vergangener Werte<br />

versucht man, den zukünftigen Wert zu errechnen. Das vorhersagende Element (in unserem Fall ein<br />

<strong>Neuronale</strong>s Netz) nennt man Prediktor.<br />

B.2 One Step Ahead Prediction<br />

Den Vorhersageversuch für den nächsten zukünftigen Wert einer Zeitreihe aus vergangenen<br />

Werten nennen wir One Step Ahead Prediction (Abb. B.2).<br />

Ein solches Prediktorsystem erhält also die letzten n observierten Zustandsteile des<br />

Systems als Eingabe und gibt die Vorhersage für den kommenden Zustand (oder Zustandsteil)<br />

aus. Die Idee, dass wir einen Zustandsraum mit Zuständen haben, die wir<br />

vorhersagen können, nennt man State Space Forecasting.<br />

Ziel des Prediktors ist es, eine Funktion<br />

f(xt−n+1, . . . , xt−1, xt) = ˜xt+1<br />

zu realisieren, welche exakt n vergangene Zeitwerte entgegennimmt, um daraus den<br />

zukünftigen Wert vorherzusagen. Vorhergesagte Werte wollen wir mit einer Tilde (z.B.<br />

˜x) überschreiben, um sie von den tatsächlichen zukünftigen Werten zu unterscheiden.<br />

Der intuitivste und einfachste Ansatz wäre, eine Linearkombination<br />

˜xi+1 = a0xi + a1xi−1 + . . . + ajxi−j<br />

zu suchen, welche unsere Bedingungen näherungsweise erfüllt.<br />

(B.1)<br />

(B.2)


Eine solche Konstruktion nennt man digitales Filter. Hier nutzt man aus, dass wir<br />

bei Zeitreihen in der Regel über sehr viele vergangene Werte verfügen, so dass wir eine<br />

Reihe von Gleichungen aufstellen können 1 :<br />

xt = a0xt−1 + . . . + ajx t−1−(n−1)<br />

xt−1 = a0xt−2 + . . . + ajx t−2−(n−1)<br />

. (B.3)<br />

xt−n = a0xt−n + . . . + ajx t−n−(n−1)<br />

Man könnte also n Gleichungen für n viele unbekannte Koeffizienten finden und so<br />

auflösen (soweit möglich). Oder noch ein besserer Ansatz: Wir könnten m > n Gleichungen<br />

für n Unbekannte so verwenden, dass die Summe der Fehlerquadrate der<br />

Vorhersagen, die uns ja bereits bekannt sind, minimiert wird – genannt Moving-<br />

Average-Verfahren.<br />

Diese lineare Struktur entspricht aber einfach einem Singlelayerperceptron mit linearer<br />

Aktivierungsfunktion, welches mit Daten aus der Vergangenheit trainiert wurde (Der<br />

Versuchsaufbau würde der Abb. B.1 auf Seite 226 entsprechen). In der Tat liefert ein<br />

Training mit der Deltaregel hier Ergebnisse, die der analytischen Lösung sehr nahe<br />

liegen.<br />

Auch wenn man damit oft schon sehr weit kommt, haben wir gesehen, dass man<br />

mit einem Singlelayerperceptron viele Problemstellungen nicht abdecken kann. Weitere<br />

Schichten mit linearer Aktivierungsfunktion bringen uns auch nicht weiter, da ein<br />

Multilayerperceptron mit ausschließlich linearen Aktivierungsfunktionen sich auf ein<br />

Singlelayerperceptron reduzieren lässt. Diese Überlegungen führen uns zum nichtlinearen<br />

Ansatz.<br />

Uns steht mit dem Multilayerperceptron und nichtlinearen Aktivierungsfunktionen ein<br />

universeller nichtlinearer Funktionsapproximator zur Verfügung, wir könnten also ein<br />

n-|H|-1-MLP für n viele Eingaben aus der Vergangenheit verwenden. Auch ein RBF-<br />

Netz wäre verwendbar, wir erinnern uns aber daran, dass die Zahl n hier im kleinen<br />

Rahmen bleiben muss, da hohe Eingabedimensionen in RBF-<strong>Netze</strong>n sehr aufwändig<br />

zu realisieren sind. Wenn man also viele Werte aus der Vergangenheit mit einbeziehen<br />

will, ist ein Multilayerperceptron deutlich weniger rechenaufwändig.<br />

1 Ohne diesen Umstand weiter zu betrachten möchte ich anmerken, dass die Vorhersage oft einfacher wird,<br />

je mehr vergangene Werte der Zeitreihe zur Verfügung stehen. Ich bitte den Leser, hierzu etwas zum<br />

Nyquist-Shannon-Abtasttheorem zu recherchieren.


xt−3<br />

xt−2<br />

xt−1<br />

xt<br />

<br />

Prediktor<br />

<br />

Prediktor<br />

<br />

˜xt+1<br />

<br />

Abbildung B.3: Darstellung der Two Step Ahead Prediction – aus einer Reihe vergangener Werte<br />

versucht man, durch einen zweiten Prediktor unter Einbeziehung eines bereits vorhergesagten<br />

Wertes den zweiten zukünftigen Wert vorherzusagen.<br />

B.3 Two Step Ahead Prediction<br />

Was für Lösungsansätze können wir denn finden, wenn wir weiter in die Zukunft sehen<br />

wollen?<br />

B.3.1 Rekursive Two Step Ahead Prediction<br />

Um beispielsweise zwei Zeitschritte in die Zukunft zu schauen, könnten wir einfach zwei<br />

One Step Ahead Predictions hintereinander ausführen (Abb. B.3), also eine rekursive<br />

Two Step Ahead Prediction ausführen. Leider ist aber der von einer One Step<br />

Ahead Prediction ermittelte Wert in aller Regel nicht exakt, so dass sich die Fehler<br />

schnell aufschaukeln können und, je öfter man die Predictions hintereinander ausführt,<br />

das Ergebnis immer ungenauer wird.<br />

B.3.2 Direkte Two Step Ahead Prediction<br />

Wir ahnen schon, dass es eine bessere Variante gibt: So wie wir das System auf die<br />

Vorhersage des nächsten Wertes trainieren können, können wir das natürlich auch<br />

mit dem übernächsten Wert – wir trainieren also z.B. ein <strong>Neuronale</strong>s Netz direkt<br />

darauf, zwei Zeitschritte in die Zukunft zu blicken, was wir Direct Two Step Ahead<br />

Prediction (Abb. B.4 auf der rechten Seite) nennen. Die Direct Two Step Ahead<br />

<br />

˜xt+2


xt−3<br />

xt−2<br />

xt−1<br />

xt<br />

<br />

Prediktor<br />

˜xt+1<br />

˜xt+2<br />

<br />

Abbildung B.4: Darstellung der Direct Two Step Ahead Prediction. Hier wird direkt der zweite<br />

Zeitschritt vorhergesagt, und der erste übersprungen. Sie unterscheidet sich technisch nicht von<br />

einer One Step Ahead Prediction.<br />

Prediction ist offensichtlich technisch identisch mit der One Step Ahead Prediction,<br />

der Unterschied liegt nur im Training.<br />

B.4 Weitere Optimierungsansätze für die Prediction<br />

Die Möglichkeit, in der Zukunft weiter entfernt liegende Werte vorherzusagen, ist nicht<br />

nur wichtig, weil wir die Zukunft weiter vorhersagen zu versuchen – es kann auch<br />

periodische Zeitreihen geben, wo es anders schwer möglich ist: Wenn eine Vorlesung<br />

jeden Dienstag um 09:00 Uhr stattfindet, nützt uns die Information, wieviele Personen<br />

Montags im Hörsaal saßen, für die Prädiktion der Vorlesungsteilnehmerzahl sehr wenig.<br />

Gleiches gilt z.B. für periodisch auftretende Pendlerstaus.<br />

B.4.1 Veränderung zeitlicher Parameter<br />

Es kann also sehr sinnvoll sein, in der Zeitreihe sowohl in Vergangenheit als auch in<br />

Zukunft bewusst Lücken zu lassen, also den Parameter ∆t einzuführen, der angibt,<br />

der wievielte zurückliegende Wert jeweils zur Prädiktion genutzt wird. Wir bleiben<br />

also technisch gesehen bei einer One Step Ahead Prediction, und strecken nur den<br />

Eingaberaum oder aber wir trainieren die Vorhersage weiter entfernt liegender Werte.<br />

Auch Kombinationen verschiedener ∆t sind möglich: Im Falle der Stauvorhersage für<br />

einen Montag könnten zusätzlich zu den letzten Montagen die letzten paar Tage als Dateninput<br />

genutzt werden. Wir nutzen so also die letzten Werte mehrerer Perioden, in


xt−3<br />

yt−3<br />

xt−2<br />

yt−2<br />

xt−1<br />

yt−1<br />

xt<br />

yt<br />

<br />

<br />

Prediktor<br />

˜xt+1<br />

<br />

Abbildung B.5: Darstellung der Heterogenen One Step Ahead Prediction. Vorhersage einer Zeitreihe<br />

unter Betrachtung einer weiteren.<br />

xt−3<br />

yt−3<br />

xt−2<br />

yt−2<br />

xt−1<br />

yt−1<br />

xt<br />

yt<br />

<br />

<br />

Prediktor<br />

˜xt+1<br />

<br />

Abbildung B.6: Heterogene One Step Ahead Prediction von zwei Zeitreihen gleichzeitig.<br />

diesem Fall einer wöchentlichen und einer täglichen. Wir könnten in Form der Ferienanfänge<br />

auch noch eine jährliche hinzunehmen (jeder von uns hat bestimmt schon einmal<br />

viel Zeit auf der Autobahn verbracht, weil er den Ferienanfang vergessen hatte).<br />

B.4.2 Heterogene Prediction<br />

Eine weitere Variante der Vorhersage wäre, aus mehreren Zeitreihen etwas über die<br />

Zukunft einer einzigen Zeitreihe vorherzusagen, falls man annimmt, dass die zusätzliche<br />

Zeitreihe etwas mit der Zukunft der ersten zu tun hat (heterogene One Step Ahead<br />

Prediction, Abb. B.5).<br />

Will man zwei Ausgaben zu zwei Zeitreihen, welche etwas miteinander zu tun haben,<br />

vorhersagen, kann man natürlich zwei parallele One Step Ahead Predictions ausführen<br />

(dies wird analytisch oft gemacht, weil die Gleichungen sonst irgendwann sehr<br />

<br />

˜yt+1


unübersichtlich werden) – oder man hängt im Falle der <strong>Neuronale</strong>n <strong>Netze</strong> einfach ein<br />

Outputneuron mehr an und nutzt Wissen von beiden Zeitreihen für beide Ausgaben<br />

(Abb. B.6 auf der linken Seite).<br />

Mehr und allgemeineres Material zum Thema „Zeitreihen“ findet sich unter [WG94].<br />

B.5 Bemerkungen zur Vorhersage von Aktienkursen<br />

Viele Personen schauen sich die Veränderung eines Aktienkurses in der Vergangenheit<br />

an und versuchen daraus auf die Zukunft zu schließen, um Profit daraus zu ziehen.<br />

Aktienkurse sind aus sich selbst heraus unstetig und daher prinzipiell schon einmal<br />

schwierige Funktionen. Weiterhin kann man die Funktionen nur zu diskreten Werten<br />

abrufen, oft beispielsweise im Tagesrhytmus (wenn man Glück hat, noch mit Maximalund<br />

Minimalwerten pro Tag), wo natürlich die Tagesschwankungen wieder wegfallen.<br />

Dies macht die Sache auch nicht einfacher.<br />

Es gibt nun Chartisten, also Personen, welche sich viele Diagramme anschauen und mit<br />

viel Hintergrundwissen und oft Jahrzehnten an Erfahrung entscheiden, ob Wertpapiere<br />

gekauft werden sollten oder nicht (und damit auch oft Erfolg haben).<br />

Neben den Wertpapierkursen sind auch Wechselkurse von Währungen sehr interessant<br />

vorherzusagen: Wenn man 100 Euro in Dollar umtauscht, diese in Pfund und diese wieder<br />

in Euro, kann passieren, dass man zum Schluss 110 Euro herausbekommt. Wenn<br />

man das allerdings herausgefunden hat, würde man das öfter machen und somit selbst<br />

die Wechselkurse in einen Zustand verändern, in dem ein solcher vermehrender Kreislauf<br />

nicht mehr möglich ist (wäre das nicht so, könnte man ja Geld herstellen, indem<br />

man sozusagen ein finanzielles Perpetuum Mobile erschafft).<br />

Gute Wertpapier- und Wechselkursbroker heben oder senken den Daumen an der Börse<br />

– und geben damit an, ob eine Aktie oder ein Wechselkurs ihrer Meinung nach<br />

steigen wird. Sie geben also mathematisch ausgedrückt das erste Bit (Vorzeichen) der<br />

ersten Ableitung des Wechselkurses an. Exzellente Weltklasse-Broker erreichen damit<br />

Erfolgsraten von etwas über 70%.<br />

In Großbritannien ist es mit einer heterogenen One-Step-Ahead-Prediction gelungen,<br />

diese Vorhersagerichtigkeit auf 76% zu steigern: Zusätzlich zu der Zeitreihe des Wertes<br />

wurden noch Indikatoren miteinbezogen, wie z.B. der Ölpreis in Rotterdam oder die<br />

US-Staatsverschuldung.<br />

Das einmal zur Größenordnung der Richtigkeit von Börsenschätzungen – wir reden ja<br />

immer noch über das Erste Bit der Ersten Ableitung! Damit ist uns auch noch keine


Information gegeben, wie stark der erwartete Anstieg oder Abfall ist, und so auch nicht,<br />

ob sich der ganze Aufwand lohnt: Vielleicht macht uns eine einzige falsche Vorhersage<br />

den ganzen Gewinn von hundert richtigen wieder zunichte.<br />

Wie verhalten sich also <strong>Neuronale</strong> <strong>Netze</strong> zur Aktienkursvorhersage? Wir nehmen ja<br />

ganz intuitiv an, dass die Aktienkurswerte der Zukunft eine Funktion der Aktienwerte<br />

von Zeitpunkten davor sind.<br />

Genau diese Annahme ist jedoch irrig: Aktienkurse sind keine Funktion ihrer Vergangenheit,<br />

sondern eine Funktion ihrer mutmaßlichen Zukunft. Wir kaufen keine Aktien,<br />

weil sie in den letzten Tagen sehr gestiegen sind – sondern weil wir denken, dass sie<br />

morgen höher steigen werden. Kaufen viele Personen aus diesem Einfall heraus eine<br />

Aktie, so treiben sie ihren Kurs in die Höhe, und haben also mit ihrer Mutmaßung recht<br />

– es entsteht eine Self Fulfilling Prophecy, ein in der Wirtschaft lange bekanntes<br />

Phänomen.<br />

Gleiches gilt für den umgekehrten Fall: Wir verkaufen Aktien, weil wir denken, dass<br />

sich morgen die Kurse nach unten bewegen werden – was den Kurs am nächten Tag<br />

nach unten drückt und am übernächsten in aller Regel noch viel mehr.<br />

Immer wieder taucht Software auf, die mit wissenschaftlichen Schlagworten wie z.B.<br />

<strong>Neuronale</strong>n <strong>Netze</strong>n behauptet, Aktienkurse vorhersagen zu können. Kaufen Sie diese<br />

nicht – zusätzlich zu den oben genannten wissenschaftlichen Ausschlusskriterien aus<br />

einem einfachen Grund: Wenn diese Tools so toll funktionieren – warum verkauft die<br />

Herstellerfirma sie dann? Nützliches Wirtschaftswissen wird in aller Regel geheimgehalten,<br />

und wenn wir einen Weg wüssten, garantiert mit Aktien reich zu werden, würden<br />

wir doch durch diesen Weg Millionen verdienen, und nicht in 30-Euro-Häppchen durch<br />

den Verkauf desselben, oder?


Anhang C<br />

Exkurs: Reinforcement Learning<br />

Was, wenn keine Trainingsbeispiele existieren, man aber trotzdem beurteilen<br />

kann, wie gut man gelernt hat, ein Problem zu lösen? Betrachten wir ein<br />

Lernparadigma, welches zwischen überwachtem und unüberwachtem Lernen<br />

anzusiedeln ist.<br />

Wir wollen nun einen eher exotischen Ansatz des Lernens kennenlernen – einfach, um<br />

einmal von den üblichen Verfahren wegzukommen. Wir kennen Lernverfahren, in denen<br />

wir einem Netz genau sagen, was es tun soll, also beispielhafte Ausgabewerte bereitstellen.<br />

Wir kennen ebenfalls Lernverfahren, wie bei den Self Organizing Maps, in denen<br />

ausschließlich Eingabewerte gegeben werden.<br />

Wir wollen nun eine Art Mittelding erforschen: Das Lernparadigma des bestärkenden<br />

Lernens – Reinforcement Learning nach Sutton und Barto [SB98].<br />

Reinforcement Learning an sich ist kein <strong>Neuronale</strong>s Netz, sondern nur eines der drei<br />

Lernparadigmen, die wir bereits in Kapitel 4 genannt haben. Manche Quellen zählen<br />

es zu den überwachten Lernverfahren, da man ein Feedback gibt – durch die sehr rudimentäre<br />

Art des Feedbacks ist es aber begründet von den überwachten Lernverfahren<br />

abzugrenzen, mal ganz abgesehen von der Tatsache, dass es keine Trainingsbeispiele<br />

gibt.<br />

Während allgemein bekannt ist, dass Verfahren wie Backpropagation im Gehirn selbst<br />

nicht funktionieren können, wird Reinforcement Learning allgemein als biologisch wesentlich<br />

motivierter angesehen.<br />

Der Ausdruck Reinforcement Learning (Bestärkendes Lernen) kommt aus den<br />

Kognitionswissenschaften und der Psychologie und beschreibt das in der Natur überall<br />

vorhandene Lernsystem durch Zuckerbrot und Peitsche, durch gute Erfahrungen und<br />

235


schlechte Erfahrungen, Belohnung und Bestrafung. Es fehlt aber eine Lernhilfe, die<br />

uns genau erklärt, was wir zu tun haben: Wir erhalten lediglich ein Gesamtergebnis<br />

für einen Vorgang (Haben wir das Schachspiel gewonnen oder nicht? Und wie sicher<br />

haben wir es gewonnen?), aber keine Ergebnisse für die Zwischenschritte.<br />

Fahren wir beispielsweise mit unserem Fahrrad mit abgewetzten Reifen und einer Geschwindigkeit<br />

von exakt 21, 5 km<br />

h in einer Kurve über Sand mit einer Korngröße von<br />

durchschnittlich 0.1mm, so wird uns niemand genau sagen können, auf welchen Winkel<br />

wir den Lenker einzustellen haben, oder noch schlimmer, wie stark die Muskelkontraktionen<br />

von unseren vielen Muskelteilen in Arm oder Bein dafür sein müssen. Je<br />

nachdem, ob wir das Ende der Kurve unbeschadet erreichen, sehen wir uns aber sehr<br />

schnell mit einer guten oder schlechten Lernerfahrung, einem Feedback bzw. Reward<br />

konfrontiert. Der Reward ist also sehr einfach gehalten – aber dafür auch wesentlich<br />

einfacher verfügbar. Wenn wir nun oft genug verschiedene Geschwindigkeiten und Kurvenwinkel<br />

ausgetestet haben und einige Rewards erhalten haben, werden wir in etwa<br />

ein Gefühl dafür bekommen, was funktioniert und was nicht: Genau dieses Gefühl zu<br />

erhalten, ist das Ziel des Reinforcement Learnings.<br />

Ein weiteres Beispiel für die Quasi-Unmöglichkeit, eine Art Kosten- oder Nutzenfunktion<br />

zu erhalten, ist ein Tennisspieler, der durch komplizierte Bewegungen und ballistische<br />

Bahnen im dreidimensionalen Raum unter Einberechnung von Windrichtung,<br />

Wichtigkeit des Turniers, privaten Faktoren und vielem anderen versucht, seinen sportlichen<br />

Ruhm auf lange Zeit zu maximieren.<br />

Um es gleich vorweg zu sagen: Da wir nur wenig Feedback erhalten, heißt Reinforcement<br />

Learning oft ausprobieren – und damit ist es recht langsam.<br />

C.1 Systemaufbau<br />

Wir wollen nun verschiedene Größen und Bestandteile des Systems kurz ansprechen,<br />

und sie in den nachfolgenden Abschnitten genauer definieren. Reinforcement Learning<br />

repräsentiert grob formuliert die gegenseitige Interaktion zwischen einem Agenten und<br />

einem Umweltsystem (Abb. C.2).<br />

Der Agent soll nun irgendeine Aufgabe lösen, er könnte z.B. ein autonomer Roboter<br />

sein, der Hindernisvermeidung betreiben soll. Der Agent führt in der Umwelt nun<br />

Aktionen aus und bekommt von der Umwelt dafür ein Feedback zurück, das wir im<br />

folgenden Reward nennen wollen. Dieser Kreis aus Aktion und Reward ist charakteristisch<br />

für Reinforcement Learning. Der Agent beeinflusst das System, das System gibt<br />

einen Reward und verändert sich.


Der Reward ist ein reeller oder diskreter Skalar, welcher uns wie oben beschrieben<br />

angibt, wie gut wir unser Ziel erreichen, jedoch keine Anleitung vermittelt, wie wir es<br />

erreichen können. Ziel ist immer, langfristig eine möglichst hohe Summe von Rewards<br />

zu erwirtschaften.<br />

C.1.1 Die Gridworld<br />

Als Lernbeispiel für Reinforcement Learning möchte ich gerne die sogenannte Gridworld<br />

verwenden. Wir werden sehen, dass sie sehr einfach aufgebaut und durchschaubar<br />

ist und daher eigentlich gar kein Reinforcement Learning notwendig ist – trotzdem<br />

eignet sie sich sehr gut, die Vorgehensweisen des Reinforcement Learning an ihr darzustellen.<br />

Definieren wir nun die einzelnen Bestandteile des Reinforcement Systems<br />

beispielhaft durch die Gridworld. Wir werden jedes dieser Bestandteile später noch<br />

genauer beleuchten.<br />

Umwelt: Die Gridworld (Abb. C.1 auf der folgenden Seite) ist eine einfache, diskrete<br />

Welt in zwei Dimensionen, die wir im Folgenden als Umweltsystem verwenden<br />

wollen.<br />

Agent: Als Agent nehmen wir einen einfachen Roboter, der sich in unserer Gridworld<br />

befindet.<br />

Zustandsraum: Wie wir sehen, hat unsere Gridworld 5 × 7 Felder, von denen 6 nicht<br />

begehbar sind. Unser Agent kann also 29 Positionen in der Gridworld besetzen.<br />

Diese Positionen nehmen wir für den Agenten als Zustände.<br />

Aktionsraum: Fehlen noch die Aktionen. Definieren wir einfach, der Roboter könnte<br />

jeweils ein Feld nach oben, unten, rechts oder links gehen (solange dort kein<br />

Hindernis oder der Rand unserer Gridworld ist).<br />

Aufgabe: Die Aufgabe unseres Agenten ist es, aus der Gridworld hinauszufinden. Der<br />

Ausgang befindet sich rechts von dem hell ausgefüllten Feld.<br />

Nichtdeterminismus: Die beiden Hindernisse können durch eine „Tür“ verbunden werden.<br />

Wenn die Tür geschlossen ist (unterer Teil der Abbildung), ist das entsprechende<br />

Feld nicht begehbar. Die Tür kann sich nicht während eines Durchlaufs<br />

verändern, sondern nur zwischen den Durchläufen.<br />

Wir haben nun eine kleine Welt geschaffen, die uns über die nachfolgenden Lernstrategien<br />

begleiten und sie uns anschaulich machen wird.


×<br />

×<br />

Abbildung C.1: Eine graphische Darstellung unserer Gridworld. Dunkel gefüllte Zellen sind Hindernisse<br />

und daher nicht begehbar. Rechts von dem hell gefüllten Feld ist der Ausgang. Das Symbol<br />

× markiert die Startposition unseres Agenten. Im oberen Teil der Abbildung ist die Tür offen, im<br />

unteren geschlossen.<br />

C.1.2 Agent und Umwelt<br />

Unser Ziel ist nun, dass der Agent lernt, was mit Hilfe des Rewards geschieht. Es wird<br />

also über, von und mit einem dynamischen System, der Umwelt, gelernt, um ein Ziel<br />

zu erreichen. Doch was genau heißt eigentlich Lernen in diesem Zusammenhang?<br />

Der Agent soll eine Abbildung von Situationen auf Aktionen (genannt Policy) lernen,<br />

also lernen, was er in welcher Situation tun soll, um ein ganz bestimmtes (gegebenes)<br />

Ziel zu erreichen. Das Ziel wird dem Agenten einfach aufgezeigt, indem er für das<br />

Erreichen eine Belohnung bekommt.<br />

Die Belohnung ist nicht zu verwechseln mit dem Reward – vielleicht ist es auf dem<br />

Weg des Agenten zur Problemlösung auch sinnvoll, zwischendurch hin und wieder etwas<br />

weniger Belohnung oder gar Strafe zu bekommen, wenn das langfristige Ergebnis dafür<br />

maximal ist (ähnlich, wie wenn ein Anleger ein Tief eines Aktienkurses einfach aussitzt<br />

oder ein Bauernopfer beim Schach). Ist der Agent also auf einem guten Weg zum Ziel,<br />

gibt es positiven Reward, wenn nicht, gibt es keinen oder sogar negativen Reward


Reward / neue Situation<br />

<br />

Agent<br />

<br />

Umwelt<br />

Aktion<br />

Abbildung C.2: Der Agent führt Aktionen in seiner Umwelt durch, welche ihm einen Reward gibt.<br />

(Strafe). Die Belohnung ist sozusagen die schlussendliche Summe aller Rewards – wir<br />

wollen sie auch Return nennen.<br />

Nachdem wir nun die Grundbestandteile umgangssprachlich benannt haben, wollen wir<br />

in den folgenden Abschnitten genauer betrachten, aus was wir unser Reinforcement-<br />

Learning-System abstrakt zusammensetzen können.<br />

In der Gridworld: Der Agent ist in der Gridworld ein einfacher Roboter, der aus der<br />

Gridworld herausfinden soll. Umwelt ist die Gridworld selbst, eine diskrete Gitterwelt.<br />

Definition C.1 (Agent). Der Agent bei Reinforcement Learning kann formal beschrieben<br />

werden als eine Abbildung vom Situationsraum S in den Aktionsraum A(st).<br />

Was Situationen st sind, wird später noch definiert und soll nur aussagen, dass der<br />

Aktionsraum von der aktuellen Situation abhängig ist.<br />

Agent: S → A(st) (C.1)<br />

Definition C.2 (Umwelt). Die Umwelt repräsentiert eine stochastische Abbildung<br />

von einer Aktion A unter der aktuellen Situation st auf einen Reward rt und eine neue<br />

Situation st+1.<br />

C.1.3 Zustände, Situationen und Aktionen<br />

Umwelt: S × A → P (S × rt) (C.2)<br />

Wie wir schon angesprochen haben, kann ein Agent sich innerhalb seiner Umwelt in<br />

verschiedenen Zuständen befinden: Im Falle der Gridworld zum Beispiel an verschiedenen<br />

Orten (wir erhalten hier einen zweidimensionalen Zustandsvektor).


Es ist für den Agenten aber nicht immer möglich, alle Informationen seines aktuellen<br />

Zustandes zu erfassen, weswegen wir den Begriff der Situation einführen müssen.<br />

Eine Situation ist ein Zustand aus Agentensicht, also nur eine mehr oder weniger gute<br />

Approximation eines Zustandes.<br />

Situationen lassen es daher nicht im Allgemeinen zu, Folgesituationen eindeutig „vorherzusagen“<br />

– selbst bei einem vollständig deterministischen System haben wir das<br />

vielleicht nicht gegeben. Wenn wir alle Zustände und die Übergänge dazwischen exakt<br />

kennen würden (also das gesamte System), wäre eine optimale Planung möglich<br />

und auch eine optimale Policy einfach findbar – (Methoden liefert z.B. die dynamische<br />

Programmierung).<br />

Wir wissen nun, dass das Reinforcement Learning eine Interaktion zwischen Agent<br />

und System mit Aktionen at und Situationen st ist. Der Agent kann nun nicht selbst<br />

feststellen, ob die aktuelle Situation gut oder schlecht ist: Genau dies ist der Grund,<br />

warum er wie eingangs bereits beschrieben von der Umwelt einen Reward erhält.<br />

In der Gridworld: Zustände sind die Orte, an denen der Agent sich befinden kann.<br />

Situationen kommen den Zuständen in der Gridworld vereinfachend gleich. Mögliche<br />

Aktionen sind nach Norden, Süden, Osten oder Westen zu gehen.<br />

Situation und Aktion können vektoriell sein, der Reward jedoch ist immer ein Skalar<br />

(im Extremfall sogar nur ein Binärwert), da das Ziel von Reinforcement Learning ist,<br />

mit sehr wenig Feedback auszukommen – ein komplizierter vektorieller Reward käme<br />

ja einem richtigen Teaching Input gleich.<br />

Im Übrigen soll ja eine Kostenfunktion minimiert werden, was aber mit einem vektoriellen<br />

Reward so nicht möglich wäre, da wir keine intuitiven Ordnungsrelationen im<br />

Mehrdimensionalen besitzen – also nicht direkt wissen, was jetzt besser oder schlechter<br />

ist.<br />

Definition C.3 (Zustand). In einem Zustand befindet sich der Agent innerhalb seiner<br />

Umwelt. Zustände enthalten jede Information über den Agent im Umweltsystem.<br />

Es ist also theoretisch möglich, aus diesem gottähnlichen Zustandswissen einen Folgezustand<br />

auf eine ausgeführte Aktion in einem deterministischen System eindeutig<br />

vorherzusagen.<br />

Definition C.4 (Situation). Situationen st (hier zum Zeitpunkt t) aus einem Situationsraum<br />

S sind das eingeschränkte, approximative Wissen des Agenten über seinen<br />

Zustand. Die Approximation (von der der Agent nicht einmal wissen kann, wie gut sie<br />

ist) macht eindeutige Vorhersagen unmöglich.


Definition C.5 (Aktion). Aktionen at können vom Agenten ausgeführt werden (wobei<br />

es sein kann, dass je nach Situation ein anderer Aktionsraum A(S) besteht) und<br />

bewirken Zustandsübergänge und damit eine neue Situation aus Sicht des Agenten.<br />

C.1.4 Reward und Return<br />

Wie im wirklichen Leben ist unser Ziel, eine möglichst hohe Belohnung zu erhalten, also<br />

die Summe der erwarteten Rewards r, genannt Return R, langfristig zu maximieren.<br />

Bei endlich vielen Zeitschritten 1 kann man die Rewards einfach aufsummieren:<br />

Rt = rt+1 + rt+2 + . . . (C.3)<br />

∞<br />

=<br />

(C.4)<br />

x=1<br />

rt+x<br />

Der Return wird hierbei natürlich nur abgeschätzt (Würden wir alle Rewards und<br />

damit den Return komplett kennen, bräuchten wir ja nicht mehr lernen).<br />

Definition C.6 (Reward). Ein Reward rt ist eine skalare, reelle oder diskrete (manchmal<br />

sogar nur binäre) Belohnungs- oder Bestrafungsgröße, welche dem Agenten vom<br />

Umweltsystem als Reaktion auf eine Aktion gegeben wird.<br />

Definition C.7 (Return). Der Return Rt ist die Aufkumulierung aller erhaltenen<br />

Rewards bis zum Zeitpunkt t.<br />

C.1.4.1 Umgang mit großen Zeiträumen<br />

Nicht alle Problemstellungen haben aber ein explizites Ziel und damit eine endliche<br />

Summe (unser Agent kann zum Beispiel ein Roboter sein, der die Aufgabe hat, einfach<br />

immer weiter herumzufahren und Hindernissen auszuweichen).<br />

Um im Falle einer unendlichen Reihe von Reward-Abschätzungen keine divergierende<br />

Summe zu erhalten, wird ein abschwächender Faktor 0 < γ < 1 verwendet, der den<br />

Einfluss ferner erwarteter Rewards abschwächt: Das ist nicht nur dann sinnvoll, wenn<br />

kein Ziel an sich existiert, sondern auch, wenn das Ziel sehr weit entfernt ist:<br />

Rt = rt+1 + γ 1 rt+2 + γ 2 rt+3 + . . . (C.5)<br />

∞<br />

= γ<br />

x=1<br />

x−1 rt+x<br />

(C.6)<br />

1 Soviel sind in der Praxis ja nur möglich, auch wenn die Formeln prinzipiell mit unendlichen Summen<br />

arbeiten


Je weiter die Belohnung weg ist, umso weniger Anteil hat sie also an den Entscheidungen<br />

des Agenten.<br />

Eine andere Möglichkeit, die Return-Summe zu handhaben, wäre ein begrenzter Zeithorizont<br />

τ, so dass nur τ viele folgende Rewards rt+1, . . . , rt+τ betrachtet werden:<br />

Rt = rt+1 + . . . + γ τ−1 rt+τ<br />

τ<br />

= γ<br />

x=1<br />

x−1 rt+x<br />

Wir unterteilen also den Zeitstrahl in Episoden. Üblicherweise wird eine der beiden Methoden<br />

zur Begrenzung der Summe verwendet, wenn nicht sogar beide gemeinsam.<br />

Wir versuchen also wie im täglichen Leben, unsere aktuelle Situation an einen gewünschten<br />

Zustand zu approximieren. Da nicht zwangsläufig nur der folgende erwartete Reward,<br />

sondern die erwartete Gesamtsumme bestimmt, was der Agent tut, können auch<br />

Aktionen durchgeführt werden, die kurzfristig erst einmal negativen Reward ergeben<br />

(z.B. das Bauernopfer beim Schach), sich jedoch später auszahlen.<br />

C.1.5 Die Policy<br />

Nachdem wir nun einige Systemelemente des Reinforcement Learnings genau betrachtet<br />

und formalisiert haben, bleibt noch das eigentliche Ziel zu betrachten:<br />

Der Agent lernt während des Reinforcement Learnings eine Policy<br />

Π : S → P (A),<br />

er justiert also fortlaufend eine Abbildung von den Situationen auf die Wahrscheinlichkeiten<br />

P (A), mit denen jede Aktion A in jeder Situation S ausgeführt wird. Eine<br />

Policy kann definiert werden als eine Strategie, Aktionen auszuwählen, die den Reward<br />

auf lange Zeit maximiert.<br />

In der Gridworld: Die Policy ist in der Gridworld die Strategie, nach der der Agent<br />

versucht, aus der Gridworld herauszufinden.<br />

Definition C.8 (Policy). Die Policy Π ist eine Abbildung von Situationen auf Wahrscheinlichkeiten,<br />

jede Aktion aus dem Aktionsraum A auszuführen. Sie ist also formalisierbar<br />

als<br />

(C.7)<br />

(C.8)<br />

Π : S → P (A). (C.9)


Wir unterscheiden hierbei grundsätzlich zwischen zwei Paradigmen von Policies: Eine<br />

Open Loop Policy stellt eine offene Steuerkette dar und bildet aus einer Startsituation<br />

s0 eine Sequenz von Aktionen a0, a1, . . . mit ai = ai(si); i > 0. Der Agent erstellt<br />

also zu Beginn einen Plan und führt ihn sukzessive bis zum Ende aus, ohne die zwischenzeitlichen<br />

Situationen zu berücksichtigen (daher ai = ai(si), Aktionen nach a0<br />

hängen nicht von den Situationen ab).<br />

In der Gridworld: Eine Open Loop Policy würde uns in der Gridworld für eine Startposition<br />

eine exakte Wegbeschreibung zum Ausgang liefern, z.B. von der angegebenen<br />

Startposition den Weg (in Himmelsrichtungsabkürzungen) OOOON.<br />

Eine Open Loop Policy ist also eine Sequenz von Aktionen ohne zwischenzeitliches<br />

Feedback. Aus einer Startsituation wird eine Sequenz von Aktionen generiert. Wenn<br />

man das System 100%ig kennt, kann man mit einer solchen Open Loop Policy erfolgreich<br />

arbeiten und zu sinnvollen Ergebnissen gelangen. Um aber z.B. das Schachspiel<br />

100% zu kennen, müssten wir alle Spielzüge durchprobieren, was sehr aufwändig ist.<br />

Wir müssen uns für derartige Problemstellungen also eine Alternative zur Open Loop<br />

Policy suchen, die aktuelle Situationen in die Handlungsplanung miteinbezieht:<br />

Eine Closed Loop Policy ist ein geschlossener Regelkreis, gewissermaßen eine Funktion<br />

Π : si → ai mit ai = ai(si).<br />

Hier übt die Umwelt Einfluss auf unsere Aktionen aus bzw. der Agent reagiert auf<br />

Input der Umwelt, wie schon in Abb. C.2 dargestellt. Die Closed Loop Policy ist<br />

gewissermaßen ein reaktiver Plan, der aktuelle Situationen auf auszuführende Aktionen<br />

abbildet.<br />

In der Gridworld: Eine Closed Loop Policy würde auf die Aktuelle Position eingehen<br />

und Richtungen nach der Aktion auswählen. Insbesondere wenn dynamisch ein Hindernis<br />

erscheint, ist eine solche Policy die bessere Wahl.<br />

Bei der Wahl der auszuführenden Aktionen können wieder zwei grundsätzliche Strategien<br />

betrachtet werden.<br />

C.1.5.1 Exploitation vs. Exploration<br />

Wie im wirklichen Leben stellt sich während des Reinforcement Learnings oft die Frage,<br />

ob vorhandenes Wissen stur ausgenutzt, oder aber auch neue Wege ausprobiert werden.<br />

Wir wollen zunächst die zwei Extrema betrachten:<br />

Eine Greedy Policy wählt immer den Weg des höchsten Rewards, den wir im voraus<br />

bestimmen können, also des höchsten bekannten Rewards. Diese Policy repräsentiert


den Exploitation-Ansatz und ist erfolgversprechend, wenn man das behandelte System<br />

bereits kennt.<br />

Im Gegensatz zum Exploitation-Ansatz steht der Exploration-Ansatz, der zum Ziel<br />

hat, ein System möglichst umfassend zu erforschen, so dass auch Wege zum Ziel gefunden<br />

werden können, welche auf den ersten Blick vielleicht nicht erfolgversprechend<br />

aussehen, es aber dennoch sind.<br />

Angenommen, wir suchen einen Weg zum Restaurant, so wäre eine auf Nummer sicher<br />

gehende Policy, von überall den Weg zu nehmen, den wir kennen, so unoptimal und<br />

lang er auch sein mag, und nicht zu versuchen, bessere Wege zu erforschen. Ein anderer<br />

Ansatz wäre, auch hin und wieder nach kürzeren Wegen zu forschen, selbst auf die<br />

Gefahr hin, dass die Forschung lange dauert, nichts bringt und wir daher zum Schluß<br />

doch den ursprünglichen Weg nehmen und zu spät ins Restaurant kommen.<br />

In der Realität wird oft eine Kombination beider Verfahren angewandt: Zum Anfang<br />

eines Lernvorgangs wird mit höherer Wahrscheinlichkeit geforscht, während zum Ende<br />

mehr vorhandenes Wissen ausgenutzt wird. Auch eine statische Wahrscheinlichkeitsverteilung<br />

ist hier möglich und wird oft angewandt.<br />

In der Gridworld: Für die Wegsuche in der Gridworld gilt das Restaurantbeispiel natürlich<br />

analog.<br />

C.2 Lernvorgang<br />

Betrachten wir wieder das tägliche Leben. Von einer Situation können wir durch Aktionen<br />

in verschiedene Untersituationen geraten, von jeder Untersituation wieder in Unteruntersituationen.<br />

Gewissermaßen erhalten wir einen Situationsbaum, wobei man<br />

Verknüpfungen unter den Knoten berücksichtigen muss (oft gibt es mehrere Wege, wie<br />

man zu einer Situation gelangen kann – der Baum könnte also treffender als Situationsgraph<br />

bezeichnet werden). Blätter des Baums sind Endsituationen des Systems. Der<br />

Exploration-Ansatz würde den Baum möglichst genau durchsuchen und alle Blätter<br />

kennenlernen, der Exploitation-Ansatz zielsicher zum besten bekannten Blatt gehen.<br />

Analog zum Situationsbaum können wir uns auch einen Aktionsbaum aufbauen – hier<br />

stehen dann in den Knoten die Rewards für die Aktionen. Wir müssen nun vom täglichen<br />

Leben adaptieren, wie genau wir lernen.


C.2.1 Strategien zur Rewardvergabe<br />

Interessant und von großer Wichtigkeit ist die Frage, wofür man einen Reward vergibt<br />

und was für einen Reward man vergibt, da das Design des Rewards das Systemverhalten<br />

maßgeblich steuert. Wie wir oben gesehen haben, gibt es (wieder analog zum<br />

täglichen Leben) in der Regel zu jeder Situation verschiedene Aktionen, welche man<br />

ausführen kann. Es existieren verschiedene Strategien, um die ausgewählten Situationen<br />

zu bewerten und so die zum Ziel führende Aktionsfolge zu lernen. Diese sollen im<br />

Folgenden erst einmal grundsätzlich erläutert werden.<br />

Wir wollen nun einige Extremfälle als Designbeispiele zum Reward anbringen:<br />

Als Pure Delayed Reward bezeichnen wir eine Rewardvergabe ähnlich wie beim<br />

Schachspiel: Wir erhalten unsere Belohnung zum Schluss, und während des Spiels keine.<br />

Diese Methode ist immer dann von Vorteil, wenn man am Ende genau sagen kann, ob<br />

man Erfolg gehabt hat, aber in den Zwischenschritten nicht genau einschätzen kann,<br />

wie gut die eigene Situation ist. Es gilt<br />

rt = 0 ∀t < τ (C.10)<br />

sowie rτ = 1 bei Gewinn und rτ = −1 bei Verlust. Bei dieser Rewardstrategie geben<br />

nur die Blätter des Situationsbaumes einen Reward zurück.<br />

Pure Negative Reward: Hier gilt<br />

rt = −1 ∀t < τ. (C.11)<br />

Dieses System findet den schnellsten Weg zum Ziel, weil dieser automatisch auch der<br />

günstigste in Bezug auf den Reward ist. Man wird bestraft für alles, was man tut –<br />

selbst wenn man nichts tut, wird man bestraft. Diese Strategie hat zur Folge, dass es<br />

die preiswerteste Methode für den Agenten ist, schnell fertig zu werden.<br />

Als weitere Strategie betrachten wir die Avoidance Strategy: Schädlichen Situationen<br />

wird aus dem Weg gegangen. Es gilt<br />

rt ∈ {0, −1}, (C.12)<br />

Fast alle Situationen erhalten hier gar keinen Reward, nur einige wenige erhalten einen<br />

negativen. Diese negativen Situationen wird der Agent weiträumig umgehen.<br />

Achtung: Rewardstrategien können leicht unerwartete Folgen haben. Ein Roboter, dem<br />

man sagt „mach was du willst, aber wenn du ein Hindernis berührst, kriegst du eine<br />

Strafe“, wird einfach stehenbleiben. Wird Stehenbleiben folglich auch bestraft, wird er<br />

kleine Kreise fahren. Bei näherem Überlegen kommt man auf den Gedanken, dass diese


Verhaltensweisen den Return des Roboters optimal erfüllen, aber leider nicht von uns<br />

intendiert waren.<br />

Man kann weiterhin zeigen, dass insbesondere kleine Aufgaben mit negativen Rewards<br />

besser gelöst werden können während man bei großen, komplizierten Aufgaben mit<br />

positiven, differenzierteren Rewards weiter kommt.<br />

In Bezug auf unsere Gridworld wollen wir den Pure Negative Reward als Strategie<br />

wählen: Der Roboter soll möglichst schnell zum Ausgang finden.<br />

C.2.2 Die State-Value-Funktion<br />

Im Gegensatz zu unserem Agenten haben wir eine gottgleiche Sicht auf unsere Gridworld,<br />

so dass wir schnell bestimmen können, welche Roboterstartposition welchen<br />

optimalen Return erreichen kann.<br />

In Abbildung C.3 auf der rechten Seite sind diese optimalen Returns pro Feld aufgetragen.<br />

In der Gridworld: Die State-Value-Funktion für unsere Gridworld stellt genau eine<br />

solche Funktion pro Situation (= Ort) dar, mit dem Unterschied, dass sie nicht bekannt<br />

ist, sondern gelernt werden muss.<br />

Wir sehen also, dass es für den Roboter praktisch wäre, die aktuellen wie zukünftigen<br />

Situationen einer Bewertung unterziehen zu können. Betrachten wir also ein weiteres<br />

Systemelement des Reinforcement Learning, die State-Value-Funktion V (s), welche<br />

mit Bezug auf eine Policy Π auch oft als VΠ(s) bezeichnet wird: Denn ob eine Situation<br />

schlecht ist, hängt ja auch davon ab, was der Agent für ein Allgemeinverhalten Π an<br />

den Tag legt.<br />

Eine Situation, die unter einer risikosuchenden, Grenzen austestenden Policy schlecht<br />

ist, wäre beispielsweise, wenn einem Agent auf einem Fahrrad das Vorderrad in der<br />

Kurve anfängt wegzurutschen und er in dieser Situation aufgrund seiner Draufgänger-<br />

Policy nicht bremst. Mit einer risikobewussten Policy sähe dieselbe Situation schon viel<br />

besser aus, würde also von einer guten State-Value-Funktion höher bewertet werden.<br />

VΠ(s) gibt einfach den Wert zurück, den die aktuelle Situation s unter der Policy Π für<br />

den Agenten gerade hat. Abstrakt nach den obigen Definitionen gesagt, entspricht der<br />

Wert der State-Value-Funktion dem Return Rt (dem erwarteten Wert) einer Situation<br />

st. EΠ bezeichnet hierbei die Menge der erwarteten Returns unter Π und der aktuellen<br />

Situation st.<br />

VΠ(s) = EΠ{Rt|s = st}


-6 -5 -4 -3 -2<br />

-7 -1<br />

-6 -5 -4 -3 -2<br />

-7 -6 -5 -3<br />

-8 -7 -6 -4<br />

-9 -8 -7 -5<br />

-10 -9 -8 -7 -6<br />

-6 -5 -4 -3 -2<br />

-7 -1<br />

-8 -9 -10 -2<br />

-9 -10 -11 -3<br />

-10 -11 -10 -4<br />

-11 -10 -9 -5<br />

-10 -9 -8 -7 -6<br />

Abbildung C.3: Darstellung des jeweils optimalen Returns pro Feld in unserer Gridworld unter der<br />

Pure Negative Reward-Vergabe, oben mit offener Tür und unten mit geschlossener.<br />

Definition C.9 (State-Value-Funktion). Die State-Value-Funktion VΠ(s) hat zur Aufgabe,<br />

den Wert von Situationen unter einer Policy zu ermitteln, also dem Agenten die<br />

Frage zu beantworten, ob eine Situation s gut oder schlecht ist oder wie gut bzw.<br />

schlecht sie ist. Hierfür gibt sie den Erwartungswert des Returns unter der Situation<br />

aus:<br />

Die optimale State-Value-Funktion nennen wir V ∗ Π (s).<br />

VΠ(s) = EΠ{Rt|s = st} (C.13)<br />

Nun hat unser Roboter im Gegensatz zu uns leider keine gottgleiche Sicht auf seine<br />

Umwelt. Er besitzt keine Tabelle mit optimalen Returns, wie wir sie eben aufgezeichnet<br />

haben, an der er sich orientieren könnte. Das Ziel von Reinforcement Learning ist<br />

es, dass der Roboter sich seine State-Value-Funktion anhand der Returns aus vielen<br />

Versuchen nach und nach selbst aufbaut und der optimalen State-Value-Funktion V ∗<br />

annähert (wenn es eine gibt).<br />

In diesem Zusammenhang seien noch zwei Begriffe eingeführt, welche eng mit dem<br />

Kreislauf zwischen State-Value-Funktion und Policy verbunden sind:


V<br />

<br />

<br />

Π<br />

<br />

<br />

V ∗ Π∗ Abbildung C.4: Der Kreislauf des Reinforcement-Learnings, welcher idealerweise zu optimalem Π ∗<br />

bzw. V ∗ führt.<br />

C.2.2.1 Policy evaluation<br />

Policy evaluation nennt man die Vorgehensweise, eine Policy einige Male durchzuprobieren,<br />

auf diese Weise viele Rewards zu erhalten und durch diese mit der Zeit eine<br />

State-Value-Funktion aufzukumulieren.<br />

C.2.2.2 Policy improvement<br />

Policy improvement bedeutet, eine Policy selbst zu verbessern, also aus ihr eine<br />

neue, bessere Policy zu erzeugen. Um die Policy zu verbessern, müssen wir das Ziel<br />

verfolgen, dass der Return zum Schluss einen größeren Wert hat als vorher – man also<br />

einen kürzeren Weg zum Restaurant gefunden hat und ihn auch erfolgreich gegangen<br />

ist.<br />

Das Prinzip des Reinforcement Learnings ist nun, ein Wechselspiel zu realisieren. Man<br />

versucht zu bewerten, wie gut eine Policy in den einzelnen Situationen ist. Wir probieren<br />

eine Policy und erhalten eine veränderte State-Value-Funktion. Aus der Veränderung<br />

der State-Value-Funktion gewinnen wir Informationen über das System, aus der<br />

wir wieder unsere Policy verbessern. Diese beiden Werte ziehen sich nun gegenseitig<br />

hoch, was sich auch mathematisch beweisen lässt – so dass man zum Schluß eine optimale<br />

Policy Π ∗ und eine optimale State-Value-Funktion V ∗ erhält (Abb. C.4). Dieser<br />

Kreislauf hört sich einfach an, ist aber sehr langwierig.<br />

Betrachten wir nun zuerst eine einfache, zufällige Policy, wie unser Roboter seine State-<br />

Value-Funktion ohne Vorwissen langsam ausfüllen und verbessern könnte.


C.2.3 Montecarlo-Methodik<br />

Die einfachste Taktik, eine State-Value-Funktion aufzukumulieren, ist das reine Ausprobieren.<br />

Wir wählen also eine sich rein zufällig verhaltende Policy, welche die aufkumulierte<br />

State-Value-Funktion für ihre Zufallsentscheidungen nicht berücksichtigt. Es<br />

lässt sich beweisen, dass wir in unserer Gridworld irgendwann einmal durch Zufall den<br />

Ausgang finden werden.<br />

Angelehnt an die auf Zufall basierenden Glücksspiele nennen wir diese Vorgehensweise<br />

Montecarlo-Methodik.<br />

Gehen wir weiterhin von einem Pure Negative Reward aus, so ist klar, dass wir für<br />

unser Startfeld in der State-Value-Funktion einen Bestwert von −6 erhalten können.<br />

Je nachdem, welchen zufälligen Weg die zufällige Policy aber einschlägt, können andere<br />

(kleinere) Werte als −6 für das Startfeld auftreten. Intuitiv möchten wir uns für einen<br />

Zustand (also ein Feld) jeweils nur den besseren Wert merken. Hier ist jedoch Vorsicht<br />

geboten: So würde das Lernverfahren nur bei deterministischen Systemen funktionieren.<br />

Unsere Tür, die pro Durchlauf entweder offen oder geschlossen sein kann, würde<br />

Oszillationen bei allen Feldern hervorrufen, deren kürzester Weg zum Ziel durch sie<br />

beeinflusst wird.<br />

Wir verwenden bei der Montecarlo-Methodik also lieber die Lernregel 2<br />

V (st) neu = V (st) alt + α(Rt − V (st) alt),<br />

in der offensichtlich sowohl der alte Zustandswert als auch der erhaltene Return Einfluss<br />

auf die Aktualisierung der State-Value-Funktion haben (α ist die Lernrate). Der Agent<br />

erhält also eine Art Erinnerungsvermögen, neue Erkenntnisse ändern immer nur ein<br />

wenig am Situationswert. Ein beispielhafter Lernschritt findet sich in Abb. C.5 auf der<br />

folgenden Seite.<br />

In dem Beispielbild wurde nur die Zustandswertberechnung für einen einzigen Zustand<br />

(unseren Startzustand) aufgetragen. Dass es möglich ist und auch oft gemacht wird,<br />

die Werte für die zwischendurch besuchten Zustände (im Fall der Gridworld unsere<br />

Wege zum Ziel) gleich mit zu trainieren, sollte offensichtlich sein. Das Ergebnis einer<br />

solchen Rechnung in Bezug auf unser Beispiel findet sich in Abb. C.6 auf Seite 251.<br />

Die Montecarlo-Methodik mag suboptimal erscheinen und ist auch im Regelfall wesentlich<br />

langsamer als die nachfolgend vorgestellten Methoden des Reinforcement Learnings<br />

- allerdings ist sie die einzige, bei der man mathematisch beweisen kann, dass sie funktioniert<br />

und eignet sich daher sehr für theoretische Betrachtungen.<br />

2 Sie wird u.a. unter Verwendung der Bellman-Gleichung hergeleitet, die Herleitung ist aber nicht Bestandteil<br />

des Kapitels.


-1<br />

-6 -5 -4 -3 -2<br />

-1<br />

-14 -13 -12 -2<br />

-11 -3<br />

-10 -4<br />

-9 -5<br />

-8 -7 -6<br />

-10<br />

Abbildung C.5: Anwendung der Montecarlo-Lernregel mit einer Lernrate von α = 0.5. Oben sind<br />

beispielhaft zwei Wege aufgetragen, die der Agent durch Zufall wählt (einer mit offener, einer mit<br />

geschlossener Tür). Unten das Ergebnis der Lernregel für den Wert des Startzustands unter Berücksichtigung<br />

beider Wege. Dadurch, dass unter zufälliger Policy mit der Zeit sehr viele verschiedene<br />

Wege gegangen werden, erhält man eine sehr aussagekräftige State-Value-Funktion.


-1<br />

-10 -9 -8 -3 -2<br />

-11 -3<br />

-10 -4<br />

-9 -5<br />

-8 -7 -6<br />

Abbildung C.6: Erweiterung des Lernbeispiels aus Abb. C.5, in dem auch die Returns für Zwischenzustände<br />

zur Aufkumulierung der State-Value-Funktion herangezogen werden. Sehr schön zu<br />

beobachten ist der niedrige Wert auf dem Türfeld: Wenn dieser Zustand eingenommen werden kann,<br />

ist er ja sehr positiv, wenn die Tür zu ist, kann er gar nicht eingenommen werden.<br />

Π <br />

Evaluation<br />

Policy verbessern<br />

Abbildung C.7: Wir probieren Aktionen in der Umwelt aus und lernen so und verbessern die Policy.<br />

Definition C.10 (Montecarlo-Lernen). Es werden zufällig Aktionen ohne Rücksicht<br />

auf die State-Value-Funktion ausgeführt und langfristig eine aussagekräftige State-<br />

Value-Funktion mit untenstehender Lernregel aufkumuliert.<br />

C.2.4 Temporal Difference Learning<br />

<br />

Q<br />

V (st) neu = V (st) alt + α(Rt − V (st) alt),<br />

Wir lernen im täglichen Leben weitestgehend durch Erfahrung und Ausprobieren. Das<br />

Allermeiste, was wir lernen, geschieht durch Erfahrung; blessurenfrei (oder eben auch<br />

nicht) gehen und Fahrrad fahren, auch geistige Fertigkeiten wie mathematisches Problemlösen<br />

profitieren sehr von Erfahrung und schlichtem Ausprobieren (Trial and Error).<br />

Wir initialisieren also unsere Policy mit irgendwelchen Werten - probieren aus,<br />

lernen und verbessern die Policy so aus Erfahrung (Abb. C.7). Im Unterschied zur<br />

Montecarlo-Methodik wollen wir dies nun auf eine gerichtetere Art und Weise tun.


Genau wie wir durch Erfahrung lernen, in verschiedenen Situationen auf bestimmte<br />

Weise zu reagieren, macht es die Temporal Difference Lernmethode (kurz: TD-<br />

Learning), indem VΠ(s) trainiert wird (der Agent lernt also einschätzen, welche Situationen<br />

viel wert sind und welche nicht). Wir bezeichnen wieder die aktuelle Situation<br />

mit st, die nachfolgende Situation mit st+1 und so weiter. Die Lernformel für die<br />

State-Value-Funktion VΠ(st) ergibt sich also zu<br />

V (st) neu =V (st)<br />

+ α(rt+1 + γV (st+1) − V (st))<br />

<br />

Veränderung des alten Wertes<br />

Wir sehen, dass die zur Lernrate α proportionale Veränderung des Wertes der aktuellen<br />

Situation st beeinflusst wird von<br />

⊲ dem empfangenen Reward rt+1,<br />

⊲ dem mit einem Faktor γ gewichteten bisherigen Return der Nachfolgesituation<br />

V (st+1),<br />

⊲ dem alten Wert der Situation V (st).<br />

Definition C.11 (Temporal Difference Learning). Im Unterschied zur Montecarlo-<br />

Methodik schaut TD-Learning etwas in die Zukunft, indem die Nachfolgesituation st+1<br />

betrachtet wird. Die Lernregel ist definiert zu<br />

C.2.5 Die Action-Value-Funktion<br />

V (st) neu =V (st) (C.14)<br />

+ α(rt+1 + γV (st+1) − V (st)) .<br />

<br />

Veränderung des alten Wertes<br />

Analog zur State-Value-Funktion VΠ(s) ist ein weiterer Systembestandteil des Reinforcement<br />

Learning die Action-Value-Funktion QΠ(s, a), welche eine bestimmte<br />

Aktion a unter einer bestimmten Situation s und der Policy Π bewertet.<br />

In der Gridworld: In der Gridworld sagt uns die Action-Value-Funktion, wie gut es ist,<br />

von einem bestimmten Feld in eine bestimmte Richtung zu gehen (Abb. C.8 auf der<br />

rechten Seite).<br />

Definition C.12 (Action-Value-Funktion). Analog zur State-Value-Funktion bewertet<br />

die Action-Value-Funktion QΠ(st, a) bestimmte Aktionen ausgehend von bestimmten<br />

Situationen unter einer Policy. Die optimale Action-Value-Funktion benennen wir<br />

mit Q ∗ Π (st, a).


0<br />

× +1<br />

-1<br />

Abbildung C.8: Beispielhafte Werte einer Action-Value-Funktion für die Position ×. Nach rechts<br />

gehend bleibt man auf dem schnellsten Weg zum Ziel, nach oben ist immer noch ein recht schneller<br />

Weg, nach unten zu gehen ist kein guter Weg (alles im Falle einer offenen Tür).<br />

s0 <br />

a0 <br />

r1<br />

s1 <br />

a1 <br />

r2<br />

Aktionsrichtung<br />

· · · <br />

aτ−2 <br />

<br />

sτ−1 aτ−1 <br />

<br />

<br />

sτ<br />

rτ−1<br />

Rewardrichtung<br />

Abbildung C.9: Aktionen werden durchgeführt, bis eine gewünschte Zielsituation erreicht ist. Zu<br />

beachten ist die Durchnummerierung: Rewards werden von 1 an nummeriert, Aktionen und Situationen<br />

von 0 an (Dies hat sich einfach eingebürgert).<br />

Wie in Abb. C.9 ersichtlich, führen wir Aktionen so lange durch, bis eine Zielsituation<br />

(hier sτ genannt) erreicht ist (wenn es eine gibt, ansonsten werden einfach immer weiter<br />

Aktionen durchgeführt).<br />

C.2.6 Q-Learning<br />

Recht analog ergibt sich als Lernformel für die Action-Value-Funktion QΠ(s, a), deren<br />

Benutzung wir analog zum TD-Learning als Q-Learning bezeichnen:<br />

Q(st, a)neu =Q(st, a)<br />

+ α(rt+1 + γ max Q(st+1, a) −Q(st, a)) .<br />

a<br />

<br />

<br />

Greedy-Strategie<br />

<br />

Veränderung des alten Wertes<br />

<br />


Wir schlüsseln wieder die (zur Lernrate α proportionale) Veränderung des aktuellen<br />

Aktionswertes unter der aktuellen Situation auf. Sie wird beeinflusst von<br />

⊲ dem empfangenen Reward rt+1,<br />

⊲ dem mit γ gewichteten maximalen Action Value über die Nachfolgeaktionen (hier<br />

wird eine Greedy-Strategie angewendet, da man ruhig davon ausgehen kann, dass<br />

man die beste bekannte Aktion wählt, beim TD-Learning achten wir hingegen<br />

nicht darauf, immer in die beste bekannte nächste Situation zu kommen),<br />

⊲ dem alten Wert der Aktion unter unserer als st bekannten Situation Q(st, a)<br />

(nicht vergessen, dass auch dieser durch α gewichtet ist).<br />

In aller Regel lernt die Action-Value-Funktion wesentlich schneller als die State-Value-<br />

Funktion, wobei aber nicht zu vernachlässigen ist, dass Reinforcement Learning allgemein<br />

recht langsam ist: Das System muss ja selbst herausfinden, was gut ist. Schön ist<br />

aber am Q-Learning: Π kann beliebig initialisiert werden, durch Q-Learning erhalten<br />

wir immer Q ∗ .<br />

Definition C.13 (Q-Learning). Q-Learning trainiert die Action-Value-Funktion mit<br />

der Lernregel<br />

und findet so auf jeden Fall Q ∗ .<br />

C.3 Beispielanwendungen<br />

C.3.1 TD-Gammon<br />

Q(st, a)neu =Q(st, a) (C.15)<br />

+ α(rt+1 + γ max Q(st+1, a) − Q(st, a)).<br />

a<br />

TD-Gammon ist ein sehr erfolgreiches, auf TD-Learning basierendes Backgammonspiel<br />

von Gerald Tesauro. Situation ist hier die aktuelle Konfiguration des Spielbrettes.<br />

Jedem, der schon einmal Backgammon gespielt hat, ist klar, dass der Situationsraum<br />

gigantisch groß ist (ca. 10 20 Situationen) – was zur Folge hat, dass man<br />

keine State-Value-Funktione explizit ausrechnen kann (insbesondere zur Zeit des TD-<br />

Gammons Ende der 80er Jahre). Die gewählte Rewardstrategie war Pure Delayed Reward,<br />

das System erhält den Reward also erst zum Schluss des Spiels, der dann gleichzeitig<br />

der Return ist. Man hat das System dann selbstständig üben lassen (zunächst


gegen ein Backgammonprogramm, danach gegen eine Instanz seiner selbst). Resultat<br />

war, das es in einer Computer-Backgammon-Liga das höchste Ranking erreicht hat und<br />

eindrucksvoll widerlegt war, dass ein Computerprogramm eine Tätigkeit nicht besser<br />

beherrschen kann als sein Programmierer.<br />

C.3.2 Das Auto in der Grube<br />

Betrachten wir ein Auto, das auf eindimensionaler Fahrbahn am Fuß einer tiefen Mulde<br />

steht, und die Steigung zu keiner der beiden Seiten auf Anhieb mit seiner Motorkraft<br />

überwinden kann, um aus der Mulde hinauszufahren. Ausführbare Aktionen sind hier<br />

trivialerweise die Möglichkeiten, vorwärts und rückwärts zu fahren. Die intuitive Lösung,<br />

an welche wir als Menschen sofort denken, ist zurückzusetzen, an der gegenüberliegenden<br />

Steigung Schwung zu holen und mehrmals auf diese Weise hin- und her zu<br />

oszillieren, um mit Schwung aus der Mulde herauszufahren.<br />

Aktionen eines Reinforcement Learning Systems wären „Vollgas nach vorn“, „Vollgas<br />

zurück“ und „nichts tun“.<br />

Hier wäre „Alles kostet“ eine gute Wahl für die Rewardvergabe, so dass das System<br />

schnell lernt, aus der Grube herauszukommen und merkt, dass unser Problem mit<br />

purer vorwärts gerichteter Motorkraft nicht zu lösen ist. Das System wird sich also<br />

langsam hochschaukeln.<br />

Hier können wir die Policy nicht mehr als Tabelle ablegen, da der Zustandsraum nicht<br />

gut diskretisierbar ist. Hier muss wirklich eine Funktion als Policy geschaffen werden.<br />

C.3.3 Der Pole Balancer<br />

Der Pole Balancer wurde entwickelt von Barto, Sutton und Anderson.<br />

Gegeben sei eine Situation, welche ein Fahrzeug beinhaltet, das sich entweder mit<br />

Vollgas nach rechts oder mit Vollgas nach links bewegen kann (Bang-Bang-Control).<br />

Es kann nur diese beiden Aktionen ausführen, Stehenbleiben ist nicht möglich. Auf<br />

diesem Fahrzeug steht senkrecht eine Stange, welche zu beiden Seiten umkippen kann.<br />

Die Stange ist so konstruiert, dass sie immer in Richtung einer Seite kippt, also niemals<br />

stillsteht (sagen wir einfach, sie sei am unteren Ende abgerundet).<br />

Den Winkel, in dem die Stange im Moment relativ zur Senkrechten steht, bezeichnen<br />

wir mit α. Das Fahrzeug besitzt weiterhin immer eine definierte Position x auf unserer<br />

eindimensionalen Welt und immer eine Geschwindigkeit ˙x. Unsere eindimensionale<br />

Welt ist begrenzt, es gibt also Maximal- und Minimalwerte, welche x annehmen kann.


Ziel unseres Systems ist zu lernen, den Wagen dahingehend zu steuern, dass er das<br />

Kippen der Stange ausgleicht, die Stange also nicht umfällt. Dies erreichen wir am<br />

besten mit einer Avoidance Strategy: Solange die Stange nicht umgefallen ist, gibt es<br />

einen Reward von 0, fällt sie um, gibt es einen Reward von -1.<br />

Interessanterweise ist das System schnell in der Lage, den Stab stehend zu halten,<br />

indem es schnell genug mit kleinen Bewegungen daran wackelt. Es hält sich hierbei<br />

zumeist in der Mitte des Raums auf, da es am weitesten weg von den Wänden ist, die<br />

es als negativ empfindet (stößt man gegen die Wand, fällt der Stab um).<br />

C.3.3.1 Swinging up an inverted Pendulum<br />

Schwieriger für das System ist die Startsituation, dass der Stab im Vorhinein herunterhängt,<br />

erst einmal durch Schwingungen über das Gefährt bewegt werden, und<br />

anschließend stabilisiert werden muss. Diese Aufgabe wird in der Literatur mit Swing<br />

up an inverted Pendulum bezeichnet.<br />

C.4 Reinforcement Learning im Zusammenhang mit<br />

<strong>Neuronale</strong>n <strong>Netze</strong>n<br />

Zu guter Letzt möchte der Leser vielleicht fragen, was das Kapitel über Reinforcement<br />

Learning in einem Skriptum zum Thema „<strong>Neuronale</strong> <strong>Netze</strong>“ zu suchen hat.<br />

Die Antwort ist einfach motiviert. Wir haben bereits überwachte und unüberwachte<br />

Lernverfahren kennengelernt. Wir haben zwar nicht überall einen allwissenden Teacher,<br />

der uns überwachtes Lernen ermöglicht. Es ist aber auch nicht unbedingt so, dass wir<br />

gar kein Feedback erhalten. Oft gibt es ein Mittelding, eine Art Kritik oder Schulnote,<br />

bei Problemen dieser Art kann Reinforcement Learning zum Einsatz kommen.<br />

Nicht alle Probleme sind hierbei so leicht handhabbar wie unsere Gridworld: Bei unserem<br />

Backgammon-Beispiel haben wir alleine ca. 10 20 Situationen und einen großen<br />

Verzweigungsgrad im Situationsbaum, von anderen Spielen ganz zu schweigen. Hier werden<br />

die in der Gridworld benutzten Tabellen als State- und Action-Value-Funktionen<br />

schlicht nicht mehr realisierbar, wir müssen also Approximatoren für diese Funktionen<br />

finden.<br />

Und welche lernfähigen Approximatoren für diese Bestandteile des Reinforcement Learnings<br />

fallen uns nun auf Anhieb ein? Richtig: <strong>Neuronale</strong> <strong>Netze</strong>.


Übungsaufgaben<br />

Aufgabe 20. Ein Kontrollsystem für einen Roboter soll mittels Reinforcement Learning<br />

dazu gebracht werden, eine Strategie zu finden um ein Labyrinth möglichst schnell<br />

zu verlassen.<br />

⊲ Wie könnte eine geeignete State-Value-Funktion aussehen?<br />

⊲ Wie würden Sie einen geeigneten Reward erzeugen?<br />

Gehen Sie davon aus, dass der Roboter Hindernisvermeidung beherrscht und zu jedem<br />

Zeitpunkt seine Position (x, y) und Orientierung φ kennt.<br />

Aufgabe 21. Beschreiben Sie die Funktion der beiden Elemente ASE und ACE<br />

so wie sie von Barto, Sutton und Anderson für die Kontrolle des Pole Balancer<br />

vorgeschlagen wurden.<br />

Literaturangabe: [BSA83].<br />

Aufgabe 22. Nennen Sie mehrere „klassische“ Informatik-Aufgaben, die mit Reinforcement<br />

Learning besonders gut bearbeitet werden könnten und begründen Sie ihre<br />

Meinung.


Literaturverzeichnis<br />

[And72] James A. Anderson. A simple neural network generating an interactive<br />

memory. Mathematical Biosciences, 14:197–220, 1972.<br />

[APZ93] D. Anguita, G. Parodi, and R. Zunino. Speed improvement of the backpropagation<br />

on current-generation workstations. In WCNN’93, Portland:<br />

World Congress on Neural Networks, July 11-15, 1993, Oregon Convention<br />

Center, Portland, Oregon, volume 1. Lawrence Erlbaum, 1993.<br />

[BSA83] A. Barto, R. Sutton, and C. Anderson. Neuron-like adaptive elements<br />

that can solve difficult learning control problems. IEEE Transactions on<br />

Systems, Man, and Cybernetics, 13(5):834–846, September 1983.<br />

[CG87] G. A. Carpenter and S. Grossberg. ART2: Self-organization of stable category<br />

recognition codes for analog input patterns. Applied Optics, 26:4919–<br />

4930, 1987.<br />

[CG88] M.A. Cohen and S. Grossberg. Absolute stability of global pattern formation<br />

and parallel memory storage by competitive neural networks. Computer<br />

Society Press Technology Series Neural Networks, pages 70–81, 1988.<br />

[CG90] G. A. Carpenter and S. Grossberg. ART 3: Hierarchical search using<br />

chemical transmitters in self-organising pattern recognition architectures.<br />

Neural Networks, 3(2):129–152, 1990.<br />

[CH67] T. Cover and P. Hart. Nearest neighbor pattern classification. IEEE<br />

Transactions on Information Theory, 13(1):21–27, 1967.<br />

[CR00] N.A. Campbell and JB Reece. Biologie. Spektrum. Akademischer Verlag,<br />

2000.<br />

[Cyb89] G. Cybenko. Approximation by superpositions of a sigmoidal function. Mathematics<br />

of Control, Signals, and Systems (MCSS), 2(4):303–314, 1989.<br />

[DHS01] R.O. Duda, P.E. Hart, and D.G. Stork. Pattern classification. Wiley New<br />

York, 2001.<br />

259


[Elm90] Jeffrey L. Elman. Finding structure in time. Cognitive Science, 14(2):179–<br />

211, April 1990.<br />

[Fah88] S. E. Fahlman. An empirical sudy of learning speed in back-propagation<br />

networks. Technical Report CMU-CS-88-162, CMU, 1988.<br />

[FMI83] K. Fukushima, S. Miyake, and T. Ito. Neocognitron: A neural network model<br />

for a mechanism of visual pattern recognition. IEEE Transactions on<br />

Systems, Man, and Cybernetics, 13(5):826–834, September/October 1983.<br />

[Fri94] B. Fritzke. Fast learning with incremental RBF networks. Neural Processing<br />

Letters, 1(1):2–5, 1994.<br />

[GKE01a] N. Goerke, F. Kintzler, and R. Eckmiller. Self organized classification of<br />

chaotic domains from a nonlinearattractor. In Neural Networks, 2001. Proceedings.<br />

IJCNN’01. International Joint Conference on, volume 3, 2001.<br />

[GKE01b] N. Goerke, F. Kintzler, and R. Eckmiller. Self organized partitioning of<br />

chaotic attractors for control. Lecture notes in computer science, pages<br />

851–856, 2001.<br />

[Gro76] S. Grossberg. Adaptive pattern classification and universal recoding, I:<br />

Parallel development and coding of neural feature detectors. Biological<br />

Cybernetics, 23:121–134, 1976.<br />

[GS06] Nils Goerke and Alexandra Scherbart. Classification using multi-soms and<br />

multi-neural gas. In IJCNN, pages 3895–3902, 2006.<br />

[Heb49] Donald O. Hebb. The Organization of Behavior: A Neuropsychological<br />

Theory. Wiley, New York, 1949.<br />

[Hop82] John J. Hopfield. Neural networks and physical systems with emergent collective<br />

computational abilities. Proc. of the National Academy of Science,<br />

USA, 79:2554–2558, 1982.<br />

[Hop84] JJ Hopfield. Neurons with graded response have collective computational<br />

properties like those of two-state neurons. Proceedings of the National<br />

Academy of Sciences, 81(10):3088–3092, 1984.<br />

[HT85] JJ Hopfield and DW Tank. Neural computation of decisions in optimization<br />

problems. Biological cybernetics, 52(3):141–152, 1985.<br />

[Jor86] M. I. Jordan. Attractor dynamics and parallelism in a connectionist sequential<br />

machine. In Proceedings of the Eighth Conference of the Cognitive<br />

Science Society, pages 531–546. Erlbaum, 1986.


[Kau90] L. Kaufman. Finding groups in data: an introduction to cluster analysis.<br />

In Finding Groups in Data: An Introduction to Cluster Analysis. Wiley,<br />

New York, 1990.<br />

[Koh72] T. Kohonen. Correlation matrix memories. IEEEtC, C-21:353–359, 1972.<br />

[Koh82] Teuvo Kohonen. Self-organized formation of topologically correct feature<br />

maps. Biological Cybernetics, 43:59–69, 1982.<br />

[Koh89] Teuvo Kohonen. Self-Organization and Associative Memory. Springer-<br />

Verlag, Berlin, third edition, 1989.<br />

[Koh98] T. Kohonen. The self-organizing map. Neurocomputing, 21(1-3):1–6, 1998.<br />

[KSJ00] E.R. Kandel, J.H. Schwartz, and T.M. Jessell. Principles of neural science.<br />

Appleton & Lange, 2000.<br />

[lCDS90] Y. le Cun, J. S. Denker, and S. A. Solla. Optimal brain damage. In<br />

D. Touretzky, editor, Advances in Neural Information Processing Systems<br />

2, pages 598–605. Morgan Kaufmann, 1990.<br />

[Mac67] J. MacQueen. Some methods for classification and analysis of multivariate<br />

observations. In Proceedings of the Fifth Berkeley Symposium on<br />

Mathematics, Statistics and Probability, Vol. 1, pages 281–296, 1967.<br />

[MBS93] Thomas M. Martinetz, Stanislav G. Berkovich, and Klaus J. Schulten.<br />

’Neural-gas’ network for vector quantization and its application to timeseries<br />

prediction. IEEE Trans. on Neural Networks, 4(4):558–569, 1993.<br />

[MBW + 10] K.D. Micheva, B. Busse, N.C. Weiler, N. O’Rourke, and S.J. Smith. Singlesynapse<br />

analysis of a diverse synapse population: proteomic imaging methods<br />

and markers. Neuron, 68(4):639–653, 2010.<br />

[MP43] W.S. McCulloch and W. Pitts. A logical calculus of the ideas immanent<br />

in nervous activity. Bulletin of Mathematical Biology, 5(4):115–133, 1943.<br />

[MP69] M. Minsky and S. Papert. Perceptrons. MIT Press, Cambridge, Mass,<br />

1969.<br />

[MR86] J. L. McClelland and D. E. Rumelhart. Parallel Distributed Processing:<br />

Explorations in the Microstructure of Cognition, volume 2. MIT Press,<br />

Cambridge, 1986.


[Par87] David R. Parker. Optimal algorithms for adaptive networks: Second order<br />

back propagation, second order direct propagation, and second order<br />

hebbian learning. In Maureen Caudill and Charles Butler, editors, IEEE<br />

First International Conference on Neural Networks (ICNN’87), volume II,<br />

pages II–593–II–600, San Diego, CA, June 1987. IEEE.<br />

[PG89] T. Poggio and F. Girosi. A theory of networks for approximation and<br />

learning. MIT Press, Cambridge Mass., 1989.<br />

[Pin87] F. J. Pineda. Generalization of back-propagation to recurrent neural networks.<br />

Physical Review Letters, 59:2229–2232, 1987.<br />

[PM47] W. Pitts and W.S. McCulloch. How we know universals the perception of<br />

auditory and visual forms. Bulletin of Mathematical Biology, 9(3):127–147,<br />

1947.<br />

[Pre94] L. Prechelt. Proben1: A set of neural network benchmark problems and<br />

benchmarking rules. Technical Report, 21:94, 1994.<br />

[RB93] M. Riedmiller and H. Braun. A direct adaptive method for faster backpropagation<br />

learning: The rprop algorithm. In Neural Networks, 1993., IEEE<br />

International Conference on, pages 586–591. IEEE, 1993.<br />

[RD05] G. Roth and U. Dicke. Evolution of the brain and intelligence. Trends in<br />

Cognitive Sciences, 9(5):250–257, 2005.<br />

[RHW86a] D. Rumelhart, G. Hinton, and R. Williams. Learning representations by<br />

back-propagating errors. Nature, 323:533–536, October 1986.<br />

[RHW86b] David E. Rumelhart, Geoffrey E. Hinton, and R. J. Williams. Learning<br />

internal representations by error propagation. In D. E. Rumelhart, J. L.<br />

McClelland, and the PDP research group., editors, Parallel distributed processing:<br />

Explorations in the microstructure of cognition, Volume 1: Foundations.<br />

MIT Press, 1986.<br />

[Rie94] M. Riedmiller. Rprop - description and implementation details. Technical<br />

report, University of Karlsruhe, 1994.<br />

[Ros58] F. Rosenblatt. The perceptron: a probabilistic model for information storage<br />

and organization in the brain. Psychological Review, 65:386–408, 1958.<br />

[Ros62] F. Rosenblatt. Principles of Neurodynamics. Spartan, New York, 1962.<br />

[SB98] R. S. Sutton and A. G. Barto. Reinforcement Learning: An Introduction.<br />

MIT Press, Cambridge, MA, 1998.


[SG06] A. Scherbart and N. Goerke. Unsupervised system for discovering patterns<br />

in time-series, 2006.<br />

[SGE05] Rolf Schatten, Nils Goerke, and Rolf Eckmiller. Regional and online learnable<br />

fields. In Sameer Singh, Maneesha Singh, Chidanand Apté, and Petra<br />

Perner, editors, ICAPR (2), volume 3687 of Lecture Notes in Computer<br />

Science, pages 74–83. Springer, 2005.<br />

[Ste61] K. Steinbuch. Die lernmatrix. Kybernetik (Biological Cybernetics), 1:36–45,<br />

1961.<br />

[vdM73] C. von der Malsburg. Self-organizing of orientation sensitive cells in striate<br />

cortex. Kybernetik, 14:85–100, 1973.<br />

[Was89] P. D. Wasserman. Neural Computing Theory and Practice. New York :<br />

Van Nostrand Reinhold, 1989.<br />

[Wer74] P. J. Werbos. Beyond Regression: New Tools for Prediction and Analysis<br />

in the Behavioral Sciences. PhD thesis, Harvard University, 1974.<br />

[Wer88] P. J. Werbos. Backpropagation: Past and future. In Proceedings ICNN-88,<br />

San Diego, pages 343–353, 1988.<br />

[WG94] A.S. Weigend and N.A. Gershenfeld. Time series prediction. Addison-<br />

Wesley, 1994.<br />

[WH60] B. Widrow and M. E. Hoff. Adaptive switching circuits. In Proceedings<br />

WESCON, pages 96–104, 1960.<br />

[Wid89] R. Widner. Single-stage logic. AIEE Fall General Meeting, 1960. Wasserman,<br />

P. Neural Computing, Theory and Practice, Van Nostrand Reinhold,<br />

1989.<br />

[Zel94] Andreas Zell. Simulation <strong>Neuronale</strong>r <strong>Netze</strong>. Addison-Wesley, 1994. German.


Abbildungsverzeichnis<br />

1.1 Roboter mit 8 Sensoren und 2 Motoren . . . . . . . . . . . . . . . . . . 7<br />

1.2 Lernbeispiele für Beispielroboter . . . . . . . . . . . . . . . . . . . . . . 8<br />

1.3 Blackbox mit acht Eingängen und zwei Ausgängen . . . . . . . . . . . . 9<br />

1.4 Urgesteine des Fachbereichs . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.1 Zentrales Nervensystem . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

2.2 Gehirn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

2.3 Biologisches Neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

2.4 Aktionspotential . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

2.5 Facettenaugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33<br />

3.1 Datenverarbeitung eines Neurons . . . . . . . . . . . . . . . . . . . . . . 43<br />

3.2 Verschiedene gängige Aktivierungsfunktionen . . . . . . . . . . . . . . . 48<br />

3.3 FeedForwardnetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

3.4 FeedForwardnetz mit Shortcuts . . . . . . . . . . . . . . . . . . . . . . . 52<br />

3.5 Direkt rückgekoppeltes Netz . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

3.6 Indirekt rückgekoppeltes Netz . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

3.7 Lateral rückgekoppeltes Netz . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

3.8 Vollständig verbundenes Netz . . . . . . . . . . . . . . . . . . . . . . . . 56<br />

3.9 Beispielnetz mit und ohne Biasneuron . . . . . . . . . . . . . . . . . . . 58<br />

3.10 Beispiele für Neuronenarten . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

4.1 Trainingsbeispiele und Netzkapazitäten . . . . . . . . . . . . . . . . . . 72<br />

4.2 Lernkurve mit verschiedenen Skalierungen . . . . . . . . . . . . . . . . . 76<br />

4.3 Gradientenabstieg, Veranschaulichung in 2D . . . . . . . . . . . . . . . . 78<br />

4.4 Mögliche Fehler während eines Gradientenabstiegs . . . . . . . . . . . . 80<br />

4.5 2-Spiralen-Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />

4.6 Schachbrettproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />

5.1 Das Perceptron in drei Ansichten . . . . . . . . . . . . . . . . . . . . . . 91<br />

5.2 Singlelayerperceptron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

5.3 Singlelayerperceptron mit mehreren Ausgabeneuronen . . . . . . . . . . 93<br />

5.4 AND und OR Singlelayerperceptron . . . . . . . . . . . . . . . . . . . . 94<br />

265


5.5 Fehlerfläche eines <strong>Netze</strong>s mit 2 Verbindungen . . . . . . . . . . . . . . . 98<br />

5.6 Skizze für ein XOR-SLP . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

5.7 Lineare Separierung im zweidimensionalen . . . . . . . . . . . . . . . . . 104<br />

5.8 Lineare Separierung im dreidimensionalen . . . . . . . . . . . . . . . . . 105<br />

5.9 Das XOR-Netz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106<br />

5.10 Multilayerperceptrons und Ausgabemengen . . . . . . . . . . . . . . . . 108<br />

5.11 Lage eines inneren Neurons für Backpropagation-Herleitung . . . . . . . 111<br />

5.12 Skizze der Backpropagation-Herleitung . . . . . . . . . . . . . . . . . . . 113<br />

5.13 Momentum-Term . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br />

5.14 Fermifunktion und Tangens Hyperbolicus . . . . . . . . . . . . . . . . . 127<br />

5.15 Funktionsweise 8-2-8-Kodierung . . . . . . . . . . . . . . . . . . . . . . . 129<br />

6.1 RBF-Netz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135<br />

6.2 Abstandsfunktion im RBF-Netz . . . . . . . . . . . . . . . . . . . . . . . 136<br />

6.3 Einzelne Gaußglocken im Ein- und Zweidimensionalen . . . . . . . . . . 137<br />

6.4 Aufkumulieren von Gaußglocken im Eindimensionalen . . . . . . . . . . 138<br />

6.5 Aufkumulieren von Gaußglocken im Zweidimensionalen . . . . . . . . . . 139<br />

6.6 Gleichmäßige Abdeckung eines Inputraums mit Radialbasisfunktionen . 146<br />

6.7 Ungleichmäßige Abdeckung eines Inputraums mit Radialbasisfunktionen 147<br />

6.8 Zufällige, ungleichmäßige Abdeckung eines Inputraums mit Radialbasisfunktionen<br />

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148<br />

7.1 Rössler-Attraktor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154<br />

7.2 Jordannetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155<br />

7.3 Elmannetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156<br />

7.4 Unfolding in Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159<br />

8.1 Hopfieldnetz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

8.2 Binäre Schwellenwertfunktion . . . . . . . . . . . . . . . . . . . . . . . . 165<br />

8.3 Konvergenz eines Hopfieldnetzes . . . . . . . . . . . . . . . . . . . . . . 168<br />

8.4 Fermifunktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

9.1 Quantisierungsbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . 175<br />

10.1 Beispieltopologien einer SOM . . . . . . . . . . . . . . . . . . . . . . . . 183<br />

10.2 Beispielabstände von SOM-Topologien . . . . . . . . . . . . . . . . . . . 186<br />

10.3 SOM-Topologiefunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . 188<br />

10.4 Erstes Beispiel einer SOM . . . . . . . . . . . . . . . . . . . . . . . . . . 190<br />

10.5 Training einer SOM mit eindimensionaler Topologie . . . . . . . . . . . 193<br />

10.6 SOMs mit ein- und zweidimensionalen Topologien und verschiedenen<br />

Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194


10.7 Topologischer Defekt einer SOM . . . . . . . . . . . . . . . . . . . . . . 195<br />

10.8 Auflösungsoptimierung einer SOM auf bestimmte Gebiete . . . . . . . . 196<br />

10.9 Durch <strong>Neuronale</strong>s Gas zu klassifizierende Figur . . . . . . . . . . . . . . 198<br />

11.1 Aufbau eines ART-<strong>Netze</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . 204<br />

11.2 Lernvorgang eines ART-<strong>Netze</strong>s . . . . . . . . . . . . . . . . . . . . . . . 207<br />

A.1 Vergleich von Clusteranalyseverfahren . . . . . . . . . . . . . . . . . . . 215<br />

A.2 ROLF-Neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218<br />

A.3 Clustering durch ein ROLF . . . . . . . . . . . . . . . . . . . . . . . . . 222<br />

B.1 Zeitreihe abtastendes <strong>Neuronale</strong>s Netz . . . . . . . . . . . . . . . . . . . 226<br />

B.2 One Step Ahead Prediction . . . . . . . . . . . . . . . . . . . . . . . . . 228<br />

B.3 Two Step Ahead Prediction . . . . . . . . . . . . . . . . . . . . . . . . . 230<br />

B.4 Direct Two Step Ahead Prediction . . . . . . . . . . . . . . . . . . . . . 231<br />

B.5 Heterogene One Step Ahead Prediction . . . . . . . . . . . . . . . . . . 232<br />

B.6 Heterogene One Step Ahead Prediction mit zwei Ausgaben . . . . . . . 232<br />

C.1 Gridworld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238<br />

C.2 Reinforcement Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

C.3 Gridworld mit optimalen Returns . . . . . . . . . . . . . . . . . . . . . . 247<br />

C.4 Reinforcement-Learning-Kreislauf . . . . . . . . . . . . . . . . . . . . . . 248<br />

C.5 Montecarlo-Methodik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250<br />

C.6 Erweiterte Montecarlo-Methodik . . . . . . . . . . . . . . . . . . . . . . 251<br />

C.7 Verbesserung der Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . 251<br />

C.8 Action-Value-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253<br />

C.9 Reinforcement Learning Zeitstrahl . . . . . . . . . . . . . . . . . . . . . 253


Index<br />

*<br />

100-Schritt-Regel . . . . . . . . . . . . . . . . . . . . 6<br />

A<br />

Abstand<br />

euklidischer. . . . . . . . . . . . . . . .74, 210<br />

quadratischer . . . . . . . . . . . . . . 98, 210<br />

Action-Value-Funktion . . . . . . . . . . . . 251<br />

ADALINE . . . . . . siehe Adaptive Linear<br />

Neuron<br />

Adaptive Linear Element. . . . . . . . .siehe<br />

Adaptive Linear Neuron<br />

Adaptive Linear Neuron . . . . . . . . . . . . 12<br />

Adaptive Resonance Theory . . . 13, 201<br />

Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237<br />

Aktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238<br />

Aktionspotential. . . . . . . . . . . . . . . . . . . .27<br />

Aktionsraum . . . . . . . . . . . . . . . . . . . . . . 239<br />

Aktivierung . . . . . . . . . . . . . . . . . . . . . . . . 45<br />

Aktivierungsfunktion . . . . . . . . . . . . . . . 46<br />

Wahl der . . . . . . . . . . . . . . . . . . . . . . 126<br />

Aktivierungsreihenfolge . . . . . . . . . . . . . 59<br />

asynchron<br />

feste Ordnung . . . . . . . . . . . . . . . . 61<br />

permutiert zufällige Ordnung . 60<br />

topologische Ordnung . . . . . . . . 61<br />

zufällige Ordnung . . . . . . . . . . . . 60<br />

synchron . . . . . . . . . . . . . . . . . . . . . . . 59<br />

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

Amakrinzelle . . . . . . . . . . . . . . . . . . . . . . . 35<br />

Approximation . . . . . . . . . . . . . . . . . . . . 140<br />

ART siehe Adaptive Resonance Theory<br />

ART-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204<br />

ART-2A. . . . . . . . . . . . . . . . . . . . . . . . . . .204<br />

ART-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204<br />

Artificial Intelligence . . . . . . . . . . . . . . . 11<br />

assoziative Speicherung . . . . . . . . . . . . 193<br />

ATP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />

Attraktor. . . . . . . . . . . . . . . . . . . . . . . . . .151<br />

Ausgabedimension . . . . . . . . . . . . . . . . . . 62<br />

Ausgabefunktion . . . . . . . . . . . . . . . . . . . 47<br />

Ausgabevektor. . . . . . . . . . . . . . . . . . . . . .62<br />

Auswendig lernen. . . . . . . . . . . . . . . . . . .71<br />

Autoassoziator . . . . . . . . . . . . . . . . . . . . 165<br />

Axon . . . . . . . . . . . . . . . . . . . . . . . . . . . 24, 29<br />

B<br />

Backpropagation . . . . . . . . . . . . . . . . . . 114<br />

Second Order . . . . . . . . . . . . . . . . . 122<br />

Backpropagation of Error. . . . . . . . . .108<br />

rekurrentes. . . . . . . . . . . . . . . . . . . .158<br />

Balken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

Basis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

269


Bestärkendes Lernen . . . . . . . . . . . . . . 233<br />

Biasneuron . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

Binäre Schwellenwertfunktion. . . . . . .46<br />

Bipolarzelle . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

Black Box . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

C<br />

Cerebellum . . . . . . . . . . . . siehe Kleinhirn<br />

Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209<br />

Clusteranalyse . . . . . . . . . . . . . . . . . . . . 209<br />

Codebookvektor . . . . . . . . . . . . . . 172, 210<br />

Cortex . . . . . . . . . . . . siehe Großhirnrinde<br />

visueller . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

D<br />

Dartmouth Summer Research Project<br />

11<br />

Deep networks. . . . . . . . . . . . . . . .120, 125<br />

Delta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102<br />

Delta-Regel . . . . . . . . . . . . . . . . . . . . . . . 101<br />

Dendrit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

-enbaum . . . . . . . . . . . . . . . . . . . . . . . 24<br />

Depolarisation. . . . . . . . . . . . . . . . . . . . . .27<br />

Diencephalon . . . . . . siehe Zwischenhirn<br />

Differenzvektor . . . . . siehe Fehlervektor<br />

digitales Filter . . . . . . . . . . . . . . . . . . . . 227<br />

Digitalisierung . . . . . . . . . . . . . . . . . . . . 172<br />

diskret . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172<br />

Diskretisierung . . . . siehe Quantisierung<br />

Dynamisches System . . . . . . . . . . . . . . 152<br />

E<br />

Early Stopping . . . . . . . . . . . . . . . . . . . . . 77<br />

Eingabedimension . . . . . . . . . . . . . . . . . . 62<br />

Eingabemuster . . . . . . . . . . . . . . . . . . . . . 67<br />

Eingabevektor . . . . . . . . . . . . . . . . . . . . . . 62<br />

Einzelauge . . . . . . . . . siehe Ommatidium<br />

Einzellinsenauge . . . . . . . . . . . . . . . . . . . . 34<br />

Elektronengehirn . . . . . . . . . . . . . . . . . . . 10<br />

Elmannetz . . . . . . . . . . . . . . . . . . . . . . . . 154<br />

Entwicklungsgeschichte . . . . . . . . . . . . . 10<br />

Episode . . . . . . . . . . . . . . . . . . . . . . . . . . . 240<br />

Epoche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

Epsilon-Nearest Neighbouring . . . . . 211<br />

Evolutionäre Algorithmen . . . . . . . . . 158<br />

Exploitation-Ansatz . . . . . . . . . . . . . . . 242<br />

Exploration-Ansatz. . . . . . . . . . . . . . . .242<br />

F<br />

Facettenauge . . . . . . siehe Komplexauge<br />

Fastprop . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

FeedForward . . . . . . . . . . . . . . . . . . . . . . . 50<br />

Fehler<br />

Gesamt-. . . . . . . . . . . . . . . . . . . . . . . .75<br />

spezifischer . . . . . . . . . . . . . . . . . . . . . 74<br />

Fehlerfunktion. . . . . . . . . . . . . . . . . . . . . .97<br />

spezifische . . . . . . . . . . . . . . . . . . . . . . 97<br />

Fehlertoleranz . . . . . . . . . . . . . . . . . . . . . . . 5<br />

Fehlervektor . . . . . . . . . . . . . . . . . . . . . . . . 71<br />

Fermifunktion . . . . . . . . . . . . . . . . . . . . . . 46<br />

Fläche, perzeptive . . . . . . . . . . . . . . . . . 215<br />

Flat spot elimination . . . . . . . . . . . . . . 121<br />

Funktionsapproximation . . . . . . . . . . . 126<br />

Funktionsapproximator<br />

universeller. . . . . . . . . . . . . . . . . . . .105


G<br />

Ganglienzelle . . . . . . . . . . . . . . . . . . . . . . . 34<br />

Gauß-Markov-Modell . . . . . . . . . . . . . . 141<br />

Gaußglocke. . . . . . . . . . . . . . . . . . . . . . . .185<br />

Gehirn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

Generalisierung . . . . . . . . . . . . . . . . . . 4, 65<br />

Gewicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

Gewichtete Summe . . . . . . . . . . . . . . . . . 44<br />

Gewichtsänderung . . . . . . . . . . . . . . . . . . 85<br />

Gewichtsmatrix . . . . . . . . . . . . . . . . . . . . 42<br />

Bottom-Up- . . . . . . . . . . . . . . . . . . . 202<br />

Top-Down- . . . . . . . . . . . . . . . . . . . . 201<br />

Gewichtsvektor . . . . . . . . . . . . . . . . . . . . . 42<br />

Gitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180<br />

Gliazelle. . . . . . . . . . . . . . . . . . . . . . . . . . . .29<br />

Gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />

Gradientenabstieg . . . . . . . . . . . . . . . . . . 79<br />

Probleme. . . . . . . . . . . . . . . . . . . . . . .80<br />

Gridworld . . . . . . . . . . . . . . . . . . . . . . . . . 235<br />

Großhirn . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

Großhirnrinde . . . . . . . . . . . . . . . . . . . . . . 18<br />

H<br />

Heaviside-Funktion . . . . . . . siehe Binäre<br />

Schwellenwertfunktion<br />

Hebbsche Lernregel . . . . . . . . . . . . . . . . . 85<br />

Verallgemeinerte Form . . . . . . . . . 86<br />

Heteroassoziator. . . . . . . . . . . . . . . . . . .167<br />

Hinton-Darstellung . . . . . . . . . . . . . . . . . 42<br />

Hirnstamm . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

Hopfieldnetz. . . . . . . . . . . . . . . . . . . . . . .159<br />

kontinuierliches . . . . . . . . . . . . . . . 169<br />

Horizontalzelle . . . . . . . . . . . . . . . . . . . . . 35<br />

Hyperpolarisation . . . . . . . . . . . . . . . . . . 29<br />

Hypothalamus . . . . . . . . . . . . . . . . . . . . . . 21<br />

I<br />

Internodien. . . . . . . . . . . . . . . . . . . . . . . . .29<br />

Interpolation<br />

exakte . . . . . . . . . . . . . . . . . . . . . . . . 139<br />

Ion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

Iris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

J<br />

Jordannetz . . . . . . . . . . . . . . . . . . . . . . . . 152<br />

K<br />

k-Means Clustering. . . . . . . . . . . . . . . .210<br />

k-Nearest Neighbouring . . . . . . . . . . . 211<br />

Kegelfunktion . . . . . . . . . . . . . . . . . . . . . 185<br />

Kleinhirn . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

Komplexauge . . . . . . . . . . . . . . . . . . . . . . . 33<br />

Kontextbasierte Suche . . . . . . . . . . . . . 195<br />

kontinuierlich. . . . . . . . . . . . . . . . . . . . . .172<br />

Konzentrationsgradient . . . . . . . . . . . . . 25<br />

L<br />

Learning<br />

reinforcement . . . . . . . . siehe Lernen,<br />

bestärkendes


supervised . . . . . . . . . . . siehe Lernen,<br />

überwachtes<br />

unsupervised. . . . . . . . .siehe Lernen,<br />

unüberwachtes<br />

Learning Vector Quantization . . . . . 171<br />

Lernbarkeit. . . . . . . . . . . . . . . . . . . . . . . .125<br />

Lernen<br />

überwachtes . . . . . . . . . . . . . . . . . . . . 68<br />

Batch- . . . . . . . . siehe Lernen, offline<br />

bestärkendes . . . . . . . . . . . . . . . . . . . 67<br />

offline . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

online . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

unüberwachtes . . . . . . . . . . . . . . . . . 67<br />

Lernfähigkeit . . . . . . . . . . . . . . . . . . . . . . . . 4<br />

Lernrate . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

variable . . . . . . . . . . . . . . . . . . . . . . . 116<br />

Lernverfahren . . . . . . . . . . . . . . . . . . . . . . 49<br />

Lineare Separierbarkeit . . . . . . . . . . . . 103<br />

Linearer Assoziator . . . . . . . . . . . . . . . . . 13<br />

Linse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

Lochkameraauge . . . . . . . . . . . . . . . . . . . 33<br />

Locked-In-Syndrom. . . . . . . . . . . . . . . . .21<br />

Logistische Funktion . . . . . . . . . . . . . siehe<br />

Fermifunktion<br />

Temperaturparameter . . . . . . . . . . 47<br />

LVQ . . . . . . . . . . . . siehe Learning Vector<br />

Quantization<br />

LVQ1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175<br />

LVQ2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175<br />

LVQ3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175<br />

M<br />

M-SOM . . . . siehe Self Organizing Map,<br />

Multi<br />

Mark I Perceptron. . . . . . . . . . . . . . . . . .11<br />

Mathematische Symbole<br />

(t). . . . . . . . . . . . . . . .siehe Zeitbegriff<br />

A(S). . . . . . . . . . .siehe Aktionsraum<br />

Ep . . . . . . . . . . . . . .siehe Fehlervektor<br />

G . . . . . . . . . . . . . . . . . siehe Topologie<br />

N . . . . . . siehe Self Organizing Map,<br />

Eingabedimension<br />

P . . . . . . . . . . . siehe Trainingsmenge<br />

Q∗ Π (s, a) . . . . . . . siehe Action-Value-<br />

Funktion, optimale<br />

QΠ(s, a) . . . . . . . . . . . . . . . . . . . . . siehe<br />

Action-Value-Funktion<br />

Rt . . . . . . . . . . . . . . . . . . . siehe Return<br />

S . . . . . . . . . . . . siehe Situationsraum<br />

T . . . . . siehe Temperaturparameter<br />

V ∗ Π (s) . siehe State-Value-Funktion,<br />

optimale<br />

VΠ(s) . . siehe State-Value-Funktion<br />

W . . . . . . . . . . siehe Gewichtsmatrix<br />

∆wi,j . . . . . siehe Gewichtsänderung<br />

Π . . . . . . . . . . . . . . . . . . . . . siehe Policy<br />

Θ . . . . . . . . . . . . . siehe Schwellenwert<br />

α . . . . . . . . . . . . . . . .siehe Momentum<br />

β . . . . . . . . . . . . . siehe Weight Decay<br />

δ . . . . . . . . . . . . . . . . . . . . . . siehe Delta<br />

η . . . . . . . . . . . . . . . . . . . siehe Lernrate<br />

η ↑ . . . . . . . . . . . . . . . . . . . . siehe Rprop<br />

η ↓ . . . . . . . . . . . . . . . . . . . . siehe Rprop<br />

ηmax . . . . . . . . . . . . . . . . . . siehe Rprop<br />

ηmin . . . . . . . . . . . . . . . . . . siehe Rprop<br />

ηi,j . . . . . . . . . . . . . . . . . . . siehe Rprop<br />

∇ . . . . . . . . . . . siehe Nabla-Operator<br />

ρ. . . . . . . .siehe Radiusmultiplikator<br />

Err . . . . . . . . . . siehe Fehler, Gesamt-<br />

Err(W ). . . . . . .siehe Fehlerfunktion<br />

Errp . . . . . .siehe Fehler, spezifischer<br />

Errp(W ) . . . . . siehe Fehlerfunktion,<br />

spezifische<br />

ErrWD . . . . . . . . siehe Weight Decay<br />

at . . . . . . . . . . . . . . . . . . . . siehe Aktion


csiehe Zentrum eines RBF-Neurons,<br />

siehe Neuron, Self Organizing<br />

Map-, Zentrum<br />

m . . . . . . . . siehe Ausgabedimension<br />

n . . . . . . . . . siehe Eingabedimension<br />

p . . . . . . . . . . . siehe Trainingsmuster<br />

rh . . . . . . . . . . . . siehe Zentrum eines<br />

RBF-Neurons, Abstand zu<br />

rt . . . . . . . . . . . . . . . . . . . siehe Reward<br />

st . . . . . . . . . . . . . . . . . .siehe Situation<br />

t. . . . . . . . . . . . .siehe Teaching Input<br />

wi,j . . . . . . . . . . . . . . . . . siehe Gewicht<br />

x . . . . . . . . . . . . . siehe Eingabevektor<br />

y . . . . . . . . . . . . .siehe Ausgabevektor<br />

fact . . . . siehe Aktivierungsfunktion<br />

fout . . . . . . . . siehe Ausgabefunktion<br />

Membran. . . . . . . . . . . . . . . . . . . . . . . . . . .25<br />

-potential . . . . . . . . . . . . . . . . . . . . . . 25<br />

Metrik . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209<br />

Mexican-Hat-Funktion . . . . . . . . . . . . 185<br />

MLP . . . . . siehe Perceptron, Multilayer-<br />

Momentum. . . . . . . . . . . . . . . . . . . . . . . .121<br />

Momentum-Term. . . . . . . . . . . . . . . . . .121<br />

Montecarlo-Methodik. . . . . . . . . . . . . .247<br />

Moore-Penrose-Pseudoinverse. . . . . .140<br />

Moving-Average-Verfahren. . . . . . . . .227<br />

Mustererkennung . . . . . . . . . . . . . 127, 165<br />

Myelinscheide . . . . . . . . . . . . . . . . . . . . . . 29<br />

N<br />

Nabla-Operator . . . . . . . . . . . . . . . . . . . . 79<br />

Natrium-Kalium-Pumpe . . . . . . . . . . . . 26<br />

Neocognitron . . . . . . . . . . . . . . . . . . . . . . . 14<br />

Nervensystem . . . . . . . . . . . . . . . . . . . . . . 17<br />

<strong>Netze</strong>ingabe . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

Netzhaut . . . . . . . . . . . . . . . . . siehe Retina<br />

Neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

akzeptierendes . . . . . . . . . . . . . . . . 216<br />

Binäres. . . . . . . . . . . . . . . . . . . . . . . . .91<br />

Eingabe- . . . . . . . . . . . . . . . . . . . . . . . 91<br />

Fermi- . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

Gewinner-. . . . . . . . . . . . . . . . . . . . .182<br />

Identitäts-. . . . . . . . . . . . . . . . . . . . . .91<br />

Informationsverarbeitendes . . . . . 91<br />

Input- . . . . . siehe Neuron, Eingabe-<br />

Kontext- . . . . . . . . . . . . . . . . . . . . . . 152<br />

RBF- . . . . . . . . . . . . . . . . . . . . . . . . . 132<br />

RBF-Ausgabe- . . . . . . . . . . . . . . . . 132<br />

ROLF- . . . . . . . . . . . . . . . . . . . . . . . . 215<br />

Self Organizing Map-. . . . . . . . . .180<br />

Zentrum . . . . . . . . . . . . . . . . . . . . 180<br />

Tanh- . . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

<strong>Neuronale</strong>s Gas . . . . . . . . . . . . . . . . . . . 196<br />

Multi-. . . . . . . . . . . . . . . . . . . . . . . . .198<br />

wachsendes. . . . . . . . . . . . . . . . . . . .199<br />

<strong>Neuronale</strong>s Netz . . . . . . . . . . . . . . . . . . . . 42<br />

rückgekoppeltes . . . . . . . . . . . . . . . 151<br />

Neurotransmitter . . . . . . . . . . . . . . . . . . . 23<br />

O<br />

Oligodendrozyten. . . . . . . . . . . . . . . . . . .29<br />

OLVQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . .175<br />

On-Neuron. . . . . . . . . . .siehe Biasneuron<br />

One Step Ahead Prediction. . . . . . . .226<br />

heterogene . . . . . . . . . . . . . . . . . . . . 230<br />

Open Loop Learning . . . . . . . . . . . . . . 156<br />

Optimal Brain Damage. . . . . . . . . . . .123


P<br />

Parallelität . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />

Pattern . . . . . . . . . siehe Trainingsmuster<br />

Perceptron . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

Multilayer- . . . . . . . . . . . . . . . . . . . . 106<br />

rückgekoppeltes . . . . . . . . . . . . . 151<br />

Singlelayer-. . . . . . . . . . . . . . . . . . . . .92<br />

Perceptron-Konvergenz-Theorem . . . 95<br />

Perceptron-Lernalgorithmus . . . . . . . . 92<br />

Periode . . . . . . . . . . . . . . . . . . . . . . . . . . . 151<br />

Peripheres Nervensystem . . . . . . . . . . . 18<br />

Personen<br />

Anderson. . . . . . . . . . . . . . . . .254, 256<br />

Anderson, James A. . . . . . . . . . . . . 13<br />

Anguita . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

Barto. . . . . . . . . . . . . . . .233, 254, 256<br />

Carpenter, Gail. . . . . . . . . . . .13, 201<br />

Elman . . . . . . . . . . . . . . . . . . . . . . . . 152<br />

Fukushima . . . . . . . . . . . . . . . . . . . . . 14<br />

Girosi . . . . . . . . . . . . . . . . . . . . . . . . . 131<br />

Grossberg, Stephen . . . . . . . . 13, 201<br />

Hebb, Donald O. . . . . . . . . . . . 11, 85<br />

Hinton . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

Hoff, Marcian E. . . . . . . . . . . . . . . . 12<br />

Hopfield, John . . . . . . . . . . . 13 f., 159<br />

Ito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

Jordan . . . . . . . . . . . . . . . . . . . . . . . . 152<br />

Kohonen, Teuvo . 13, 171, 179, 193<br />

Lashley, Karl . . . . . . . . . . . . . . . . . . . 11<br />

MacQueen, J. . . . . . . . . . . . . . . . . . 210<br />

Martinetz, Thomas. . . . . . . . . . . .196<br />

McCulloch, Warren . . . . . . . . . . . 10 f.<br />

Minsky, Marvin . . . . . . . . . . . . . . . 11 f.<br />

Miyake . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

Nilsson, Nils. . . . . . . . . . . . . . . . . . . .12<br />

Papert, Seymour . . . . . . . . . . . . . . . 12<br />

Parker, David . . . . . . . . . . . . . . . . . 122<br />

Pitts, Walter . . . . . . . . . . . . . . . . . . 10 f.<br />

Poggio . . . . . . . . . . . . . . . . . . . . . . . . 131<br />

Pythagoras . . . . . . . . . . . . . . . . . . . . . 74<br />

Riedmiller, Martin . . . . . . . . . . . . 116<br />

Rosenblatt, Frank . . . . . . . . . . 11, 89<br />

Rumelhart . . . . . . . . . . . . . . . . . . . . . 14<br />

Steinbuch, Karl . . . . . . . . . . . . . . . . 12<br />

Sutton. . . . . . . . . . . . . . .233, 254, 256<br />

Tesauro, Gerald . . . . . . . . . . . . . . . 253<br />

von der Malsburg, Christoph . . . 13<br />

Werbos, Paul . . . . . . . . . 13, 108, 123<br />

Widrow, Bernard. . . . . . . . . . . . . . .12<br />

Wightman, Charles. . . . . . . . . . . . .11<br />

Williams . . . . . . . . . . . . . . . . . . . . . . . 14<br />

Zuse, Konrad. . . . . . . . . . . . . . . . . . .10<br />

PNS . . . siehe Peripheres Nervensystem<br />

Pole Balancer . . . . . . . . . . . . . . . . . . . . . 254<br />

Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240<br />

closed loop . . . . . . . . . . . . . . . . . . . . 241<br />

evaluation. . . . . . . . . . . . . . . . . . . . .246<br />

greedy . . . . . . . . . . . . . . . . . . . . . . . . 242<br />

improvement . . . . . . . . . . . . . . . . . . 246<br />

open loop . . . . . . . . . . . . . . . . . . . . . 241<br />

Pons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />

Propagierungsfunktion. . . . . . . . . . . . . .44<br />

Pruning . . . . . . . . . . . . . . . . . . . . . . . . . . . 123<br />

Pupille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

Q<br />

Q-Learning . . . . . . . . . . . . . . . . . . . . . . . .252<br />

Quantisierung . . . . . . . . . . . . . . . . . . . . . 171<br />

Quickpropagation . . . . . . . . . . . . . . . . . 122


R<br />

Rückenmark . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

Rückkopplung . . . . . . . . . . . . . . . . . 50, 151<br />

direkte . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

indirekte . . . . . . . . . . . . . . . . . . . . . . . 54<br />

laterale. . . . . . . . . . . . . . . . . . . . . . . . .55<br />

Ranvierscher Schnürring . . . . . . . . . . . . 29<br />

RBF-Netz . . . . . . . . . . . . . . . . . . . . . . . . . 132<br />

wachsendes. . . . . . . . . . . . . . . . . . . .147<br />

Refraktärzeit . . . . . . . . . . . . . . . . . . . . . . . 29<br />

Regional and Online Learnable Fields<br />

214<br />

Reinforcement Learning . . . . . . . . . . . 233<br />

Reizleitender Apparat . . . . . . . . . . . . . . 30<br />

Rekurrenz . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />

Repolarisation . . . . . . . . . . . . . . . . . . . . . . 27<br />

Repräsentierbarkeit. . . . . . . . . . . . . . . .125<br />

Resilient Backpropagation . . . . . . . . . 116<br />

Resonanz. . . . . . . . . . . . . . . . . . . . . . . . . .202<br />

Retina . . . . . . . . . . . . . . . . . . . . . . . . . . 34, 91<br />

Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

Reward . . . . . . . . . . . . . . . . . . . . . . . . . . . 239<br />

Avoidance Strategy. . . . . . . . . . . .243<br />

pure delayed . . . . . . . . . . . . . . . . . . 243<br />

pure negative . . . . . . . . . . . . . . . . . 243<br />

Rezeptives Feld. . . . . . . . . . . . . . . . . . . . .34<br />

Rezeptorzelle . . . . . . . . . . . . . . . . . . . . . . . 30<br />

Entero-. . . . . . . . . . . . . . . . . . . . . . . . .31<br />

Extero-. . . . . . . . . . . . . . . . . . . . . . . . .31<br />

Photo- . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

Primär- . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

Sekundär- . . . . . . . . . . . . . . . . . . . . . . 31<br />

Rindenfeld . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

Assoziations- . . . . . . . . . . . . . . . . . . . 18<br />

primäres . . . . . . . . . . . . . . . . . . . . . . . 18<br />

RMS . . . . . . . . . siehe Root-Mean-Square<br />

ROLFs . . . . . siehe Regional and Online<br />

Learnable Fields<br />

Root-Mean-Square . . . . . . . . . . . . . . . . . 74<br />

Rprop siehe Resilient Backpropagation<br />

S<br />

Saltatorische Impulsleitung . . . . . . . . . 30<br />

Schicht<br />

Ausgabe- . . . . . . . . . . . . . . . . . . . . . . . 50<br />

Eingabe- . . . . . . . . . . . . . . . . . . . . . . . 50<br />

versteckte . . . . . . . . . . . . . . . . . . . . . . 50<br />

Schichten von Neuronen . . . . . . . . . . . . 50<br />

Schwannsche Zelle . . . . . . . . . . . . . . . . . . 29<br />

Schwellenwert . . . . . . . . . . . . . . . . . . . . . . 45<br />

Schwellenwertpotential . . . . . . . . . . . . . 27<br />

Selbstorganisierende Karten . . . . . . . . 13<br />

Self Fulfilling Prophecy . . . . . . . . . . . . 232<br />

Self Organizing Map. . . . . . . . . . . . . . .179<br />

Multi-. . . . . . . . . . . . . . . . . . . . . . . . .198<br />

Sensorische Adaption . . . . . . . . . . . . . . . 32<br />

Sensorische Transduktion . . . . . . . . . . . 30<br />

ShortCut-Connections . . . . . . . . . . . . . . 50<br />

Silhouettenkoeffizient . . . . . . . . . . . . . . 212<br />

Single Shot Learning . . . . . . . . . . . . . . 164<br />

Situation . . . . . . . . . . . . . . . . . . . . . . . . . . 238<br />

Situationsbaum . . . . . . . . . . . . . . . . . . . 242<br />

Situationsraum . . . . . . . . . . . . . . . . . . . . 239<br />

SLP . . . . . siehe Perceptron, Singlelayer-<br />

Snark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

SNIPE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .vi<br />

SOM . . . . . . . siehe Self Organizing Map<br />

Soma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24<br />

Spin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160<br />

Stabilitäts-Plastizitäts-Dilemma69, 201<br />

State Space Forecasting . . . . . . . . . . . 226<br />

State-Value-Funktion . . . . . . . . . . . . . . 244<br />

Stimulus. . . . . . . . . . . . . . . . . . . . . . .27, 182<br />

Swing up an inverted Pendulum . . . 255


Symmetry Breaking . . . . . . . . . . . . . . . 127<br />

Synapse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

chemische . . . . . . . . . . . . . . . . . . . . . . 23<br />

elektrische. . . . . . . . . . . . . . . . . . . . . .23<br />

synaptischer Spalt . . . . . . . . . . . . . . . . . . 23<br />

T<br />

Tangens Hyperbolicus . . . . . . . . . . . . . . 47<br />

TD-Gammon . . . . . . . . . . . . . . . . . . . . . . 253<br />

TD-Learningsiehe Temporal Difference<br />

Learning<br />

Teacher Forcing . . . . . . . . . . . . . . . . . . . 156<br />

Teaching Input . . . . . . . . . . . . . . . . . . . . . 70<br />

Telencephalon. . . . . . . . . .siehe Großhirn<br />

Temporal Difference Learning . . . . . 248<br />

Thalamus . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

Topologie . . . . . . . . . . . . . . . . . . . . . . . . . 181<br />

Topologiefunktion . . . . . . . . . . . . . . . . . 183<br />

Topologischer Defekt . . . . . . . . . . . . . . 192<br />

Trainingsmenge. . . . . . . . . . . . . . . . . . . . .67<br />

Trainingsmuster . . . . . . . . . . . . . . . . . . . . 70<br />

Menge der. . . . . . . . . . . . . . . . . . . . . .70<br />

Transferfunktion . . . . . . . . . . . . . . . . . siehe<br />

Aktivierungsfunktion<br />

Truncus cerebri . . . . . . siehe Hirnstamm<br />

Two Step Ahead Prediction. . . . . . . .228<br />

direct . . . . . . . . . . . . . . . . . . . . . . . . . 228<br />

U<br />

Umwelt . . . . . . . . . . . . . . . . . . . . . . . . . . . 237<br />

Unfolding in Time. . . . . . . . . . . . . . . . .156<br />

V<br />

Verbindung. . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

Vollverknüpfung . . . . . . . . . . . . . . . . . . . . 50<br />

Voronoidiagramm . . . . . . . . . . . . . . . . . 173<br />

W<br />

Weight Decay . . . . . . . . . . . . . . . . . . . . . 123<br />

Widrow-Hoff-Regel . . siehe Delta-Regel<br />

Winner-Takes-All-Schema . . . . . . . . . . 55<br />

Z<br />

Zeitbegriff . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

Zeithorizont . . . . . . . . . . . . . . . . . . . . . . . 240<br />

Zeitreihe . . . . . . . . . . . . . . . . . . . . . . . . . . 223<br />

Zeitreihenvorhersage. . . . . . . . . . . . . . .223<br />

Zentrales Nervensystem. . . . . . . . . . . . .18<br />

Zentrum<br />

eines RBF-Neurons. . . . . . . . . . . .132<br />

Abstand zu . . . . . . . . . . . . . . . . . 138<br />

eines ROLF-Neurons . . . . . . . . . . 215<br />

ZNS . . . . . siehe Zentrales Nervensystem<br />

Zuckern . . . . siehe Flat spot elimination<br />

Zustand . . . . . . . . . . . . . . . . . . . . . . . . . . . 238<br />

Zwischenhirn . . . . . . . . . . . . . . . . . . . . . . . 20<br />

Zylinderfunktion . . . . . . . . . . . . . . . . . . 185

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!