Entropieübergreifende Kostenfunktion im neuronalen Netz
10
Ich betrachte die entropieübergreifende Kostenfunktion in diesem Tutorial :
C=−1n∑x[ylna+(1−y)ln(1−a)]
Worüber summieren wir genau? Es ist natürlich über , aber und ändern sich nicht mit . Alle sind Eingaben in die .
wird sogar im Absatz über der Gleichung als Funktion der Summe aller 's und ' s definiert. xyaxxaawx
Auch wird als die Anzahl von Eingaben in dieser bestimmten Neurons definiert, oder ? Es wird als "die Gesamtzahl der Trainingsdaten" formuliert .n
Bearbeiten:
Bin ich richtig, wenn ich das denke?
C=−1n∑x[ylna+(1−y)ln(1−a)]
wäre die Kostenfunktion für das gesamte Netzwerk, während
C=[ylna+(1−y)ln(1−a)]
wären die Kosten für das einzelne Neuron? Sollte die Summe nicht über jedem Ausgangsneuron liegen?
Hier ist die Menge der Eingabebeispiele im Trainingsdatensatz und ist der entsprechende Satz von Beschriftungen für diese Eingabebeispiele. Das repräsentiert die Ausgabe des neuronalen Netzwerks bei gegebener Eingabe .X={x(1),…,x(n)}Y={y(1),…,y(n)}a(x)x
Jedes der ist entweder 0 oder 1, und die Ausgangsaktivierung ist typischerweise unter Verwendung eines logistischen Sigmoid auf das offene Intervall (0, 1) beschränkt . Zum Beispiel würde für ein einschichtiges Netzwerk (was einer logistischen Regression entspricht) die Aktivierung durch wobei ist Gewichtsmatrix und ist ein Bias-Vektor. Für mehrere Ebenen können Sie die Aktivierungsfunktion auf etwas wie wobei und die Gewichtsmatrix und Vorspannung für die erste Schicht sind undy(i)a(x)
a(x)=11+e−Wx−b
Wb
a(x)=11+e−Wz(x)−bz(x)=11+e−Vx−c
Vcz(x) ist die Aktivierung der verborgenen Schicht im Netzwerk.
Ich habe das hochgestellte (i) verwendet, um Beispiele zu bezeichnen, weil ich fand, dass es in Andrew Ngs Kurs für maschinelles Lernen ziemlich effektiv ist. Manchmal drücken Leute Beispiele als Spalten oder Zeilen in einer Matrix aus, aber die Idee bleibt dieselbe.
Vielen Dank! Dies würde uns also eine einzige Nummer für unseren Fehler für das gesamte Netzwerk über alle unsere Beispiele geben. Für die Rückausbreitung muss ich die partielle Ableitung dieser Funktion aus der Gewichtsmatrix in der letzten Schicht finden. Wie würde ich das machen?
Adam12344
Backprop zu machen ist eine ganz separate Dose Würmer! Die Seite, auf die Sie verlinkt haben, enthält eine Beschreibung der Berechnung von Derivaten usw., und es gibt viele Fragen zu Backprop bei Stackoverflow und dieser Site. Schauen Sie sich ein wenig um und stellen Sie dann eine separate Frage speziell zu Backprop.
lmjohns3
Dies könnte für Sie hilfreich sein, um zu verstehen, dass Backprop durch die Back-Requisite mit einem vierschichtigen neuronalen Netzwerk mit einem Kreuzentropieverlust im Detail geht :) cookedsashimi.wordpress.com/2017/05/06/…
YellowPillow
5
Worüber summieren wir genau?
Das Tutorial ist eigentlich ziemlich explizit:
... ist die Gesamtzahl der Trainingsdaten, die Summe ist über alle Trainingseingaben verteilt ...n
Die ursprüngliche Einzelneuronen-Kostenfunktion, die im Tutorial (Gleichung 57) angegeben ist, hat auch einen Index unter dem der darauf hinweisen soll. Für den Fall eines einzelnen Neurons gibt es außer Trainingsbeispielen nichts anderes zu summieren, da wir bereits alle Eingabegewichte bei der Berechnung von summiert haben :xΣa
a=∑jwjxj.
Später im selben Tutorial gibt Nielsen einen Ausdruck für die Kostenfunktion für ein mehrschichtiges Netzwerk mit mehreren Neuronen (Gleichung 63):
C=−1n∑x∑j[yjlnaLj+(1−yj)ln(1−aLj)].
In diesem Fall läuft die Summe sowohl über Trainingsbeispiele ( ) als auch über einzelne Neuronen in der Ausgabeschicht ( ).xj
Vielen Dank für die Einsicht, eine Frage: Die letztere, die Sie definiert haben, ist nicht die kategoriale Kreuzentropie, oder?
Tommaso Guerrini
In seinem Tutorial sagte er auch, dass "y manchmal Werte zwischen 0 und 1 annehmen kann", aber die Funktion, die er gab, ist alles auf y und es gab keine Aktivierungseingabe. Wie können wir Zwischenwerte in die st-Funktion implementieren?
Feras
In Nielsens Tutorial, das ein einschichtiges Perzeptron zeigt, a = \ sigma (\ sum_ {j} w_j x_j), weil Sie eine Sigmoid-Aktivierungsfunktion für Ihre Ausgabeschicht haben, nicht a = \ sum_ {j} w_j x_j
Das Tutorial ist eigentlich ziemlich explizit:
Die ursprüngliche Einzelneuronen-Kostenfunktion, die im Tutorial (Gleichung 57) angegeben ist, hat auch einen Index unter dem der darauf hinweisen soll. Für den Fall eines einzelnen Neurons gibt es außer Trainingsbeispielen nichts anderes zu summieren, da wir bereits alle Eingabegewichte bei der Berechnung von summiert haben :x Σ a
Später im selben Tutorial gibt Nielsen einen Ausdruck für die Kostenfunktion für ein mehrschichtiges Netzwerk mit mehreren Neuronen (Gleichung 63):
In diesem Fall läuft die Summe sowohl über Trainingsbeispiele ( ) als auch über einzelne Neuronen in der Ausgabeschicht ( ).x j
quelle