text: www.daniel-schwamm.de - Texte - Simulation Neuronaler Netze
  Geschwurbel von Daniel Schwamm (05.05.1994 bis 09.05.1994)
  http://www.daniel-schwamm.de/index.php?pg=texte/simulation-neuronaler-netzwerke.htm
  2. Neuronale Netze und ihr biologisches Vorbild
  2.2. Abstraktes Modell des Nervensystems
  3. Aufbau neuronaler Netze
  3.1. Vergleich mit herkömmlichen Computern
  3.2. Aktivierungsfunktionen
  3.3. Ausgangsfunktionen
  3.4. Zustände und Zustandsänderungen
  4. Muster-Assoziator
  4.2. Lernen nach der hebbschen Lernregel
  4.3. Reproduzieren
  4.4. Trainieren nach der Delta-Lernregel
  4.5. Assoziative Speicherung
  5. Auto-Assoziator
  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:
  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:
  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:
  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).
  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):
  1      1      ->    0
  Um ein solches Problem lösen zu können, benötigen wir NN mit folgendem Aufbau:
  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:
  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:
  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.