Funzione di costo dell'entropia incrociata nella rete neurale


10

Sto esaminando la funzione di costo dell'entropia incrociata che si trova in questo tutorial :

C=1nx[ylna+(1y)ln(1a)]

Cosa stiamo esattamente riassumendo? E ', ovviamente, su , ma e non cambiano con . Tutte le sono input in quello . è persino definito nel paragrafo sopra l'equazione in funzione della somma di tutte le e le . xyaxxaawx

Inoltre, è definito come il numero di input in questo particolare neurone, giusto? È formulato come "il numero totale di elementi dei dati di addestramento" .n


Modificare:

Ho ragione nel pensarlo

C=1nx[ylna+(1y)ln(1a)]

sarebbe la funzione di costo per l'intera rete, mentre

C=[ylna+(1y)ln(1a)]

sarebbe il costo per il singolo neurone? La somma non dovrebbe essere su ogni neurone in uscita?

Risposte:


14

Ecco come esprimerei la perdita di entropia :

L(X,Y)=1ni=1ny(i)lna(x(i))+(1y(i))ln(1a(x(i)))

Qui, è il set di esempi di input nel set di dati di training e è il corrispondente set di etichette per quegli esempi di input. A rappresenta l'output della rete neurale dato input .X={x(1),,x(n)}Y={y(1),,y(n)}a(x)x

Ciascuno di è 0 o 1 e l'attivazione dell'uscita è in genere limitata all'intervallo aperto (0, 1) utilizzando un sigmoid logistico . Ad esempio, per una rete a un livello (che equivale alla regressione logistica), l'attivazione sarebbe data da dove è un la matrice del peso è un vettore di polarizzazione. Per più livelli, puoi espandere la funzione di attivazione a qualcosa come dove e sono la matrice peso e di polarizzazione per il primo strato, ey(i)a(x)

a(x)=11+eWxb
Wb
a(x)=11+eWz(x)bz(x)=11+eVxc
Vcz(x) è l'attivazione del livello nascosto nella rete.

Ho usato l'apice (i) per indicare esempi perché l'ho trovato abbastanza efficace nel corso di machine learning di Andrew Ng; a volte le persone esprimono esempi come colonne o righe in una matrice, ma l'idea rimane la stessa.


Grazie! Quindi questo ci darebbe un unico numero per il nostro errore per l'intera rete, su tutti i nostri campioni. Per la propagazione posteriore ho bisogno di trovare la derivata parziale di questa funzione rispetto alla matrice del peso nello strato finale. Come potrei farlo?
Adam12344,

Fare backprop è una lattina completamente separata di worm! La pagina a cui ti sei collegato ha una descrizione dei derivati ​​di calcolo ecc. E ci sono molte domande sul backprop su StackOverflow e su questo sito. Prova a guardarti attorno e a pubblicare una domanda separata in particolare sul backprop.
lmjohns3,

Questo potrebbe esserti utile per capire il backprop che attraversa l'elica posteriore con una rete neurale a quattro strati con una perdita di entropia crociata nei dettagli cruenti :) cookedsashimi.wordpress.com/2017/05/06/…
YellowPillow

5

Cosa stiamo esattamente riassumendo?

Il tutorial è in realtà piuttosto esplicito:

... è il numero totale di elementi dei dati di allenamento, la somma è superiore a tutti gli input di allenamento ...n

La funzione di costo del singolo neurone originale fornita nel tutorial (Eqn. 57) ha anche un pedice sotto che dovrebbe suggerire questo. Per il caso del singolo neurone non c'è nient'altro da riassumere oltre agli esempi di allenamento, poiché abbiamo già sommato tutti i pesi di input quando calcoliamo :xΣa

a=jwjxj.

Più avanti nello stesso tutorial, Nielsen fornisce un'espressione per la funzione di costo per una rete multi-strato e multi-neurone (Eqn. 63):

C=1nxj[yjlnajL+(1yj)ln(1ajL)].

In questo caso la somma scorre sia sugli esempi di allenamento ( ') sia sui singoli neuroni nel livello di output ( ').jxj


Grazie per l'intuizione, una domanda: quest'ultima che hai definito non è l'entropia incrociata categorica, giusto?
Tommaso Guerrini,

Nel suo tutorial ha anche detto che "a volte è possibile assumere valori intermedi tra 0 e 1", ma la funzione che ha dato è tutta su y e non vi è stato alcun input di attivazione. Come potremmo implementare valori intermedi nella funzione st?
Feras,

Nel tutorial di Nielsen, che mostra un percettrone a livello singolo, a = \ sigma (\ sum_ {j} w_j x_j) perché hai una funzione di attivazione sigmoid per il tuo livello di output, non un = \ sum_ {j} w_j x_j
ARAT
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.