Suche

5.1 Allgemeines

Blicken wir an dieser Stelle zurück auf das Einstiegsbeispiel: die Vorhersage, wer den Untergang der Titanic überlebt und wer nicht. Dies ist ein typisches Beispiel zur Klassifikation, anhand dessen die folgenden Punkte vertieft werden sollen:

Datenaufbereitung

Eine gute Datenaufbereitung ist eine der wichtigsten Aufgaben beim Umgang mit künstlichen neuronalen Netzen. Schlussendlich geht es schließlich darum, Informationen so in Zahlen umzuwandeln, dass diese verarbeitet werden können und man am Ende einer Klassifikation wiederum Informationen erhält. In diesen Prozess können sich daher unabsichtlich schnell Fehler einschleichen. Im Einstiegsbeispiel musste z. B. das Geschlecht kodiert werden. Hier wurde 1 für männlich und 0 für weiblich gewählt. Die Ticket-Kategorie (1. bis 3. Klasse) ist zwar einfach in Zahlen umzuwandeln (0, 1, 2), jedoch zur Weiterverarbeitung nicht gut geeignet, da die Zahlen ja wesentlich größer sind als die Zahlen, die das Geschlecht beschreiben. Es gibt Situationen, in denen unterschiedliche Wertebereiche einen negativen Einfluss auf die korrekte Performance haben könnten, z.B. wenn das Gewicht (3–200 kg) und gleichzeitig die Größe einer Person (0,5–2,5 m) als Eingabewerte genommen würden, da der Wertebereich des Gewichts um ein Vielfaches größer wäre und daher viel mehr Einfluss auf die Klassifikation haben könnte. Aus diesem Grund werden die Ticket-Kategorien 0, 1, 2 vor der Weiterverarbeitung (intern und nicht sichtbar) in die Zahlen 0.0, 0.5 und 1.0 umgewandelt. Auch die Abfahrtshäfen müssen in Zahlen umgewandelt werden. Um auch hier die drei Häfen in den Wertebereich 0 bis 1 zu bringen, werden die Häfen in der Reihenfolge der Abfahrten ebenso (intern und nicht sichtbar) als 0.0, 0.5 und 1.0 kodiert. Die Anzahl der Kinder z. B. wird aufsteigend von 0 bis 9 angezeigt und intern in die Zahlen 0.0, 0.1, 0.2 usw. umgewandelt.

Datensatzgröße

Die meisten auf diesen Seiten verwendeten Beispiele nutzen sehr kleine, überschaubare Datensätze, da es primär um Minibeispiele zur Demonstration gehen soll. Wenn Datensätze klein sind und kaum mehr Daten als Neuronen vorhanden sind, kann es jedoch passieren, dass neuronale Netze die Daten quasi einfach auswendig lernen. Reale Datensätze sollten daher selbstverständlich um Größenordnungen mehr Daten enthalten als Neuronen.

Zum Beispiel verwendet das Einstiegsbeispiel ein neuronales Netz mit 14 Neuronen und insgesamt 118 trainierbaren Gewichten und Schwellwerten. Die Trainingsdaten enthalten jedoch 1300 x 8 = 10400 Zahlen, mit denen das neuronale Netz trainiert wird. Diese Relation zueinander zeigt relativ sicher, dass das Netz am Ende des Trainings nicht alle Daten auswendig gelernt hat, sondern gut generalisieren kann (also allgemein die richtigen Tendenzen in den Daten gut herausgelesen hat).

Unterschied zum Algorithmus

Beim Erlernen einer Programmiersprache lernt man: Für die Güte eines Algorithmus ist man beim Programmieren selbst verantwortlich. Soll z. B. eine Funktion f programmiert werden, die für eine Eingabe x die Ausgabe y liefert, so wird man ganz exakt programmieren müssen, wie genau die Ausgabe aus der Eingabe berechnet wird, und man muss dafür sorgen, dass diese auch immer identisch ist.

Darstellung einer Funktion

Algorithmengetrieben

 

Bei neuronalen Netzen ist dies anders. Um bei dem obigen Beispiel zu bleiben, stellt man zunächst das untrainierte neuronale Netz als quasi leere Funktion f zur Verfügung. Das Wissen darum, wie aus der Eingabe x die Ausgabe y wird, erlangt das Netz nur durch das Trainieren der Kombinationspaare aus Eingabedaten (x) und Ausgabedaten (y). Nur über die Daten wird die Funktion des Netzes hergestellt, indem der Zusammenhang zwischen x und y zunehmend in den Gewichten und Schwellwerten des Netzes gespeichert wird. Die Güte der verwendeten Daten hat daher auch großen Einfluss auf die Güte des Netzes.

Darstellung einer Funktion

Datengetrieben

Training, Validierung und Test

