Neuronale Netze

Bei Neuronalen Netzen geht es darum, dem Computer das Lernen (nicht das Denken) 'beizubringen'. Der Computer soll an Beispielen lernen und sein 'Wissen' auch auf andere Beispiele übertragen können. Der Aufbau eines neuronalen Netzes ist durch den Aufbau des menschlichen Nervensystems inspiriert.
Eigentlich macht ein trainiertes neuronales Netz auch nur das, was ein 'normales' Computerprogramm macht : Es wandelt eine Menge von Eingaben in eine Menge von Ausgaben um. Neuronale Netze können in verschiedenen Bereichen eingesetzt werden. Diese sind beispielsweise :

Dabei haben sie eine Menge wünschenswerter Eigenschaften:

Die wohl wichtigste Fähigkeit neuronaler Netze ist die Klassifikation von Daten. Dabei werden Daten des Eingaberaumes (die Eingabedaten) auf Daten Ausgaberaumes (die zugehörige Klasse) abgebildet. Ein Hauptanwendungebiet für neuronale Netze ist die Mustererkennung. Dies ist eigentlich auch nur ein Spezialfall der Klassifizierung. Es wird ein Muster (z.B. eine Bildinfornmation) dem Netz übergeben und dieses sucht dann eine entsprechend eingelerntes Musterbeispiel, daß der Eingabe am besten entspricht. Dieses Musterbeispiel ist einfach die zum übergebenden Bild gehörende Klasse.
Damit neuronale Netze arbeiten können, müssen die Daten in einem geeigneten Format vorliegen Z.B. kann ein Bild als eine Bitmap vorliegen. Wichtig sind bei der Umwandlung von realen Daten in Daten die das nN verstehen kann, die relevanten Beschreibungsmerkmale. Z.B. ist es für die Bilderkennung wichtiger, daß die Muster einigermaßen vernüftig 'zu erkennen' sind als eine ultrahohe Farbauflösung.

Das Klassifikationsproblem

Ein Musterraum zerfällt in mehrere Partitionen, d.h. disjunkte Teile, die zusammen den gesamten Musterraum abdecken. Diese Partitionen sind die sogenannten Klassen, denen jedes Element , daß dieser Partition angehört zugeordnet werden soll. Es muß nun eine entsprechende Darstellung der Grenze zwischen diesen Partitionen gefunden werden. Kennt man die Grenzen, kann man sehen, zu welcher Partition das Element gehört.
Es gibt mehrere Ansätze, wie diese Grenzen dargestellt werden.

Format der Ein- und Ausgaben

Die Daten des Eingabe und Ausgaberaumes müssen in ein Format gebarcht werden, das von einem neuronalen Netz akzeptiert wird. Man verwendet hier Vekltoren, deren Elemente binär oder reale Zahlen sind. Die Musterräume werden in solche Vektoren umgewandelt.

Klassifikationstechniken

Die Nearest neightbour - Klassifikation

Für eine Klasse werden eine oder mehrere Repräsentanten ausgewählt. Ein zu klassifizierendes Element wird genau der Klasse zugeordnet, zu deren Musterelementes es den geringsten Abstand hat.
Ein Problem hier sind statistische Ausreißer in den Musterelementen. Um dieses Problem zu verringern, kann man die sogenannte k-nearest Neighbour - Klassifikation anwenden. Hier wird als 'Vergleichsabstand' jeweils der Durchschnitt der k ähnlichsten Elemente jeder Klasse ausgewählt.

Distanzmetriken

Eine Distanzmetrik wird verwendet, um den Abstand von zwei Elementen (also hier Vektoren) zu bestimmen. Eine Metrik ist eine Funktion, die auf zwei Elemente angewendet wird. Sie hat einige Eigenschaften:

Es gibt verschiedene Metriken.
Die Hamming-Distanz
Die Hamming-Distanz berechnet den Fehler (den Betrag der Differenz) von jedem Vektorelement aus und addiert die Ergebnisse.
Formel : Hamming-Distanz

Euklidische Distanz
Das ist zum Beispiel der gewöhnliche Abstand im zweidimensionalen oder dreidimensionalen Raum. Sie wird wie folgt berechnet : Zwischen zwei Vektorelementen (an der gleichen Position) wird die Differenz errechnet und quadriert.
Diese qaudrierten Differenzen werden addiert und aus dem Gesamtausdruck wird die Wurzel gezogen.
Formel: euklidische Distanz

lineare Klassifikatoren

Auf dem Musterraum wird eine lineare Funktion definiert. Dieser wird dadfurch in zwei Teile (die beiden Klassen) aufgeteilt. Liefert die Funktion für ein Element einen Wert kleiner als Null, gehört es zu der einen Klasse ; sonst zu der anderen. Werden mehrere Funktionen auf dem Musterraum definiert, können auch mehr Klassen ausgebildet und erkannt werden. Z.B. Kann man durch zwei Funktionen bis zu 4 Klassen unterscheiden.

Bayes-Klassifikation

