Funzione di Perdita
Durante l'addestramento di una rete neurale, è necessario misurare quanto accuratamente il modello predice i risultati corretti. Questo viene fatto utilizzando una funzione di perdita, che calcola la differenza tra le previsioni del modello e i valori target reali. L'obiettivo dell'addestramento è minimizzare questa perdita, rendendo le previsioni il più possibile vicine agli output reali.
Per i compiti di classificazione binaria, una delle funzioni di perdita più utilizzate è la cross-entropy loss, particolarmente efficace per i modelli che restituiscono probabilità.
Derivazione della Cross-Entropy Loss
Per comprendere la cross-entropy loss, si consideri il principio di massima verosimiglianza. In un problema di classificazione binaria, l'obiettivo è addestrare un modello che stimi la probabilità y^ che un dato input appartenga alla classe 1. L'etichetta reale y può assumere uno di due valori: 0 oppure 1.
Un modello efficace dovrebbe assegnare alte probabilità alle previsioni corrette. Questa idea è formalizzata tramite la funzione di verosimiglianza, che rappresenta la probabilità di osservare i dati reali date le previsioni del modello.
Per un singolo esempio di addestramento, assumendo indipendenza, la verosimiglianza può essere espressa come:
P(y∣x)=y^y(1−y^)1−yQuesta espressione significa quanto segue:
- Se y=1, allora P(y∣x)=y^ — il modello dovrebbe assegnare una probabilità alta alla classe 1;
- Se y=0, allora P(y∣x)=1−y^ — il modello dovrebbe assegnare una probabilità alta alla classe 0.
In entrambi i casi, l'obiettivo è massimizzare la probabilità che il modello assegna alla classe corretta.
P(y∣x) indica la probabilità di osservare l'etichetta di classe effettiva y dati gli input x.
Per semplificare l'ottimizzazione, si utilizza la log-verosimiglianza invece della funzione di verosimiglianza, poiché applicare il logaritmo trasforma i prodotti in somme, rendendo la differenziazione più semplice:
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Poiché l'addestramento mira a massimizzare la log-verosimiglianza, la funzione di perdita viene definita come il suo valore negativo in modo che il processo di ottimizzazione diventi un problema di minimizzazione:
L=−(ylog(y^)+(1−y)log(1−y^))Questa è la funzione di perdita di entropia incrociata binaria, comunemente utilizzata per problemi di classificazione.
Dato che la variabile output rappresenta y^ per un determinato esempio di addestramento, e la variabile target rappresenta y per questo esempio di addestramento, 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 entropia incrociata 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 sono fortemente penalizzate, incoraggiando il modello a fare previsioni corrette e sicure.
Se vengono forniti più esempi 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?
What happens if the model predicts exactly 0 or 1 for the output?
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 misurare quanto accuratamente il modello predice i risultati corretti. Questo viene fatto utilizzando una funzione di perdita, che calcola la differenza tra le previsioni del modello e i valori target reali. L'obiettivo dell'addestramento è minimizzare questa perdita, rendendo le previsioni il più possibile vicine agli output reali.
Per i compiti di classificazione binaria, una delle funzioni di perdita più utilizzate è la cross-entropy loss, particolarmente efficace per i modelli che restituiscono probabilità.
Derivazione della Cross-Entropy Loss
Per comprendere la cross-entropy loss, si consideri il principio di massima verosimiglianza. In un problema di classificazione binaria, l'obiettivo è addestrare un modello che stimi la probabilità y^ che un dato input appartenga alla classe 1. L'etichetta reale y può assumere uno di due valori: 0 oppure 1.
Un modello efficace dovrebbe assegnare alte probabilità alle previsioni corrette. Questa idea è formalizzata tramite la funzione di verosimiglianza, che rappresenta la probabilità di osservare i dati reali date le previsioni del modello.
Per un singolo esempio di addestramento, assumendo indipendenza, la verosimiglianza può essere espressa come:
P(y∣x)=y^y(1−y^)1−yQuesta espressione significa quanto segue:
- Se y=1, allora P(y∣x)=y^ — il modello dovrebbe assegnare una probabilità alta alla classe 1;
- Se y=0, allora P(y∣x)=1−y^ — il modello dovrebbe assegnare una probabilità alta alla classe 0.
In entrambi i casi, l'obiettivo è massimizzare la probabilità che il modello assegna alla classe corretta.
P(y∣x) indica la probabilità di osservare l'etichetta di classe effettiva y dati gli input x.
Per semplificare l'ottimizzazione, si utilizza la log-verosimiglianza invece della funzione di verosimiglianza, poiché applicare il logaritmo trasforma i prodotti in somme, rendendo la differenziazione più semplice:
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Poiché l'addestramento mira a massimizzare la log-verosimiglianza, la funzione di perdita viene definita come il suo valore negativo in modo che il processo di ottimizzazione diventi un problema di minimizzazione:
L=−(ylog(y^)+(1−y)log(1−y^))Questa è la funzione di perdita di entropia incrociata binaria, comunemente utilizzata per problemi di classificazione.
Dato che la variabile output rappresenta y^ per un determinato esempio di addestramento, e la variabile target rappresenta y per questo esempio di addestramento, 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 entropia incrociata 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 sono fortemente penalizzate, incoraggiando il modello a fare previsioni corrette e sicure.
Se vengono forniti più esempi 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!