Quale funzione di perdita dovrei usare per il rilevamento binario nel rilevamento di volti / non volti nella CNN?


Risposte:


9

La perdita della cerniera e l'entropia crociata si riscontrano generalmente con risultati simili. Ecco un altro post che confronta le diverse funzioni di perdita Quali sono gli impatti della scelta delle diverse funzioni di perdita nella classificazione per approssimare la perdita 0-1 .

Esatto, ma mi chiedo anche di usare softmax ma con solo due classi?

Softmax non è una perdita ma una funzione di normalizzazione, è spesso usata insieme alla perdita di entropia crociata, che è essenzialmente equivalente SigmoidCrossEntropyLoss. Vedi anche Cross-Entropy o Log Likelihood nel livello Output


7

In generale, quando si riscontra un problema in cui l'esempio può appartenere solo a una classe tra un insieme di classi, si imposta l'ultimo livello su un livello soft-max. Ti permette di interpretare le uscite come probabilità. Quando si utilizza uno strato soft-max, l'entropia crociata generalmente funziona molto bene, poiché il termine logaritmico nell'entropia crociata annulla l'altopiano che è presente nella funzione soft-max, accelerando quindi il processo di apprendimento (pensare a punti lontani da nella funzione sigmoide).0

Nel tuo caso hai un'attività di classificazione binaria, quindi il tuo livello di output può essere il sigmoide standard (dove l'output rappresenta la probabilità che un campione di test sia una faccia). La perdita che useresti sarebbe binaria entropia. Con questa configurazione puoi immaginare di avere una regressione logistica all'ultimo strato della tua profonda rete neurale.

Ecco un paio di link per te. Spero che aiutino.
https://en.wikipedia.org/wiki/Cross_entropy#Cross-entropy_error_function_and_logistic_regression
http://neuralnetworksanddeeplearning.com/chap3.html
https://www.quora.com/How-do-you-decide-which-loss- la funzione da usare-per-machine-learning


Potresti per favore far luce sulla regressione logistica all'ultimo strato di un DNN? Ho letto i post ma non riesco a vedere l'utilità sigmoid(come l'ultima attivazione del livello). Grazie
bit_scientist il

2

Potresti sicuramente usare softmax con solo 2 classi "Face" e "Not Face" e interpretare l'output di softmax come punteggi di confidenza, che è una bella caratteristica per avere qualche intuizione sulla tua rete profonda.

Prova sia il softmax di classe 2 che la perdita della cerniera binaria. C'è un recente articolo Deep Learning che usa le macchine vettoriali di supporto lineare che usano un SVM invece di un classificatore softmax in cima a reti profonde e ci sono alcuni risultati promettenti lì.


2

Di solito la perdita logaritmica sarebbe la scelta preferita, usata in combinazione con una sola unità di output. La perdita logaritmica è anche chiamata entropia binaria incrociata perché è un caso speciale di entropia incrociata che lavora solo su due classi.


Dovresti aggiornare il tuo primo link.
nbro

0

Teoricamente, un softmax con 2 classi può essere riscritto come sigma, quindi non ci dovrebbe essere una differenza nei risultati tra i due. In pratica, come accennato da @dontloo, il numero di parametri nel livello di output sarebbe doppio (non sono sicuro che ciò possa comportare problemi di overfitting) e, naturalmente, avresti 2 punteggi per le due classi (Face e Non_Face).

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.