La formula di entropia incrociata comprende due distribuzioni, , la distribuzione vera e , la distribuzione stimata, definita sulla variabile discreta ed è data dap(x)q(x)x
H(p,q)=−∑∀xp(x)log(q(x))
Per una rete neurale, il calcolo è indipendente dal seguente:
Che tipo di strato è stato usato.
Che tipo di attivazione è stata utilizzata, anche se molte attivazioni non saranno compatibili con il calcolo perché le loro uscite non sono interpretabili come probabilità (ovvero, le loro uscite sono negative, maggiori di 1 o non equivalgono a 1). Softmax viene spesso utilizzato per la classificazione multiclasse perché garantisce una funzione di distribuzione della probabilità ben educata.
Per una rete neurale, di solito vedrai l'equazione scritta in una forma in cui è il vettore di verità di base e (o qualche altro valore preso direttamente dall'output dell'ultimo livello) è il preventivo. Per un singolo esempio, sarebbe simile al seguente:yyy^
L=−y⋅log(y^)
dove è il prodotto punto vettoriale.⋅
La tua verità di base di esempio dà tutta la probabilità al primo valore e gli altri valori sono zero, quindi possiamo ignorarli e usare semplicemente il termine corrispondente dalle tue stimeyyy^
L=−(1×log(0.1)+0×log(0.5)+...)
L=−log(0.1)≈2.303
Un punto importante dai commenti
Ciò significa che la perdita sarebbe la stessa, indipendentemente dal fatto che le previsioni siano o ?[0.1,0.5,0.1,0.1,0.2][0.1,0.6,0.1,0.1,0.1]
Sì, questa è una caratteristica chiave della perdita di log multiclasse, che premia / penalizza solo le probabilità di classi corrette. Il valore è indipendente dal modo in cui la probabilità rimanente viene suddivisa tra classi errate.
Vedrai spesso questa equazione mediata su tutti gli esempi come una funzione di costo . Non è sempre strettamente rispettato nelle descrizioni, ma di solito una funzione di perdita è di livello inferiore e descrive come una singola istanza o componente determina un valore di errore, mentre una funzione di costo è di livello superiore e descrive come viene valutato un sistema completo per l'ottimizzazione. Una funzione di costo basata sulla perdita di log multiclasse per un set di dati di dimensioni potrebbe apparire così:N
J=−1N(∑i=1Nyi⋅log(y^i))
Molte implementazioni richiederanno che i tuoi valori di verità di base siano codificati in modo diretto (con una sola vera classe), poiché ciò consente un'ulteriore ottimizzazione. Tuttavia, in linea di principio la perdita di entropia incrociata può essere calcolata - e ottimizzata - quando non è così.