Funzione di Perdita
Durante l'addestramento di una rete neurale, è necessario un metodo per misurare l'efficacia del modello. Questo viene realizzato tramite una funzione di perdita, che quantifica la differenza tra le uscite previste e i valori target reali. L'obiettivo dell'addestramento è minimizzare questa perdita, rendendo le previsioni il più possibile vicine ai valori effettivi.
Una delle funzioni di perdita più comunemente utilizzate per la classificazione binaria è la perdita di entropia incrociata, particolarmente efficace con modelli che restituiscono probabilità.
Derivazione della perdita di entropia incrociata
Per comprendere la perdita di entropia incrociata, si parte dal principio di massima verosimiglianza. In un problema di classificazione binaria, l'obiettivo è addestrare un modello che stimi la probabilità y^ che un determinato input appartenga alla classe 1. L'etichetta reale y può essere 0 oppure 1.
Un buon modello dovrebbe massimizzare la probabilità di prevedere correttamente tutti gli esempi di addestramento. Questo significa che si desidera massimizzare la funzione di verosimiglianza, che rappresenta la probabilità di osservare i dati dati i valori previsti dal modello.
Per un singolo esempio di addestramento, assumendo indipendenza, la verosimiglianza può essere scritta come:
P(y∣x)=y^y(1−y^)1−yQuesta espressione significa semplicemente:
- Se y=1, allora P(y∣x)=y^, ovvero si desidera massimizzare y^ (la probabilità assegnata alla classe 1);
- Se y=0, allora P(y∣x)=1−y^, ovvero si desidera massimizzare 1−y^ (la probabilità assegnata alla classe 0).
P(y∣x) indica la probabilità di osservare l'effettiva etichetta di classe y dati gli input x.
Per semplificare l'ottimizzazione, si utilizza la log-verosimiglianza invece della verosimiglianza stessa (poiché i logaritmi trasformano i prodotti in somme, facilitando la differenziazione):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Poiché l'obiettivo è la massimizzazione, si definisce la funzione di perdita come la negativa log-verosimiglianza, che si desidera minimizzare:
L=−(ylog(y^)+(1−y)log(1−y^))Questa è la funzione di perdita binaria di cross-entropy, comunemente utilizzata per problemi di classificazione.
Dato che la variabile output
rappresenta y^ per un particolare esempio di addestramento, e la variabile target
rappresenta y per questo esempio, questa funzione di perdita può essere implementata come segue:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Perché questa formula?
La perdita di cross-entropy ha una interpretazione intuitiva chiara:
- Se y=1, la perdita si semplifica in −log(y^), il che significa che la perdita è bassa quando y^ è vicino a 1 e molto alta quando y^ è vicino a 0;
- Se y=0, la perdita si semplifica in −log(1−y^), il che significa che la perdita è bassa quando y^ è vicino a 0 e molto alta quando è vicino a 1.
Poiché i logaritmi crescono negativamente all'avvicinarsi dello zero del loro argomento, le previsioni errate vengono pesantemente penalizzate, incoraggiando il modello a effettuare previsioni corrette e sicure.
Se più esempi vengono passati durante la propagazione in avanti, la perdita totale viene calcolata come media delle perdite su tutti gli esempi:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))dove N è il numero di campioni di addestramento.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain how cross-entropy loss differs from mean squared error?
Why do we use the negative log-likelihood instead of just the likelihood?
Can you show how this loss function is used during neural network training?
Awesome!
Completion rate improved to 4
Funzione di Perdita
Scorri per mostrare il menu
Durante l'addestramento di una rete neurale, è necessario un metodo per misurare l'efficacia del modello. Questo viene realizzato tramite una funzione di perdita, che quantifica la differenza tra le uscite previste e i valori target reali. L'obiettivo dell'addestramento è minimizzare questa perdita, rendendo le previsioni il più possibile vicine ai valori effettivi.
Una delle funzioni di perdita più comunemente utilizzate per la classificazione binaria è la perdita di entropia incrociata, particolarmente efficace con modelli che restituiscono probabilità.
Derivazione della perdita di entropia incrociata
Per comprendere la perdita di entropia incrociata, si parte dal principio di massima verosimiglianza. In un problema di classificazione binaria, l'obiettivo è addestrare un modello che stimi la probabilità y^ che un determinato input appartenga alla classe 1. L'etichetta reale y può essere 0 oppure 1.
Un buon modello dovrebbe massimizzare la probabilità di prevedere correttamente tutti gli esempi di addestramento. Questo significa che si desidera massimizzare la funzione di verosimiglianza, che rappresenta la probabilità di osservare i dati dati i valori previsti dal modello.
Per un singolo esempio di addestramento, assumendo indipendenza, la verosimiglianza può essere scritta come:
P(y∣x)=y^y(1−y^)1−yQuesta espressione significa semplicemente:
- Se y=1, allora P(y∣x)=y^, ovvero si desidera massimizzare y^ (la probabilità assegnata alla classe 1);
- Se y=0, allora P(y∣x)=1−y^, ovvero si desidera massimizzare 1−y^ (la probabilità assegnata alla classe 0).
P(y∣x) indica la probabilità di osservare l'effettiva etichetta di classe y dati gli input x.
Per semplificare l'ottimizzazione, si utilizza la log-verosimiglianza invece della verosimiglianza stessa (poiché i logaritmi trasformano i prodotti in somme, facilitando la differenziazione):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Poiché l'obiettivo è la massimizzazione, si definisce la funzione di perdita come la negativa log-verosimiglianza, che si desidera minimizzare:
L=−(ylog(y^)+(1−y)log(1−y^))Questa è la funzione di perdita binaria di cross-entropy, comunemente utilizzata per problemi di classificazione.
Dato che la variabile output
rappresenta y^ per un particolare esempio di addestramento, e la variabile target
rappresenta y per questo esempio, questa funzione di perdita può essere implementata come segue:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Perché questa formula?
La perdita di cross-entropy ha una interpretazione intuitiva chiara:
- Se y=1, la perdita si semplifica in −log(y^), il che significa che la perdita è bassa quando y^ è vicino a 1 e molto alta quando y^ è vicino a 0;
- Se y=0, la perdita si semplifica in −log(1−y^), il che significa che la perdita è bassa quando y^ è vicino a 0 e molto alta quando è vicino a 1.
Poiché i logaritmi crescono negativamente all'avvicinarsi dello zero del loro argomento, le previsioni errate vengono pesantemente penalizzate, incoraggiando il modello a effettuare previsioni corrette e sicure.
Se più esempi vengono passati durante la propagazione in avanti, la perdita totale viene calcolata come media delle perdite su tutti gli esempi:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))dove N è il numero di campioni di addestramento.
Grazie per i tuoi commenti!