Lernverfahren von Künstlichen Neuronalen Netzwerken
Lernverfahren von Künstlichen Neuronalen Netzwerken
Lernverfahren von Künstlichen Neuronalen Netzwerken
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Lernverfahren</strong> <strong>von</strong> Künstlichen<br />
<strong>Neuronalen</strong> <strong>Netzwerken</strong><br />
Untersuchung und Vergleich der bekanntesten <strong>Lernverfahren</strong> und eine<br />
Übersicht über Anwendung und Forschung im Bereich der künstlichen<br />
neuronalen Netzen.<br />
Maturaarbeit <strong>von</strong>:<br />
Betreuer:<br />
Daniel Sprecher<br />
Prof. Dr. René Hugelshofer<br />
Brand Frauenäckerstr. 18<br />
9472 Grabserberg 9435 Heerbrugg<br />
Fachbereich Mathematik<br />
März 2002<br />
Kantonsschule Heerbrugg, Klasse 4NaPa
Inhaltsverzeichnis<br />
1 Einleitung 4<br />
2 Theoretische Grundlagen 5<br />
2.1 Das Neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
2.1.1 Die Aktivierungsfunktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
2.2 Verbindungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />
2.3 Topologien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
2.4 Lernen, Lernregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
2.5 Vergleich mit biologischen Netzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />
2.6 Vergleich mit einem konventionellen Computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />
3 Modelle 12<br />
3.1 Perzeptron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
3.1.1 Aufbau eines Perzeptrons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
3.1.2 Lineare Trennbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
3.1.3 Randerkennung bei Schwarz-Weiss-Figuren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />
3.1.4 <strong>Lernverfahren</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />
3.1.5 <strong>Lernverfahren</strong> bei Randerkennung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />
3.1.6 Zweistufige Perzeptrons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
3.1.7 Dreistufige Perzeptrons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
3.2 Backpropagation und seine Modifikationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
3.2.1 Prinzip des <strong>Lernverfahren</strong>s Backpropagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
3.2.2 Herleitung der Backpropagation-Regel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
3.2.3 Probleme <strong>von</strong> Backpropagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />
3.2.4 Modifikationen als Lösung bestimmter Probleme . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />
3.3 Backpercolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
3.3.1 Prinzip des <strong>Lernverfahren</strong>s Backpercolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
3.3.2 Bemerkungen zu Backpercolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />
3.4 Rekurrente Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
3.4.1 Jordan-Netze und Elman-Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
3.4.2 <strong>Lernverfahren</strong> für rekurrente Netze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
3.5 Modell <strong>von</strong> Kohonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
3.5.1 Prinzip der selbstorganisierenden Karten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
3.5.2 <strong>Lernverfahren</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />
3.5.3 Bemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
3.6 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
4 Anwendungen 24<br />
4.1 Rand- und Buchstabenerkennung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
4.1.1 Vorgehen bei der Entwicklung eines KNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />
4.2 Mühle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />
4.3 Anwendung in Forschung und Industrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />
2
5 Diskussion 28<br />
6 Zusammenfassung 28<br />
7 Literaturverzeichnis 29<br />
8 Dank 29<br />
9 Anhang 30<br />
9.1 Verwendete Hilfsmittel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
9.2 CD-Rom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
Abbildungsverzeichnis<br />
1 Ein Neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />
2 Mögliche Aktivierungsfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6<br />
3 Funktionen an einem Neuron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
4 Neuronentypen nach Position im Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7<br />
5 Feedforward-Netzwerke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />
6 Netze mit Rückkopplungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />
7 Ein einstufiges Perzeptron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
8 Lineare Trennbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />
9 Randerkennung mit einem Perzeptron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />
10 Ein Perzeptron lernt die AND-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />
11 Lösung des XOR-Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />
12 Ein einfaches Netz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />
13 Beispiele <strong>von</strong> Fehlerfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />
14 Probleme beim Backpropagation-<strong>Lernverfahren</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />
15 Beispiele für rekurrente Modelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<br />
16 Ein Kohonen-Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />
17 Mexican-Hat-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />
18 Ein Mühlespiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />
3
1 Einleitung<br />
Als wir im Biologieunterricht das Thema Nervensystem durchnahmen, lernten wir auch die Neuronen kennen. Wir<br />
erfuhren, wie die Kommunikation zwischen ihnen funktioniert und sahen die verschiedenen Teile des Nervensystems<br />
und die Regionen des Gehirns. Verborgen blieb aber die Funktion des einzelnen Neurons. Leitet es nicht einfach<br />
Reize weiter? Wie kann aus einem Geflecht <strong>von</strong> Dendriten und Axonen, die über Synapsen Milliarden <strong>von</strong> Neuronen<br />
miteinander verbinden, ein Gebilde entstehen, das wir unser Gehirn nennen? Das wichtigste Organ unseres<br />
Körpers ist gleichzeitig auch das flexibelste. Durch Lernprozesse kann es sich ständig der Umgebung anpassen und<br />
Informationen aufnehmen. Wie aber geht man vor, wenn man mehr über die Vorgänge wissen möchte, die uns zu<br />
dem machen, was wir sind?<br />
Wie bei vielen komplexen Prozessen und Sachverhalten in Physik, Chemie und Biologie gibt es auch für neuronale<br />
Netze verschiedene Modelle, die das Wesentliche vereinfacht und anschaulich aufzeigen wollen. Auch bei neuronalen<br />
Netzen, wie man Nervensysteme verallgemeinert nennt, versuchte man Modelle zu entwickeln, mit denen<br />
man einerseits mehr über biologische Netze erfahren und andererseits auch Probleme in der Technik lösen wollte.<br />
Der Überbegriff dieser Modelle lautet künstliche neuronale Netzwerke (KNN). Gemäss Definition sind KNN<br />
informationsverarbeitende Systeme, die aus einer grossen Anzahl einfacher Einheiten (sog. Neuronen) bestehen.<br />
Die Neuronen senden sich über gerichtete Verbindungen Signale zu. Was das nun genau heisst, wird im nächsten<br />
Kapitel erläutert.<br />
Bevor ich mich definitiv entschied meine Maturaarbeit über neuronale Netzwerke zu schreiben, informierte ich<br />
mich im Internet tiefgehender über KNN und bemerkte, dass zur Beschreibung der verschiedenen Modelle sehr viel<br />
Mathematik benötigt wird. Da wurde ich neugierig, denn eigentlich hätte ich eher, wie so oft bei der Beschreibung<br />
<strong>von</strong> Vorgängen in der Natur, physikalische Formeln erwartet. Auch hätte ich mir, wie bei Computernetzwerken,<br />
Protokolle und Programme vorstellen können, welche die Kommunikation zwischen den künstlichen Neuronen regeln.<br />
Stattdessen fand ich grundlegende Mathematik, anfänglich einfache Multiplikationen und Additionen, später<br />
auch Ableitungen und Matrizenmultiplikationen, aber alles bekannte, relativ einfache Mathematik. Ich war fasziniert.<br />
Wie weit kann man wohl mit dem eher unbeliebten Werkzeug Mathematik ein Modell beschreiben, das<br />
schlussendlich unser Gehirn erklären soll und nebenbei auch noch viele technische Anwendungen hat?<br />
Ich war vor allem gespannt zu erfahren, wie man es schafft, ein Netz dazu zu bringen eine bestimmte Aufgabe zu<br />
lösen. Im Gegensatz zum Programmieren eines Programms, werden dem Netz keinerlei Regeln oder Bedingungen<br />
übergeben. Um zu lernen braucht ein KNN nur eine genügend grosse Anzahl <strong>von</strong> Beispielen. In diesem Zusammenhang<br />
wollte ich auch herausfinden, ob man bei KNN <strong>von</strong> Intelligenz sprechen könne und wenn ja, wie intelligent<br />
heutige Netze bereits sind.<br />
Nun ist das Gebiet der neuronalen Netze sehr weit und Forscher aus verschiedenen Bereichen beschäftigen sich mit<br />
der Weiterentwicklung der Modelle. Mathematiker, Physiker, Ingenieure, Informatiker, Biologen, Mediziner und<br />
sogar Psychologen nutzen aus verschiedenen Gründen neuronale Netze. In den letzen Jahrzehnten entstand so eine<br />
Menge verschiedener Modelle, die jeweils für unterschiedliche Anwendungen entwickelt wurden. Einige Modelle<br />
haben auch in der Psychologie und der Hirnforschung neue Erkenntnisse gebracht, andere waren mehr für die Weiterentwicklung<br />
bestimmter Theorien <strong>von</strong> Nutzen. Mit dieser Arbeit war es nicht mein Ziel möglichst komplett alle<br />
Modelle im Detail vorzustellen, sondern ich wollte den beschränkten Platz nutzen, um die wichtigsten, bekanntesten<br />
und interessantesten Modelle zu beschreiben und wendete mich dabei vor allem den verschiedenen <strong>Lernverfahren</strong><br />
zu. Um nicht nur eine Zusammenfassung der Fachliteratur zu schreiben, sondern auch eigene Erfahrungen in die<br />
Arbeit einfliessen lassen zu können, entwickelte ich eigene Beispiele, die in Kapitel 4 beschrieben sind.<br />
4
2 Theoretische Grundlagen<br />
Bevor man ein KNN mit einem <strong>Lernverfahren</strong> trainieren kann, muss man wissen, wie ein Netz überhaupt aufgebaut<br />
ist, d.h. aus welchen Komponenten es besteht und welche Funktionen diese erfüllen. Jedes künstliche neuronale<br />
Netz setzt sich im wesentlichen aus Neuronen und gewichteten Verbindungen zusammen. Um das Netz richtig<br />
zu konfigurieren, verändert der Lernalgorithmus in der Lernphase die Gewichtung der Verbindungen. Die Unterschiede<br />
zwischen den Modellen liegen v.a. in der Art der Neuronen, der Anordnung der Verbindungen und der<br />
Funktionsweise des Lernalgorithmus.<br />
2.1 Das Neuron 1<br />
Das Neuron ist die kleinste informationsverarbeitende Einheit in einem KNN. Die Aufgabe<br />
eines Neurons besteht darin, aus dem aktuellen Input des Neurons den Output zu berechnen.<br />
Wie das genau vor sich geht wird anhand des Neurons j, das <strong>von</strong> Neuron i einen Input<br />
erhält durchgegangen. Der Output o j (t+1) des Neurons j zum Zeitpunkt t+1 erfolgt in zwei<br />
Schritten. Im ersten Schritt wird mit der Aktivierungsfunktion f act aus dem Input net j die<br />
Aktivierung a j berechnet. Mit dem Grad der Aktivierung wird dann mit Hilfe der Outputfunktion<br />
f out im zweiten Schritt der Output bestimmt, den das Neuron j an die folgenden<br />
Neuronen weitergibt.<br />
Ein Neuron führt also hintereinander folgende zwei Funktionen durch:<br />
Abb. 1: Ein Neuron<br />
1. a j (t + 1) = f act (net j (t))<br />
2. o j (t + 1) = f out (a j (t + 1))<br />
Wie man sieht, benötigt die Berechnung des Aktivierungszustandes einen Zeitschritt, während für die Outputfunktion<br />
in der Theorie kein Zeitschritt eingeplant ist. Um bei der Simulation neuronaler Netze Rechenleistung zu<br />
sparen, wird in der Praxis in den meisten Fällen die Identität als Outputfunktion verwendet.<br />
2.1.1 Die Aktivierungsfunktion 3<br />
Ein Neuron macht bei den meisten Modellen also nichts anderes als die Aktivierungsfunktion durchzuführen. Theoretisch<br />
könnte man eine beliebige Funktion als Aktivierungsfunktion verwenden. Sinn machen aber nur Funktionen,<br />
die bei grösserem Input auch einen grösseren Output liefern. Üblich sind drei verschiedene Arten <strong>von</strong> Funktionen:<br />
1. Lineare Funktion<br />
Die einfachste Funktion, die verwendet wird ist eine lineare Funktion. Hier nimmt die Aktivierung des Neurons<br />
linear mit dem Input zu. Zur theoretischen Herleitung vieler <strong>Lernverfahren</strong> war sie anfangs sehr wichtig. Sie<br />
wird aber heute nur noch selten verwendet, da sie biologisch unplausibel ist und in der Praxis gegenüber<br />
anderen Funktionen keine Vorteile hat.<br />
2. Binäre Schwellenwertfunktion<br />
Sie ist eigentlich biologisch am offensichtlichsten und wurde bei frühen Modellen (z.B. Perzeptron) auch meistens<br />
verwendet. Das Neuron ist aktiv, wenn der Input einen bestimmten Schwellenwert übersteigt, sonst ist<br />
es nicht aktiv. Als Beispiel einer solchen Funktion sei die Heavyside- oder Signum-Funktion genannt.<br />
Der Vorteil der Schwellenwertfunktion ist die einfache und schnelle Berechenbarkeit. Trotzdem wird sie bei<br />
neueren Modellen nicht mehr verwendet, da moderne Lernalgorithmen zur Bestimmung der optimalen Konfiguration<br />
eines Netzes die Ableitung der Aktivierungsfunktion benötigen und diese für die binäre Schwellenwertfunktion<br />
überall, wo sie differenzierbar ist, Null ist.<br />
5
aj<br />
1<br />
0.5<br />
-1 -0.5 0.5 1<br />
netj<br />
aj<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.8<br />
0.6<br />
0.4<br />
aj<br />
1<br />
-0.5<br />
0.2<br />
0.2<br />
-1<br />
0.2 0.4 0.6 0.8<br />
netj<br />
-1 -0.5 0.5 1<br />
netj<br />
(a) Lineare Funktion<br />
(b) Schwellenwertfunktion<br />
(c) Sigmoide Funktion<br />
Abb. 2: Mögliche Aktivierungsfunktionen<br />
3. Sigmoide Funktion<br />
Bei genauerer Untersuchung <strong>von</strong> biologischen Neuronen bemerkte man, dass die Aktivierungsschwelle eines<br />
Neurons nicht immer ganz genau gleich hoch ist. Mal muss die Zelle ein bisschen mehr angeregt werden,<br />
damit sie das Signal weiter leitet, mal ist sie früher als erwartet aktiv. Daraus ergibt sich eine Art Wahrscheinlichkeitsverteilung<br />
für die Aktivierungsfunktion, welche die Form einer sigmoiden (S-förmigen) Funktion<br />
annimmt. Sie hat die Form einer abgerundeten Schwellenwertfunktion. Die Steigung ist in ihrem Zentrum<br />
am grössten. Am häufigsten werden heute die logistische Funktion und Tangens hyperbolicus verwendet. Wie<br />
schon erwähnt ist die Ableitung der Aktivierungsfunktion bei modernen <strong>Lernverfahren</strong> sehr wichtig. Sie ist<br />
darum für diese Funktionen angegeben:<br />
a) logistische Funktion<br />
b) Tangens hyperbolicus<br />
f log (x) =<br />
f ′ log(x) =<br />
1<br />
1 + e −x<br />
e −x<br />
(1 + e −x ) 2 = f log(x) · (1 − f log (x))<br />
tanh(x) = ex − e −x<br />
e x + e −x<br />
tanh ′ (x) = (ex + e −x ) 2 − (e x − e −x ) 2 4<br />
(e x + e −x ) 2 =<br />
(e x + e −x ) 2 = 1 − tanh2 (x)<br />
Die Wahl der Aktivierungsfunktion bestimmt auch die Werte, die der Aktivierungszustand a j annehmen kann. Bei<br />
einer linearen Funktion kann a j theoretisch alle Werte in R annehmen, wird eine sigmoide Aktivierungsfunktion<br />
gewählt, ist a i ∈ [−1, 1]. Die Schwellenwertfunktion kann a i nur zwei Werte zuordnen, z.B. {0, 1}, {−1, 1} oder<br />
{−, +}.<br />
2.2 Verbindungen 3<br />
Neuronen tauschen über gerichtete, gewichtete Verbindungen Informationen aus, d.h. dass Informationen nur in<br />
eine Richtung durch eine Verbindung fliessen können, und dass jedes Signal zwischen zwei Neuronen mit einem<br />
Faktor (=Gewicht) multipliziert wird. Besteht eine Verbindung vom Neuron i zum Neuron j wird das zu dieser<br />
Verbindung gehörende Gewicht mit w ij bezeichnet (Reihenfolge <strong>von</strong> i und j beachten). Ist diese Verbindung die<br />
einzige Inputverbindung des Neurons j, so entspricht der Output des Neurons i multipliziert mit dem Gewicht<br />
w ij dem Input des Neurons j. Hat das Neuron j jedoch mehrere Inputverbindungen, wird mit Hilfe der Propagie-<br />
6
ungsfunktion f prop der Input des Neurons j aus den Outputs aller Neuronen k, die zu j eine Verbindung haben<br />
berechnet:<br />
net j (t) = f prop (o k (t), w kj ) = ∑ k<br />
o k (t) · w kj<br />
Abb. 3: Die drei Funktionen, die an<br />
einem Neuron durchführt werden<br />
Die Gewichte aller Verbindungen in einem Netzwerk werden oft in der Gewichtsmatrix<br />
W gespeichert. Hat das Netz n Neuronen, ist W eine n × n-<br />
Matrix. Das Gewicht w ij kann man in der i-ten Zeile und der j-ten Spalte<br />
der Matrix W ablesen. Ist keine Verbindung <strong>von</strong> i zu j vorhanden, steht<br />
dort eine Null.<br />
Darum kann man die Propagierungsfunktion als Multiplikation <strong>von</strong> zwei<br />
Matrizen verstehen:<br />
n∑<br />
net j (t) = O(t) · W j = o i (t) · w ij = f prop (o k (t), w kj )<br />
i=1<br />
O(t) ist dabei eine 1 × n-Matrix, die den aktuellen Output aller n Zellen des Netzes enthält. W j ist die j-te Spalte<br />
der Gewichtsmatrix und hat somit die Dimension n × 1. Das Produkt hat die Dimension 1 × 1 und ergibt den Input<br />
des Neurons j.<br />
2.3 Topologien 1<br />
In einem KNN unterscheidet man drei Typen <strong>von</strong> Neuronen. An die Eingabeneuronen<br />
legt man die Ausgangswerte der zu lösenden Aufgabe, <strong>von</strong><br />
den Ausgabeneuronen kann bei richtiger Konfiguration des Netzes das<br />
Resultat abgelesen werden. Neuronen, die keine dieser beiden Aufgaben<br />
erfüllen, sondern allein zur Verarbeitung der Informationen dienen, heissen<br />
”Verdeckte Neuronen”.<br />
Meistens sind in einem KNN nicht alle Neuronen miteinander verbunden,<br />
sondern die Verbindungen sind nach einem bestimmten System angeordnet.<br />
Die Art und Weise, wie Neuronen und Verbindungen angeordnet<br />
Abb. 4: Neuronentypen nach Position<br />
im Netzwerk<br />
sind, wird als Topologie bezeichnet. Um die Anordnung der Verbindungen<br />
übersichtlich zu gestalten, werden für gewöhnlich die Eingabeneuronen ganz oben, die Ausgabeneuronen ganz<br />
unten angeordnet. Die verschiedenen Topologien sind im folgenden systematisch beschrieben:<br />
1. Netze ohne Rückkopplung<br />
Bei feedforward-Netzen existiert kein Pfad, der <strong>von</strong> einem Neuron aus direkt oder indirekt wieder zu diesem<br />
zurückführt. Werden also die Eingabeneuronen oben und die Ausgabeneuronen unten angeordnet, gibt es nur<br />
Verbindungen, die nach unten führen.<br />
Ebenenweise vollständig verbundene feedforward-Netze:<br />
Dieses spezielle feedforward-Netzwerk wird in mehrere Schichten eingeteilt. Die erste Schicht bilden die Eingabeneuronen.<br />
Danach folgen keine, eine oder mehrere sog. verdeckte Schichten. Die letzte Schicht ist die<br />
Ausgabeschicht. Speziell an diesem Typ ist, dass jedes Neuron der i-ten Schicht zu allen Neuronen der (i+1)-<br />
ten eine Verbindung hat, sonst aber zu keinen. Man spricht <strong>von</strong> einem n-stufigen Netz, wenn insgesamt (n+1)<br />
Schichten vorhanden sind, d.h. ein einstufiges Netz hat sowohl eine Eingabe- als auch eine Ausgabeschicht,<br />
jedoch keine verdeckten Schichten.<br />
7
(a) Allgemeines feedforward-Netz (b) Ebenenweise vollständig<br />
verbundenes feedforward-Netz<br />
Abb. 5: Feedforward-Netzwerke<br />
Die allgemeinen feedforward-Netze werden zwar oft auch in Schichten eingeteilt, es sind aber auch Verbindungen<br />
zu Neuronen weiter entfernter Schichten möglich. Solche Verbindungen nennt man shortcut-Verbindungen.<br />
2. Netze mit Rückkopplungen<br />
a) Netze mit direkten Rückkopplungen:<br />
In solchen Netzen kann ein Neuron durch eine Verbindung zu sich selbst seinen eigenen Aktivierungszustand<br />
beeinflussen (je nach Gewichtung abschwächen oder verstärken).<br />
b) Netze mit indirekten Rückkopplungen: Im Gegensatz zu feedforward-Netzen, existieren Verbindungen <strong>von</strong><br />
Neuronen höherer Schichten zu Neuronen niederer Schichten.<br />
c) Netze mit Rückkopplungen innerhalb einer Schicht:<br />
Auch Neuronen derselben Schicht sind miteinander verbunden. Eine solche Topologie wird bei Kohonen-<br />
<strong>Netzwerken</strong> verwendet (siehe Kapitel 3.5).<br />
d) Vollständig verbundene Netze<br />
In solchen Netzen existieren Verbindungen zwischen allen Neuronen, es sind jedoch keine direkten Rückkopplungen<br />
vorhanden. Vollständig verbundene Netze sind insbesondere als Hopfield-Netze bekannt geworden.<br />
2.4 Lernen, Lernregeln 3,4,5<br />
Meistens erfolgt Lernen in KNN durch Modifikation der Gewichtsmatrix. Dazu werden dem Netz verschiedene<br />
Trainingsmuster wiederholt präsentiert. Die Lernregel gibt dann an, wie die Gewichtsmatrix verändert wird. Sie ist<br />
der interessanteste Teil eines KNN, weil sie erlaubt, dass ein Netz eine gegebene Aufgabe selbständig aus Beispielen<br />
lernt zu lösen. Es gibt auch <strong>Lernverfahren</strong>, die nicht nur die Werte, sondern auch die Dimension der Gewichtsmatrix<br />
vergrössern oder verkleinern, indem sie Neuronen hinzufügen oder entfernen. Theoretisch wäre es auch möglich das<br />
Lernen durch Modifikation der Aktivierungs-, Propagierungs- oder Ausgabefunktion während der Lernphase zu<br />
beeinflussen, es wird aber meist unterlassen. Die verschiedenen Lernregeln lassen sich in drei Gruppen einteilen:<br />
8
(a) Mit direkten Rück-<br />
(b) Mit indirekten<br />
(c) Mit lateralen Rück-<br />
(d) Ein vollständig ver-<br />
kopplungen<br />
Rückkopplungen<br />
kopplungen<br />
bundenes Netz<br />
Abb. 6: Netze mit Rückkopplungen<br />
1. Überwachtes Lernen Der Lernalgorithmus vergleicht das berechnete Ausgabemuster mit dem erwünschten<br />
Ausgabemuster und ändert mit dieser Information die Gewichte so ab, dass die Differenz zwischen<br />
tatsächlicher und erwünschter Ausgabe möglichst klein wird. D.h. aber, dass dem Lernalgorithmus zu jedem<br />
Beispiel, das dem Netz präsentiert wird, das erwünschte Ausgabemuster bekannt sein muss. Die Aufgabe des<br />
<strong>Lernverfahren</strong>s ist es, die Gewichte so zu ändern, dass das Netz nach wiederholter Präsentation der Paare<br />
<strong>von</strong> Eingabe- und Ausgabemuster diese Assoziation selbständig vornehmen kann und dies auch für ähnliche,<br />
unbekannte Eingabemuster tun kann. Das Netz soll also aus den Beispielen eine Regel extrahieren, um auch<br />
für unbekannte Eingaben eine sinnvolle Ausgabe zu erzeugen.<br />
Überwachtes Lernen wird in der Technik oft angewendet, weil es die schnellste Methode darstellt, es ist<br />
aber biologisch nicht plausibel. Die Delta-Regel oder der Backpropagation-Lernalgorithmus sind Beispiele für<br />
überwachtes Lernen.<br />
2. Bestärkendes Lernen Nachdem aus dem Eingabemuster die Ausgabe des Netzes berechnet wurde, überprüft<br />
der Lernalgorithmus, ob das Resultat richtig oder falsch ist. Nur aufgrund dieser Information ändert das<br />
Netz die Gewichte. Die Angabe, ob das Resultat richtig oder falsch war, lässt sich mit Bestrafung oder Belohnung<br />
bei Lebewesen vergleichen. Es ist ja allgemein bekannt, dass man durch Fehler (schlechte Erfahrungen)<br />
am besten lernt. Diese Art des Lernens ist deutlich langsamer als überwachtes Lernen.<br />
3. Unüberwachtes Lernen Hier lernt das Netz durch Selbstorganisation. Es versucht die Eingabemuster<br />
in Kategorien einzuteilen, indem es ähnliche Eingabemuster auf räumlich benachbarte Gebiete der Ausgabeschicht<br />
abbildet. Ein Beispiel sind die selbstorganisierenden Karten <strong>von</strong> Kohonen (siehe Kapitel 3.5). Mit<br />
unüberwachtem Lernen lassen sich nicht alle Aufgaben lösen, jedoch ist diese Form des Lernens biologisch<br />
am plausibelsten.<br />
Hebbsche Lernregel Die Mutter aller <strong>Lernverfahren</strong> wurde schon 1949 <strong>von</strong> Donald O. Hebb formuliert. Er hat<br />
sie bei biologischen Netzen entdeckt. Sie ist die Grundlage für die meisten komplizierteren Lernregeln und besagt:<br />
Wenn Zelle j einen Input <strong>von</strong> Zelle i erhält und beide gleichzeitig aktiviert sind, dann erhöht sich<br />
das Gewicht w ij proportional zum Produkt des Outputs o i <strong>von</strong> Neuron i und der Aktivierung a j des<br />
Neurons j.<br />
Die mathematische Umsetzung in einen Algorithmus wird weiter unten hergeleitet.<br />
9
2.5 Vergleich mit biologischen Netzen 2,6<br />
Wie schon erwähnt sind KNN sehr stark (nach Meinung vieler Neurobiologen zu stark) idealisierte Modelle <strong>von</strong><br />
komplexen biologischen Netzen. Das Wesentliche ist jedoch in beiden Systemen gleich.<br />
Folgende Ähnlichkeiten konnten bei KNN beibehalten werden:<br />
- Neuronen Die Elemente in KNN sind relativ einfach im Vergleich mit dem Gesamtsystem. Die Informationsverarbeitung<br />
entspricht der eines biologischen Neurons.<br />
- Massive Parallelität Die Datenverarbeitung erfolgt parallel, d.h. die Aufgabe wird auf viele Neuronen<br />
aufgeteilt, nicht wie bei serieller Datenverarbeitung, wo die Befehle <strong>von</strong> einem zentralen Prozessor nacheinander<br />
abgearbeitet werden.<br />
Auch ist jedes Neuron mit relativ vielen anderen Neuronen verbunden. Bei anderen Datenverarbeitungssystemen<br />
ist die Kommunikation zwischen den Hardwarekomponenten viel geringer.<br />
- Gerichtete Verbindungen Verbindungen übertragen den Grad der Aktivierung und werden in biologischen<br />
Netzen, je nach dem ob sie vor oder nach der Synapse liegen, Axone oder Dendriten genannt. Die<br />
Funktion ist aber genau die gleiche.<br />
- Gewichte Heute nimmt man an, dass die gesamte Informationsspeicherung in den Synapsen stattfindet.<br />
Auch die Lern- und Anpassungsfähigkeit des Gehirns wird nur durch die Variabilität der Synapsenstärken<br />
ermöglicht. Synapsen entsprechen grob den Gewichten bei KNN, weil Aktionspotentiale <strong>von</strong> verschiedenen<br />
Synapsen ein Neuron verschieden anregen können. Es gibt auch hemmende Synapsen, welche Gewichten mit<br />
negativem Vorzeichen entsprechen.<br />
- Hebbsche Lernregel Schon früh erkannte man, dass im Gehirn die Verbindung zwischen zwei Neuronen<br />
gestärkt wird, wenn sie gleichzeitig aktiv sind. Diese Lernregel wurde <strong>von</strong> Hebb auf KNN übertragen. Von<br />
der Hebbschen Lernregel sind dann viele weitere Lernalgorithmen abgeleitet worden.<br />
- Assoziativspeicher Informationen werden im Gehirn nicht wie beim Computer mit Hilfe <strong>von</strong> Adressen<br />
gespeichert, mit denen man die Daten wieder findet, sondern assoziativ. Auch KNN wurden schon erfolgreich<br />
als Assoziativspeicher benutzt.<br />
Daneben gibt es aber auch viele Aspekte, die <strong>von</strong> den meisten Modellen nicht berücksichtigt werden und der<br />
Vereinfachung zum Opfer fallen mussten:<br />
- Anzahl der Neuronen und Verbindungen Die Zahl der Neuronen in unserem Gehirn wird auf etwa<br />
10 11 geschätzt, bei Simulationen werden aber nur etwa 10 2 bis 10 4 Neuronen verwendet. Es ist anzunehmen,<br />
dass sich viele Fähigkeiten erst mit einer grösseren Anzahl <strong>von</strong> Neuronen realisieren lassen. Auch die Anzahl<br />
der Verbindungen pro Neuron sind in biologischen Systemen viel höher als bei Simulationen.<br />
- Amplitudenmodulation statt Frequenzmodulation Bei biologischen Systemen ist ein Signal stärker,<br />
wenn die Frequenz der ankommenden Aktionspotentiale grösser ist. Eine solche Modulation ist nötig, weil<br />
Nervenfasern Information binär übertragen. Im Gegensatz dazu verwenden KNN eine sog. Amplitudenmodulation<br />
und können somit mit einem numerischen Aktivierungswert arbeiten. Synapsen lassen sich dann als<br />
Faktoren interpretieren, welche diesen Aktivierungswert ändern. Es ist noch unerforscht, ob Frequenzmodulation<br />
entscheidende Vorteile gegenüber der heute verwendeten Informationsübertragung bringt. Einige neuere<br />
Modelle, die pulscodierte Verfahren verwenden, erbrachten bisher für technische Anwendungen keine Vorteile,<br />
hatten aber einen viel höheren Simulationsaufwand zur Folge.<br />
10
- Zeitliche Vorgänge Oft haben in Nervenfasern zeitliche Vorgänge einen beachtlichen Einfluss. In KNN<br />
wird Zeit einfach mit der Anzahl Schritten gleichgesetzt und die Verzögerung der Aktivierung vernachlässigt.<br />
- Biologisch unplausible Lernregeln Viele Lernalgorithmen, die mit überwachtem Lernen arbeiten, sind<br />
aus mathematischen oder physikalischen Überlegungen entstanden und haben mit biologischen Netzen überhaupt<br />
nichts zu tun. So z.B. das Gradientenabstiegsverfahren. Trotzdem werden sie für technische Anwendungen<br />
erfolgreich benutzt und sind weiter unten beschrieben.<br />
- Beeinflussung durch räumlich benachbarte Neuronen In der Realität beeinflussen benachbarte<br />
Neuronen einander nicht nur über direkte Verbindungen, sondern auch mit chemischen Substanzen, wie z.B.<br />
Hormone oder Neurotransmitter.<br />
Es gibt sicher noch viele andere Unterschiede, es ist aber wichtig, dass man versteht, dass Modelle gar nicht gleich<br />
sein dürfen, wie ihr Vorbild. Modelle sind dazu da, einen Sachverhalt so darzustellen, dass man ihn versteht.<br />
Daneben haben KNN sogar noch einen technischen Nutzen. Es gibt für jeden der oben aufgeführten Kritikpunkte<br />
mindestens ein Modell, bei dem der beschriebene Unterschied nicht vorhanden ist, aber mehr Nach- als Vorteile<br />
brachte und darum bei den meisten anderen Modellen weggelassen wurde. Durch die Weiterentwicklung solcher<br />
Ideen entstehen im Laufe der Zeit aber immer mehr biologienahe KNN, die auch technische Fragestellungen sehr<br />
gut lösen können.<br />
2.6 Vergleich mit einem konventionellen Computer 6<br />
Der Prozessor eines herkömmlichen PCs besteht aus sehr vielen Transistoren, die Informationen seriell verarbeiten.<br />
Da die Schaltzeit eines Transistors sehr klein ist (ca. 1ns) könnte ein Computer theoretisch mehr Schaltvorgänge<br />
in einer Sekunde durchführen als unser Gehirn (”Schaltzeit” eines Neurons beträgt ca. 1ms). Trotzdem übertrifft<br />
die Leistungsfähigkeit unseres Gehirns jeden Supercomputer. Möglich wird dies durch die massiv parallele<br />
Datenverarbeitung der neuronalen Netze. Zu jedem Zeitpunkt arbeitet ein grosser Teil des Gehirns, während bei<br />
herkömmlichen Rechnern die meisten Verarbeitungselemente dem Speicher zugeordnet sind und somit keine Optimierung<br />
der Leistung bewirken. Sie sind nur bei der Abfrage der Daten, die bei ihnen gespeichert sind, aktiv. Durch<br />
die massive Parallelität können neuronale Netze jede Aufgabe, die sie imstande sind zu lösen, in einer übersichtlichen<br />
Anzahl Schritte lösen, jedoch kann die Anzahl der benötigten Neuronen bei anspruchsvollen Aufgaben sehr<br />
gross werden (Unser Gehirn besteht aus ca. 100 Milliarden Neuronen). Man spricht in diesem Zusammenhang auch<br />
<strong>von</strong> der 100-Schritt-Regel, da unser Gehirn in etwa 100 sequentiellen Zeitschritten ( ˆ=0.1s) eine bekannte Person<br />
in einem Bild erkennen kann, während ein konventioneller Rechner in 100 sequentiellen Verarbeitungsschritten fast<br />
nichts tun kann.<br />
Die Parallelität hat auch noch weitere Vorteile. So kann ein neuronales Netz nach Ausfall einiger Elemente immer<br />
noch funktionsfähig sein. Software im Sinne <strong>von</strong> speziellen, problembezogenen Programmen, wie sie in konventionellen<br />
Computern vorhanden sind, sucht man in neuronalen Netzen vergeblich. Probleme werden durch gezielte<br />
Konfiguration der Netzparameter gelöst.<br />
11
3 Modelle<br />
Im Laufe der letzen fünfzehn Jahre sind unzählige Modelle entstanden, die meistens für einen bestimmten Aufgabentyp<br />
entwickelt wurden oder einen bestimmten biologischen Aspekt aufzeigen wollten. Darum kann man eigentlich<br />
nicht sagen, dass ein Modell besser oder leistungsfähiger ist als das andere, man kann höchstens sagen, dass es für<br />
eine bestimmte Aufgabe besser geeignet ist. Von all den Modellen, die existieren, wurde hier eine Auswahl unter<br />
den interessantesten und bekanntesten KNN gemacht.<br />
3.1 Perzeptron 7,8<br />
Das Perzeptron wurde schon in den 60er Jahren entwickelt und ist eigentlich der Vorfahre der anderen Modelle.<br />
Anhand <strong>von</strong> ihm wurden das erste Mal die oben beschriebenen theoretischen Voraussetzungen für KNN definiert.<br />
3.1.1 Aufbau eines Perzeptrons<br />
Abb. 7: Ein einstufiges Perzeptron<br />
Das Perzeptron besteht aus zwei Schichten. In der ersten Schicht hat<br />
es n Neuronen, die über trainierbare Verbindungen vollständig mit den<br />
nächsten Zellen verbunden sind. Die zweite Schicht ist die Ausgabeschicht<br />
und besteht aus nur einem Neuron, das die Nummer n + 1 = j hat. Die<br />
Eingabe, Aktivierung und Ausgabe der Neuronen dürfen nur binäre Werte<br />
annehmen, jedoch sind die Gewichte und Schwellenwerte reelle Zahlen.<br />
Daraus folgt, dass die Aktivierungsfunktion die Schwellenwertfunktion<br />
sein muss. Der Output des Neurons j ist also 1, wenn der Input net j grösser ist als der Schwellenwert θ j des<br />
Neurons j, andernfalls 0. Mathematisch ausgedrückt:<br />
⎧<br />
⎨ 1 falls net j ≥ θ j<br />
o j = a j =<br />
, mit net<br />
⎩<br />
j =<br />
0 falls net j < θ j<br />
n∑<br />
o i · w ij<br />
Interessant ist es nun zu untersuchen, welche binären Funktionen sich mit einem solch einfachen Netz lösen lassen.<br />
Die Topologie des Perzeptrons setzt voraus, dass nur binäre Funktionen, die jedem möglichen n-dimensionalen<br />
Eingabevektor entweder die Zahl 0 oder 1 zuordnen, in Frage kommen. Im nächsten Abschnitt wird die Frage<br />
geklärt, ob jede beliebige binäre Funktion <strong>von</strong> einem Perzeptron dargestellt werden kann.<br />
3.1.2 Lineare Trennbarkeit<br />
Die lineare Trennbarkeit lässt sich am besten anhand eines Beispiels auf-<br />
zeigen. Ein Perzeptron mit zwei Eingabeneuronen soll die logische AND-<br />
Funktion ausführen, d.h. nur eine 1 ausgeben, wenn beide Eingaben 1<br />
sind, sonst soll es eine 0 ausgeben. Mathematisch:<br />
o j = 1 , falls net j = o 1 w 1j + o 2 w 2j ≥ θ j .<br />
Für w 2j > 0 ist dies äquivalent zu der Ungleichung<br />
i=1<br />
o 2 ≥ 1<br />
w 2j<br />
(θ j − o 1 w 1j ).<br />
Abb. 8: Lineare Trennbarkeit<br />
Da w 1j , w 2j und θ j konstant sind, beschreibt diese Ungleichung eine Halbebene in der durch o 1 und o 2 gebildeten<br />
Ebene (siehe Abb. 8). Bei positivem w 2j stellen alle Gitterpunkte innerhalb dieser Halbebene Kombinationen <strong>von</strong><br />
o 1 und o 2 dar, für welche die Ausgabe 1 ist, ausserhalb ist die Ausgabe 0. Wenn man w 1j , w 2j und θ j z.B. so wählt,<br />
12
dass die Trenngerade durch die Punkte (1/0.5) und (0.5/1) geht, entspricht das Perzeptron einem AND-Operator.<br />
Für w 1j = 1, w 2j = 1 und θ j = 1.5 ist das der Fall. Das AND-Problem könnte man auch verallgemeinern, indem<br />
man n anstatt 2 Eingabeneuronen verwenden würde. Allerdings wäre dann die vorher trennende Gerade eine (n−1)-<br />
dimensionaler Ebene im n-dimensionalen Raum, was man sich zwar nur schwer vorstellen kann, mathematisch aber<br />
nicht wesentlich schwieriger zu rechnen ist.<br />
Mit einem einstufigen Perzeptron lassen sich also nur linear trennbare Funktionen lösen. Es gibt aber unter allen<br />
binären Funktionen viel mehr nicht linear trennbare. Ein einfaches Beispiel ist das XOR-Problem. Die Ausgabe des<br />
Perzeptrons soll 1 sein, wenn die beiden Eingaben verschieden sind und 0, wenn sie gleich sind. Hier gibt es keine<br />
Gerade, die auf der einen Seite alle Kombinationen, für welche die Ausgabe 1 sein soll und auf der anderen Seite<br />
alle Kombinationen, für welche die Ausgabe 0 sein soll, hat.<br />
3.1.3 Randerkennung bei Schwarz-Weiss-Figuren<br />
Eine etwas sinnvollere Anwendung eines einstufigen Perzeptrons<br />
ist die Randerkennung <strong>von</strong> ebenen Schwarz-Weiss-Figuren. Dazu<br />
wird ein Perzeptron mit neun Eingabeneuronen verwendet, die zu<br />
einem 3 × 3-Quadrat angeordnet sind. Die zu untersuchende Figur<br />
wird in Pixel zerlegt. Einem schwarzen Bildpunkt wird die Zahl 1,<br />
einem weissen die Zahl 0 zugeordnet. Nun wird das gesamte Bild<br />
Punkt für Punkt durchgegangen, der Punkt in der Mitte des Quadrates<br />
liegt jeweils am Rand einer Figur, wenn er selber schwarz<br />
ist, aber mindestens eines seiner Nachbarn weiss ist. Es lässt sich<br />
leicht nachprüfen, dass die dargestellte Gewichtung diese Aufgabe<br />
Abb. 9: Randerkennung mit einem Perzeptron<br />
in jedem Fall löst. Das Ausgabeneuron ist aktiv, wenn der zu untersuchende Punkt (derjenige in der Mitte) am<br />
Rand liegt und ist nicht aktiv, wenn er inner- oder ausserhalb einer Figur liegt. Für das Beispiel in Abb. 9 ergibt<br />
sich:<br />
net 10 (t) = O(t) · W 10<br />
[<br />
]<br />
= 0 1 1 0 1 1 0 0 1 o 10 (t)<br />
[<br />
] ⊤<br />
· −1 −1 −1 −1 8 −1 −1 −1 −1 0<br />
= 0 · −1 + 1 · −1 + 1 · −1 + 0 · −1 + 1 · 8 + 1 · −1 + 0 · −1 + 0 · −1 + 1 · −1 + o 10 (t) · 0<br />
= 4 ≥ θ 10 = 0.5 ⇒ o 10 (t + 1) = 1<br />
Die Netzausgabe ist also 1 und der Punkt liegt auf dem Rand. Wie man auf die richtige Gewichtung bei einer<br />
beliebigen Aufgabe kommt, ist Thema des nächsten Unterkapitels.<br />
3.1.4 <strong>Lernverfahren</strong><br />
Für einstufige Perzeptrons existiert ein relativ einfacher Lernalgorithmus, der dem Netz in endlich vielen Schritten<br />
jede linear trennbare Funktion beibringen kann. Das <strong>Lernverfahren</strong> gehört zum Typ des überwachten Lernens, d.h.<br />
das erste Eingabemuster wird an das Netz angelegt und das Resultat mit dem erwarteten Output verglichen. Sind<br />
sie gleich wird nichts gemacht und der Lernalgorithmus fährt mit dem zweiten Eingabemuster fort. Ist der erwartete<br />
Output 1, der tatsächliche aber 0, werden alle Gewichte der Verbindungen <strong>von</strong> den Eingabeneuronen, die eine 1 als<br />
Ausgabe haben, zum Ausgabeneuron um den Wert der Lernrate η erhöht. Ist der tatsächliche Output grösser als der<br />
erwartete, müssen die Gewichte aller Verbindungen <strong>von</strong> Eingabeneuronen, die eine 1 senden, zum Ausgabeneuronen<br />
um η verkleinert werden. Die Lernrate hat ungefähr einen Wert zwischen 0.2 und 1. Im allgemeinen gilt, dass das<br />
Netz um so schneller lernt, desto höher die Lernrate ist. Bei zu hohen Lernraten wird aber manchmal über das Ziel<br />
13
hinausgeschossen.<br />
In einer Pseudo-Programmiersprache könnte der Algorithmus etwa so aussehen. t j ist dabei der erwartete Output:<br />
while Menge der Eingabemuster nicht leer do<br />
lege neues Eingabemuster p an und berechne den Output o j<br />
if o j = t j then mache nichts<br />
else if o j = 0 then { Ausgabe ist 0, sollte 1 sein, also w ij erhöhen}<br />
for each i ≤ n do w ij := w ij + η · o i endfor<br />
endif<br />
if o j = 1 then { Ausgabe ist 1, solle 0 sein, also w ij verringern}<br />
for each i ≤ n do w ij := w ij − η · o i endfor<br />
endif<br />
endif<br />
endwhile<br />
3.1.5 <strong>Lernverfahren</strong> bei Randerkennung<br />
Zur Veranschaulichung des Lernalgorithmus wird hier einem einstufigen Perzeptron<br />
mit drei Eingabeneuronen die logische AND-Funktion beigebracht. Für<br />
die Gewichte und den Schwellenwert des Ausgabeneurons werden am Anfang<br />
zufällige Werte eingesetzt. Als Schwellenwert hat sich 1.5 ergeben, diese Zahl<br />
wird in der Lernphase nicht mehr geändert. Die Lernrate ist mit 0.7 relativ<br />
hoch.<br />
Wie in Abb. 10 ersichtlich, hat das Netz die Funktion nach vier Schritten gelernt.<br />
Dem Netz wurden dazu verschiedene Eingabemuster und die dazugehörige<br />
Ausgabe t 4 präsentiert. Beim ersten Muster, ist das Ausgabeneuron aktiv, sollte<br />
es aber nicht sein. Darum werden die Gewichte w 24 und w 34 um die Lernrate<br />
erniedrigt, das Gewicht w 14 bleibt gleich, weil das Neuron 1 nicht aktiviert ist.<br />
Dies geht so weiter bis nach dem vierten Schritt die Gewichte richtig eingestellt<br />
sind und somit keine weiteren Gewichtsänderungen mehr gemacht werden, weil<br />
dann o 4 und t 4 bei jedem beliebigen Eingabemuster übereinstimmen.<br />
Man merkt, wenn man den Algorithmus an einem konkreten Beispiel durchrechnet,<br />
dass er der Hebbschen Lernregel sehr ähnlich ist. Es mussten nur einige<br />
Abb. 10: Ein Perzeptron lernt die<br />
Anpassungen gemacht werden, da es sich um überwachtes Lernen handelt. Im<br />
AND-Funktion<br />
Vergleich mit der Hebbschen Lernregel erkennt man bei diesem Lernalgorithmus folgende Unterschiede:<br />
1. Es erfolgt nur eine Gewichtsänderung, wenn das Netz einen Fehler gemacht hat. Dies ist auch sinnvoll ist<br />
aber nur möglich, weil es sich um überwachtes Lernen handelt.<br />
2. Ist das Ausgabeneuron nicht aktiv, sollte aber aktiv sein, werden die Gewichte zwischen den aktiven Eingabeneuronen<br />
und dem nicht aktiven Ausgabeneuron geändert. Das wäre bei strikter Anwendung der Hebbschen<br />
Lernregel nicht möglich.<br />
3. Der Wert der Gewichte kann auch kleiner werden, bei der Hebbschen Lernregel gibt es keinen Fall bei dem<br />
eine Verbindung an Stärke abnimmt.<br />
14
3.1.6 Zweistufige Perzeptrons<br />
Bei zweistufigen Perzeptrons kann die erste Stufe dazu verwendet werden mehrere<br />
solcher Halbräume, wie beim einstufigen Perzeptron zu erzeugen. Die zweite<br />
Stufe verknüpft dann diese verschiedenen Halbräume mit Hilfe linear trennbarer<br />
Funktionen miteinander (z.B. AND) . So kann ein beliebiger konvexer<br />
Körper ”gebaut” werden (in der Ebene ein konvexes Polygon). Jedoch ist es<br />
nicht möglich beliebige Gebiete einzugrenzen.<br />
Das XOR-Problem kann mit einem zweistufigen Perzeptron gelöst werden. Dazu<br />
bestimmt man mit der ersten Stufe zwei Geraden. Die erste Gerade geht<br />
durch die Punkte (1/0.5) und (0.5/1) und bestimmt, dass bei allen Gitterpunkten<br />
unterhalb eine 1 ausgegeben wird. Die zweite Gerade geht durch die Punkte<br />
Abb. 11: Lösung des XOR-<br />
(0.5/0) und (0/0.5) und bestimmt, dass das Perzeptron bei allen Gitterpunkten<br />
Problems<br />
oberhalb eine 1 ausgibt. In der zweiten Stufe werden diese beiden Halbebenen<br />
mit der AND-Funktion verknüpft, so dass ein Gürtel entsteht, der die Punkte (1/0) und (0/1) einschliesst und die<br />
Punkte (0/0) und (1/1) ausschliesst, was der XOR-Funktion entspricht.<br />
3.1.7 Dreistufige Perzeptrons<br />
Beim dreistufigen Perzeptron können die ersten beiden Stufen beliebig viele konvexe Körper oder auch Halbräume<br />
definieren, die in der dritten Stufe dann mit einer linear trennbaren Funktion verknüpft werden. So ist es möglich<br />
jede beliebige Form zu konstruieren. Der Bereich muss weder konvex noch zusammenhängend sein. Höherstufige<br />
Perzeptrons bringen gegenüber dem dreistufigen keine Vorteile mehr.<br />
Bemerkung: Das Perzeptron ist nur ein theoretisches Konstrukt, das simuliert wurde, um mehr über neuronale<br />
Netze zu erfahren. Der Bau eines Perzeptrons würde keinen Sinn machen, da jede binäre Funktion viel billiger mit<br />
integrierten Schaltkreisen gelöst werden kann.<br />
3.2 Backpropagation und seine Modifikationen 9,10,11<br />
Backpropagation ist ein <strong>Lernverfahren</strong>, das nur auf ebenenweise vollständig verbundene feedforward-Netzwerke angewendet<br />
werden kann. Im Unterschied zum Perzeptron können Aktivierungszustände, Input und Output beliebige<br />
reelle Werte annehmen. Darum wird als Aktivierungsfunktion meist eine sigmoide Funktion gewählt.<br />
3.2.1 Prinzip des <strong>Lernverfahren</strong>s Backpropagation<br />
Das einfachste feedforward-Netz, das man sich vorstellen kann, besteht aus zwei Neuronen: Ein Eingabeneuron<br />
(Nummer 1) und ein Ausgabeneuron (Nummer 2). Will man nun mit diesem Netz eine einfache Aufgabe lösen,<br />
z.B. eine Subtraktion um 0.5 der Zahlen <strong>von</strong> 0.5 bis 1.5, muss man das Gewicht w 12 so wählen, dass der Fehler<br />
möglichst klein wird. Dass der Fehler nicht Null sein kann, ist offensichtlich, da im Netz neben den beiden Aktivierungsfunktionen<br />
nur eine Multiplikation ausgeführt wird. Rechnet man für jedes Gewicht den Fehler aus, entsteht<br />
eine Kurve, die bei einem bestimmten Wert ein Minimum hat. Die Aufgabe eines Lernalgorithmus ist es dieses<br />
globale Minimum zu finden. Der Gesamtfehler E eines Netzes bezüglich einer Aufgabe ist die Summe der Fehler,<br />
die das Netz bei jedem einzelnen Muster p macht. Also E = ∑ p<br />
E p<br />
Bei m Ausgabeneuronen ist der Fehler bei der Präsentation <strong>von</strong> einem Muster p definiert als<br />
E p = 1 2<br />
m∑<br />
(t i − o i ) 2<br />
i=1<br />
15
also als Summe der quadratischen Abstände zwischen erwartetem Output t i und tatsächlichem Output o i aller<br />
Ausgabeneuronen bei der Präsentation des Musters p. Der Faktor 1 2<br />
wurde hinzugefügt, damit er bei weiteren<br />
Berechnungen eine Zwei wegkürzt. Auch die Quadrierung des Fehlers wäre eigentlich nicht unbedingt nötig, jedoch<br />
wird so der Term auf jeden Fall positiv und es muss keine Unterscheidung gemacht werden, ob t i grösser oder<br />
kleiner als o i ist (z.B. mit der Betragsfunktion).<br />
Es soll nun die Funktionsgleichung der Fehlerkurve des oben erwähnten einfachsten Netzes hergeleitet werden. Die<br />
Zahl der Ausgabeneuronen ist m = 1. Zum Trainieren werden folgende sechs Muster verwendet:<br />
1. {0.5,0} 2.{0.7,0.2} 3.{0.9,0.4} 4.{1.1,0.6} 5.{1.3, 0.8} 6.{1.5, 1}<br />
Die erste Zahl in den geschweiften Klammern ist jeweils die Eingabe net 1p , wobei p für die Zahl<br />
des Musters steht. Die zweite Zahl ist die erwartete Ausgabe t 2p des Netzes. Mit der linearen<br />
Aktivierungsfunktion f act (x) = a · x ergibt sich somit für den globalen Fehler<br />
E =<br />
6∑<br />
E p =<br />
p=1<br />
=<br />
= 1 2<br />
6∑<br />
p=1<br />
6∑<br />
p=1<br />
1<br />
2 · (t 2p − o 2p ) 2<br />
1<br />
2 · ((net 1p − 0.5) − ((net 1p · a) · w 12 ) · a) 2<br />
6∑<br />
(net 1p (1 − w 12 · a 2 ) − 0.5) 2<br />
p=1<br />
Bei der sigmoiden Aktivierungsfunktion f act (x) =<br />
1<br />
errechnet man für den Fehler<br />
1 + e−x Abb. 12: Ein<br />
einfaches Netz<br />
E =<br />
6∑<br />
E p =<br />
p=1<br />
= 1 2<br />
6∑<br />
p=1<br />
1<br />
2 · ((net 1<br />
1p − 0.5) −<br />
1 + e −net )2 2p<br />
6∑<br />
(net 1p − 0.5 −<br />
p=1<br />
1<br />
1 + e − 1<br />
1+e −net 1p ·w 12<br />
Setzt man für net 11 bis net 16 die oben angegebenen Werte und für a beispielsweise 0.8 ein erhält<br />
man die beiden Funktionsgleichungen:<br />
für die lineare Aktivierungsfunktion und<br />
E = 8576w2 12 − 14800w 12 + 6875<br />
6250<br />
) 2<br />
= 1.372w 2 12 − 2.368w 12 + 1.1<br />
0.5<br />
E =<br />
(2.265 w 12 + 1)<br />
2 − 0.2 · (2.194w12 − 1.5)<br />
(2.194 w − 0.4 · (2.118w12 − 0.25)<br />
12 + 1)<br />
2<br />
(2.118 w 12 + 1)<br />
2<br />
− 0.6 · (2.036w 12<br />
+ 0.167)<br />
(2.036 w12 + 1) 2 − 0.8 · (1.951w 12<br />
+ 0.375)<br />
(1.951 w12 + 1) 2 − 1.864w 12<br />
+ 0.5<br />
(1.864 w12 + 1) 2 + 1.1<br />
für die sigmoide Aktivierungsfunktion. Man sieht hier nebenbei auch, warum man in der Entstehungsphase <strong>von</strong><br />
<strong>Lernverfahren</strong> oft nur lineare Aktivierungsfunktionen verwendet hat. Der rechnerische Aufwand ist viel geringer,<br />
weil sich die Terme viel stärker vereinfachen lassen. Die beiden Graphen können in Abb. 13 verglichen werden. Das<br />
Minimum des Fehlers ermittelt man mit Hilfe der Ableitung. Dort wo sie Null ist, d.h. die Tangente des Graphen<br />
eine horizontale Gerade ist, befinden sich die möglichen Minima. Durch Betrachten des Graphen kann man diese<br />
Werte schnell den verschiedenen stationären Stellen zuordnen und findet beim Netz mit linearer Aktivierungsfunktion<br />
das globale Minimum bei w 12 = 0.863. Der Fehler ist dort mit 0.078 auch tatsächlich sehr klein. Beim Netz<br />
mit logistischer Aktivierungsfunktion erweist sich das Gewicht w 12 = 0.171 als optimal. Der Fehler ist aber mit<br />
0.347 grösser als beim ersten Netz.<br />
16
1.5<br />
1<br />
0.5<br />
E<br />
2<br />
0.5 1 1.5 2 W12<br />
E<br />
1.2<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
-4 -2 2 4<br />
W12<br />
1.5<br />
1<br />
0.5<br />
0<br />
-1<br />
-0.5<br />
0<br />
0.5<br />
1<br />
0.5<br />
0<br />
-0.5<br />
1 -1<br />
(a) Fehlerkurve bei linearer<br />
Aktivierungsfunktion<br />
(b) Fehlerkurve bei<br />
logistischer Aktivierungsfunktion<br />
(c) Mögliche Fehlerfläche im R 3<br />
Abb. 13: Beispiele <strong>von</strong> Fehlerfunktionen<br />
Bei <strong>Netzwerken</strong> mit zwei Verbindungen und Gewichten wird aus der Fehlerkurve eine Fehlerfläche, bei drei Gewichten<br />
handelt es sich schon um einen dreidimensionalen Fehlerkörper im vierdimensionalen Raum, was sich nicht<br />
mehr graphische darstellen, geschweige denn vorstellen lässt. Verallgemeinert kann man sagen, dass ein feedforward-<br />
Netzwerk mit n Verbindungen zu jeder Aufgabe einen n-dimensionalen Fehlerkörper hat, <strong>von</strong> dem das globale<br />
Minimum in der (n + 1)-ten Dimension gesucht wird.<br />
Wäre die ganze Fehlerfläche bekannt, wäre die Bestimmung des Minimums kein Problem, jedoch ist die Berechnung<br />
der ganzen Fehlerfläche viel zu aufwendig und, wie man gleich sehen wird, auch überflüssig. Am Anfang der<br />
Lernphase werden alle Gewichte zufällig gesetzt und der Fehler wird berechnet. Das Kernproblem des Lernalgorithmus<br />
besteht nun darin, aus dem einen Punkt der Fehlerfläche herauszufinden, wie die Gewichte verändert werden<br />
müssen, damit der Fehler abnimmt. Backpropagation verwendet dazu die Steigung (=Gradient) der Fehlerfunktion<br />
E(W ) und ändert die Gewichte um einen Bruchteil der negativen Steigung.<br />
∆W = −η · E ′ (W )<br />
Für das einzelne Gewicht heisst das<br />
∆w ij = −η<br />
δ E(W ).<br />
δw ij<br />
Dies ist der Fall, wenn zuerst alle Muster p präsentiert werden und erst dann eine Gewichtsänderung erfolgt.<br />
Meistens werden die Gewichte aber nach jedem Muster angepasst. Dann gilt:<br />
∆w ij = ∑ p<br />
−η δE p<br />
δw ij<br />
3.2.2 Herleitung der Backpropagation-Regel<br />
Um die Backpropagation-Regel herleiten zu können, muss zuerst die Delta-Regel in einstufigen Netzen mit linearer<br />
Aktivierungsfunktion betrachtet werden:<br />
Die Delta-Regel leitet sich <strong>von</strong> der schon erwähnten Hebbschen Lernregel ab, die besagt, dass die Gewichtsänderung<br />
zwischen Neuron i und j proportional zum Produkt des Outputs <strong>von</strong> i und der Aktivierung <strong>von</strong> j ist. Die Stärke<br />
der Änderung kann durch die Lernrate η variiert werden. Also<br />
∆w ij = ηo i a j<br />
17
Da die Delta-Regel ein <strong>Lernverfahren</strong> für überwachtes Lernen ist, muss der erwartete Output des Ausgabeneurons<br />
j in die Lernregel integriert werden. Dies wird erreicht, indem man die Aktivierung a j durch die Differenz zwischen<br />
erwartetem und tatsächlichem Output <strong>von</strong> j ersetzt. Diese Differenz wird mit δ j bezeichnet:<br />
∆w ij = ηo i (t j − o j ) = ηo i δ j<br />
Weil diese Regel nur auf Netze mit einer Schicht trainierbarer Gewichte und Neuronen mit linearer Aktivierungsfunktion<br />
angewendet werden darf, entwickelte man mit Backpropagation eine Verallgemeinerung, die bei beliebigen<br />
ebenenweise verbundenen feedforward-<strong>Netzwerken</strong> verwendet werden kann. Eigentlich sieht die Backpropagation-<br />
Regel genau gleich aus wie die Delta-Regel, jedoch ist das Fehlersignal δ j anders definiert:<br />
δ j = − δE p<br />
δnet j<br />
δ j ist also nicht mehr als Differenz zwischen erwartetem und tatsächlichem Output definiert, sondern viel allgemeiner<br />
als Änderung des Fehlers bei Muster p bei Änderung des Inputs des Neurons j. Wegen o j = f act (net j ) erhält man:<br />
δ j = − δE p<br />
δnet j<br />
= − δE p<br />
δo j<br />
·<br />
δo j<br />
δnet j<br />
= − δE p<br />
δo j<br />
·<br />
δ<br />
δnet j<br />
f act (net j ) = − δE p<br />
δo j<br />
· f ′ act(net j ).<br />
Der erste Faktor ist für verdeckte Neuronen und Ausgabeneuronen verschieden. Ohne Herleitung ist<br />
⎧<br />
− δE ⎨<br />
p<br />
=<br />
δo j ⎩<br />
(t j − o j ) , wenn j Ausgabezelle<br />
∑<br />
k δ kw jk , wenn j verdeckte Zelle<br />
Wobei k alle Zellen der nachfolgenden Schicht <strong>von</strong> j darstellen soll.<br />
Verwendet man die logistische Aktivierungsfunktion, lässt sich δ j noch weiter vereinfachen, denn für die logistische<br />
Funktion gilt<br />
f ′ act(net j ) = f act (net j ) · (1 − f act (net j )) = o j (1 − o j )<br />
Zusammengefasst ergibt sich damit folgende Backpropagation-Regel:<br />
∆w ij = ηo i δ j<br />
mit<br />
⎧<br />
⎨ o j (1 − o j )(t j − o j )<br />
δ j =<br />
⎩ o j (1 − o j ) ∑ k δ kw j<br />
, falls j eine Ausgabezelle ist,<br />
, falls j eine verdeckte Zelle ist.<br />
Nun sieht man auch wie Backpropagation zu seinem Namen kommt. Die Gewichtsänderung muss nämlich <strong>von</strong><br />
der Ausgabeschicht her gegen die Eingabeschicht hin erfolgen, da δ k bei der Gewichtsänderung verdeckter Zellen<br />
bekannt sein muss. Man sagt auch das Fehlersignal werde <strong>von</strong> der Ausgabeschicht bis zur Eingabeschicht zurückpropagiert<br />
(engl. propagation = Verbreitung).<br />
Bei der Beschreibung des Prinzips <strong>von</strong> Backpropagation wurde erklärt, dass die Gewichtsänderung stark mit der<br />
Steigung der Fehlerfläche zusammenhänge. Dies ist nicht direkt aus der Regel ersichtlich, darum wird noch bewiesen,<br />
dass die Gewichtsänderung proportional zur Steigung er Fehlerfläche ist:<br />
δE p<br />
δw ij<br />
= δE p<br />
δnet j<br />
· δnet j<br />
δw ij<br />
3.2.3 Probleme <strong>von</strong> Backpropagation<br />
= δE p<br />
δnet j<br />
·<br />
δ ∑<br />
δw ij<br />
i<br />
o i w ij = −δ j · o i = − ∆w ij<br />
η<br />
Weil Backpropagation ein lokales Gradientenabstiegsverfahren ist und somit nur aus Kenntnis der lokalen Umgebung<br />
der Fehlerfläche ein Minimum suchen muss, entstehen einige Probleme, für die man z.T. aber auch schon<br />
18
(a) Lokale Minima<br />
(b) Flache Plateaus und Oszillation in steilen<br />
Schluchten<br />
Abb. 14: Probleme beim Backpropagation-<strong>Lernverfahren</strong><br />
Lösungsansätze gefunden hat.<br />
Symmetry Breaking ist ein Problem bei der Initialisierung der Startgewichte, d.h. bei der Wahl der Gewichte vor<br />
der Lernphase. Die Gewichte dürfen am Anfang nicht alle gleich gross gewählt werden, da sonst in der Schicht vor<br />
der Ausgabeschicht keine unterschiedlichen Gewichte mehr entstehen können und so das Netz in der Lernfähigkeit<br />
eingeschränkt wird. Das Problem kann vermieden werden, indem man am Anfang zufällige Werte für Gewichte verwendet.<br />
Zusätzlich sollten die Anfangswerte nicht zu gross gewählt werden, da die sigmoide Aktivierungsfunktion<br />
nahe bei Null die grösste Steigung hat und sich das Netz somit dort am schnellsten einer Aufgabe anpassen kann.<br />
Lokale Minima der Fehlerfläche stellen für das Backpropagation-<strong>Lernverfahren</strong> unüberwindbare Hürden dar, denn<br />
die Ableitung bei lokalen Minima ist, wie auch beim globalen Minimum Null und die Gewichte ändern sich nicht<br />
mehr. Eine allgemeingültige Lösung für diese Problem gibt es nicht, jedoch hat sich in der Praxis gezeigt, dass,<br />
wenn man die Schrittweite η (=Lernfaktor) genügend klein wählt und <strong>von</strong> verschiedenen Punkten der Fehlerfläche<br />
aus startet, meistens das globale Minimum gefunden wird.<br />
Flache Plateaus sind ein weiteres Problem <strong>von</strong> Gradientenverfahren. Backpropagation braucht sehr lange, bis<br />
es Strecken mit kleiner Steigung auf der Fehlerfläche überwunden hat, da die Gewichtsänderung <strong>von</strong> der Ableitung<br />
der Fehlerfunktion abhängt. Im Extremfall (bei Terrassenpunkten) kann die Ableitung Null betragen und<br />
Backpropagation stagniert. Ein flaches Plateau lässt sich in diesem Fall nicht <strong>von</strong> lokalen oder globalen Minima<br />
unterscheiden. Momentum-Term, eine Modifikation <strong>von</strong> Backpropagation, bietet eine zufriedenstellende Lösung für<br />
dieses Problem; es wird weiter unten beschrieben.<br />
Oszillation in steilen Schluchten kann auftreten, wenn durch eine zu hohe Lernrate und die grosse Ableitung<br />
in steilen Schluchten die Gewichte auf einer Seite so stark geändert werden, dass ein Sprung auf die andere Seite<br />
der Schlucht erfolgt. Wenn es dort gleich steil ist, erfolgt ein genau gleich weiter Sprung zurück. Backpropagation<br />
hat sich also in eine Endlosschleife verfangen. Momentum-Term hilft auch bei diesem Problem.<br />
3.2.4 Modifikationen als Lösung bestimmter Probleme<br />
Momentum-Term führt in die Lernregel <strong>von</strong> Backpropagation einen weiteren Term ein, der die Gewichtsänderung<br />
zum vorangehenden Zeitpunkt berücksichtigt.<br />
∆w ij (t + 1) = ηo i δ j + α∆w ij (t)<br />
19
Dies bewirkt eine Erhöhung der Gewichtsänderung in weiten Plateaus und ein Verlangsamung in stark zerklüfteten<br />
Fehlerflächen. Die Variable α hat dabei üblicherweise Werte zwischen 0.2 und 0.99.<br />
Manhattan-Training ersetzt die Backpropagation-Regel durch<br />
∆w ij = η · o i · sign(δ j ).<br />
Der Betrag des Fehlersignals spielt also keine Rolle mehr, sondern nur noch das Vorzeichen, was die Schritte, die auf<br />
der Fehlerfläche gemacht werden normiert. Die Vorteile des Manhatten-Trainings sind einerseits eine Einsparung<br />
an Rechenzeit und andererseits werden auch die Probleme bei flachen Plateaus oder steilen Tälern behoben.<br />
3.3 Backpercolation 12,13<br />
Backpercolation ist wie Backpropagation ein weiteres <strong>Lernverfahren</strong> für mehrstufige feedforward-Netzwerke. Im<br />
Gegensatz zu Backpropagation berechnet es aber für jedes Neuron einen eigenen Aktivierungsfehler und gibt daher<br />
jedem Neuron seine eigene Fehlerfläche. Backpercolation wurde entwickelt, weil Backpropagation bei Netzen<br />
mit vielen verdeckten Schichten nur sehr langsam lernt: Durch die Rückwärtspropagierung ändern sich die Gewichte<br />
in Schichten nahe der Eingabeschicht im Vergleich zu solchen nahe der Ausgabeschicht nur sehr schwach.<br />
Bei Backpercolation nimmt die Grösse der Gewichtsänderung bei Netzen mit mehreren verdeckten Ebenen zur<br />
Eingabeschicht nicht so stark ab. In der Praxis liess sich auch tatsächlich nachweisen, dass die Gewichte bei Backpercolation<br />
schneller konvergieren als bei Backpropagation. Das Verfahren ist wie Backpropagation ein lokales<br />
Gradientenabstiegsverfahren.<br />
3.3.1 Prinzip des <strong>Lernverfahren</strong>s Backpercolation<br />
Der Algorithmus <strong>von</strong> Backpercolation läuft in fünf Phasen ab:<br />
1. Ein Trainingsmuster p wird an die Eingabeneuronen angelegt und das Ausgabemuster wird bestimmt. Wie bei<br />
Backpropagation wird der Fehler E p (W ) aus der Differenz zwischen erwünschter und tatsächlicher Ausgabe<br />
berechnet. Sind k Ausgabeneuronen vorhanden heisst das:<br />
E p = 1 2<br />
k∑<br />
(t i − o i ) 2<br />
i=1<br />
2. Wie bei Backpropagation wird der Gradient δ des Aktivierungsfehlers zu allen Schichten ausser der ersten<br />
verdeckten Schicht zurückpropagiert.<br />
3. Für alle Neuronen wird aus δ der eigene Aktivierungsfehler ∆a berechnet. Dieser ist aber nicht nur abhängig<br />
vom eigenen δ, sondern auch vom δ der nachfolgenden Neuronen, denn die Aktivierung eines Neurons kann<br />
ja auch geändert werden, indem man den Output des vorangehenden Neurons ändert und nicht nur indem<br />
man das Gewicht modifiziert.<br />
4. Alle Gewichte werden verändert und der Parameter λ wird der Fehlerverstärkung angepasst. λ ist ein Faktor<br />
der bei der Berechnung <strong>von</strong> ∆a benötigt wird.<br />
3.3.2 Bemerkungen zu Backpercolation<br />
Die Herleitung der Backpercolation-Regel ist noch komplizierter als die der Backpropagation-Regel. Ich unterlasse<br />
es deshalb genauer auf die Herleitung des Backpercolation-<strong>Lernverfahren</strong>s einzugehen. Das Wesentliche an dieser<br />
Art des Lernens ist aber trotzdem interessant.<br />
20
(a) Jordan-Netzwerk<br />
(b) Elman-Netzwerk<br />
Abb. 15: Beispiele für rekurrente Modelle<br />
Der Unterschied zwischen Backpropagation und Backpercolation scheint auf den ersten Blick sehr klein. Die Tatsache<br />
aber, dass bei Backpercolation für jedes Neuron ein Fehler berechnet wird, ist im Grunde genommen eine<br />
wesentliche Änderung. Man könnte fast sagen, dass das die Funktion des einzelnen Neurons bei den beiden Modellen<br />
völlig anders interpretiert wird. Bei Backpropagation wird aus dem Fehler des ganzen Netzes berechnet, wie<br />
sich die Gewichte ändern müssen, damit die Ausgabe des Netzes einen kleineren Fehler hat. Bei Backpercolation<br />
wird zuerst auch der Fehler des ganzen Netzes berechnet, daraus werden jedoch zuerst die Aktivierungsfehler der<br />
einzelnen Neuronen abgeleitet, d.h. es werden sozusagen die für den Fehler ”schuldigen” Neuronen gesucht. Diese<br />
ändern dann ihre Gewichte viel stärker als andere Neuronen.<br />
Die Prinzipen lassen sich auch anhand einer Schulklasse verbildlichen. Während der Lehrer Backpropagation nach<br />
einer misslungenen Prüfung der ganzen Klasse zureden und alle Schüler zu besseren Leistungen ermahnen würde,<br />
nähme sein Kollege Backpercolation nur die Schüler mit ungenügender Note zu sich und würde mit ihnen ganz<br />
gezielt bessere Leistungen anstreben. Welche der beiden Arten die bessere ist, wage ich nicht zu entscheiden.<br />
3.4 Rekurrente Netze 14<br />
Partiell rekurrente Netze bearbeiten Aufgaben, deren Lösung, also Netzausgabe nicht allein <strong>von</strong> der aktuellen Eingabe,<br />
sondern auch <strong>von</strong> den vorangegangenen Eingaben abhängt. Damit ist nicht nur das Eingabemuster selbst<br />
wichtig sondern auch seine Position in der gesamten Mustersequenz (= Zeitreihe). Besonders geeignet sind rekurrente<br />
Netze somit für die Erkennung und Klassifikation zeitveränderlicher Muster und für die Prognose <strong>von</strong><br />
Zeitreihen (siehe Kapitel 4.3).<br />
3.4.1 Jordan-Netze und Elman-Netze<br />
Jordan-Netze sind durch Kontextzellen erweiterte zweistufige feedforward-Netze (Siehe Abb. 15). Kontextzellen<br />
erhalten ihren Input einerseits <strong>von</strong> sich selber andererseits <strong>von</strong> der Ausgabeschicht des Netzes. Alle Verbindungen<br />
zu den Kontextzellen sind nicht gewichtet und somit auch nicht trainierbar. Der Output der Kontextzellen dient<br />
neben den Eingabezellen als Input der Neuronen der ersten verdeckten Schicht. Die Kontextzellen dienen also der<br />
Speicherung des Ausgabezustandes. Die Anzahl der Kontextzellen muss mit der Anzahl der Ausgabezellen übereinstimmen.<br />
Elman-Netze sind eine Modifikation der Jordan-Netze, bei der die Rückkopplungsverbindungen nicht mehr <strong>von</strong><br />
der Ausgabeschicht zur Kontextschicht, sondern <strong>von</strong> der verdeckten zur Kontextschicht verlaufen. Auch entfallen<br />
in diesem Modell die direkten Rückkopplungen der Kontextzellen zu sich selbst.<br />
21
Hierarchische Elman-Netze sind eine Verallgemeinerung des Prinzips des Elman-Netzes auf mehrstufige feedforward-<br />
Netze. Neben der Eingabeschicht existieren auch bei allen verdeckten Schichten Kontextzellen, die ihren Input <strong>von</strong><br />
der nächsten Schicht erhalten, aber auch <strong>von</strong> sich selbst. Die Gewichte λ i können in den verschiedenen Kontextschichten<br />
unterschiedliche Werte einnehmen und zeigen somit unterschiedliches Speicherverhalten.<br />
3.4.2 <strong>Lernverfahren</strong> für rekurrente Netze<br />
Auf der Suche nach geeigneten <strong>Lernverfahren</strong> für Jordan- und Elman-Netze bemerkte man, dass, wenn man die<br />
Gewichte der rekurrenten Verbindungen, d.h. der Verbindungen zu den Kontextzellen, vor der eigentlichen Lernphase<br />
fest wählt, das Backpropagation-<strong>Lernverfahren</strong> angewendet werden kann. Die Kontextzellen werden dann<br />
einfach wie Eingabezellen behandelt.<br />
Das Training eines partiell rekurrenten Netzes würde also folgendermassen ablaufen:<br />
1. Die Gewichte der Verbindungen zu den Kontextzellen werden festgelegt. Den indirekten Verbindungen wird<br />
meist das Gewicht 1 zugeordnet.<br />
2. Für jedes Trainingsmuster wird dann ähnlich wie bei Backpropagation folgendes durchgeführt:<br />
- Aus dem Eingabemuster wird ohne Beachtung der rekurrenten Verbindungen die Ausgabe berechnet.<br />
- Berechnung der Fehlersignale für jede Ausgabezelle aus der Differenz zwischen erwünschter und tatsächlicher<br />
Ausgabe.<br />
- Rückwärtspropagierung der Fehlersignale <strong>von</strong> der Ausgabeschicht bis zur Eingabeschicht. Die rekurrenten<br />
Verbindungen werden ignoriert.<br />
- Berechnung der Gewichtsänderungen mit Hilfe der Fehlersignale und Adaption der Gewichte.<br />
- Berechnung des Zustands der Kontextzellen für den nächsten Durchgang aus den Ausgabezellen oder<br />
Kontextzellen selber. Dies ist der einzige Schritt, der unterschiedlich zum Backpropagation-Verfahren<br />
ist.<br />
3.5 Modell <strong>von</strong> Kohonen 15<br />
Bis jetzt sind erst <strong>Lernverfahren</strong> vorgestellt worden, die mit Hilfe<br />
eines ”Lehrers” gelernt haben, d.h. dass dem Netz zu jedem Eingabemuster<br />
auch das dazugehörige Ausgabemuster präsentiert wurde. Wie<br />
können aber KNN lernen, ohne dass sie wissen, wie der richtige Output<br />
auszusehen hat? Mit dieser Frage hat sich der finnische Ingenieur Teuvo<br />
Kohonen anfangs der 80er Jahre auseinandergesetzt und dabei die<br />
sog. selbstorganisierenden Karten entwickelt. Diese besitzen erstaunliche<br />
Eigenschaften.<br />
3.5.1 Prinzip der selbstorganisierenden Karten<br />
Abb. 16: Ein Kohonen-Netzwerk<br />
Kohonen-Netzwerke bestehen aus zwei Schichten, einer Eingabe- und einer Kohonenschicht (entspricht der Ausgabeschicht).<br />
Alle Neuronen der Eingabeschicht sind vollständig mit der Kohonenschicht verbunden. In der Kohonenschicht<br />
sind zusätzlich alle Neuronen untereinander verbunden. Es existieren jedoch keine direkten Rückkopplungen.<br />
Die selbstorganisierenden Karten lernen mit einem unüberwachten <strong>Lernverfahren</strong>, d.h. dem Netz werden nur mehrere<br />
Eingabemuster präsentiert, die Lösung muss dieses aber selber finden. Damit steht es <strong>von</strong> allen Modellen, die<br />
bisher vorgestellt wurden unserem Gehirn eindeutig am nächsten. Tatsächlich kann man bei ihm viele Parallelen<br />
22
1.5<br />
1<br />
0.5<br />
-3 -2 -1 1 2 3<br />
Abstand<br />
-0.5<br />
wij<br />
1.5<br />
1<br />
0.5<br />
0<br />
-0.5<br />
-2<br />
0<br />
2<br />
-2<br />
0<br />
2<br />
(a) Bei eindimensionaler Kohonenschicht<br />
(b) Bei zweidimensionale Kohonenschicht<br />
Abb. 17: Mexican-Hat-Funktion<br />
zu biologischen Netzen erkennen, die einige Interpretationen, auch auf unser Gehirn, zulassen.<br />
Die Gewichte der Verbindungen innerhalb der Kohonenschicht werden am Anfang der Lernphase fest bestimmt,<br />
sie werden also vom <strong>Lernverfahren</strong> nicht mehr verändert. Die Festlegung dieser Gewichte erfolgt nach einem bestimmten<br />
Muster. Dabei hängt die Grösse des Gewichts zwischen zwei Neuronen <strong>von</strong> der Entfernung derselben ab.<br />
Allgemein gilt, dass die Gewichte zu Nachbarn relativ gross sind, während diese zu weiter entfernten Neuronen<br />
immer kleiner, bis sogar negativ werden, also hemmend sind. Diesen Sachverhalt lässt sich mit einer Funktion<br />
f(Abstand) ausdrücken. Kohonen verwendete dazu die nach ihrer Form benannte Mexican-Hat-Funktion, es sind<br />
aber auch andere Funktionen, z.B. eine lineare, denkbar.<br />
Eine solche Festsetzung der Gewichte hat zur Folge, dass ein Neuron der Kohonenschicht, das aufgrund des Inputs<br />
aus der Eingabeschicht aktiv ist, entfernte Neuronen hemmt, während es dafür sorgt, dass benachbarte Neuronen<br />
leichter aktiviert werden. Das aktive Neuron wird auch als das ”gewinnende Neuron” bezeichnet, weil die hemmenden<br />
Verbindungen so stark sind, dass nur die kleine Gruppe um das aktivste Neuron es schafft aktiv zu sein, alle<br />
anderen werden zu stark gehemmt.<br />
3.5.2 <strong>Lernverfahren</strong><br />
In den selbstorganisierenden Karten <strong>von</strong> Kohonen gilt die Hebbsche Lernregel. Die Verbindung zwischen einem<br />
Eingabeneuron und einem Neuron der Kohonenschicht wird also gestärkt, wenn beide gleichzeitig aktiv sind. Weil<br />
in der Kohonenschicht oft nur das gewinnende Neuron aktiv ist, ändern sich die Gewichte dieses Neurons ein<br />
wenig in Richtung des aktuellen Eingabemusters, d.h. die Chance, dass dieses Neuron bei einer ähnlichen Eingabe<br />
wieder aktiv ist, wächst. Nun wird ein zweites Muster angelegt. Auch hier wird es in der Kohonenschicht wieder<br />
ein gewinnendes Neuron geben, das aber, wenn das zweite Muster genügend verschieden vom ersten ist, nicht<br />
das gleiche ist wie beim ersten Muster. Somit werden dessen Gewichte dem aktuellen Eingabemuster angenähert.<br />
Nachdem alle Muster dem Netz einige Male präsentiert wurden, bildeten sich auf der Kohonenschicht Regionen,<br />
die aktiv sind, wenn ein bestimmtes Muster angelegt wurde. Ähnliche Muster bewirken dann eine Aktvierung<br />
der gleichen Regionen auf der Kohonenschicht. Die aktive Region ist um so grösser, je öfter das jeweilige Muster<br />
dem Netz in der Lernphase präsentiert wurde, da sich durch die Mexican-Hat-Funktion auch die Gewichte der<br />
unmittelbar benachbarten Neuronen des gewinnenden Neurons dem Eingabemuster annähern.<br />
23
3.5.3 Bemerkungen<br />
- Bevor ein Kohonen-Netzwerk nach der Lernphase angewendet werden kann, muss man zuerst durch Probieren<br />
mit den Trainingsmustern herausfinden, welche Regionen bei welchem Eingabemuster aktiv sind. Es ist<br />
unmöglich dies, wie bei den anderen Modellen vor der Lernphase zu bestimmen.<br />
- Bei Mensch und Tier wurde tatsächlich festgestellt, dass für wichtige Organe die für sensorische Reize<br />
zuständigen Regionen auf der Grosshirnrinde viel grösser sind als für weniger gebrauchte Organe. So sind<br />
beim Menschen die Regionen für Hände und Zunge im Vergleich zu den Regionen, welche die Reize aus anderen<br />
Gegenden verarbeiten überproportional gross. Weiter konnte beobachtet werden, dass Regionen, die für<br />
amputierte Körperteile zuständig waren, allmählich Reize anderer Organe verarbeiten.<br />
3.6 Fazit 16<br />
Neben den vorgestellten Modellen findet man in der Literatur unzählige weitere Netzwerkarchitekturen und Lernalgorithmen.<br />
Um zu entscheiden, welches Modell für eine bestimmte Aufgabenstellung am besten geeignet ist und<br />
wie die Parameter genau eingestellt werden sollen, braucht es neben viel Fachwissen auch ein wenig Fingerspitzengefühl.<br />
Meiner Meinung nach ist dies im Moment einer der grössten Nachteile <strong>von</strong> KNN. Welcher Hersteller<br />
<strong>von</strong> elektronischen Systemen verliert schon gerne Monate für die Entwicklung eines geeigneten neuronalen Netzes,<br />
wenn es nicht unbedingt nötig ist? Gefragt wäre ein universelleres Netzwerkmodell, das man durch eine direktere<br />
Hardwareunterstützung schneller und kostengünstiger einer bestimmten Aufgabe anpassen könnte. Bis dies soweit<br />
ist, muss aber wahrscheinlich noch viel Grundlagenforschung betrieben werden.<br />
4 Anwendungen<br />
In diesem Kapitel beschreibe ich zuerst eigene Beispiele, die ich zur Veranschaulichung des Lernens in KNN gemacht<br />
habe. Alle Programme und die dazugehörenden Anleitungen brannte ich auf CD-Rom, welche sich im Anhang<br />
befinden sollte. Im letzten Unterkapitel wird noch auf die verschiedenen Gebiete in Forschung und Industrie, in<br />
denen neuronale Netze eingesetzt werden, eingegangen.<br />
4.1 Rand- und Buchstabenerkennung<br />
Als erstes schrieb ich ein Randerkennungsprogramm, wie es in Kapitel 3.1.3 detailliert beschrieben wurde. Weil das<br />
Netz sehr klein ist und die Gewichtung schon im voraus bekannt war, musste ich das Netz nicht mehr mit einem<br />
speziellen Simulator trainieren, sondern konnte es direkt mit der Programmiersprache TopPascal schreiben.<br />
Als nächstes wollte ich mich an einem komplexeren Problem versuchen, für das schon heute in der Technik KNN<br />
eingesetzt werden. Zuerst dachte ich an ein Prognose-Programm, z.B. für Börsenkurse oder das Wetter, jedoch hängt<br />
z.B. das Wetter nach der Chaostheorie <strong>von</strong> so vielen und auf den ersten Blick scheinbar belanglosen Faktoren ab,<br />
dass ich mit meinen relativ kleinen Netzen wohl kaum glaubhafte Voraussagen hätte machen können. Ich entschied<br />
mich dann für ein Buchstabenerkennungsprogramm, weil man bei diesem sofort sieht, ob das Netz erfolgreich war<br />
oder nicht.<br />
4.1.1 Vorgehen bei der Entwicklung eines KNN<br />
1. Als erstes musste ich mich entscheiden, wie ich dem Netz die Eingabe übergeben sollte. Ich entschied mich<br />
für die einfachste und naheliegenste Variante: Der zu interpretierende Buchstabe wird in Bildpunkte (=Pixel)<br />
24
zerlegt. Jedem Pixel wird ein Eingabeneuron zugeordnet, dessen Eingabe 1 ist, wenn der Punkt schwarz ist<br />
und 0, wenn der Punkt weiss ist.<br />
2. Da ein Netz die Anzahl der Eingabeneuronen nicht ändern kann, musste ich mich auf eine Anzahl Pixel<br />
festlegen. Ich einigte mich auf eine Fläche mit einer Auflösung <strong>von</strong> 14x18 Bildpunkten. Das Netz braucht<br />
darum gezwungenermassen 252 Eingabeneuronen.<br />
3. Ich wollte ein Netz verwenden, das mit überwachtem <strong>Lernverfahren</strong> lernt. Darum musste ich mir auch noch<br />
überlegen, wie die Ausgabe des KNN aussehen soll, d.h. wie mir das Netz mitteilt, welchen Buchstaben es<br />
”denkt” zu erkennen. Ich dachte mir dafür zwei verschiedene Arten aus:<br />
a) Die Ausgabe erfolgt in Zahlen. Das Netz gibt eine Eins beim Buchstaben A, eine Zwei beim Buchstaben<br />
B, usw. Weil elektronische Systeme besser mit dem einfacheren binären Zahlensystem zurechtkommen,<br />
verwendete ich statt des gewohnten Dezimalsystems das Zweiersystem. Den Buchstaben A codierte ich<br />
so mit 1, B mit 10, usw. bis Z, der mit 11010 (=26) codiert wurde. Für diese Art benötige ich also fünf<br />
Ausgabeneuronen.<br />
b) Weil das Alphabet aus 26 Buchstaben besteht, hat das Netz 26 Ausgabeneuronen. Beim Buchstaben A<br />
soll das erste Neuron am aktivsten sein, bei B das zweite, usw. Bei den Trainingsmustern setzte ich bei<br />
allen Ausgabeneuronen eine 0, nur beim Neuron, das aktiv sein soll, eine 1.<br />
Im nachhinein kann ich sagen, dass sich die zweite Art als besser erwiesen hat. Es scheint so, als könnten<br />
KNN nicht so gut mit Codierungen umgehen.<br />
4. Um ein Netz trainieren zu können brauchte ich nun nur noch eine Trainingsmenge mit den Eingabemustern<br />
und den dazugehörigen Ausgabemustern. Ich setzte mich also hin zeichnete möglichst genau alle Grossbuchstaben,<br />
erzeugte aus jedem eine Folge <strong>von</strong> Einsen und Nullen, setze zu jedem Muster den dazugehörigen Ausgabecode<br />
und trainierte damit verschiedene Netze mit dem Stuttgarter Neuronale Netze Simulator (SNNS).<br />
Was daraus entstanden ist, kann auf der CD-Rom betrachtet werden.<br />
5. Der Versuch das erfolgreich trainierte Netz komplett in ein Programm zu integrieren ist leider fehlgeschlagen.<br />
Ich musste darum zwei Programme schreiben, deren Bedienung nicht sehr anwenderfreundlich ist (Siehe<br />
Anleitung auf der CD-Rom). Das erste Programm wandelt den gezeichneten Grossbuchstaben in eine dem<br />
Simulator verständliche Form um, das zweite Programm interpretiert dann die Ausgabe des Netzes. Am<br />
besten Sie probieren es einfach einmal aus.<br />
4.2 Mühle<br />
Schon lange schwirrte die Idee ein Mühlespiel-Computers mit Hilfe <strong>von</strong> KNN zu programmieren<br />
in meinem Kopf herum. Diese Anwendung für KNN schien mir ideal, da<br />
ein Mühlespiel-Computer erstens am besten aus vielen Beispielen (d.h. mit Übung)<br />
lernt, zweitens explizit nur sehr schwer zu programmieren wäre und drittens einen<br />
Nutzen hat. Weil aber eine solche Anwendung, trotz der Hilfe <strong>von</strong> KNN, nicht ganz<br />
einfach zu entwickeln ist und die Zeit nach den beiden ersten Anwendungen immer<br />
knapper wurde, entschied ich, mich fürs erste nur mit der Setzphase beim Mühlespielen<br />
zu befassen. Für einen kompletten Mühlespiel-Computer hätte ich ohnehin mindestens<br />
vier verschiedene Netze benötigt. Eines für die Setzphase, eines für die Schiebephase,<br />
Abb. 18: Ein Mühlespiel<br />
25
eines für die Phase, in welcher der Computer springen darf, der Gegner aber nicht und noch eines für den umgekehrten<br />
Fall. Dazu wäre auch noch mindestens ein Netz nötig, das bei einer Mühle des Computers den gegnerischen<br />
Stein auswählt, der entfernt werden soll.<br />
Bei der Entwicklung ging ich etwa gleich vor, wie beim Buchstabenerkennungsprogramm. Ich dachte mir aber etwa<br />
acht verschiedene Arten aus, wie ich dem Netz die momentane Spielsituation eingeben soll, und wie das Netz mir<br />
wiederum zurückgeben soll, welchen Zug es machen will:<br />
- Einige Arten zielten auf die 24 Knotenpunkte ab. Ich wies jedem Knotenpunkt zwei oder drei Eingabeneuronen<br />
zu und übermittelte dem Netz über diese, ob auf dem Feld ein gegnerischer, ein eigener oder gar kein Spielstein<br />
steht. Die 24 Ausgabeneuronen sind ebenfalls den Knotenpunkten zugewiesen. Ist das erste Ausgabeneuron<br />
am aktivsten, will das Netz den nächsten Spielstein auf Feld Nummer 1 setzen, usw.<br />
- In den nächsten Arten stehen die 18 möglichen Mühlen im Vordergrund. Jeder Dreiergruppe <strong>von</strong> Knotenpunkten<br />
wies ich wieder eine verschiedene Anzahl <strong>von</strong> Eingabeneuronen zu. Die 18 Ausgabeneuronen teilte<br />
ich dann in zwei Teile. Die ersten neun bestimmen in welcher horizontalen Dreiergruppe, die zweiten neun in<br />
welcher vertikalen Dreiergruppe der nächste Spielstein liegen soll.<br />
- Ich probierte auch ein Netz zu entwickeln, das zwischen zwei möglichen Spielsituationen das günstigere bestimmen<br />
könnte. So hätte ich mit einem explizit programmierten Programm alle möglichen Züge berechnen und<br />
immer die resultierende Situation <strong>von</strong> zwei Zügen dem Netz übergeben können. Weil ein Spieler allerhöchstens<br />
26 verschiedene Zugmöglichkeiten hat (entweder mit 8 Steinen in drei Richtungen und mit einem Stein in zwei<br />
oder mit vier Steinen in vier Richtungen und mit fünf Steinen in zwei Richtungen), wären höchstens 26 solcher<br />
Vergleiche nötig, um den besten Zug herauszufinden. Am Anfang schien mir diese Art sehr vielversprechend,<br />
ich musste sie aber aufgeben, weil ich das Netz nicht komplett ins Programm integrieren konnte, und so vor<br />
jedem Zug die 26 Vergleiche <strong>von</strong> Hand hätten ausgeführt werden müssen, was doch ziemlich umständlich<br />
wäre.<br />
- Auch mit einem Kohonen-Netzwerk versuchte ich einmal einen Mühlespiel-Computer zu entwickeln, ich konnte<br />
mir aber keine Methode ausdenken, wie ich die verschiedenen Regionen auf der Kohonenschicht einem Zug<br />
zuordnen sollte und gab darum auf.<br />
4.3 Anwendung in Forschung und Industrie 17,18,19<br />
KNN werden heute in vielen verschiedenen Gebieten der Technik eingesetzt. Im folgenden werden die Aufgaben<br />
beschrieben, für die KNN geeignet sind und z.T. schon heute in Forschung und Industrie zur Lösung verwendet<br />
werden.<br />
• Probleme für die man keinen expliziten Algorithmus kennt, aber viele Beispiele zur Verfügung hat. Ein KNN<br />
mit der richtigen Topologie und Konfiguration kann aus den Beispielen eine Regel extrahieren und wird so<br />
auf ähnliche Eingaben auch ähnlich reagieren.<br />
– Prognosen Sollen Vorgänge vorausgesagt werden, bei denen kleinste Änderungen in den Ursachen zu<br />
grossen Unterschieden in den Wirkungen führen, sind KNN oft die beste Lösung. So wird z.B. der<br />
Intensitätsverlauf eines NH 3 -Lasers mit Hilfe <strong>von</strong> rekurrenten <strong>Netzwerken</strong> prognostiziert. Dies erstaunt<br />
auch nicht sehr, da die Intensität zu einem Zeitpunkt zum grössten Teil <strong>von</strong> der Intensität zu unmittelbar<br />
vorangehenden Zeitpunkten abhängt und damit eine Zeitreihe darstellt.<br />
Auch könnte man sich denken mit neuronalen Netzen das Wetter oder gar die Börse vorauszusagen,<br />
jedoch gelang es bis heute noch nicht zuverlässige Wetterprognosen oder Kursverläufe nur mit Hilfe<br />
26
<strong>von</strong> KNN zu erzeugen, weil dies überaus komplexe Systeme darstellen, die <strong>von</strong> unzähligen Faktoren<br />
abhängen. Es ist aber durchaus denkbar, dass in Zukunft Netze entwickelt werden, denen es gelingen<br />
könnte einigermassen zuverlässige Wetterprognosen zu berechnen.<br />
– Ähnlichkeitsanalyse biologisch aktiver Moleküle In den Datenbanken <strong>von</strong> Universitäten und der<br />
pharmazeutischen Industrie sind Formeln <strong>von</strong> Tausenden <strong>von</strong> Molekülen gespeichert, <strong>von</strong> denen man<br />
annimmt, dass sie biologisch aktiv sind. Dazu müssen sie ähnlich aufgebaut sein, wie Moleküle <strong>von</strong><br />
denen man schon weiss, dass sie an bestimmte Rezeptoren binden können. Bei der Ähnlichkeit spielen<br />
neben der primären und sekundären räumlichen Struktur des Moleküls auch andere Parameter eine Rolle.<br />
Wichtig ist z.B. auch die Polarität, der pK s -Wert oder das Volumen. Mit Hilfe der selbstorganisierenden<br />
Karten <strong>von</strong> Kohonen konnte man diese Datenbanken auswerten und Gruppen <strong>von</strong> ähnlichen Molekülen<br />
finden.<br />
– Diagnosen Korrekte Diagnosen komplexer Sachverhalte sind für Menschen oft sehr schwierig, da wir<br />
Wesen mit Gefühlen sind und darum oft subjektiv entscheiden. Einsatz <strong>von</strong> ’beratenden’ Netzen können<br />
darum bei der Diagnose <strong>von</strong> Krankheiten oder der Kreditrisikoeinschätzung helfen. Auch wurden schon<br />
Netze trainiert Defekte <strong>von</strong> Motoren anhand des Geräusches zu erkennen.<br />
– Mühlespiel Unter diese Kategorie würde sicher auch der Mühlespiel-Computer gehören. Dem Netz<br />
müssen keine Spielregeln beigebracht werden, sondern es merkt nach genügend Beispielen automatisch,<br />
wie es Mühlen des Gegners abwehrt und taktisch spielt.<br />
• KNN sind nicht geeignet um exakte Resultate zu berechnen, dafür sind Computer gemacht. Dauert die exakte<br />
Berechnung aber zu lange, stellen neuronale Netze eine guter Alternative dar, um an angenäherte Daten zu<br />
kommen.<br />
– NP-Probleme 20 sind Aufgaben, für die bis heute kein deterministischer Algorithmus bekannt ist, der<br />
eine Lösung in polynominaler Zeit liefert (NP = nichtdeterministische Polynominalzeit). Anders ausgedrückt:<br />
Die benötigte Rechenzeit für die Lösung bei einer Eingabe der Länge n lässt sich nicht durch<br />
ein Polynom p(n) darstellen, sondern steigt viel schneller mit n (z.B. exponentiell). Ein Beispiel ist das<br />
Problem des Handelsreisenden, der eine Anzahl Städte besuchen muss und den kürzesten Weg sucht,<br />
damit er bei jeder Stadt genau einmal vorbeikommt. Weil bis heute noch kein schnellerer deterministischer<br />
Algorithmus gefunden wurde, muss ein Computer jeden möglichen Weg berechnen und am Schluss<br />
den kürzesten Auswählen. Für eine grosse Anzahl ist die dazu benötigte Zeit sehr gross (Bei n Städten<br />
gibt es (n − 1)!/2 mögliche Routen). Darum wurden neuronale Netze entwickelt, die relativ schnell eine<br />
Lösung liefern, diese ist jedoch nicht unbedingt die kürzeste Verbindung, jedoch hat man experimentell<br />
festgestellt, dass das Netz meistens nicht weit <strong>von</strong> der optimalen Lösung abweicht.<br />
• Automatische Regulierungs- und Steuerungssysteme gewinnen in der Technik zunehmend an Bedeutung. Für<br />
Flugzeuge gibt es bereits Autopiloten, bei Autos wird daran geforscht. Andere Beispiele sind: Bahnregelung<br />
in Ringbeschleunigern<br />
• Bei der Erforschung <strong>von</strong> künstlicher Intelligenz und speziell in der Robotik ist die Erkennung <strong>von</strong> Objekten<br />
anhand <strong>von</strong> Videobildern sehr wichtig. Zum Einsatz kommen dafür oft auch künstliche neuronale Netze, die<br />
ohne grossen Rechenaufwand schnell zufriedenstellende Lösungen liefern. Aber auch in anderen Bereichen ist<br />
die Interpretation <strong>von</strong> optischen oder akustischen Signalen wichtig:<br />
– Texturanalyse Bei vielen automatisierten Produktionsverfahren muss nach der Fertigung eine Qualitätskontrolle<br />
durchgeführt werden, da Fehler in der Verarbeitung des Materials nicht ausgeschlossen<br />
27
werden können (z.B. Glas, Kunststoff, Natursteinplatten). Solche Aufgaben könnten in Zukunft neuronale<br />
Netze übernehmen.<br />
– Schrift- und Spracherkennung Die Kommunikation zwischen Mensch und Computer findet heute<br />
zu einem grossen Teil über Tastatur und Bildschirm statt. Dabei hätte der Mensch viele andere<br />
Möglichkeiten Informationen auszutauschen, der Computer machte es aber bisher noch nicht möglich<br />
diese zufriedenstellend zu benutzen. Mit neuronalen Netzen könnten sich Wege öffnen. So wurde beispielsweise<br />
für die japanische Schrift ein Netz entwickelt, das über ein Schreibgerät erlaubt Wörter <strong>von</strong><br />
Hand einzugeben. Dies ist sehr hilfreich, denn die japanische Schrift kennt rund 3000 Zeichen. Weitere<br />
interessante Anwendungen in diesem Gebiet sind zum Beispiel Unterschriftenerkennung, Personenidentifikation,<br />
Spracherkennung oder Interpretation der Mimik <strong>von</strong> Menschen.<br />
– Auswertung <strong>von</strong> Bildaufnahmen Teleskope und Satelliten produzieren laufend eine riesige Menge<br />
an Bildern, die ohne Hilfe <strong>von</strong> informationsverarbeitenden Systemen nicht ausgewertet werden könnten.<br />
Um schnell die interessanten Bilder herauszufiltern werden KNN eingesetzt.<br />
5 Diskussion<br />
Anhand <strong>von</strong> verschiedenen Modellen wurden die Formen des Lernens in künstlichen neuronalen Netzen dargestellt.<br />
Aber wie lernt nun unser Gehirn? Wie in Kapitel 2.5 dargestellt, gibt es schon beim Aufbau der Netze wesentliche<br />
Unterschiede zwischen Vorbild und Modell. Diese würden aber den eigentlichen Lernvorgang noch nicht verändern,<br />
so dass meiner Meinung nach in einem KNN der Lernalgorithmus des Gehirns, falls es einen gibt, ausgeführt<br />
werden könnte. Ein Problem stellt die Speicherung der Informationen dar, die im Gehirn z.T. in Form <strong>von</strong> Eiweissen<br />
stattfindet. Klar ist, dass im Gehirn unmöglich mit einem überwachten <strong>Lernverfahren</strong> gelernt wird. Teuvo Kohonen<br />
zeigte mit seinem Modell, dass es möglich ist sehr biologienahe Modelle zu entwickeln. Ich denke, dass der Trend<br />
in diese Richtung weiter gehen wird. Hat man die einfacheren Modelle erst einmal verstanden, kann man beginnen<br />
immer kompliziertere Systeme zu entwerfen und immer mehr Aspekte des biologischen Vorbilds zu integrieren. Mit<br />
der steigenden Leistungsfähigkeit der Computer ist es möglich immer grössere Netze mit immer mehr Verbindungen<br />
zu simulieren. Ich bin mir sicher, dass so weitere Erkenntnisse in der Hirnforschung gemacht werden.<br />
6 Zusammenfassung<br />
Künstliche neuronale Netze (KNN) sind informationsverarbeitende Systeme, die ähnlich wie biologische Nervensysteme<br />
(z.B. unser Gehirn) aufgebaut sind. Sie bestehen aus einer grossen Anzahl <strong>von</strong> Neuronen, die über Verbindungen<br />
einfache Signale austauschen. Im Gegensatz zu herkömmlichen Computern müssen sie nicht explizit<br />
programmiert werden, sondern sie lernen aus Beispielen. Dies führt dazu, dass KNN für andere Anwendungen als<br />
Computer geeignet sind.<br />
Der Lernvorgang in einem künstlichen neuronalen Netz wird durch Lernalgorithmen gesteuert, welche z.T. <strong>von</strong><br />
biologischen Systemen übernommen wurden. In dieser Arbeit werden die gängigsten <strong>Lernverfahren</strong> vorgestellt und<br />
einerseits untereinander andererseits mit ihrem biologischen Vorbild verglichen. Anschliessend sind Probleme und<br />
Aufgaben beschrieben, für deren Lösung schon heute KNN eingesetzt werden.<br />
28
7 Literaturverzeichnis<br />
1 Zell A., Simulation neuronaler Netze, R. Oldenbourg Verlag, München (2000), S. 71-79<br />
2 Lindenmair W., Neuronale Netze, Ernst Klett Schulbuchverlag GmbH, Stuttgart (1995), S. 14-15<br />
3 Zell A., Simulation neuronaler Netze, R. Oldenbourg Verlag, München (2000), S. 89-96<br />
4 Lindenmair W., Neuronale Netze, Ernst Klett Schulbuchverlag GmbH, Stuttgart (1995), S. 22-27<br />
5 Frey H. G., Schach J., Modern geknotet, c’t, Nr. 2/1996, S.262<br />
6 Zell A., Simulation neuronaler Netze, R. Oldenbourg Verlag, München (2000), S. 25-28<br />
7 Rojas R., Theorie der neuronalen Netze, Springer-Verlag, Berlin/Heidelberg/New York (1996), S.123-138<br />
8 Zell A., Simulation neuronaler Netze, R. Oldenbourg Verlag, München (2000), S. 97-103<br />
9 Zell A., Simulation neuronaler Netze, R. Oldenbourg Verlag, München (2000), S. 105-124<br />
10 Goos G., Vorlesungen über Informatik - Band 4, Springer-Verlag, Berlin/Heidelberg/New York (1998), S.113-164<br />
11 Rojas R., Theorie der neuronalen Netze, Springer-Verlag, Berlin/Heidelberg/New York (1996), S.161-172<br />
12 Zell A., Simulation neuronaler Netze, R. Oldenbourg Verlag, München (2000), S. 127-133<br />
13 Pfeifer R., Lecture: Neural Networks, http://www.ifi.unizh.ch/groups/ailab/teaching/NN99/chap5.pdf, 5.1.2002<br />
14 Zell A., Simulation neuronaler Netze, R. Oldenbourg Verlag, München (2000), S. 137-143<br />
15 Spitzer M., Geist im Netz, Spektrum Akademischer Verlag GmbH, Heidelberg, Berlin (2000), S. 95-118<br />
16 Frey H. G., Schach J., Modern geknotet, c’t, Nr. 2/1996, S. 264<br />
17 Zell A., Simulation neuronaler Netze, R. Oldenbourg Verlag, München (2000), S. 495-551<br />
18 Frey H. G., Schach J., Modern geknotet, c’t, Nr. 2/1996, S. 260<br />
19 Bruderer M., Ruppaner P., Neuronale Netzwerke, Physikwahlteil-Arbeit, Heerbrugg (1997), S.21<br />
20 Rojas R., Theorie der neuronalen Netze, Springer-Verlag, Berlin/Heidelberg/New York (1996), S.303<br />
8 Dank<br />
Als erstes möchte ich mich bei meinem Betreuer René Hugelshofer für seine bedingungslose Mitarbeit und seine<br />
wegweisenden Tipps herzlich bedanken.<br />
Simon Rentzmann, bei dem ich das Freifach ”Maturaarbeit mit L A TEX” besuchte, half mir auch ausserhalb der<br />
eigentlichen Schulstunden mit dem anfänglich etwas schwierigen Textverarbeitungsprogramm L A TEX. Ohne ihn<br />
hätte ich es wahrscheinlich kaum gewagt diese Arbeit mit L A TEX zu schreiben.<br />
Die beiden Physiklehrer Stefan Fischer und Stefan Büchler waren so freundlich mich mit Materialien zu versorgen,<br />
die ich für meine Arbeit sehr gut brauchen konnte. Vielen Dank.<br />
Wie bereits erwähnt brachte ich es nicht fertig meine KNN in die Programme zu integrieren. Bevor ich aufgab,<br />
wendete ich mich aber noch an die Berufsprogrammierer Thomas Gantenbein und Markus Halter, die mir soweit<br />
es möglich war mit Rat und Tat zur Seite standen. Das ”Projekt” scheiterte sicher nicht an ihrer Fachkompetenz,<br />
sondern an meinem mangelhaften Wissen über C und den beschränkten Mitteln, die mir zur Verfügung standen.<br />
Daneben halfen mir auch einige Schulkollegen bei Problemen verschiedener Art weiter. Speziell bedanken möchte<br />
ich mich bei René Hutter, Eveline Mattle, André Sprecher und Andreas Weder.<br />
29
9 Anhang<br />
9.1 Verwendete Hilfsmittel<br />
Diese Arbeit wurde mit L A TEX geschrieben. Zum Zeichnen der Grafiken verwendete ich Corel Draw 6.0. Die Funktionsgleichungen<br />
wurden mit Mathematica 4.1 berechnet und aufgezeichnet.<br />
Um einige Anwendungen zu programmieren brauchte ich einerseits einen Simulator, der die verschieden Netzwerktypen<br />
trainiert und andererseits einen Compiler, mit dem ich das ganze Programm, in dem das Netz angewendet<br />
werden sollte, schreiben konnte. Als idealer Simulator erwies sich der Stuttgarter Neuronale Netze Simulator (Snns),<br />
der <strong>von</strong> der Universität Stuttgart auf der Internetadresse ftp://ftp.informatik.uni-stuttgart.de/pub/SNNS/ gratis<br />
heruntergeladen werden kann. Zur Benutzung meiner Beispiele ist er leider nötig, darum befindet sich eine Kopie<br />
auf der beiliegenden CD-Rom. Die Programme dazu schrieb ich mit der Programmiersprache TopPascal Version<br />
2.1 (http://www.ateus.ch), <strong>von</strong> der eine Demoversion auf der CD-Rom zu finden ist.<br />
9.2 CD-Rom<br />
Die CD-Rom enthält alle Programme, die ich für diese Arbeit mit TopPascal geschrieben habe. Für die einfachere<br />
Benutzung der Programme und Orientierung auf der CD sind info.txt-Dateien in den Verzeichnissen verteilt. Bitte<br />
lesen Sie auch die Anleitung im Stammverzeichnis der CD. Neben den Programmen befinden sich auch alle Grafiken<br />
und sonstigen Dateien, die ich entweder für die Arbeit oder die Programme gebraucht habe auf der CD-Rom.<br />
Speziell möchte ich auf den Stuttgarter Neuronale Netze Simulator hinweisen, der sich ebenfalls mit vielen eigenen<br />
Beispiel-Netzen auf der CD befindet. Die offizielle Anleitung umfasst mehr als zweihundert Seiten auf Englisch.<br />
Darum habe ich versucht selber eine ganz kurze Einführung zu schreiben, denn mit dem Snns kann man relativ<br />
einfach komplexe KNN trainieren.<br />
Bei Problemen oder Fragen kann man mich gerne unter der E-Mail-Adresse dansp@gmx.ch kontaktieren.<br />
30