Sie sind auf Seite 1von 9

MATTHES - ENDERLEIN - GYMNASIUM ZWÖNITZ

Eine kurze Einführung in


neuronale Netze
Künstliche Intelligenz
Winfried Lötzsch
2010

Kurze Einführung in einige wichtige Bestandteile der künstlichen Intelligenz(AI)


Copyright © 2010 by Winfried Lötzsch, Elterlein Germany. Alle Rechte vorbehalten.

1. KÜNSTLICHE NEURONALE NETZE - GEHIRN IM COMPUTER

In der Biologie ist seit einigen Jahren bekannt, wie biologische neuronale Netze funktionieren.
Auf der Grundlage dieser Erkenntnisse ist man nun von informatischer Seite in der Lage
Aussagen darüber zu treffen, wie man eine Intelligenz nachbauen bzw. simulieren kann.

1.1 VON FUNKTIONEN, ALGORITHMEN UND INTELLIGENZEN

Die einfachste mathematisch bekannte Verknüpfung zweier Werte ist eine Funktion. Diese wird
über eine Funktionsgleichung beschrieben, die eine eindeutige Beziehung zwischen einem
Argument und einem Funktionswert herstellt. Damit kann für jedes gegebene Argument(oder
für die gegebenen Argumente) sofort der entsprechende Funktionswert berechnet werden.

Es ist nur logisch, dass keineswegs alle Probleme durch eine einfache Funktion beschrieben
werden können. Beispielsweise gibt es keine Funktion, die π als Zahl zurückgibt. Die Werte sind
immer nur Näherungswerte, und um diese Näherung beliebig genau zu gestalten ist ein
Algorithmus notwendig. Ein Algorithmus zeichnet sich dadurch aus(wie auch eine Funktion),
dass die Verknüpfung zwischen den Eingabewerten und den Ausgabewerten sehr genau bekannt
ist, da der Algorithmus von Hand entwickelt wird, also im Prinzip aus in bestimmten
Reihenfolgen und Wiederholungen von Funktionen besteht.

Wenn allerdings nicht bekannt ist, wie die Zahl π approximiert werden kann, kann kein
Algorithmus gefunden werden, da keine Funktion vorhanden ist. Manchmal ergeben sich in der
Tat Situationen, in denen das Endergebnis eines Algorithmus überhaupt nicht bekannt
ist(natürlich nicht bei π, da über diese Zahl eine Vielzahl von Funktionsaussagen gemacht
werden können, anhand zum Beispiel der Formel ). Was aber zum Beispiel mit
komplexen Marktanalysen, oder Mustererkennung von Mustern die nicht bekannt sind? Welche
Funktion sagt aus wie sich die Kurse der Aktien an der Börse in der nächsten Zeit entwickeln?
Wovon sind sie überhaupt abhängig, und wovon nicht? Und welche Funktion sagt mir wer der
Anführer einer bestimmten Terrororganisation ist, von der eine Militärdrohne Bilder
aufgenommen hat, wobei es aber zu lange dauert das ganze Filmmaterial von Menschen
betrachten zu lassen, und dafür auch kein Personal vorhanden ist? Wer sagt mir welcher Dieb
letzte Nacht auf dem Betriebsgelände eingebrochen ist und von der Überwachungskamera
gefilmt wurde? Das alles sind bekannte Probleme, und diese Probleme sind ganz einfach auf den
Fachkräftemangel zurückzuführen. Kein Mensch hat Zeit alles Filmmaterial einer
Überwachungskamera anzusehen. Deshalb soll es eine Maschine machen. Für so etwas ist ein
Algorithmus selbstverständlich vollkommen ungeeignet, da sich zunächst ein Mensch den Film
ansehen müsste, die Person ausmachen müsste, und dann einen Algorithmus entwickeln müsste,
der die Person erkennt, die er ja schon erkannt hat. Macht also wenig Sinn. Demzufolge ist die
Verknüpfung der Ausgabedaten mit den Eingabedaten unbekannt, und muss von der Maschine
selbst gefunden werden.

