Anwendung eines neuronalen Netzes

Die Entwicklung eines neuronalen Netzes ist in die vier Phasen Datenerhebung, Training, Evaluation und Prediction unterteilt. Die vier Schritte müssen der Reihe nach abgeschlossen werden, um ein neuronales Netz erfolgreich zu implementieren.

Datenerhebung

Die Grundlage zur Lösungen eines Problems bildet eine optimale Datenbasis. Daher ist das Erstellen eines neuronalen Netzes eng an die Aufbereitung von Daten gebunden. Ein Datensatz besteht aus Rohdaten (x) und Labeln (y). Zu allen Rohdaten gibt es ein Label, das die optimal zu erreichende Ergebnismenge abbildet. Folgendes Beispiel zeigt einen Datensatz für ein neuronalen Netz, welches die Addition erlernt. Als Rohdaten werden zwei Zahlenwerte verwendet. Das Label entspricht der Addition beider Zahlenwerte.

Rohdaten Label
1 , 1 2
2 , 2 4
2 , 3 5
3 , 3 6
1 , 5 6

Die erhobenen Datensätze werden beispielsweise im Verhältnis 80 Prozent zu 20 Prozent in Trainingsdatensätze und Testdatensätze unterteilt. Trainingsdatensätze werden verwendet um das neuronale Netz zu trainieren. Testdatensätze dienen zur Überprüfung des erlernten Verhaltens. Weicht das Ergebnis der Trainingsdatensätze von dem der Testdatensätze ab, können Underfitting oder Overfitting der Grund dafür sein.

Underfitting

Bei zu wenig Trainingsdaten oder Iterationen über den Datensatz findet das Netz nicht genug relevante Features. Die Übereinstimmung zwischen Ausgangswerten und Labeln muss durch weiteres Training verbessert werden.

Overfitting

Lernt das Netz zu lange findet es Features die nur in den Trainingsdaten vorhanden sind, sich aber nicht verallgemeinern lassen. So bildet das Netz die Trainingsdaten perfekt ab, erzielt allerdings schlechte Ergebnisse auf den Testdaten.

Training

In der Trainingsphase wird das Netz mehrere Epochen auf dem Trainingsdatensatz trainiert. Eine Epoche entspricht dabei einem Durchlauf durch alle Trainingsdaten. Große Trainingsdatensätze werden in kleinere Datensätze sogenannte Batches unterteilt. Ein Batch der Größe n enthält n Datensätze. Daher besteht ein Datensatz mit tausend Rohdaten und Labeln, die in Batches mit jeweils zehn Datensätzen aufgeteilt werden, aus 1000/10 = 100 Batches.

Der Trainingsprozess ist in zwei Schritte unterteilt. Die Forward Propagation, sowie die Backpropagation.

In der Forward Propagation werden die Ausgangswert von Rohdaten berechnet. In der Backpropagation Abschnitt wird die Abweichung der Ausgangswert zu den Labeln kalkuliert. Anschließend wird das neuronale Netz angepasst. Man unterscheidet zwischen Online Learning bei dem das Netz nach jedem Datensatz angepasst wird, Batch Learning welches die Anpassung nach einer Epoche durchführt sowie den Mini Batch bei dem eine Anpassung nach einem Batch vorgenommen wird. Durch diese Anpassung des Netzes nähert es sich einer optimalen Funktion an, die Rohdaten in das passende Label umwandelt.

Evaluation

Der Testprozess durchläuft alle Testdaten und kalkuliert die Genauigkeit des Netzes. Dazu wird wie im Trainingsprozess über die Forward Propagation ein Ausgangswert für die Rohdaten kalkuliert. Anschließend wird die Differenz zwischen Ausgangswert und Label gebildet. Durch die Validierung auf den Testdaten zeigen sich Effekte wie Over- oder Underfitting.

Prediction

Weist das trainierte Netz eine hohe Übereinstimmung mit den Testdaten auf, ist die Entwicklung des Netzes abgeschlossen. Nun wird es genutzt um Rohdaten ohne Label zu klassifizieren. Dabei wird das Netz in einer unkontrollierten Umgebung angewendet. Die Berechnung des Ausgangswert erfolgt wie zuvor über die Forward Propagation.

Ressourcen

http://www.u-helmich.de/bio/neu/1/11/111/seite1111.html

http://www.deeplearningbook.org

https://jeremykun.com/2012/12/09/neural-networks-and-backpropagation/

https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/

http://scikit-learn.org/stable/auto_examples/model_selection/plot_underfitting_overfitting.html

http://mccormickml.com/2014/03/04/gradient-descent-derivation/

http://mccormickml.com/2014/03/04/gradient-descent-derivation/

http://ruder.io/optimizing-gradient-descent/

results matching ""

    No results matching ""