Funkcja utraty dla autoencoderów

21

Eksperymentuję trochę autoencoderów, a dzięki tensorflow stworzyłem model, który próbuje zrekonstruować zestaw danych MNIST.

Moja sieć jest bardzo prosta: X, e1, e2, d1, Y, gdzie e1 i e2 są warstwami kodującymi, d2 i Y są warstwami dekodującymi (a Y jest zrekonstruowanym wyjściem).

X ma 784 jednostki, e1 ma 100, e2 ma 50, d1 ma ponownie 100, a Y 784 ponownie.

Używam sigmoidów jako funkcji aktywacyjnych dla warstw e1, e2, d1 i Y. Wejścia są w [0,1], podobnie jak wyjścia.

Cóż, próbowałem użyć entropii krzyżowej jako funkcji straty, ale wyjście zawsze było blobem i zauważyłem, że wagi od X do e1 zawsze będą zbieżne do macierzy o zerowej wartości.

Z drugiej strony, użycie średnich błędów kwadratowych jako funkcji straty, dałoby przyzwoity wynik, a teraz jestem w stanie zrekonstruować dane wejściowe.

Dlaczego to jest takie? Myślałem, że mogę zinterpretować wartości jako prawdopodobieństwa, a zatem użyć entropii krzyżowej, ale oczywiście robię coś złego.

AkiRoss
źródło
1
Wspomniałeś o użyciu sigmoid dla funkcji aktywacyjnych w pierwszych warstwach. Wykazują one „nasycenie”, jak wyjaśniono dokładniej w uwagach CS231n . Czy próbowałeś innej funkcji aktywacji, takiej jak ReLU?
Jerry
Nie mogę sobie teraz przypomnieć, gdybym spróbował innego, ale dziękuję za udostępnienie!
AkiRoss,

Odpowiedzi:

18

Myślę, że najlepszą odpowiedzią na to jest to, że funkcja utraty entropii nie jest po prostu dobrze dopasowana do tego konkretnego zadania.

Przyjmując to podejście, zasadniczo mówisz, że prawdziwe dane MNIST są binarne, a intensywność pikseli reprezentuje prawdopodobieństwo, że każdy piksel jest włączony. Ale wiemy, że tak nie jest. Niepoprawność tego dorozumianego założenia powoduje zatem problemy.

Możemy również spojrzeć na funkcję kosztu i zobaczyć, dlaczego może być nieodpowiednia. Powiedzmy, że nasza docelowa wartość w pikselach wynosi 0,8. Jeśli wykreślimy stratę MSE i stratę między entropią (normalizując to tak, aby jej minimum wynosiło zero), otrzymujemy:-[(cel)log(Prognoza)+(1-cel)log(1-Prognoza)]

entropia krzyżowa a strata mse

Widzimy, że utrata entropii krzyżowej jest asymetryczna. Dlaczego mielibyśmy tego chcieć? Czy naprawdę gorzej jest przewidzieć 0,9 dla tego 0,8 piksela niż przewidzieć 0,7? Powiedziałbym, że może lepiej.

Prawdopodobnie moglibyśmy przejść do bardziej szczegółowych informacji i dowiedzieć się, dlaczego prowadzi to do określonych obiektów blob, które widzisz. Zaryzykuję przypuszczenie, że dzieje się tak, ponieważ intensywność pikseli wynosi średnio powyżej 0,5 w regionie, w którym widać kroplę. Ale ogólnie rzecz biorąc, jest to przypadek domyślnych założeń dotyczących modelowania, które są nieodpowiednie dla danych.

Mam nadzieję, że to pomaga!

nlml
źródło
3
wo, jaka funkcja straty jest odpowiednia, jeśli wejście zmienia się w przedziale od 0 do 1?
Jemshit Iskenderov
Binary Cross Entropy Loss
torayeff