Beliebte Suchanfragen

Cloud Native

DevOps

IT-Security

Agile Methoden

Java

//

Wie trainiert man eigentlich neuronale Netze?

27.8.2018 | 8 Minuten Lesezeit

Neuronale Netze sind für Außenstehende häufig von einer mystischen Aura umgeben. Sie werden regelmäßig in Verbindung mit menschlichen Gehirnen gebracht, und ihnen wird eine sich verselbständigende Intelligenz zugeschrieben. Das macht sie für viele mysteriös und suspekt. Um ein wenig zur Entmystifizierung beizutragen, widmen wir uns in diesem Blogpost den grundlegenden Prinzipien, auf denen der Trainingsprozess eines neuronalen Netzes beruht. Der Post richtet sich insbesondere an interessierte Personen mit wenig Vorwissen, und wir werden daher auf alle mathematische Details verzichten.

Im Folgenden präzisieren wir zunächst die Ausgangssituation. Dann lernen wir die Feedback-Schleife kennen, welche das Herzstück des Trainings darstellt. Im Anschluss betrachten wir die grundsätzlichen Fragen, die ein Algorithmus zum Trainieren eines neuronales Netzes beantworten sollte. Abschließend beschäftigen wir uns damit, wie das Training mit einer großen Anzahl an Daten funktionieren kann und wann das Training eines neuronalen Netzes eigentlich abgeschlossen ist.

Die Ausgangssituation

Um die Komplexität überschaubar zu halten, betrachten wir das neuronale Netz schlicht als eine Black Box mit einer Anzahl verschiedener Regler. Unsere Black Box „Neuronales Netz“ (BB-NN) verfügt über die Fähigkeit, Aussagen über einen bestimmten Sachverhalt zu treffen. In unserer Vorstellung können wir an den Reglern drehen und dadurch die Aussagen der BB-NN beeinflussen. In der Sprache der neuronalen Netze entsprechen die Regler der BB-NN den Gewichten des Netzwerks

Konkret stellen wir uns dabei folgende Situation vor: Wir zeigen unserer BB-NN ein Bild von einer Person und erhalten von ihr eine Aussage darüber, ob die abgebildete Person eine Brille trägt oder nicht. Hierbei ist wichtig festzuhalten, dass diese Aussage natürlich richtig oder falsch sein kann. Zu Beginn weiß unsere BB-NN noch nichts darüber, was wir eigentlich von ihr haben wollen, und sie wird mit hoher Wahrscheinlichkeit jede Menge falsche Aussagen treffen.

Unter Trainieren verstehen wir in unserem Kontext nun, die Regler unserer BB-NN so einzustellen, dass sie möglichst viele richtige Aussagen macht. Also möglichst häufig erkennt, ob die Person im Bild eine Brille trägt oder nicht. Wir gehen im Folgenden davon aus, dass wir eine große Anzahl an geeigneten Bildern besitzen, die wir unserer BB-NN zeigen und dabei anschließend überprüfen können, ob die von ihr getroffene Aussage — „trägt Brille“ oder „trägt keine Brille“ — korrekt ist. In der Praxis bedeutet dies, dass wir zum Trainieren eines neuronalen Netzes üblicherweise eine große Menge gelabelter Daten benötigen.

Die Feedback-Schleife

Der Hauptmechanismus zum Trainieren unserer BB-NN kann durch die Feedback-Schleife

visualisiert werden. Die grundlegende Idee hierbei ist, dass wir unserer BB-NN die Bilder zeigen und uns deren Aussagen zu den einzelnen Bildern notieren. Anschließend überprüfen wir die Korrektheit aller so erhaltener Aussagen. Im nächsten Schritt drehen wir an den Reglern unserer BB-NN mit dem Ziel, eine größere Anzahl korrekter Aussagen zu erhalten. Danach wiederholen wir diesen Vorgang. Dabei hoffen wir, dass wir die Regler nach und nach so einstellen können, dass wir mehr und mehr korrekte Aussagen von unserer BB-NN erhalten. In der Sprache der neuronalen Netze wird ein einzelner Durchlauf durch die Feedback-Schleife häufig als eine Epoche bezeichnet. Je größer also die Anzahl der Epochen eines neuronalen Netzes ist, desto länger wurde es trainiert.

