Welche allgemeinen Kostenfunktionen werden bei der Bewertung der Leistung neuronaler Netze verwendet?
Einzelheiten
(Fühlen Sie sich frei, den Rest dieser Frage zu überspringen. Ich beabsichtige hier lediglich, Klarheit über die Notation zu schaffen, die Antworten verwenden können, um sie für den allgemeinen Leser verständlicher zu machen.)
Ich denke, es wäre nützlich, eine Liste der gängigen Kostenfunktionen zu haben, neben ein paar Möglichkeiten, wie sie in der Praxis angewendet wurden. Wenn sich also andere dafür interessieren, ist ein Community-Wiki wahrscheinlich der beste Ansatz, oder wir können es entfernen, wenn es nicht zum Thema gehört.
Notation
Zunächst möchte ich eine Notation definieren, die wir alle verwenden, um diese zu beschreiben, damit die Antworten gut zueinander passen.
Diese Notation stammt aus Neilsens Buch .
Ein Feedforward-Neuronales Netzwerk besteht aus mehreren miteinander verbundenen Neuronenschichten. Dann nimmt es eine Eingabe auf, die Eingabe "sickert" durch das Netzwerk und dann gibt das neuronale Netzwerk einen Ausgabevektor zurück.
Nennen Sie formal die Aktivierung (aka Ausgabe) des -Neurons in der , wobei das -Element im Eingabevektor ist. j t h i t h a 1 j j t h
Dann können wir die Eingabe der nächsten Ebene über die folgende Beziehung mit der vorherigen verknüpfen:
wo
ist die Aktivierungsfunktion,
k t h ( i - 1 ) t h j t h i t h ist das Gewicht vom Neuron in der Schicht zum Neuron in der Schicht,
j t h i t h ist die Vorspannung des Neurons in der Schicht, und
j t h i t h repräsentiert den Aktivierungswert des -Neurons in der Schicht.
Manchmal schreiben wir , um , mit anderen Worten, den Aktivierungswert eines Neurons, bevor wir die Aktivierungsfunktion anwenden . ∑ k ( w i j k ⋅ a i - 1 k ) + b i j
Für eine präzisere Notation können wir schreiben
Um mit dieser Formel die Ausgabe eines Feedforward-Netzwerks für eine Eingabe berechnen , setzen Sie und berechnen Sie dann , , ..., , wobei m die Anzahl der Schichten ist.a 1 = I a 2 a 3 a m
Einführung
Eine Kostenfunktion ist ein Maß dafür, "wie gut" ein neuronales Netzwerk in Bezug auf die gegebene Trainingsstichprobe und die erwartete Ausgabe war. Es kann auch von Variablen wie Gewichten und Verzerrungen abhängen.
Eine Kostenfunktion ist ein einzelner Wert, kein Vektor, da sie die Leistung des gesamten neuronalen Netzwerks bewertet.
Insbesondere hat eine Kostenfunktion die Form
Wobei die Gewichte unseres neuronalen Netzwerks ist, die Vorspannung unseres neuronalen Netzwerks ist, die Eingabe einer einzelnen Trainingsprobe ist und die gewünschte Ausgabe dieser Trainingsprobe ist. Beachten Sie, dass diese Funktion für jedes Neuron in Schicht möglicherweise auch von und abhängig sein kann, da diese Werte von , und abhängen .
Bei der Backpropagation wird die Kostenfunktion verwendet, um den Fehler unserer Ausgabeschicht über zu berechnen
Welches kann auch als Vektor über geschrieben werden
Wir werden den Gradienten der Kostenfunktionen in Bezug auf die zweite Gleichung angeben, aber wenn man diese Ergebnisse selbst beweisen möchte, wird die Verwendung der ersten Gleichung empfohlen, da es einfacher ist, damit zu arbeiten.
Anforderungen an die Kostenfunktion
Um bei der Backpropagation verwendet zu werden, muss eine Kostenfunktion zwei Eigenschaften erfüllen:
1: Die Kostenfunktion muss als Durchschnitt geschrieben werden können
über Kostenfunktionen für individuelle Trainingsbeispiele, .
Auf diese Weise können wir den Gradienten (in Bezug auf Gewichte und Vorspannungen) für ein einzelnes Trainingsbeispiel berechnen und den Gradientenabstieg ausführen.
2: Die Kostenfunktion darf neben den Ausgangswerten nicht von Aktivierungswerten eines neuronalen Netzes abhängig sein .
Technisch gesehen kann eine Kostenfunktion von jedem oder . Wir machen diese Einschränkung nur, damit wir sie rückgängig machen können, da die Gleichung zum Ermitteln des Gradienten der letzten Ebene die einzige ist, die von der Kostenfunktion abhängt (der Rest hängt von der nächsten Ebene ab). Wenn die Kostenfunktion von anderen Aktivierungsschichten als der ausgegebenen abhängig ist, ist die Rückübertragung ungültig, da die Idee des "Rückwärtsrinnens" nicht mehr funktioniert.
Außerdem müssen Aktivierungsfunktionen für alle einen Ausgang . Daher müssen diese Kostenfunktionen nur innerhalb dieses Bereichs definiert werden (zum Beispiel ist gültig, da wir garantiert ).