22.12.2013 Aufrufe

Lernverfahren von Künstlichen Neuronalen Netzwerken

Lernverfahren von Künstlichen Neuronalen Netzwerken

Lernverfahren von Künstlichen Neuronalen Netzwerken

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

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

<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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!