Hier wird mit Wahrscheinlichkeiten gerechnet. Ein Element wird der Klasse zugewiesen, zu der er am wahrscheinlichsten gehört (wohin auch sonst). Das Problem ist hier meist, daß man meist diese Wahrscheinlichkeit nicht genau kennt. Kann man einige andere Wahrscheinlichkeiten abschätzen, kan man die Bayes'sche Formel verwenden, um die gesuchte Wahrscheinlichkeit auszurechenen. siehe hierzu auch weiter hinten

Fehlerabschätzung

Da neuronale Netze an Beispielen lernen, kann es auch sein, daß sie Fehler machen, also ein Element in die falsche Klasse einordnen. Die Fehlerrate ist das Verhältnis vom Anzahl der gemachten fehler und Anzahl der Datensätze insgesamt. Die tatsächliche Fehlerrate ist die Fehlerrate auf dem gesamten Eingaberaum. Sie läßt sich nicht ermitteln, wenn dieser unendlich viele Elemente enthält. Daher muß man sich mit Schätzungen der Fehlerrate zufriedengeben. Es bleibt die Frage, wie gut die tatsächliche Fehlerrate durch Berechnen mit nur endlich vielen Datenwerten angenähert werden kann.
Fehler,Kosten, Risiken
Allein die Fehlerrrate ist nicht sehr aussagekräftig. Oft sind Fehlklassifikationen unterschiedlich zu bewerteten. Beispiel Man hat ein neuronales Netz, das zur Diagnose eingesetzt wird, also als Eingabe einen Vektor von medizinischen Messwerten erhält und als Ausgabedie Werte "gesund" und "krank" hat. Eine Falsche Einordnung von einem Gesunden als krank hat weniger schlimme Folgen als umgekehrt.
Um so etwas auch zu berücksichtigen, gibt einen Wert,genannt Kosten. Um diesen zu berchnen werden die 'Kosten' jeder Fehlinterpretation aufgestellt. Die Spalten bilden die eingeordnete Klasse und die Spalten die Richtige Klasse. Die Einträge stellen die Kosten dar. Da die Diagonale der Matrix die 'richtigen' Zuordnungen enthält sind die Kosten hierfür natürlich Null.
Beispiel
Kosten für zugeordnete klasse :
richtige Klasse
krank gesund
krank 0 10
gesund 3 0

Hier sieht amn, daß wenn eine Gesunder als krank eingestuft wird, fallen Kosten in Höhe von 3 an. Wird ein Kranker als gesund eingeordent fallen aber KOsten von 10 an.
Die Gesamtkosten einer gegebenen Datenmenge lassen sich nur berechnen, wenn die richtigen und Fehlentscheidungen auch etwas differenzierter als bei der Fehlerrate betrachtet werden. Man verwendet hier die gleiche Matrxi, nur daß statt der Kosten die Anzahl der Elemente eingetragen werden, die 'dorthin' klassifiziert wurden. Beispielsweise werden 67 Gesunde richte eingeordnet, 4 Gesund als krank ; 5 Kranke als Gesund und 43 Kranke als krank klassifiziert.
krank gesund
krank 43 5
gesund 4 67
Die Kosten werden nun berechnet, indem man die Matrizen elementweise multipliziert und die Ergebnisse Ausummiert. Im Beispiel ergeben sich so Kosten von :
K gesamt = 43 * 0 + 5*3 + 4*10 + 67*0 = 55.
Die relativen Kosten berechnet man, indem man die Gesamtkosten durch die Anzahl an Daten teilt :
K relativ = K gesamt / N = 55 / (43+5+4+67) = 55 / 119 = 0,462

Möchte man nun auch noch richtige Klassifikationen bewerten, kommt man zum Begriff der Risiken. Ich persönlich finde diesen Begriff ziemlich daneben, da hohe Risiken hier etwas 'Gutes' bedeuten sollen, was ja im Allgemeinen nicht so ist. Um die Risiken zu berehnen, nimmt man die Kostenmatrix und negiert alle Einträge. Nun trägt man noch in die Diagonale die gewünschten Werte ein. Mit dieser Risikomatrix wird nun genauso verfahren wie mit der Kostenmatrix um die Gesmtrisiken und relativen Risiken zu berechnen.
Mißt man die Fehlerrate oder Kosten/Risiken auf den Musterbeispielen (auch Trainingsbeispiele genannt) kann man uneter Umstände sehr schlechte Abschätzungen erhalten, für die Fehlerrate auf der Gesamtmenge. Z.B. hätte eine Tabelle mit den entsprechenden Einträgen stets Null Fehler, aber diese könnte andere Beispiele nicht verarbeiten. Diese sogenannte Gereralisierungsfähigkeit ist jedoch ein schönes Merkmal von neuronalen Netzen. Wir das neuronale Netz zu sehr auf die Trainingsdaten ausgerichtet, spricht man von 'Overfitting' . Um so etwas zu vermeiden gibt es eine Reihe von Ansätzen.
Ein einfacher Ansatz
Ein sehr einfacher Ansatz ist die Train- und Test - Methode. Hier wird die Menge der Trainingsbeispiele (Trainingsmenge) in zwei Teile aufgespalten. Mit einem Teil wird das neuronale Netz trainiert, mit dem anderen wird die Fehlerrate gemessen. Das Netz gilt erst als trainiert, wenn die Fehlerrate unter einem vorher festgelegten Wert gesunken ist.