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 ).
quelle
Antworten:
Hier sind die, die ich bisher verstanden habe. Die meisten dieser Funktionen funktionieren am besten, wenn Werte zwischen 0 und 1 angegeben werden.
Quadratische Kosten
Dies wird auch als mittlerer quadratischer Fehler , maximale Wahrscheinlichkeit und quadratischer Summenfehler bezeichnet und ist wie folgt definiert:
Cross-Entropie-Kosten
Wird auch als negative Log-Wahrscheinlichkeit nach Bernoulli und binäre Kreuzentropie bezeichnet
Der Gradient dieser Kostenfunktion in Bezug auf die Ausgabe eines neuronalen Netzwerks und einer Stichprobe ist:r
Exponentielle Kosten
Dies erfordert die Auswahl eines Parameters , von dem Sie glauben, dass er Ihnen das gewünschte Verhalten verleiht. Normalerweise müssen Sie nur damit spielen, bis die Dinge gut funktionieren.τ
Dabei ist einfach eine Abkürzung für .exp(x) ex
Der Gradient dieser Kostenfunktion in Bezug auf die Ausgabe eines neuronalen Netzwerks und einer Stichprobe ist:r
Ich könnte umschreiben , aber das scheint überflüssig. Punkt ist der Gradient, der einen Vektor berechnet und ihn dann mit multipliziert .CEXP CEXP
Hellinger Entfernung
Mehr dazu finden Sie hier . Dies muss positive Werte haben und im Idealfall Werte zwischen und . Gleiches gilt für die folgenden Unterschiede.0 1
Der Gradient dieser Kostenfunktion in Bezug auf die Ausgabe eines neuronalen Netzwerks und einer Stichprobe ist:r
Kullback-Leibler-Divergenz
Auch bekannt als Informationsdivergenz , Informationsgewinn , relative Entropie , KLIC oder KL-Divergenz (siehe hier ).
Die Kullback-Leibler-Divergenz wird typischerweise als .
wobei ein Maß für den Informationsverlust ist, wenn zur Approximation von . Wir wollen also und , weil wir messen wollen, wie viel Information verloren geht, wenn wir um zu approximieren . Das gibt unsQDKL(P∥Q) Q P P=Ei Q=aL aij Eij
Die anderen Divergenzen verwenden hier dieselbe Idee, und .P=Ei Q=aL
Der Gradient dieser Kostenfunktion in Bezug auf die Ausgabe eines neuronalen Netzwerks und einer Stichprobe ist:r
Generalisierte Kullback-Leibler-Divergenz
Von hier .
Der Gradient dieser Kostenfunktion in Bezug auf die Ausgabe eines neuronalen Netzwerks und einer Stichprobe ist:r
Itakura – Saito Entfernung
Auch von hier .
Der Gradient dieser Kostenfunktion in Bezug auf die Ausgabe eines neuronalen Netzwerks und einer Stichprobe ist:r
Wobei . Mit anderen Worten einfach gleich jedes Elements Quadrierung .((aL)2)j=aLj⋅aLj (aL)2 aL
quelle
a*(1-a)
nicht seina*(1+a)
Sie haben nicht den Ruf, Kommentare abzugeben, aber in den letzten drei Farbverläufen sind Zeichenfehler aufgetreten.
In der KL-Divergenz ist Dies Fehler mit gleichem Vorzeichen wird in der generalisierten KL-Divergenz angezeigt.
In der Itakura-Saito-Distanz ist
quelle