Das Einstiegsbeispiel verwendet einen Trainingsdatensatz, der aus 1300 Zeilen mit je 8 Werten besteht – so wurde es zur Vereinfachung beim Einstieg in das Thema erwähnt. Tatsächlich wurde der Datensatz aber in zwei Teile aufgeteilt. Von den 1300 Mustern wurden 900 Muster ausgewählt, mit denen das Netz trainiert wurde, während die übrigen 400 Muster gar nicht für das Training genutzt wurden. Stattdessen wurden diese 400 Muster im Anschluss an das Training zum Testen des Netzes verwendet. Da man ja weiß, zu welcher Klasse (überlebt, nicht überlebt) jedes Muster der Testdaten gehört, kann man jedes einzelne Muster nun durch das neuronale Netz schicken und jeweils prüfen, ob die gewünschte Ausgabe des neuronalen Netzes mit der tatsächlichen Ausgabe übereinstimmt (oder nicht). Der prozentuale Anteil der korrekten Übereinstimmungen (dies waren 321 von 400) entspricht genau den 80 Prozent der Daten, die das neuronale Netz korrekt vorhersagt – und das, obwohl es die Testdaten ja nie zuvor gesehen hat. Mit solch einer Vorgehensweise kann man also sicherstellen, dass das neuronale Netz die Trainingsdaten nicht doch irgendwie nur auswendig gelernt hat.

Oftmals wird sogar noch ein zweiter Testdatensatz gewählt, den man Validierung nennt. Hierfür teilt man den Gesamtdatensatz z. B. im Verhältnis 60:20:20 auf. Während des Trainings verwendet man bereits diesen Validierungs-Testdatensatz, um regelmäßig zu überprüfen, wie gut das Netz bereits mit unbekannten Daten umgehen kann. Wenn die Erkennungsrate der unbekannten Daten wieder schlechter wird, kann man rechtzeitig aufhören, da sonst das neuronale Netz anfängt, die Trainingsdaten auswendig zu lernen, was man Übertraining nennt. Neben dieser gibt es noch zahlreiche andere Taktiken, neuronale Netze vor falsch laufendem Training zu bewahren. 

Klassifikation

Der Sinn des neuronalen Netzes im Einstiegsbeispiel war es, anhand von Daten eine Aussage zu treffen, in welche der zwei Gruppen (Klassen) die eingegebenen Daten fallen (überlebt/nicht überlebt). Solch eine Zuordnung (z. B. gesund/krank, jung/alt), aber auch im Bereich der Bilderkennung eine Aussage wie Elefant, Zebra, Haus, Fahrrad nennt man Klassifikation. Zumeist wählt man pro Klasse ein Ausgabeneuron, das die gewünschte Ausgabe 1 liefern soll. Bei wenigen Klassen kann man auch mit nur einem einzigen Ausgabeneuron auskommen, bei dem der Wert des Ausgabeneurons für die Klasse steht (z. B. 0 = überlebt, 1 = nicht überlebt). Füttert man neuronale Netze hingegen mit den Daten von z. B. Börsenkursen und möchte damit Vorhersagen für die Zukunft treffen, handelt es sich jedoch nicht um eine Klassifikation, da es hier ja nicht um das Erkennen einer Gruppenzugehörigkeit geht, sondern um eine Vorhersage, wie die Kurve wohl weitergeht. Das nennt man Regression

Bias

Auch wenn in den Entwurf eines neuronalen Netzes noch so viel Mühe gesteckt wird, kann es trotzdem zu Problemen und zu gravierendem Fehlverhalten des Netzes kommen. Es gibt sogar Blogs im Internet, in denen ausschließlich kuriose Geschichten rund um fehlgeschlagene neuronale Netze bzw. KI-Systeme gesammelt werden. Häufig sind auch Fehler im Datensatz dafür verantwortlich, dass neuronale Netze nicht so funktionieren, wie sie sollten – da (wie oben erwähnt) die Güte eines Netzes maßgeblich von der Güte des Datensatzes abhängt, mit dem es trainiert wird. Probleme, die in den Daten stecken, werden dabei etwas verwirrend als Bias bezeichnet (was im Englischen auch den Schwellwert bezeichnen kann). Wenn z. B. bestimmte Gruppen im Datensatz überrepräsentiert oder unterrepräsentiert sind, kann dies zu Verzerrungen führen. Daten können kulturelle Vorurteile widerspiegeln: Beispielsweise führen historische Ungleichheiten oder Stereotypen möglicherweise dazu, dass bestimmte Bevölkerungsgruppen in den Daten benachteiligt oder unterrepräsentiert sind. Auch kann es sein, dass bestimmte Merkmale oder Aspekte aufgrund von Fehlern bei der Datenerfassung nicht korrekt erfasst wurden. Diese und weitere Formen von Verzerrungen im Datensatz gilt es zu vermeiden. 

Interpretation

Ein künstliches neuronales Netz ist ein mathematisch-statistisches Programm. Es ist kein Gehirn und kann nicht denken oder planen. Es verfolgt auch keine Absichten und kann nicht selbstständig dazulernen. Das neuronale Netz lernt nur während des Trainings aus den zur Verfügung stehenden Daten. Danach kann es benutzt werden, um z. B. Testdaten oder neue Daten zu klassifizieren. Der Vergleich mit dem menschlichen Gehirn ist wie der Vergleich eines Papierfliegers mit einem Vogel[1]: Beide können fliegen und haben ähnliche Konstruktionsprinzipien, die Unterschiede sind jedoch eklatant. In vielen Situationen ist es sogar sinnvoller, einen gut durchdachten Algorithmus einzusetzen, statt ein neuronales Netz zu verwenden – auch wenn dies immer populärer wird. 

Schliesse Suche