Tatsächlich existieren schon länger einige bewährte Modelle, wie man solche Probleme ganz
einfach lösen kann. Alles was irgendwie mit Statistik zu tun hat greift letztendlich zumeist auf
solche Modelle zurück. Man kann Durchschnitte berechnen, oder eine einfache
Regressionsgerade zum Beispiel bei der Analyse von Börsenkursen einsetzen, um die Richtung
anzugeben, in welche sich der Kurs höchstwahrscheinlich entwickelt. Allerdings haben diese
herkömmlichen Lösungen in der Statistik ein entscheidendes Problem: Ihre Aufgabe ist es aus
verrauschten Mustern die Abweichungen zu entfernen. So erkennt eine Regressionsgerade, ob
eine Schwankung von einem Börsenkurs relevant für seine weitere Entwicklung ist, oder ob sie
nur durch Zufall entstanden ist. Allerdings sind sie nicht in der Lage Rückschlüsse über die
erkannten Muster zu ziehen. Das führt dazu, dass bei komplexen Mustern die Staistik ganz

compositedevtec.tk
Copyright © 2010 by Winfried Lötzsch, Elterlein Germany. Alle Rechte vorbehalten.

einfach versagt. In einem hochdimensionalen Raum(mit Beispielsweise 80 Dimensionen) und


breit gestreuten Daten, die sich nur über ein äußerst komplexes Schema zusammensetzen
lassen, Regression durchzuführen, dürfte alle Statistiker dieser Welt vor eine unlösbare, oder
zumindest vor eine nicht angemessen lösbare Aufgabe stellen.

Allerdings hat sich nun, da in den letzten Jahren eben diese Tatsache erkannt wurde eine neue
Entwicklung in diesem Bereich aufgetan. Nehmen wir an, das Muster ist so prägnant, dass das
verrauschte Muster immer noch genügend Informationen enthält, um auch ohne die explizite
Entfernung des Rauschens durch irgendwelche Glättung oder Stauchung auf das Muster
schließen zu können, dann tun wir genau das, was unser Gehirn tut, nämlich intelligentes
Arbeiten.

Intelligenz meint jetzt die Fähigkeit sehr komplexe Daten zu bearbeiten bzw. aufzubereiten ohne
nähere Informationen über deren Struktur und Entstehung zu erhalten, wenn sich ihre
tatsächlichen Strukturen nicht mehr von den Schwankungen unterscheiden lassen.

1.2 DER BEGRIFF DES NEURONALEN NETZES

Nun stellt sich die logische Frage, wie denn eine solche Intelligenz einem Computer beigebracht
werden kann. Gönnen wir uns zunächst einen kleinen Blick auf das Gehirn:

Das Gehirn besteht aus vielen Nervenzellen(sogenannten Neuronen). Die sind miteinander
verbunden, sodass ein Informationsfluss zustande kommt. Die vereinfachte Darstellung oben
stellt solch einen Informationsfluss beispielhaft dar. Tatsächlich passiert hier folgendes:

1. Irgendeine Sinneszelle(oder etwas vergleichbares) reagiert auf einen Reiz von


außen(grün) mit einem elektrischen Impuls.
2. Dieser Impuls wird über ein sogenanntes Axon(Pfeil) weitergeleitet. Dieses kann mit
einem einfachen Draht zwischen den Neuronen verglichen werden.
3. An der Verbindungsstelle zwischen dem Axon und einem anderen Neuron befindet sich
dann ein Spalt, welcher dafür sorgt, dass die Ladung das zweite Neuron nicht direkt
erreicht.
4. Durch die Ladung werden in den Spalt chemische Botenstoffe eingeschleust, die auf der
anderen Seite wieder aufgenommen werden.
5. Von diesen Botenstoffen wird dann das zweite Neuron wieder dazu angeregt seinerseits
einen elektrischen Impuls in seine Axon-Verbindungen auszusenden.

compositedevtec.tk
Copyright © 2010 by Winfried Lötzsch, Elterlein Germany. Alle Rechte vorbehalten.

Durch diese Abfolge verändern sich die Aktivierungen der Neuronen gegenseitig, und es kommt
letztendlich dazu, dass Neuronen nun nicht mehr nur andere Neuronen beeinflussen, sondern
ihre Impulse an Muskelzellen, oder ähnliche andere ausführende Zellen aussenden, die dann
eine von der Intelligenz vorgegebene Aktion durchführen.