Trainingsalgorithmen

Natürlich ist man in der Praxis nicht selbst damit beschäftigt, die Feinjustierung der verschiedenen Regler eines neuronales Netzes von Hand durchzuführen. Hierfür gibt es eine Vielzahl von Algorithmen, welche diese Aufgabe für uns übernehmen und zum Trainieren neuronaler Netze eingesetzt werden. Dabei bildet die Feedback-Schleife typischerweise das Fundament dieser Algorithmen. Die entscheidende Frage an dieser Stelle ist natürlich: Wie sollen die Regler eigentlich neu eingestellt werden? Oder allgemeiner: Wie soll das Update durchgeführt werden?

Aus der Vogelperspektive betrachtet, sollte ein Algorithmus zum Trainieren unserer BB-NN also mindestens eine Aussage über zwei Dinge liefern:

  • In welche Richtung müssen die Regler gedreht werden?
  • Wie weit müssen die Regler gedreht werden?

Die erschöpfende Antwort auf die erste Frage findet sich in der Mathematik — genauer in der Lösungstheorie von Optimierungsproblemen. An dieser Stelle halten wir aber einfach nur fest, dass es grundsätzlich möglich ist, eine mathematisch fundierte Aussage darüber zu treffen, in welche Richtung die Regler gedreht werden sollten.

(Interessierte Leser/innen sind eingeladen, sich als Einstieg in die zugrundeliegende Mathematik mit dem Gradientenverfahren auseinander zu setzen.)

Damit bleibt die Frage, wie weit wir die Regler drehen sollen. In der Sprache der neuronalen Netze entspricht “wie weit drehen” der sogenannten Learning Rate. Generell ist es dabei schwierig von DER Learning Rate zu sprechen, da bei der Auswahl der Learning Rate unter anderem auch folgende Fragen relevant sind:

  • Sollte man am Anfang einen fixen Wert wählen; also die Regler in jeder Epoche gleich weit drehen, oder ist es besser, die Rate im Laufe des Trainings anzupassen?
  • Sollte man einen Wert festlegen, der für alle Regler gilt, oder ist es sinnvoller, verschiedene Werte für unterschiedliche Regler zu verwenden?

Alle diese Fragen sind Gegenstand aktueller Forschung in diesem Fachbereich und können daher nicht pauschal beantwortet werden. Verschiedene Algorithmen verwenden hier unterschiedliche Strategien. Dabei ist ein zentrales Ziel aller Algorithmen, stets die Geschwindigkeit des Lernvorgangs zu erhöhen.

Große Datenmengen

Die Feedback-Schleife liefert uns eine erste gute Vorstellung davon, wie das Training eines neuronales Netzes funktioniert. In der Praxis werden neuronale Netze normalerweise mit einer sehr großen Anzahl an Daten trainiert. Dies hat zur Folge, dass ein Durchlauf durch die Feedback-Schleife mit dem gesamten Datensatz sehr teuer, d.h. sehr rechenaufwändig werden kann. Dies ist ein Grund, aus dem viele Algorithmen bei jedem einzelnen Durchlauf durch die Feedback-Schleife lediglich einen Teil der Daten, eine sogenannte Batch, verwenden. Dabei wird die Batch in jeder Epoche neu per Zufall aus den Daten zusammengestellt.

Die Feinjustierung des neuronalen Netzes basiert also in jeder Epoche lediglich auf einem Teil der Daten. Jedoch wird das neuronale Netz im Laufe des Trainings nach und nach immer wieder mit den gesamten Daten konfrontiert. Algorithmen, die diesen Mechanismus verwenden, erkennt man typischerweise an dem Zusatz stochastic.

Genug trainiert

An dieser Stelle lehnen wir uns kurz zurück, um darüber nachzudenken, was das Ziel des Trainings unserer BB-NN eigentlich ist: Wir wollen von unserer BB-NN am Ende eine möglichst korrekte Aussage über unbekannte Bilder bekommen. Also solche Bilder, die im Lernprozess keine Rolle gespielt haben. Überspitzt formuliert: Es ist uns ziemlich egal, wie genau unsere BB-NN die Bilder während des Trainings zuordnen kann. Wir wollen wissen, wie gut sie neue Bilder einordnen kann.

