Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ss15:neuronale_netze

Dies ist eine alte Version des Dokuments!


Neuronale Netze

Was ist ein Neuronales Netz?

Ein Neuronales Netz besteht aus Schichten von Neuronen. Jedes Neuron hat eine gewisse Zahl an Inputs und Gewichten. Die Inputs werden mit den Gewichten verrechnet und in die Sigmoid-Funktion1) eingesetzt. Dies ist der Output des Neurons. Ein Neuronales Netz besteht nun aus mehreren Schichten solcher Neuronen, wobei die Outputs der einen Schicht die Inputs der nächsten Schicht sind. Wenn man nun ein Neuronales Netz anlegt, so werden die Gewichte zunächst zufällig besetzt. Allerdings werden diese im Trainingsprozess angepasst. Das funktioniert folgendermaßen:

  • Zunächst braucht man einen Datensatz mit Inputs und erwarteten Outputs.
  • Dann berechnet man den quadratischen Fehler zwischen dem Output, den das Netz bei einem Input liefert und dem dabei erwarteten Output.
  • Nun kann man mittels Backtracking die einzelnen Gewichte nacheinander updaten. Dazu bildet man die partielle Ableitung der Fehlerfunktion nach jedem Gewicht und updatet jedes einzelne Gewicht mithilfe des Gradientenabstiegs.

Nachdem man diesen Prozess einige Male wiederholt hat, sollte das Netz in der Lage sein, ähnliche Probleme zu lösen. Es gibt hier jedoch einige Dinge zu beachten: Das Netzwerk kann overfitten. Das bedeutet, dass das Netzwerk nicht mehr die Struktur des Problems lernt, sondern die Trainingsmenge. Das Netz ist dann zwar in der Lage, in der Trainingsmenge unglaublich gute Vorhersagen zu treffen, allerdings fallen die Lösungen für neue Daten sehr schlecht aus. Es gibt allerdings ein paar Möglichkeiten, dieses Problem zu lösen:

  • Einführung einer Lernrate: Indem man die einzelnen Updateschritte nur ziemlich klein hält, kann man verhindern, dass das Netz zu schnell overfittet
  • Weightdecay: Hierbei laufen ungenutzte Gewichte langsam gegen 0; Das verhindert ebenfalls Overfitting des Netzes
  • Cross-Validation: Dabei wird nach jedem Update die Erfolgsrate des Netzes an einer kleineren, seperaten Testmenge berechnet. Sobald diese kleiner wird, kann man aufhören zu trainieren.
1) Diese sorgt lediglich dafür, dass der Output zwischen 0 und 1 liegt und sieht so aus: $\frac{1}{1+e^{-x}}$
ss15/neuronale_netze.1437555182.txt.gz · Zuletzt geändert: 2016/05/10 14:46 (Externe Bearbeitung)