Aus einem Reiz folgt also die Reaktion, die mal schnell, mal weniger schnell vonstattengeht, je
nachdem wie viele Neuronen zwischen der Reizzelle und der Reaktionszelle liegen:

Gehirn

Reiz Reaktion
Für die Informatik ergibt sich dann das folgende(stark vereinfachte) Modell eines Neurons:

Eingabe 1 Gewicht 1 Ausgabe 1

Eingabe 2 Gewicht 2

Die Eingaben für ein Neuron stammen jeweils aus den entsprechenden Axonen. Sie werden über
die Spalten modifiziert(chemische Übertragung), und ergeben dann über eine entsprechende
Funktion den Impuls des nächsten Neurons(Ausgabe). Dabei hängen die Neuronen
untereinander nicht einfach nur voneinander ab, sondern es wird auch festgelegt(d.h. es wird
gelernt) wie sehr die Neuronen voneinander abhängen. Beispielsweise könnte ein Mensch
darüber nachdenken, ob er einer Freizeitbeschäftigung nachgehen soll. Er weiß allerdings, dass
noch arbeiten muss, so ist(jedenfalls sollte es so sein) der zweite Impuls(also das zweite Gewicht
=Wertung der Beziehung zwischen zwei Neuronen) größer, und führt zu einem höheren
Bewertung der Arbeit.

compositedevtec.tk
Copyright © 2010 by Winfried Lötzsch, Elterlein Germany. Alle Rechte vorbehalten.

Für die Abbildung der chemischen Übertragung benötigen wir zunächst 4 Funktionen:

 Die Funktion, die alle Neuronen berechnet, von denen ein bestimmtes Neuron abhängt
nennen wir die Abhängigkeitsfunktion
 Die Funktion, die die Eingänge mit den Gewichten in Verbindung bringt nennen wir die
Gewichtsfunktion(normalerweise werden die Eingänge entweder mit den Gewichte
multipliziert, oder die Gewichte werden von den Eingängen abgezogen)
 Die Funktion, die alle Eingabewerte(die zuvor noch mit den entsprechenden Gewichten
in Verbindung gebracht worden) in einen Wert konvertiert ist die
Eingangsfunktion(oben als S bezeichnet)
 Die Funktion, die diesen sogenannten Netz-Eingang in den Ausgang des Neurons
durchschaltet, der dann wieder auf andere Neuronen einwirken kann ist die
Aktivierungsfunktion(oben als f bezeichnet)

Mit diesen 4 Funktionen kann das gesamte Netz beschrieben werden:

Die Abhängigkeitsfunktion steht für die Struktur des Netzes, ist also nicht als eine
mathematische, sondern vielmehr als eine rein logische Verknüpfung zu betrachten(mehr dazu
weiter unten).

Die Eingangsfunktion ist zumeist eine einfache Summe, sodass sich die Eingänge ausgleichen
können. Unter Umständen kann es aber auch sinnvoll sein eine andere Eingangsfunktion zu
verwenden(z.B. Multiplikation).

Die Aktivierungsfunktion ist meistens eine nichtlineare Funktion, die oft nur Werte zwischen 0
und 1 ausgibt, um einem einzelnen Neuron nicht zu viel Einfluss geben zu können, also um das
Netz nicht zu übersteuern. Es existieren auch einfachere Ansätze, wobei diese Funktion eine
lineare ist(also praktisch unter Umständen auch nicht existiert, wenn sie den Eingang 1 zu 1
weiterleitet). Das führt allerdings zu folgendem Problem:

Stellen wir uns vor, wir wollen eine Menge von Punkten durch Lernen Klassen zuordnen. Eine
Koordinate repräsentiert dann jeweils die Eingabewerte, und eine Koordinate die
Ausgabewerte. Damit separieren die Aktivierungsfunktionen der Neuronen diesen(zum Beispiel
zweidimensionalen) Raum. Mathematisch ausgedrückt berechnet sich der Ausgabewert dieses
oben angesprochenen linearen Ausgabeneurons praktisch ohne Aktivierungsfunktion mit der
Summe als Eingangsfunktion dann als:

Dabei ist i ein Vektor bestehend aus allen Axon-Eingangswerten. Daraus entsteht eine lineare
Funktion, die die generelle Abhängigkeit zwischen dem Neuron und allen Neuronen, die auf
dieses Neuron einwirken beschreibt. Demzufolge kann das Neuron nur lineare
Verknüpfungen(also Geraden) wiederspiegeln. Das sieht dann zum Beispiel so aus(mit 2
Klassen), wobei eben die eine Klasse den Zustand repräsentiert, in dem das Neuron feuert(also
einen bestimmten Schwellenwert überschritten hat), und die andere Klasse den Zustand, in dem
keine Aktion stattfindet(Schwellenwert nicht erreicht). Dies ist die Vorgehensweise bei einer
Klassifikation.

compositedevtec.tk
Copyright © 2010 by Winfried Lötzsch, Elterlein Germany. Alle Rechte vorbehalten.

Das folgende Bild zeigt das bekannte XOR(exklusives oder) Problem. Die Ausgabeklassen sind
0(grün) und 1(orange). Man erkennt auf den ersten Blick, dass mindestens zwei Geraden
notwendig sind um eine Klassifikation zu ermöglichen. Das erhöht die Komplexität und den
Aufwand (logischerweise) immens. Je komplexer die zu lernenden Daten also werden, umso
weniger Sinn macht es lineare Aktivierungsfunktionen zu verwenden.

Die Praxis hat zudem gezeigt, dass mit zunehmender Komplexität der Probleme manche auch
überhaupt nicht durch lineare Klassifizierung verarbeitet werden können(nicht linear
separierbare Probleme). Deshalb wird im Normalfall auf nichtlineare Aktivierungsfunktionen
zurückgegriffen.

compositedevtec.tk
Copyright © 2010 by Winfried Lötzsch, Elterlein Germany. Alle Rechte vorbehalten.

Die Vorteile neuronaler Netze gegenüber Algorithmen

 Besseres Laufzeitverhalten als ein Algorithmus(durch Approximation von tatsächlichen


Verknüpfungen)
 Automatisiertes Finden der Beziehungen zwischen den Daten
 Fehlertoleranz
 Verarbeitung von Massendaten

Die Nachteile neuronaler Netze gegenüber Algorithmen

 Möglicherweise lang dauernde Lernvorgänge erforderlich


 Geringere Exaktheit

Fazit

Besonders wenn eine sehr exakte Berechnung von Ausgabegrößen erforderlich ist, sollte man
einen Algorithmus bevorzugen. Ein neuronales Netz findet vor allem Anwendung wenn:

 Der entsprechende Algorithmus nicht in einer annehmbaren Rechenzeit ausgeführt


werden kann und die Ausführungsdauer verkürzt werden soll
 Die Verknüpfung der Eingabedaten mit den Ausgabedaten nicht bekannt ist, oder keine
Ausgabewerte vorliegen, sondern lediglich Erkenntnisse über Daten eingeholt werden
sollen

2. AUFBAU NEURONALER NETZE

2.1 VERSCHIEDENE STRUKTUREN NEURONALER NETZE

Um einen Lernvorgang für ein solches Netz aufstellen zu können ist es zunächst wichtig zu
wissen, wie genau ein neuronales Netz ausgeführt wird. Dabei sind folgende Strukturen für die
Abhängigkeitsfunktion wichtig:
V O R W Ä R T S GE R I C H T E T E N E T Z E

... ...

...

compositedevtec.tk
Copyright © 2010 by Winfried Lötzsch, Elterlein Germany. Alle Rechte vorbehalten.

Ein vorwärtsgerichtetes Netz(feed-forward) ist in regelmäßigen, nebeneinanderliegenden


Schichten angeordnet. Dabei dürfen immer nur Abhängigkeiten zwischen zwei nebeneinander
liegenden Schichten definiert werden und immer nur vorwärts. Somit ist die Ausführung klar:
Die Eingabewerte werden auf die erste Schicht gegeben, und dann kann jede Schicht der Reihe
nach aktualisiert werden, bis am Ende das Ergebnis steht.
R Ü C K W Ä R T S GE K O P P E L T E N E T Z E