In einem Extremfall könnte unsere BB-NN während des Trainings einfach alle Bilder auswendig gelernt haben — und damit immer perfekt zuordnen. Eine Konsequenz aus der Spezialisierung eines neuronalen Netzes auf die Daten aus dem Training ist häufig, dass es anschließend Schwierigkeiten hat, mit unbekannten Daten umzugehen. Die Gefahr des Auswendiglernens während des Trainings wird in der Sprache der neuronalen Netze als Overfitting bezeichnet. Es stellt sich also die Frage, ob und wie man während des Trainings beobachten kann, ob das neuronale Netz einfach auswendig lernt.

Aufteilung des Datensatzes

Typischerweise wird aus diesem Grund ein Teil der vorhandenen Daten vor dem Lernprozess zur Seite gelegt und nicht beim Training berücksichtigt. Man spricht hierbei vom training dataset und validation dataset. Die Feedback-Schleife wird nun lediglich mithilfe der Daten des training dataset durchgeführt. Nach wie vor überprüfen wir dabei, wie gut das neuronale Netz diese vorhersagen kann. Verbessern sich diese Vorhersagen im Verlauf des Trainings, ist dies zunächst ein guter Indikator dafür, dass das Training funktioniert. Zusätzlich zum Abschneiden auf dem training dataset überprüfen wir aber außerdem noch, wie gut das neuronale Netz das validation dataset vorhersagen kann.

In unserem Beispiel würden wir demnach vor dem Training einen Teil der Bilder zur Seite legen. Beim Durchlaufen der Feedback-Schleife würden wir unsere BB-NN auch dazu nutzen, Aussagen über die beiseite gelegten Bilder zu treffen. Diese Bilder dürfen keinen direkten Einfluss darauf haben, wie die Regler in der Update-Phase neu justiert werden. Die Feinjustierung des neuronalen Netzes muss ausschließlich auf Basis der Trainingsdaten stattfinden.

Als Daumenregel kann man nun formulieren: Beende das Training, wenn das neuronale Netz beginnt, bessere Vorhersagen über das training dataset zu machen als über das validation dataset. Hinter diesem Abbruchkriterium steckt die Idee, das Training genau dann zu beenden, wenn das neuronale Netz anfängt, die Daten des training datasets auswendig zu lernen und dadurch schlicht zu verhindern, dass es sich auf das training dataset spezialisiert.

In der Praxis ist es üblich, neben dem validation dataset noch ein test dataset zu verwenden. Auch dieser Datensatz wird vor Beginn des Trainings abgespalten und zur Seite gelegt. Die Daten des test datasets werden nach Abschluss des Trainings lediglich einmal dazu benutzt, herauszufinden wie gut das fertig trainierte neuronale Netz auf ungesehenen Daten funktioniert. Für diese Daten gilt: Sie dürfen keinerlei Einfluss auf den gesamten Trainingsprozess des Netzes haben. Insbesondere dürfen sie auch nicht für das Abbruchkriterium des Trainings verwendet werden.

Fazit

In diesem Blogpost haben wir uns mit der Frage auseinandergesetzt, wie man ein neuronales Netz trainiert. Dazu haben wir die Feedback-Schleife kennengelernt, welche typischerweise dem Training zugrunde liegt. Wir haben uns Gedanken darüber gemacht, welche Antworten ein Algorithmus zum Training eines neuronalen Netzes liefern muss. Abschließend haben wir uns dem Thema Overfitting gewidmet und ein Abbruchkriterium für die Feedback-Schleife und damit des Trainings kennengelernt.

Ich hoffe, euch hat der kurze Ausflug in die Welt der neuronalen Netze gefallen. Wenn ihr mehr zum Thema künstliche Intelligenz erfahren möchtet, einfach hier klicken.

Ihr habt Fragen zum Blogpost? Dann schreibt mir doch einfach einen Kommentar oder eine Mail.

Beitrag teilen

Gefällt mir

7

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

Gemeinsam bessere Projekte umsetzen.

Wir helfen deinem Unternehmen.

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.