Interview mit Prof. Dr. Kai Uwe Barthel über Data Science mit Deep Learning
Data Scientists sollten die Grundlagen lernen
Contents
Data Science Blog: Was hat sich denn seitens der Algorithmen getan? Es heißt, dass die Backpropagation als Lernmethodik der große Clou bei neuronalen Netzen sei?
Backpropagation ist ein Lernverfahren für neuronale Netze, mit dem sich Aufgaben lösen lassen, bei denen die, zu den Eingangsdaten gehörigen/gewünschten Ergebnisse bekannt sind (supervised learning). Nach jedem Durchlauf der Daten durch das Netzwerk (Forward-Pass) gibt es einen Fehler im Endergebnis. Das Backpropagation-Verfahren arbeitet auf Basis der Gradientenabstiegsmethode und passt sukzessive die Netzwerkgewichte so an, dass der Fehler kleiner wird.
Eigentlich ist das Backpropagation-Verfahren ist schon recht lange bekannt. Neben der Beschleunigung der Computer und der Verfügbarkeit geeigneter Trainingsdaten, gab es jedoch erst in den letzten Jahren die notwendigen algorithmischen Fortschritte, mit denen es möglich wurde, auch extrem großen Netzwerke erfolgreich zu trainieren. Hier sind die Convolutional Netzwerke zu nennen, die insbesondere das Verstehen von Bildern (aber auch andere hochkomplexe Problemstellungen) erst möglich machten. Convolutional Netzwerke verwenden nicht für jeden Pixel ein individuelles Gewicht. Vielmehr wird ein Satz von zu erlernenden Filtern mit verhältnismäßig wenig Parametern/Gewichten verwendet. Jede Filterung erzeugt ein neues Bild, Pooling-Verfahren reduzieren die Auflösung dieser neu erzeugten Bilder, indem nur besonders aktive Neuronen beibehalten werden. Durch diese beiden Maßnahmen lässt sich die Zahl der Netzwerkgewichte gegenüber vollvernetzten Netzwerken deutlich reduzieren und ein erfolgreiches Netzwerktraining auch mit begrenzten Mengen an Beispieldaten erzielen.
Data Science Blog: Wie kann man sich denn vorstellen, wie so ein künstliches neuronales Netz funktioniert?
Die Grundidee ist an die biologischen Arbeitsweise im Gehirn angelehnt. Schichten von Neuronen erkennen bestimmte Muster. Auf den ersten Schichten sind dies zunächst einfache Strukturen wie Ecken, Kanten oder Farbübergänge. Die Neuronen führen also eine Funktion/Filterung aus, die jeden Eingabewert mit einer bestimmten Gewichtung multipliziert und diese Teilergebnisse aufsummiert. Eine nicht-lineare Funktion erzeugt hieraus einen Aktivierungswert, den Output, der angibt, ob ein entsprechendes Muster vorliegt. Dieser Output ist dann wiederum der Input für die nächste Netzwerkschicht ist. In den nächsten Schichten werden die einfachen Strukturen dann zu komplizierteren Mustern zusammengesetzt. Viele Linien aus unterschiedlichen Teilmustern ergeben beispielsweise Gitter, zwei senkrechte Linien ein Kreuz, usw. Letztlich lernen die Netzwerke aus allen möglichen Konstellationen der Eingangsdaten diejenigen Kombinationen, die in realen Daten/Bildern auftreten. Auf den letzten Schichten werden dann komplexere Muster erkannt, etwa mehrere Kreise und Konturlinien, die in einer bestimmten Anordnung beispielsweise ein menschliches Gesicht darstellen. Soll das künstliche neuronale Netz dieses Muster erkennen können, rechnen wir über die Backpropagation die Gewichtungen aus, die anhand der Beispielbilder – manche zeigen ein menschliches Gesicht, andere nicht – den kleinstmöglichen Klassifizierungsfehler erzeugen. Es wird beim Trainieren eines neuronalen Netzes also eine Funktion ermittelt, die den Input (die Bilddaten) auf den entsprechend Output (die korrekte Kategorie des Bildes) abbildet.
Data Science Blog: Was würden Sie Data Scientists raten, die in Deep Learning einsteigen möchten? Wie bewältigt man den Einstieg?
Ich würde nicht direkt ins Deep Learning einsteigen, sondern sicher erstmal versuchen, mich mit allgemeinen Methoden des maschinellen Lernens vertraut zu machen. Hierzu gehören Techniken wie das Clustering oder lineare/logistische Regression. Ich denke, dass jeder, der in diesen Bereich einsteigen will, wirklich einmal selber ein einfachstes Netzwerk (z.B. XOR und darüber hinaus) per Hand programmiert haben sollte. Hierfür können Tools wie MATLAB oder Octave verwendet werden. Erst im Anschluss, wenn man grundlegenden Kenntnisse erlangt hat, können Frameworks wie z.B. TensorFlow verwendet werden, was den Vorteil hat, dass einem die Bestimmung der mathematischen Ableitungen der Netzwerkstrukturen abgenommen wird. Dann lassen sich auch bestehende Lösungen besser nachvollziehen bzw. anpassen, um das Rad für den produktiven Lauf nicht noch einmal neuerfinden zu müssen, sondern die gewünschten Implementierungen ohne Umwege direkt angehen zu können.
Leave a Reply
Want to join the discussion?Feel free to contribute!