Komplizierter wird die ganze Sache, wenn Abhängigkeiten einfach ohne jegliche Struktur
zugelassen werden(feed-back). Die einzige Variante, die nicht in diese Gruppe fällt ist die vorhin
genannte streng geregelte Vorwärtskopplung, die sehr wenig Spielraum lässt. Bei dem
aufgeführten Netz handelt es sich um ein sogenanntes Hopfield-Netz, wobei jedes Neuron von
jedem anderen in beide Richtungen abhängt. Man kann sich sicherlich vorstellen, dass es von
diesen Netzen zahlreiche Varianten gibt, da hier überhaupt keine festen Vorgaben gemacht
werden. Somit kann auch noch keine generelle Aussage darüber getroffen, wie man ein solches
Netz ausführt, wie das beim vorigen Typ der Fall war. Prinzipiell existiert hier oft eine
sogenannte Energie des Netzes. Da sich das Netz immer wieder selbst verändert, also auch ohne
Weiteres die Eingabewerte wieder überschrieben werden können, bezeichnet diese Energie die
Wahrscheinlichkeit, dass sich das Netz bei weiterer Ausführung noch verändert, oder den Grad
der Veränderung.

3. EIN TRAININGSALGORITHMUS FÜR VORWÄRTSGERICHTETE


NETZE(BACKPROPAGATION)

Als letztes wollen wir uns einmal Gedanken darüber machen, wie tatsächlich ein Lernvorgang
stattfindet. Wir haben uns bisher ja nur über die Ausführung der neuronalen Netze Gedanken
gemacht, was allerdings voraussetzt, dass das Netz schon weiß, was es zu tun hat. Die einzigen
Variablen Größen im Netz, die Einfluss auf die Klassifikation haben sind natürlich die Gewichte.
Wir müssen also die Gewichte so anpassen, dass die Klassifikation korrekt funktioniert.

Wir wollen uns das Training von feed-forward Netzen grob einmal ansehen. Worum es hier geht
ist zu erreichen, dass bei bestimmten bekannten Eingangswerten bestimmte bekannte
Ausgabewerte erzeugt werden. Dabei müssen wir uns zunächst Folgendes klar machen:

Bei den Eingangswerten handelt es sich um Muster, bei den Ausgangswerten(in unserem
Beispiel jetzt) um Klassen:

compositedevtec.tk
Copyright © 2010 by Winfried Lötzsch, Elterlein Germany. Alle Rechte vorbehalten.

... restliches Netz Klassen


Muster

 Ein feed-forward Netz kann also als eine Einheit angesehen werden, die bei einem
bestimmten Eingabevektor einen bestimmten Ausgabevektor in Abhängigkeit von den
Gewichten ausgibt.
 Falls eine zu lernende Konfiguration aus Trainingsdaten(Eingabe- und Ausgabevektoren,
also die Zustände der Eingänge und die erwarteten Zustände der Ausgänge) vorliegt
kann eine Funktion mit allen Gewichten als Argumente erstellt werden, die einen
Fehlerwert ausgibt. Dieser Fehler gibt die Abweichung der erwarteten Ausgänge von den
tatsächlichen Ausgängen in Abhängigkeit der Gewichte an. Diese sogenannte
Fehlerfunktion ist eine Zusammensetzung aus den vier genannten Funktionen aller
Neuronen, über welche die tatsächlichen Ausgabewerte für die Eingänge berechnet
werden und den Fehlern für jedes Ausgangsneuron, die ihre jeweilige Abweichung von
den erwarteten Ausgängen definieren.
 Wenn für diese Fehlerfunktion alle partiellen Ableitungen nach den Gewichten
existieren, kann bestimmt werden, wie sich eine Gewichtsänderung auf den Fehler
auswirken würde.
 Demzufolge gilt es dem aus den partiellen Ableitungen nach den Gewichten berechneten
Gradienten in Gegenrichtung zu folgen, und so den Fehler zu
minimieren(Gradientenabstieg).

REFERENZEN

[1] compositedevtec.tk/nnspace - Offizielle Website mit mehr Informationen und Downloads

compositedevtec.tk