Eine Liste von Kostenfunktionen, die in neuronalen Netzen neben Anwendungen verwendet werden

133

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 hajijthithaj1jth

Dann können wir die Eingabe der nächsten Ebene über die folgende Beziehung mit der vorherigen verknüpfen:

aji=σ(k(wjkiaki1)+bji)

wo

σ ist die Aktivierungsfunktion,

k t h ( i - 1 ) t h j t h i t hwjki ist das Gewicht vom Neuron in der Schicht zum Neuron in der Schicht,kth(i1)thjthith

j t h i t hbji ist die Vorspannung des Neurons in der Schicht, undjthith

j t h i t haji repräsentiert den Aktivierungswert des -Neurons in der Schicht.jthith

Manchmal schreiben wir , um , mit anderen Worten, den Aktivierungswert eines Neurons, bevor wir die Aktivierungsfunktion anwenden .k ( w i j ka i - 1 k ) + b i jzjik(wjkiaki1)+bji

Bildbeschreibung hier eingeben

Für eine präzisere Notation können wir schreiben

ai=σ(wi×ai1+bi)

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 mIRna1=Ia2a3am

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

C(W,B,Sr,Er)

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 .WBSrEryjizjijiWBSr

Bei der Backpropagation wird die Kostenfunktion verwendet, um den Fehler unserer Ausgabeschicht über zu berechnenδL

δjL=CajLσ(zji)
.

Welches kann auch als Vektor über geschrieben werden

δL=aCσ(zi)
.

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önnenC

C=1nxCx

über Kostenfunktionen für individuelle Trainingsbeispiele, .Cxx

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 .CaL

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.ajizji

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 ).0ajL1jajLajL0

Phylliida
quelle
3
Dies ist eine Q & A-Seite, und das Format dieses Beitrags passt nicht wirklich dazu. Sie sollten wahrscheinlich den größten Teil des Inhalts in eine Antwort einfügen und nur die Frage hinterlassen (z. B. Was ist eine Liste der in NNs verwendeten Kostenfunktionen?).
Roger Fan
Okay, ist das besser? Ich denke, die Definitionen sind wichtig, sonst werden die Antworten für diejenigen vage, die mit der Terminologie des Autors nicht vertraut sind.
Phylliida,
Was aber, wenn eine andere Antwort eine andere Notation oder Terminologie verwendet?
Roger Fan
3
Die Idee ist, dass jeder hier die gleiche Terminologie verwendet und dass, wenn es anders ist, wir es in diese umwandeln, damit die Antworten "zueinander passen". Aber ich nehme an, ich könnte das Teil entfernen, wenn Sie es nicht für hilfreich halten.
Phylliida,
1
Ich denke nur, dass das Detail, auf das sich die Frage bezieht, nicht wirklich notwendig oder relevant ist. Es scheint ein bisschen übertrieben und einschränkend, aber das bin nur ich.
Roger Fan

Antworten:

85

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:

CMST(W,B,Sr,Er)=0.5j(ajLEjr)2

r

aCMST=(aLEr)

Cross-Entropie-Kosten

Wird auch als negative Log-Wahrscheinlichkeit nach Bernoulli und binäre Kreuzentropie bezeichnet

CCE(W,B,Sr,Er)=j[Ejr ln ajL+(1Ejr) ln (1ajL)]

Der Gradient dieser Kostenfunktion in Bezug auf die Ausgabe eines neuronalen Netzwerks und einer Stichprobe ist:r

aCCE=(aLEr)(1aL)(aL)

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.τ

CEXP(W,B,Sr,Er)=τ exp(1τj(ajLEjr)2)

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

aC=2τ(aLEr)CEXP(W,B,Sr,Er)

Ich könnte umschreiben , aber das scheint überflüssig. Punkt ist der Gradient, der einen Vektor berechnet und ihn dann mit multipliziert .CEXPCEXP

Hellinger Entfernung

CHD(W,B,Sr,Er)=12j(ajLEjr)2

Mehr dazu finden Sie hier . Dies muss positive Werte haben und im Idealfall Werte zwischen und . Gleiches gilt für die folgenden Unterschiede.01

Der Gradient dieser Kostenfunktion in Bezug auf die Ausgabe eines neuronalen Netzwerks und einer Stichprobe ist:r

aC=aLEr2aL

Kullback-Leibler-Divergenz

Auch bekannt als Informationsdivergenz , Informationsgewinn , relative Entropie , KLIC oder KL-Divergenz (siehe hier ).

Die Kullback-Leibler-Divergenz wird typischerweise als .

DKL(PQ)=iP(i)lnP(i)Q(i)

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(PQ)QPP=EiQ=aLajiEji

CKL(W,B,Sr,Er)=jEjrlogEjrajL

Die anderen Divergenzen verwenden hier dieselbe Idee, und .P=EiQ=aL

Der Gradient dieser Kostenfunktion in Bezug auf die Ausgabe eines neuronalen Netzwerks und einer Stichprobe ist:r

aC=EraL

Generalisierte Kullback-Leibler-Divergenz

Von hier .

CGKL(W,B,Sr,Er)=jEjrlogEjrajLj(Ejr)+j(ajL)

Der Gradient dieser Kostenfunktion in Bezug auf die Ausgabe eines neuronalen Netzwerks und einer Stichprobe ist:r

aC=aLEraL

Itakura – Saito Entfernung

Auch von hier .

CGKL(W,B,Sr,Er)=j(EjrajLlogEjrajL1)

Der Gradient dieser Kostenfunktion in Bezug auf die Ausgabe eines neuronalen Netzwerks und einer Stichprobe ist:r

aC=aLEr(aL)2

Wobei . Mit anderen Worten einfach gleich jedes Elements Quadrierung .((aL)2)j=ajLajL(aL)2aL

Phylliida
quelle
Vielen Dank für die Freigabe, Sie können auch diese berücksichtigen: github.com/torch/nn/blob/master/doc/criterion.md
Yannis Assael
2
Sie haben einen kleinen Fehler im Nenner der Kreuzentropie-Ableitung, es sollte a*(1-a)nicht seina*(1+a)
Amro
1
Es wäre auch cool, die Flipper-Verlust-Funktion zu zeigen, um Fehlerquantile anstatt Durchschnittsfehler zu minimieren. Sehr verbreitet in Entscheidungsunterstützungssystemen.
Ricardo Cruz
Wo kann ich Diagramme für diese sehen?
Coiso
1
In Bezug auf die quadratische Kostenfunktion sollten Sie beachten, dass "mittlere Fehlerquadrate" "maximale Wahrscheinlichkeit" "Fehlerquadratsumme" ist. Autoren können den Namen (falsch) austauschbar verwenden, aber sie sind nicht dasselbe.
Jon
20

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.

C=jEjlog(Ej/aj)=jEjlog(Ej)Ejlog(aj)dC=jEjdlog(aj)=j(Ej/aj)dajaC=Ea

In der Itakura-Saito-Distanz ist

C=j(Ej/aj)log(Ej/aj)1=j(Ej/aj)log(Ej)+log(aj)1dC=j(Ej/aj2)daj+dlog(aj)=j(1/aj)daj(Ej/aj2)daj=j(ajEj)/aj2dajaC=aE(a)2
frank
quelle