Funzione di perdita per i codificatori automatici


21

Sto sperimentando un po 'di codificatori automatici e con tensorflow ho creato un modello che tenta di ricostruire il set di dati MNIST.

La mia rete è molto semplice: X, e1, e2, d1, Y, dove e1 ed e2 sono livelli di codifica, d2 e Y sono livelli di decodifica (e Y è l'output ricostruito).

X ha 784 unità, e1 ha 100, e2 ha 50, d1 ha di nuovo 100 e Y 784 di nuovo.

Sto usando i sigmoidi come funzioni di attivazione per i livelli e1, e2, d1 e Y. Gli ingressi sono in [0,1] e quindi dovrebbero essere gli output.

Bene, ho provato a usare l'entropia incrociata come funzione di perdita, ma l'output è sempre stato un blob e ho notato che i pesi da X a e1 converrebbero sempre in una matrice a valore zero.

D'altra parte, l'uso di errori al quadrato medio come funzione di perdita, produrrebbe un risultato decente e ora sono in grado di ricostruire gli input.

Perchè è così? Pensavo di poter interpretare i valori come probabilità e quindi usare l'entropia incrociata, ma ovviamente sto facendo qualcosa di sbagliato.


1
Hai menzionato l'uso di sigmoid per le funzioni di attivazione nei primi livelli. Questi mostrano "saturazione", come spiegato più dettagliatamente nelle Note CS231n . Hai provato un'altra funzione di attivazione come ReLUs?
Jerry,

Non riesco a ricordare in questo momento se ho provato altri, ma grazie per la condivisione!
AkiRoss,

Risposte:


17

Penso che la migliore risposta a questa domanda sia che la funzione di perdita di entropia incrociata non è adatta a questo specifico compito.

Adottando questo approccio, stai essenzialmente dicendo che i veri dati MNIST sono binari e le tue intensità di pixel rappresentano la probabilità che ciascun pixel sia "acceso". Ma sappiamo che in realtà non è così. L'erroneità di questo presupposto implicito ci sta quindi causando problemi.

-[(bersaglio)log(predizione)+(1-bersaglio)log(1-predizione)]

cross-entropia vs perdita di mse

Possiamo vedere che la perdita di entropia incrociata è asimmetrica. Perché dovremmo volerlo? È davvero peggio prevedere 0,9 per questo 0,8 pixel che prevedere 0,7? Direi che forse è meglio, se non altro.

Probabilmente potremmo andare più nel dettaglio e capire perché questo porta a blob specifici che stai vedendo. Immagino che sia perché l'intensità dei pixel è mediamente superiore a 0,5 nella regione in cui si vede il blob. Ma in generale questo è il caso delle ipotesi di modellazione implicite che hai reso inadeguate per i dati.

Spero possa aiutare!


3
quale funzione di perdita è adatta se l'ingresso è compreso tra 0 e 1?
Jemshit Iskenderov,

Binary Cross Entropy Loss
torayeff
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.