Leseprobe
INHALTSVERZEICHNIS
1 Einführung
2 grundlegende begriffe
2.1 Aufbau eines CNNs
2.2 Begrifflichkeiten zum Trainingsprozess
3 verwandte arbeiten
4 bestehende konzepte
4.1 InstanceFlow
4.2 DeepEyes
4.3 DeepTracker
5 vergleichende analyse
5.1 Kriterien
5.2 Analyse
5.3 Diskussion
6 Zusammenfassung und Ausblick
Literatur
ZUSAMMENFASSUNG
Convolutional Neural Networks (CNNs) werden in vielen Bereichen der Industrie eingesetzt. Das Training von neuronalen Netzen beansprucht viel Zeit und Computerressourcen. Zur Beschleunigung des Trainingsprozesses müssen Experten verstehen, welche Faktoren zu einer Verbesserung des CNNs führen. In diesem Zusammenhang untersucht diese Studie inwieweit Visualisierungen beim Trainingsprozess eines CNNs unterstützen können. Im Rahmen der Studie werden drei Visualisierungssysteme zur Unterstützung des Trainingsprozesses vorgestellt. Diese Visualisierungssysteme werden in einer Analyse anhand von Kriterien verglichen. Abschließend diskutiert diese Arbeit die Ergebnisse der Analyse indem mögliche Einsatzzwecke der einzelnen Visualisierungen herausgearbeitet werden. Im Ergebnis hat sich gezeigt, dass es im wissenschaftlichen Kontext bereits vielversprechende Visualisierungssysteme zur Unterstützung während des Trainingsprozesses gibt, allerdings ist eine intensive Einarbeitung notwendig bevor ein Nutzen für Experten entsteht.
ABBILDUNGSVERZEICHNIS
Abbildung 2.1 Aufbau eines CNNs (in Anlehnung an [Pati9])
Abbildung 4.1 Überblick: InstanceFlow [PHS20]
Abbildung 4.2 InstanceFlow: Flow View im Detail [PHS20]
Abbildung 4.3 InstanceFlow: Tabular View im Detail [PHS20]
Abbildung 4.4 Überblick: DeepEyes [Pez+17]
Abbildung 4.5 Würfelstil: DeepTracker [Liu+18]
Abbildung 4.6 Validation View: DeepTracker [Liu+18]
Abbildung 4.7 Layer View: DeepTracker [Liu+18]
Abbildung 4.8 Corr. View: DeepTracker [Liu+18]
Abbildung 5.1 Analysekriterien und Methodologie: Eine Studie aktueller Ansätze
EINFÜHRUNG
Seit einigen Jahren werden Convolutional Neural Networks in der Industrie eingesetzt. In der Automobilindustrie werden CNNs beispielsweise für selbst fahrende Fahrzeuge verwendet [Mun+18]. Die Flexibilität und der Umgang mit komplexen Problemen machen CNNs für die Industrie so interessant. Die Motivation für diese Arbeit ist eine Analyse aktueller Ansätze zur Visualisierung des Trainingsprozesses eines CNNs. Ein Trainingsversuch kann bei tiefen CNNs sehr lange dauern, deshalb ist es wichtig, dass die Experten den Trainingsprozess verstehen, um bei weiteren Trainingsversuchen entsprechende Anpassungen treffen zu können. Ein neueres Paradigma, genannt Progressive Visual Analytics, zielt darauf ab, die Interaktion mit komplexen Machine Learning Algorithmen zu verbessern (vgl. [FPi6], [Pez+16], [SPG 14]). In diesem Zusammenhang bekommen Entwickler Visualisierungen der Zwischenergebnisse zur Verfügung gestellt, um das Training des Netzes besser zu verstehen. Durch die Komplexität großer neuronaler Netze müssen die Daten aggregiert werden, damit sinnvolle Visualisierungen möglich sind. Populäre Trainingsplattformen wie z.B. Tensorflow liefern während des Trainingsprozesses allerdings nur wenige Informationen, wie z.B. Trainings-/ Validierungsfehler. Diese Informationen reichen nicht aus, um den Trainingsprozess effizienter und schneller zu gestalten. In diesem Zusammenhang wäre ein Visualisierungssystem wünschenswert, damit ein Entwickler während des Trainingsprozesses anschauliche Visualisierungen zur Verbesserung des Netzes erhält. Die meisten Ansätze zur Visualisierung des Trainingsprozesses beziehen sich auf die Merkmale (engl. features), welche während des Trainings erlernt werden. Im Weiteren haben sich nur wenige Arbeiten mit der gesamten Trainingsdynamik auseinandergesetzt. Hieraus ergeben sich zwei Herausforderungen. Erstens besteht der Trainingsprozess aus mehreren Iterationen, hierbei müssen die Parameter sowie die Klassifikationsergebnisse abgespeichert werden. Zweitens enthält ein Trainingsprozess mehrere heterogene Informationen. Neben der Struktur des neuronalen Netzes, gibt es die numerischen Gewichte und die Bilddatensätze. Diese Daten enthalten wichtige Informationen, wodurch die Entwickler bei der Konzeption eines CNNs wertvolle Erkenntnisse erhalten. Aus diesen Herausforderungen wurden folgende Forschungsfragen abgeleitet:
- (RQi) Welche aktuellen Ansätze gibt es zur Visualisierung des Trainingsprozesses eines neuronalen Netzes?
- (RQ2) Wie können Visualisierungen im Trainingsprozess von CNNs zur Verbesserung des Netzes beitragen?
Diese Studie zeigt Visualisierungsansätze für den Trainingsprozess eines CNNs auf. Zunächst wird der Ansatz mit dem Namen InstanceFlow von
Pühringer u. a. [PHS20] analysiert. Anschließend wird das Visualisierungssystem DeepEyes von Pezzotti u. a. [Pez+17] untersucht. Außerdem wird das Visualisierungssystem DeepTracker von Liu u.a. [Liu+18] analysiert, da dieser Ansatz eine neuartige Visualisierung im Würfelsystem eingeführt hat. Als Ergebnis hat sich gezeigt, dass Visualisierungen beim Trainingsprozess als unterstützendes Element hilfreich sind. Die Arbeit beschäftigt sich zunächst mit den grundlegenden Begrifflichkeiten eines CNNs, um ein einheitliches Verständnis hinsichtlich der Begriffe zu vermitteln. Anschließend werden die drei Visualisierungssysteme vorgestellt und schließlich durch eine vergleichende Analyse anhand ausgewählter Kriterien untersucht. In einer anschließenden Diskussion werden die Ergebnisse der Analyse in Bezug auf die Forschungsfragen diskutiert.
2 GRUNDLEGENDE BEGRIFFE
2.i aufbau eines cnns
Ein Convolutional Neural Network gehört zu den Deep Learning Methoden und wird hauptsächlich für die maschinelle Verarbeitung von Bild-, Video- und Audiodateien verwendet (vgl. [SS20]). In diesem Zusammenhang spricht man von tiefen neuronalen Netzen. Außerdem sind CNNs dem Teilgebiet des Überwachten Lernens (engl. supervised learning) zu zuordnen. Die Abbildung 2.1 veranschaulicht den typischen Aufbau eines CNNs. Ein CNN enthält mehrere Schichten (engl. layer), wobei die Eingabe-Bilder
Anmerkung der Redaktion: Diese Abbildung wurde aus urheberrechtlichen Gründen entfernt.
Abbildung 2.1: Aufbau eines CNNs (in Anlehnung an [Pati9])
durch diese Schichten transformiert werden. In diesem Zusammenhang enthält eine typische CNN-Architektur Convolutional Layer (Conv-Layer), Pooling Layer (Pool-Layer) und Fully-connected Layer (FC-Layer). Der Weg der Eingabedaten durch das CNN erfolgt von der Eingabeschicht bis zur Ausgabeschicht und wird als Feedforward bezeichnet. Zunächst durchläuft ein Bild einen Conv-Layer, der mehrere Faltungsoperationen auf das Bild anwendet. In der Abbildung 2.1 werden im ersten Conv-Layer 32 Faltungskerne auf die Bilder angewendet. Anschließend normalisiert eine Aktivierungsfunktion die Eingangssignale. Bei CNNs ist die ReLu-Aktivierungs- funktion geeignet. Die Abkürzung steht für rectified linear unit und ist definiert als fReLU(c) = max (0,c) [SS20]. Im nächsten Schritt wird auf dem ersten Pool-Layer ein Max-Pooling angewendet. Ein Pool-Layer befindet sich in der Regel zwischen zwei Conv-Layer, um die Größe der Bilder durch eine Downsampling-Operation zu reduzieren. Hierdurch wird die Menge an Modellparametern und die Anzahl der Berechnungen reduziert [Sta]. Durch das Max-Pooling sind CNNs relativ translations- und skalierungsinvariant. Im letzten Schritt durchlaufen die Daten ein Fully-connected Neural Network mit einem Klassifikator (z.B. Softmax). In diesem Beispiel findet eine Klassifikation von handgeschriebenen Zahlen statt.
2.2 begrifflichkeiten zum Trainingsprozess
Dieser Abschnitt legt die zentrale Begrifflichkeiten (kursiv markiert) des Trainingsprozesses dar, die für den weiteren Verlauf der Arbeit wichtig für das Verständnis sind. Beim Training eines CNNs werden die Bilddaten zunächst in kleine Pakete, die sogenannten Batches, unterteilt. Des Weiteren werden die Gewichte in den Faltungsschichten zufällig initialisiert. Das CNN berechnet schließlich für jedes Bild eines Batches ein Klassifikationsergebnis. Die berechneten Ergebniswerte am Ausgang des Netzes besitzen einen Fehler im Vergleich zu den wahren Ergebniswerten. Die Rückführung der Fehler nennt man Backpropagation, wobei hierbei die Fehler pro Knoten berechnet werden. Abschließend wird das Gradientenabstiegsverfahrens zur Minimierung der Fehlerterme eingesetzt. Wenn die Minimierung der Fehlerterme für die gemittelten Fehler aus einem Batch durchgeführt wird, spricht man von einem Mini-Batch-Gradientenabstiegsverfahren [NSi8]. In diesem Zusammenhang werden auch die Gewichte in den Faltungskernen aktualisiert. Nachdem alle Batches abgearbeitet sind, ist eine sogenannte Epoche abgeschlossen. Nach jeder Epoche werden die Bilder neu gemischt. Anschließend beginnt ein weiterer Trainingsprozess. Dieses Vorgehen wird solange wiederholt bis der Entwickler mit dem Ergebnis des CNNs zufrieden ist.
3. VERWANDTE ARBEITEN
Im wissenschaftlichen Kontext gibt es einige Studien, die sich mit der Visualisierung von neuronalen Netzen während des Trainingsprozesses beschäftigt haben. Grundsätzlich unterteilen sich die Ansätze in feature-orientiert oder evolutions-orientiert. Bei den Feature-orientierten Ansätzen wird untersucht wie sich ein CNN auf ein bestimmtes Eingabebild verhält. Evolutionsorientierte Ansätze konzentrieren sich auf die komplette Dynamik des Trainingsprozesses. Ein Vergleich unterschiedlicher Visualisierungsmethoden haben die Autoren Hohman u.a. in ihrer Arbeit [Hoh+18] durchgeführt. Die Autoren Hohman u. a. präsentieren in ihrer Arbeit eine Übersicht über die Rolle der Visual Analytics in der Deep Learning Forschung, wobei das ganze Themenspektrum von Deep Learning miteinbezogen wird. Die Autoren Qin u. a. veranschaulichen in ihrer Arbeit [Qin+i8] unterschiedliche Visualisierungsmöglichkeiten in Bezug auf CNNs. Hierbei haben die Autoren den Fokus auf die feature-orientierten Ansätze gelegt.
Die Arbeit von Hohman u.a. dient dazu sich einen allgemeinen Überblick über die vorhandenen Visualisierungsmöglichkeiten in Bezug auf Deep Learning Verfahren zu verschaffen. Die Arbeit von Qin u. a. vergleicht hingegen unterschiedliche Methoden der Visualisierung eines CNNs aus featureorientierter Perspektive. Diese Arbeit grenzt sich von den bisherigen Studien ab, weil diese Arbeit den Fokus auf evolutions-orientierte Ansätze zur Visualisierung des Trainingsprozesses eines CNNs legt. In diesem Zusammenhang werden drei vielversprechende Visualisierungssysteme analysiert und deren Einsatzmöglichkeiten diskutiert.
4. BESTEHENDE KONZEPTE
Zunächst wird der Ansatz InstanceFlow von Pühringer u. a. aus dem Jahr 2020 [PHS20] vorgestellt. Schließlich wird auf DeepEyes von Pezzotti u. a. aus dem Jahr 2018 [Pez+17] eingegangen, welches die Identifikation von Problemen (z.B. überflüssige Schichten) erleichtert. Als letzter Ansatz erfolgt die Betrachtung von DeepTracker der Autoren Liu u.a. aus dem Jahr 2018 [Liu+18], da dieses System für den Industrieeinsatz entwickelt wurde. Die zentralen Konzepte der einzelnen Systeme sind kursiv hervorgehoben.
4.1 instanceflow
InstanceFlow ist ein Dual-View Visualisierungstool, dass die Analyse des Lernverhaltens eines neuronalen Netzes ermöglicht. Es richtet sich an Modellentwickler, die einen Überblick zum Trainingsprozess eines Deep Learning Netzes haben möchten. Die Abbildung 4.1 zeigt die beiden Ansichten Flow-View (A) und Tabular-View (B, C) überblicksartig. Für die Erläuterungen von InstanceFlow werden die Abbildungen 4.2 und 4.3 herangezogen. Zunächst wird auf die Flow-View Darstellung eingegangen. Die Flow-View vi-
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 4.1: Überblick: InstanceFlow [PHS20]
sualisiert durch ein Sankey-Diagramm1 den Fluss der Instanzen farblich über die Epochen hinweg, wodurch Klassenwechsler zwischen den unterschiedlichen Epochen identifiziert werden können. Die Instanzen sind in diesem Kontext die einzelnen Bilder. In der Abbildung 4.2 (oben links) ist dieser Datenfluss zu sehen, wobei die x-Achse die Epochen und die y-Achse die Klassen angibt. Die einzelnen Klassen haben unterschiedliche Farben. Je breiter ein Fluss ist, desto mehr Instanzen wechseln die Klassen während des Trainingsprozesses. Der Entwickler kann bestimmte Klassen auswählen, die schließlich im Sankey-Diagramm angezeigt werden. Alle nicht ausgewählten
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 4.2: InstanceFlow: Flow View im Detail [PHS20]
Klassen werden als Other aggregiert und ebenfalls im Diagramm angezeigt. Der Bereich der zu visualisierenden Epochen kann ebenfalls ausgewählt werden. Diese Auswahl der Klassen und Epochen ist in Abbildung 4.1 (oberer Bereich) zu sehen. In diesem Fall wurden die Epochen drei bis acht ausgewählt. Im Weiteren können die Distribution Bar Charts (siehe Abb. 4.2 oben rechts) aktiviert werden. Hierbei wird die Klassenverteilung zu jeder Epoche dargestellt. Diese Darstellung hat die gleiche Aussage wie die Breite der Flussbänder, allerdings ermöglichen diese Balkendiagramme einen quantitativen Vergleich. Die Instance Glyphs (siehe Abb. 4.2 unten links) zeigen eine detaillierte Ansicht, indem die einzelnen Instanzen durch Rechtecke dargestellt werden. Die Farbe zeigt die tatsächliche Klasse an und die Form zeigt an, ob die Instanz-Vorhersage zeitlich stabil ist. Eine detaillierte Erklärung kann dem Paper [PHS20] entnommen werden. Die Instance Traces (siehe Abb. 4.2 unten rechts) ermöglichen die Spuren bestimmter Instanzen zu verfolgen. In diesem Zusammenhang wird farblich visualisiert, ob sich eine Instanz in die richtige oder falsche Klasse bewegt. Die Farbe grün signalisiert, dass die Instanz in die richtige Klasse gewechselt ist. Bei einer roten Linie ist die Instanz in einer Epoche falsch klassifiziert worden.
[...]
1 Ein Sankey-Diagramm ist eine spezielle Art eines Flussdiagramms, wobei die Mengen durch mengen-proportionale dicke Pfeile dargestellt werden. (vgl. [Hon19])