Simulation Neuronaler Netze
Geschwurbel von Daniel Schwamm (05.05.1994 bis 09.05.1994)
Inhalt
Neuronale Netze (NN), oder allgemeiner: Konnektionistische
Modelle, begegnen dem Informatiker immer öfter. Längst haben diese
Systeme die Universitäten verlassen und ihren praktischen Einsatz in
Industrie und Wirtschaft gefunden. Was sind aber eigentlich NN? Wie sind sie
aufgebaut? Wie funktionieren sie? Was lässt sich mit ihnen erreichen?
Mehr als mit den herkömmlichen Computern und kybernetischen, exakt
arbeiteten Künstlichen Intelligenz-Systemen (KI)?
Generell lässt sich erst einmal feststellen,
dass die Funktionsweise von grösseren NN theoretisch-analytisch
nicht nachvollziehbar ist; ein NN wird bei einer entsprechenden Anzahl von
Neuronen so komplex, dass man nur noch seine Ergebnisse kontrollieren
kann, nicht aber die Arbeitsweise, die dieses Ergebnis hervorgebracht hat (und
bereits das simple Mückengehirn besteht schon aus 118 vollständig
vernetzten Neuronen). Mit anderen Worten: Es ist für uns nicht
feststellbar, über welche Regeln ein NN ein Problem gelöst hat, und
das, obwohl die Arbeitsweise der einzelnen NN-Bausteine, der Neuronen, ja,
sogar ihre Kommunikation untereinander, leicht verständlich ist.
NN kopieren das Verhalten natürlicher Gehirne. Dazu
gehört, dass man Lösungen von Problemen findet oder sich in
einer bestimmten Weise verhält, ohne das man den Weg zur Lösung oder
den Grund für die Verhaltensweise genau angeben könnte. Wer mit NN
arbeitet, muss sich mit dieser Tatsache abfinden, was v.a. den
Kybernetikern schwer fällt, deren Passion es gerade ist, mathematische
Modell zu entwerfen, die die Wirklichkeit möglichst genau wiedergeben. Bei
linearen Ereignisabläufen mag diese Methode auch sehr fruchtbar sein, doch
die weitaus grössere Zahl natürlicher Systeme arbeiten
nicht-linear (z.B. fraktal oder oszillierend). Um solche nicht-linearen Systeme
mittels Computer berechenbarer zu machen, bieten sich die NN (und die Fuzzy
Logic) an.
Auch wenn man, wie eben beschrieben, die Arbeitsweise von NN
aufgrund ihrer Komplexität und Ähnlichkeit zu biologischen
Nervensystemen nicht nachvollziehen kann, so kann man sie doch -
glücklicherweise - auf herkömmlichen Rechnern simulieren, um sich so
mit ihnen vertrauter zu machen. Dazu genügt bei einer nicht zu
grossen Neuronenanzahl bereits ein herkömmlicher PC. Diese Arbeit
will zeigen, wie sich eine solche Simulation ausnimmt, wie sie arbeitet und
welche Parameter und welche Techniken dabei von Interesse sind.
Wie in der Einleitung bereits erwähnt, orientieren sich
NN in ihrer Arbeitsweise eng an das Vorbild, das ihnen das menschliche bzw.
tierische Gehirn bietet. Das biologische Nervensystem verleiht dem Besitzer
"Intelligenz", es bestimmt z.B. massgeblich seine Fähigkeiten, auf
bestimmte Umweltreize zu reagieren. Und eben diese Fähigkeiten wollen sich
auch NN zu Eigen machen. So ähneln ihre Bausteine, die wir im Folgenden
betrachten werden, in ihrer Funktion, Arbeitsweise und Benennung auch sehr den
Bausteinen ihres biologischen Vorbilds.
Eine biologische Nervenzelle (Neuron, Ganglienzelle) besitzt
folgenden Aufbau:
[Grafik fehlt]
Die Ziffern bedeuten:
-
Neuron: Im menschlichen Gehirn lassen sich
über 25 Milliarden Neuronen finden, die alle miteinander mehr oder weniger stark
vernetzt sind. Von anderen Körperzellen unterscheiden sich Neuronen durch
ihr Aussehen, durch die Tatsache, dass sie sich nicht teilen, und v.a.
durch ihre elektrische Aktivität. Im Ruhezustand besitzen Neuronen eine
Spannung von -75 mV, ihren Schwellenwert haben sie bei ca. -50 mV, und bei
dessen Überschreitung (Depolarisierung über den Bias) "feuern"
Neuronen mit einem Aktionspotenzial von +30 mV.
-
Soma (Zellkörper) mit Zellkern: Wie bereits
erwähnt, kann sich der Zellkern eines Neurons nicht teilen. Nach der
Geburt liegt bereits die vollständige Neuronenzahl vor, die danach nur
noch abnimmt. Die Intelligenz wird nicht durch ein Mehr an Neuronen bestimmt,
sondern hängt alleine von der Vernetzung der Neuronen und der
Grösse der einzelnen Synapsen ab.
-
Axon (Nervenfaser): Jedes Neuron besitzt nur genau
ein Axon. Über dieses Axon kann das Neuron elektrische Impulse
(Aktionspotenziale) "feuern", um andere Neuronen zu erregen oder zu hemmen. Den
Impuls kann man sich vorstellen als eine Kette von Dominosteinen, die sich nach
dem Umfallen gleich wieder aufrichten, d.h. der Impuls hält nur ca. eine
Millisekunde an, bevor er durch osmotischen Ionenaustausch repolarisiert wird.
Die Leitungsgeschwindigkeit beträgt etwa 100 m/s.
-
Synapsen: Eine Synapse ist die Verbindungsstelle
von einem Axon zu einem Neuron. Jedes Axon kann über 100.000 Synapsen
besitzen. Die Grösse jeder Synapse bestimmt das Potenzial, mit dem
ein Neuron über sein Axon eine andere Nervenzelle erregen oder hemmen
kann. Lernt man etwas immer wieder, dann vergrössern sich die
beteiligten Synapsen. Kommt ein Impuls über das Axon, dann wird eine
chemische Substanz (Neurotransmitter) ausgeschüttet, über den der
Impuls an ein Neuron weitergegeben wird. Die Summe aller Synapsen-Impulse,
die ein einzelnes Neuron erreichen, bewirken, dass sein Schwellenwert
überboten wird und es "feuert", oder dass der Schwellenwert nicht
erreicht wird und es inaktiv bleibt.
-
Dendriten: Somafortsätze mit nicht erregbarer Membran.
-
Sinneszellen: Über die Sinneszellen erhalten
Neuronen Informationen (Reize) von der Aussenwelt.
-
Muskelfasern: Über Muskelfaser können
Neuronen nach einer Reizung ihre Reaktion nach aussen vermitteln, indem
sie eine Kontraktion bestimmter Muskelfaser hervorrufen können.
Ein abstraktes Modell des Nervensystems benötigt -
nachdem was wir nun wissen - mindestens folgende Elemente und
Verhaltensweisen:
-
Die Verarbeitungselemente von NN (Neuronen) kennen zwei
Zustände: Erregt und Ruhe.
-
Jedes Neuron hat ein oder mehrere Eingänge
(Synapsen), aber stets nur einen Ausgang (Axon).
-
Jeder Neuronen-Ausgang hängt an mindestens einem Neuronen-Eingang.
-
Einige Neuronen-Eingänge sind mit der Aussenwelt verbunden.
-
Einige Neuronen-Ausgänge sind mit der Aussenwelt verbunden.
-
Die Tätigkeit eines Neurons hängt nur ab, von
der Grösse der Synapsen und den Impulsen, die es darüber von
anderen Neuronen erhält. Daraus folgt insbesondere, dass NN ohne
zentralen Prozessor auskommen können.
Wir können ein NN definieren, als ein System aus
einfachen Verarbeitungselementen (Neuronen), das dem Prinzip der massiv
parallelen Verarbeitung gehorcht (obwohl es genau genommen meist eher verzweigt
sequenzielle arbeitet). Ihr Aufbau gleicht grundsätzlich dem folgendem
Schema:
[Grafik fehlt]
Das obige Schema gibt den Aufbau eines vierschichtigen NN
wieder. Die Ziffern bedeuten:
-
Eingangsschicht: Die Eingangsschicht enthält
diejenigen Neuronen, die die Umweltreize von aussen entgegennehmen. Im
Gegensatz zu allen anderen Neuronen eines NN transferieren sie die ankommenden
Reizpotenziale 1:1, d.h. sie besitzen keine synaptische Gewichtung ungleich 1.
Häufig wird dieser Schicht eine Struktur gegeben, so sind z.B.
zweidimensionale Flächen beliebt, auf die sehr anschaulich Muster
eingetragen werden können. Die Anzahl der Eingangsneuronen ist u.U.
unabhängig von der Anzahl der Ausgangsneuronen oder der verborgenen
Neuronen.
-
Verborgene Schicht(en): In dieser Schicht findet
die Verarbeitung der Eingangsneuronen-Impulse statt. Die Vernetzung der
Neuronen ist eine individuelle Sache und hängt von der Eignung für
ein bestimmtes Problem ab. So besitzen komplexe NN häufig Neuronen, die
ihre Ergebnisse wieder an vor ihnen liegende Neuronen zurückschicken; sie
sind rückkoppelnd. Andere NN, wie z.B. der Muster-Assoziator, besitzen
überhaupt keine verborgene Schichten; sie bestehen nur aus einer Lage
Eingangs- und Ausgangsneuronen.
-
Ausgangsschicht: Die von den Eingangsneuronen oder
den verborgenen Schichten-Neuronen kommenden Impulse werden hier ein letztes
Mal synaptisch gewichtet und steuern die Alles-oder-Nichts-Reaktion der
Ausgangsneuronen. Das Ergebnis wird häufig in strukturierter Form
wiedergegeben, so z.B. als Fläche mit einem bestimmten Muster.
Das EVA-Prinzip herkömmlicher von-Neumann-Rechner
behält seine Gültigkeit für NN; auch hier werden Eingaben durch
ein Blackbox-Verarbeitung in Ausgabedaten transferiert. Anders ist jedoch,
dass NN dazu ohne zentrale Steuerung (CPU) auskommen. Eine Art Programm
besitzen NN dagegen: Die Grösse der Synapsen an den Eingängen
der Neuronen bestimmen das Verhalten der Neuronen - ohne diese speziellen
Grössenunterschiede der Synapsen wären NN einem herkömmlichen Computer
ohne Programm ähnlich. Allerdings endet hier der Vergleich.
Normale Computerprogramme werden iterativ abgearbeitet, jeder Schritt wird
vorher genau festgelegt, der Zufall ausgeschlossen. Ganz anders die
Grösse der Synapsen: Sie werden nicht vorgegeben, sondern vom NN
selbst gelernt. Der "Programmierer" gibt dazu dem NN an, ob es auf einen Reiz
richtig oder falsch reagiert hat, mehr nicht. Wie das NN intern arbeitet,
bleibt dem "Programmierer" verschlossen. Allenfalls höchst rekursive
Programme herkömmlicher Rechner können eine ähnliche Komplexität wie
die "Programme" der NN entfalten.
Aber nicht nur die Grösse der Synapsen bestimmen das
Verhalten von NN. Auch deren Neuronentyp, deren Aktivierungsfunktion, deren
Lernrate und deren Ausgabefunktion spielen dabei eine Rolle, wenn auch im
geringeren Masse. Diesen Begriffen wenden wir uns in den folgenden
Abschnitten zu.
NN besitzen Fähigkeiten, die bisher in Form von
Alltagserfahrungen die Domäne von Menschen waren: Bilder/Sprache erkennen
und motorische Steuerungen ausführen. Dafür besitzen sie wiederum
nicht mehr die Fähigkeiten der herkömmlichen Computer: Handling
grosser Datenmengen und numerische Operationen ausführen. Die
Präzision von NN ist dadurch zwar mässig, dafür die
Fehlertoleranz gegenüber von-Neumann-Rechnern sehr hoch. NN arbeiten
analog, asynchron und parallel, herkömmliche Rechner arbeiten digital,
synchron und sequenziell. Wie man aus dieser kurzen Aufzählung von
Unterschieden ersieht, ersetzten NN die von-Neumann-Rechner nicht, sondern
ergänzen sie meist nur (obwohl es theoretisch möglich wäre, alle
logischen Operationen mittels NN zu realisieren, herkömmliche Rechner also
komplett zu simulieren; dies funktioniert - wie diese Arbeit zeigen soll - ja
im Übrigen auch umgekehrt).
Unter der Aktivierungsfunktion ist diejenige Funktion zu
verstehen, die in einem Neuron abgearbeitet wird, um die gesammelten
ankommenden Impulse (den effektiven Eingangswert) in einen für die
Ausgabefunktion endgültigen Wert zu transferieren. Üblich ist die
Unterscheidung von zwei Standard-Aktivierungsfunktionen:
-
Die digitale Standard-Aktivierungsfunktion: Der
effektive Eingangswert eEW wird unverändert übernommen, also gilt:
dSA(eEW)=eEW.
-
Die analoge Standard-Aktivierungsfunktion: Der
effektive Eingangswert eEW wird zu dem aktuellen Spannungszustand
aSZ des Neurons hinzuaddiert, also gilt:
aSA(eEW)=aSZ+eEW
Der effektive Eingangswert in ein einzelnes Neuron
lässt sich nach folgender Formel (Propagierungsfunktion oder
Übertragungsfunktion) ermitteln, wobei die Synapsengrösse und
der Eingangswert reelle Werte sind:
eEW=Summe über alle Eingänge des Neurons(Synapsengrösse*Eingangswert)
Die Ausgangsfunktion des Neurons bestimmt, wie auf den Wert
der Aktivierungsfunktion reagiert werden soll. Sie bestimmt, ob der Wert der
Aktivierungsfunktion hoch genug war, um das Neuron zum "feuern" zu veranlassen.
Generell gilt, dass alle Ausgabefunktionen monoton wachsend sind, den eine
höhere Erregung soll stets auch mit einer erhöhten Feuerbereitschaft
einhergehen. Vier einfache Ausgabefunktionen seien im Folgenden
vorgestellt:
-
Lineare Ausgabefunktion: Eine lineare Funktion
(eine Nicht-Schwellenfunktion!) mit einer bestimmten positiven Steigung, die
die x-Achse der Inputs und die y-Achse der Outputs an definierten Stellen
kreuzt. Bei ihr gibt es keinen Minimum- und Maximumwert.
-
McCulloch-Pitt-Ausgabefunktion: Diese Funktion ist
die klassische Alles-Oder-Nichts-Schwellenfunktion. So sollen z.B. alle Inputs
unter 1 und grösser -1 zu keiner Reaktion führen, und ansonsten
"feuert" das Neuron. Auch sie hat keine Minima und Maxima.
-
Fermi-Funktion: Diese sigmoide Funktion gleicht
einem schrägen S, welches durch den Nullpunkt des Input-Output-Kreuzes
verläuft. Es existieren Minima und Maxima, diese Funktion lässt
sich differenzieren. Besonders im Zusammenhang mit der analogen
Standard-Aktivierungsfunktion können fein dosierte "Feuerungen"
vorgenommen werden.
-
Dirac-Funktion oder Delta-Funktion: Eine Bergkurve
auf der x-Achse mit der Fläche eins. Diese Funktion wurde allerdings noch
nicht in natürlichen Systemen beobachtet.
Für welche der Ausgabefunktion man sich letztlich
entscheidet, hängt davon ab, welche Realität mit dem NN wiedergegeben
werden soll. Das Gleiche gilt natürlich auch für die
Aktivierungsfunktion. Um aber herauszubekommen, welche Kombination die Beste
ist, können die Rechnersimulationen, wie wir sie später noch sehen
werden, zur Rate gezogen werden.
Der Typ eines Neurons wird über die Wahl der Aktivierungsfunktion
und Ausgabefunktion vollständig definiert. I.d.R. lassen
sich innerhalb eines NN nur Neuronen desselben Typs finden. Zu beachten ist,
dass die Struktur und die Synapsengewichtung nach dem Lernen fest
vorliegen, während sich aber die Zustände der einzelnen Neuronen
ständig ändern können. Um den Zustandswechsel nachvollziehbar zu
machen, kann man nach folgenden Reproduktionsschritten vorgehen:
-
1. Schritt: Summiere alle Eingabewerte der Neuronen, errechne
daraus ihre Aktivierungsfunktion und daraus die Ausgabefunktion.
-
2. Schritt: Gib die Werte der Ausgabefunktionen an die
nachfolgenden Neuroneneingänge bzw. den Ausgang des NN weiter. Falls noch
nicht der Ausgang erreicht wurde, dann wiederhole den 1. Schritt.
Aus dem Zustand des NN zum Zeitpunkt t1 kann also jederzeit
der Zustand des NN zum Zeitpunkt t2 errechnet werden. Dazu muss man
allerdings die Gewichtung der einzelnen Synapsen vor den Eingängen der
Neuronen kennen, die in der Lernphase entwickelt wurden. Wie dies vor sich
geht, werden wir im nächsten Kapitel am Beispiel der Muster-Assoziatoren
kennenlernen.
Ein Muster-Assoziator ist ein einfaches neuronales Netz, mit
dessen Hilfe sich zwischen zwei Mustern eine Beziehung herstellen
lässt, d.h. wenn in das NN ein Eingabemuster eingegeben wird, kann es
daraus das zugehörige Ausgabemuster erzeugen.
Der grundsätzliche Aufbau des Muster-Assoziators sieht
folgendermassen aus:
[Grafik fehlt]
Der Muster-Assoziator besitzt durch seine Einschichtigkeit
genauso viele Neuronen, wie er Ausgangssignale besitzt. Die Summe der
Eingangssignale ist unabhängig davon. Aufgrund seiner
Rückkopplungsfreiheit kann der Muster-Assoziator die Ausgabesignale in nur
einem Reproduktionsschritt berechnen, wobei dies unabhängig vom vorherigem
Aktivierungszustand gelingt; die Neuronen müssen also nicht zuvor einen
definierten Wert annehmen. Üblicherweise finden hier die digitale
Standard-Aktivierungsfunktion und die McCulloch-Pitt-Ausgabefunktionen
Verwendung.
Damit ein Muster-Assoziator auf bestimmte Eingangssignale
bestimmte Ausgangssignale hervorbringt, müssen zunächst die
Synapsengewichtungen an den Neuroneneingängen bestimmt werden. Da dies eine
sehr komplexe Aufgabe ist, hat es sich als sinnvoll erwiesen, die NN die
nötigen Gewichte selbst lernen zu lassen. Diesem Vorgehen wollen wir uns
nun einmal zuwenden.
Gehen wir von einem ganz einfachen Beispiel aus: Wir wollen,
dass der Muster-Assoziator das Verhalten eines logischen ODER-Gatters
nachahmt, also folgende Musterpaarungen hervorbringt:
e_1 e_2 -> a
------------------------
1 1 -> 1
1 0 -> 1
0 1 -> 1
0 0 -> 0
Zum Lernen (zum Festlegen des dynamischen Langzeitverhaltens
eines NN) verwenden wir für obiges Beispiel die einfachste, die hebbsche
Lernregel. Die Gewichtung einer Eingangssynapse w_ij geschieht hierbei nach der
Formel
w_ij -> w_ij + Delta(w_ij),
wobei Delta(w_ij) = Lernrate * Sollwert * Eingabewert ist. D.h.,
jedes Mal, wenn das Neuron einen Sollwert (Target Vector) > 0 feuern soll,
werden seine Eingangssynapsen bei jedem Lernschritt vergrössert. Die
Vergrösserung hängt dabei massgeblich von der Lernrate ab,
die üblicherweise sehr klein gehalten werden sollten, damit neue
Lernsignale die alten gelernten Lernsignale nicht gleich wieder auslöschen
können. Sehen wir uns dazu einmal konkret an, wie ein Muster-Assoziator
unser Beispiel mittels der hebbschen Lernregel lernt.
Die Lernrate sei 0.5, die Gewichte alle Null. Da nur ein
Ausgabewert bei zwei Eingabewerten benötigt wird, besteht der
Muster-Assoziator aus nur einem Neuron mit zwei Eingängen.
-
Legen wir nun die Eingangssignale e_1=1 und e_2=1 an den
Muster-Assoziator an, und sagen ihm, dass wir den Ausgabewert a=1
erwarten. Dadurch ergibt sich die beiden Gewichtungen:
w_11 = 0 + (0.25 * 1 * 1) = 0.25
w_21 = 0 + (0.25 * 1 * 1) = 0.25
-
Legen wir nun die Eingangsignale e_1=1 und e_2=0 an, Ausgabewert
soll a=1 sein. Dadurch ergibt sich die Gewichtungen:
w_11 = 0.25 + (0.25 * 1 * 1) = 0.5
w_21 = 0.25 + (0.25 * 1 * 0) = 0.25
-
Legen wir die Eingangsignale e_1=0 und e_2=1 an, Ausgabewert a=1.
w_11 = 0.5 + (0.25 * 1 * 0) = 0.5
w_21 = 0.25 + (0.25 * 1 * 1) = 0.5
-
Legen wir die Eingangssignale e_1=0 und e_2=0 an, Ausgabewert a=0.
w_11 = 0.5 + (0.25 * 1 * 0) = 0.5
w_21 = 0.5 + (0.25 * 1 * 0) = 0.5
Sehen wir uns im nächsten Abschnitt an, ob dieser eine
Lernschritt genügt hat, um das NN zu trainieren (generell lässt
sich noch bemerken, dass der Lernerfolg umso mehr gesichert ist, je
unähnlicher die Lernfakten voneinander sind, d.h. je mehr sie sich
gegenseitig diskriminieren).
Die beiden Synapsengewichte unseres Muster-Assoziators haben
nach dem Training den konstanten Wert 0.5 gelernt. Versuchen wir, ob sich damit
die ODER-Funktion realisieren lässt. Legen wir an e_1 und e_2 die
entsprechenden Eingangssignale an:
e_1=1, e_2=1 => a = 0.5*1+0.5*1 = 1, Ausgabefunktion( 1)=1
e_1=1, e_2=0 => a = 0.5*1+0.5*0 = 0.5, Ausgabefunktion(0.5)=1
e_1=0, e_2=1 => a = 0.5*0+0.5*1 = 0.5, Ausgabefunktion(0.5)=1
e_1=0, e_2=0 => a = 0.5*0+0.5*0 = 0, Ausgabefunktion( 0)=0
Obiger Abschnitt hat gezeigt, dass ein Muster-Assoziator
über die hebbsche Lernregel Musterpaare in nur einem Lernschritt lernen
kann. Dennoch gibt es auch Fälle, in denen die hebbsche Lernregel
versagt. Zum einen lässt sich an unserem Beispiel bemängeln,
dass die Lernfolge e_1=0 und e_2=0 eigentlich unnötig waren, denn die
Gewichtung hat sich dadurch nicht geändert. Damit auch Null-Eingaben einen
effektiven Lerneffekt besitzen, werden sie üblicherweise in Form von
"-1"-Werten eingegeben. Ein wesentlicherer Nachteil der hebbschen Lernregel
ist aber, dass sie den Lernerfolg eines Trainingsschrittes bei einem
nächsten Trainingsschritt nicht mehr berücksichtigt - und dies
entspricht nicht dem menschlichen Lernen. Aus diesem Grund gibt es im
Konnektionismus die Delta-Lernregel (auch Perceptron- oder
Widrow-Hoff-Lernregel genannt), die die Synapsengewichtung nach der gleichen
Formel wie die hebbsche Lernregel berechnet, bei ihr aber ihr Delta(w_ij)
einen anderen Wert besitzt, nämlich:
Delta(w_ij) = Lernrate * (Sollwert - Ausgabewert) * Eingabewert
Durch diese Formel wächst eine Gewichtung bei jedem
Trainingsschritt nicht einfach weiter wie bei der hebbschen Lernregel, sondern
begrenzt sich durch den Formelteil (Sollwert - Ausgabewert) selbst und
nähert sich dadurch asymptotisch einem optimalen Wert an. Diesen optimalen
Wert findet die Delta-Lernregel bei genügend Lernschritten in jedem Fall
(das lässt sich sogar mathematisch beweisen), Voraussetzung ist
allerdings, dass es einen solchen optimalen Wert überhaupt gibt.
Ein Beispiel für die Verwendung eines Muster-Assoziators
ist die assoziative Speicherung von Daten. Anders als bei herkömmlichen
Rechnern, bei denen bestimmte Daten über eine vorher zu wissende Adresse
im Speicher lokalisiert werden müssen, verursacht hier die Eingabe eines
Musters die Berechnung eines bestimmten Ausgabemusters. Das Besondere daran ist
v.a., dass das Eingabemuster nicht komplett sein muss, der
Muster-Assoziator das gespeicherte Faktum aber trotzdem generieren kann. Die
assoziative Speicherung erlaubt also die Lokation von Daten mithilfe von
Fuzzy-Mengen - man spricht hierbei vom topologischem Mapping -, was bei
herkömmlicher Adressspeicherung ein Ding der Unmöglichkeit wäre.
Ein Auto-Assoziator ähnelt dem Muster-Assoziator in der
Eigenschaft, nach Eingabe eines eine bestimmten Muster ein bestimmtes
Ausgabemuster hervorzubringen. Anders jedoch ist, dass beim
Auto-Assoziator stets ein unvollständiges oder verfälschtes
Eingabemuster eingegeben wird, welches dann vom NN vervollständigt und
korrigiert wiedergegeben wird. D.h. es kann z.B. kein "B" eingegeben werden, um
ein "A" zu generieren, sondern nur ein verfälschtes "B", um ein korrektes
"B" herauszubekommen. Dieses Beispiel deutet auch schon an, für was der
Auto-Assoziator hauptsächlich verwendet wird: Zur Mustererkennung,
insbesondere zur Interpretation handschriftlicher Vorlagen.
Wie der Muster-Assoziator, so besteht auch der Auto-Assoziator
nur aus einer Neuronenschicht. Wiederum stimmt also die Anzahl der
Ausgabesignale mit der Anzahl der Neuronen überein. Diesmal muss aber
auch die Zahl der Eingabesignale mit der Zahl der Ausgabesignale
übereinstimmen. Eine weitere Besonderheit stellt die Rückkopplung
dar, wie man sie unten stehender Abbildung entnehmen kann (ein
rückgekoppeltes Netz arbeitet nicht nur mit Feedforward-Inputs, sondern
auch mit Feedback-Inputs, wobei ein Ausrasten durch Aufschaukeln der Inputs
durch geeignete Grenzwertbedingungen abzufangen ist).
[Grafik fehlt]
Zu beachten ist, dass aufgrund der Rückkopplung die
Aktivität eines Neurons Einfluss auf das Ergebnis der Gewichtung der
Synapsen besitzt, dass also der Aktivitätszustand vor der
Reproduktion in einen definierten Zustand zu bringen ist (i.d.R. Null), um so
Anomalien zu verhindern. Zudem muss eine Abbruchsbedingung geschaffen
werden, damit das Netz sich nicht im ewigem Kreislauf befindet, obwohl
dass gesuchte Muster praktisch längst identifiziert wurde.
Bisher haben wir nur NN betrachtet, die ohne verborgene
Neuronen ausgekommen sind. Allerdings gibt es Fälle, bei denen diese
einschichtigen NN versagen, so z.B. beim XOR-Problem (ausser, es wird noch
ein dritter Eingabevektor hinzugefügt, der immer nur dann eins ist, wenn
e_1=1 und e_2=1 ist; eben dieser Zusatzvektor im Lösungsraum wird im
Backpropagation-NN durch die Hidden Neuronen simuliert):
e_1 e_2 -> a
------------------------
1 1 -> 0
1 0 -> 1
0 1 -> 1
0 0 -> 0
Um ein solches Problem lösen zu können,
benötigen wir NN mit folgendem Aufbau:
[Grafik fehlt]
Es ist darauf zu achten, dass bei einem solchen NN
(Multilayer Perceptron) die Ausgabefunktion nicht-linear ist, wie z.B. die
stetig differenzierbare Fermi-Ausgabefunktion, da eine nicht-konstante
Ableitungsfunktion Eingang in die Berechnung der Gewichte der verborgenen
Neuronen finden muss. Da Rückkopplungen fehlen, muss das NN vor
der Reproduktion in keinem definiertem Aktivitätszustand sein. Um das NN
zu trainieren, muss die Backpropagation-Lernregel verwendet werden, die im
Prinzip der Delta-Lernregel gleicht (daher nennt man sie auch Generalized Delta
Rule). Festzuhalten ist dabei, dass die verborgenen Neuronen-Gewichte
anders berechnet werden als die Neuron-Gewichte der Ausgangsneuronen, und das
häufig auch der Neuronen-Bias gelernt wird. Drücken wir dies einmal
etwas mathematischer aus.
Gewichtsänderung der Ausgangsneuronen:
Delta(w_ij) = Lernrate * Fehlermass * Eingangssignal,
wobei
Fehlermass=(Soll-Ausgang)*Ableitung(Fermi)*Aktivität. Für das
Fehlermass der verborgenen Neuronen ergibt sich die Formel
Fehlermass=Ableitung(Fermi)*Aktivität*Summe(Fehlermass*Gewicht).
Die Fermi-Funktion liefert den Ausgabewert:
a = Min + (Max - Min) / (1 + exp(-4 * S * (A - B) / (Max - Min))),
wobei A=Aktivität, S=Steigung und B=Bis=Schwellenwert ist.
Die Ableitung der Fermi-Funktion:
a' = (4 * S) * (Ausgang - Min) * (Max - Ausgang) / (Max - Min)^2
Der Name "Backpropagation"-Lernregel ergibt sich dadurch,
dass zuerst die Fehlermasse der Ausgangsneuronen zu bestimmen sind,
bevor man die Fehlermasse der verborgenen Neuronen berechnen kann (um die
nötigen Ausgabewerte zu erhalten, müssen in einer ersten Phase
allerdings die Eingabesignale durch das NN vorwärts propagiert werden). Als
Beispiel einer Lösung des XOR-Problems sei folgendes Backpropagation-NN
vorgestellt:
[Grafik fehlt]
Hopfield-Netze kommen wieder ohne verborgene Neuronen aus. In
ihrem Aufbau gleichen sie dem Auto-Assoziator, jedoch verzichten sie auf die
Selbstrückkopplung (nicht jedoch auf die allgemeinen Rückkopplung).
Sie gehören zur Gruppe der thermodynamischen Modelle, die ein allgemeines
Energieminimum in den vernetzten Neuronen anstreben, dabei aber die jeweils
aktuelle Zustandsenergie der Neuronen berücksichtigen. Ein Beispiel sei
folgendermassen wiedergegeben:
[Grafik fehlt]
Wiederum gilt die Regel: Netzzugänge = Neuronenzahl =
Netzausgänge. Eine Besonderheit stellt die nötige Symmetrie der
Gewichte dar, d.h. es muss gelten: w_ij = w_ji. Gelernt wird daher mit der
hebbschen Lernregel in der folgenden Delta(w_ij)-Form:
Delta(w_ij) = Lernrate * Eingang i * Eingang j.
Damit diese Lernmethode einen Sinn bekommt, muss bei der
Reproduktion anders als bisher vorgegangen werden, nämlich nach dem
Gradientenabstiegsverfahren. Per Zufall wird hier nämlich ein einzelnes
Neuron herausgegriffen und mit den Eingabewerten gefüttert, und
anschliessend der neue Netzzustand berechnet. Danach wird per Zufall
erneut ein Neuron herausgegriffen und genauso verfahren. Irgendwann ist dann
die Abbruchsbedingung erfüllt (die Neuronen eines NN ändern sich
nicht mehr), und das Hopfield-Netz hat ein Musterpaar identifiziert. Aus dieser
Vorgehensweise resultiert, dass es u.U. recht lange dauern kann, bis das
Ergebnis einer Eingabe vorliegt.
Ein trainiertes Netz kann man sich als Energieteppich oder
Potenzialgebirge vorstellen, wobei alle gelernten Fakten als ein tiefes Tal
(Attraktionsbecken) mit einer lateralen Erhöhung umseitig erscheinen.
Wegen ihres Aussehen nennt man diese geometrische Interpretation Mexican
Hat-Funktion. Es gilt: Je grösser die Gewichte der Synapsen, desto
tiefer wird ein Tal.
Die Reproduktion bewirkt nun Folgendes: "Eingabesignalkugeln" fallen
an bestimmten Stellen auf diesen Energieteppich nieder und rollen sofort in die
nächsten, ihnen zugehörigen Output-Täler. Wurden viele
ähnliche Fakten gelernt, dann kann es passieren, dass die Eingabesignalkugeln
in einem in der nähe liegendem Tal zum stehen kommt; in diesem Falle
würde das NN nicht das korrekte Ausgabemuster hervorbringen.
Ein Problem von NN wird durch die Energieteppich-Vorstellung
schön verdeutlicht: An den Rändern/Ecken eines NN finden ganze
Mexican-Hat-Funktionen keinen Platz, da dazu die nötigen umseitigen
Neuronen für die laterale Erhöhung fehlen. Aber durch vielfaches
Lernen lässt sich der Radius der Mexican-Hat-Funktion minimieren, so
dass dieses Problem tatsächlich nur den ganz äusseren Rand
eines NN betrifft.
Neben den vorgestellten Lernregeln - Hebbsche Lernregel,
Delta-Lernregel, Backpropagation-Lernregel und stochastische Lernregel -, die
das dynamische Langzeitverhalten von NN festlegen, gibt es noch weitere
Lernansätze, z.B. das Wettbewerbslernen und das genetische Lernen, auf die
wir hier aber nicht näher eingehen wollen. Um die Sache noch realistischer
zu machen, kann ein NN auch so gestaltet werden, dass es Fakten wieder
vergisst, indem die Synapsengewichte gegen Null laufen, wenn sie nicht
regelmässig abgefragt werden.
Eingabedaten können lokal oder verteilt
repräsentiert werden. Bei erster Methode geht ein einziges Eingabesignal mit
einem bestimmten Output einher, bei zweiter Methode gehen viele Eingabesignale
mit einem bestimmten Output einher. Analoge, kontinuierliche Inputs werden
i.d.R. entweder normalisiert (auf einen Mittelwert bereinigt) oder skaliert
(auf einen Wert eines bestimmten Intervalls gebracht). Dies kann über den
gesamten Eingabesignalsatz geschehen, nur über die Zeilen oder nur über die
Spalten. Die gewählte Strategie ist abhängig von der Natur der Daten.
Bei obigen NN haben wir stets nur das überwachte Lernen
besprochen, d.h. durch menschliche Soll-Vorgaben wurde dem NN die
Möglichkeit gegeben, seinen Lernerfolg selbst zu überprüfen. Das
automatische Lernen geht noch einen Schritt weiter: Hier soll das NN selbst
Klassen von Fakten bilden, um so z.B. Golfs von Käfern unterscheiden zu
können (dazu muss es z.B. Ausreisser in besonderer Weise
beachten).
Ähnlich wie das Hopfield-Netz ist auch die
Boltzmann-Maschine ein thermodynamisches Modell. Neben einem aktuellen
Energiezustand besitzen die Neuronen auch eine gewisse "Temperatur", die mit
jedem Iterationsschritt abnimmt (abhängig von der Cooling Schedule).
Dadurch wird verhindert, dass eine Eingabesignalkugel zu früh in einem
lokalen Minima verharrt, da sie durch das Temperaturniveau wieder
ausgestossen wird (simuliertes Ausglühen). Auf diese Weise findet die
Eingabesignalkugel früher oder später das globale Minimum und also den
optimalen Output.
Selbstorganisierende Karten nach dem Kohonen-Modell
berücksichtigen die Tatsache, dass die Lage des Wissens im
menschlichen Gehirn eine Rolle spielt, was bei den bisher betrachteten NN nicht
unbedingt der Fall war (aber, wie wir an der Mexican-Hat-Funktion und der
Fähigkeit zum automatischen Lernen sehen, dort im Prinzip bereits gegeben
ist). Bei selbstorganisierenden Karten wird dieser Effekt nur beim Lernen
verstärkt, in dem um das Erregungszentrum die Gewichte der Synapsen
zusätzlich gewichtet werden, im Gegensatz zu denen, die weiter weg liegen
(Feature-Map-Lernregel).
Die lange Rechenzeit eines NN stellt ein grosses Problem
dar. Im Vergleich zum menschlichen Gehirn scheiden hier auch die besten
Superrechner schlecht ab. Nur ein Beispiel: 10^9 Neuronen sind an
Vorgängen beteiligt, die die Augen betreffen. Jedes Neuron ist mit 10^4
anderen Neuronen verbunden und kann ca. 10 Mal in der Sekunde feuern. Damit
erhält man eine maximale Rechenleistung von 10^14 Operationen in der
Sekunde, dem gegenüber es Superrechnern nur auf 10^9 Operationen bringen
können. Der Weg zur endgültigen Simulation des menschlichen Gehirns
ist also noch sehr, sehr weit.