Функція втрати для автокодерів


21

Я експериментую трохи автокодерами, і за допомогою tensorflow я створив модель, яка намагається відновити набір даних MNIST.

Моя мережа дуже проста: X, e1, e2, d1, Y, де e1 і e2 - це кодуючі шари, d2 і Y - декодуючі шари (а Y - реконструйований вихід).

X має 784 одиниці, e1 має 100, e2 має 50, d1 знову 100 і Y 784 знову.

Я використовую сигмоїди як функції активації для шарів e1, e2, d1 та Y. Вхідні дані знаходяться в [0,1], і таким чином мають бути виходи.

Ну, я спробував використовувати перехресну ентропію як функцію втрати, але вихід завжди був крапкою, і я помітив, що ваги від X до e1 завжди збігаються до матриці з нульовим значенням.

З іншого боку, використання середніх квадратичних помилок як функції втрати дало б гідний результат, і я зараз в змозі реконструювати вхідні дані.

Чому це так? Я думав, що можу інтерпретувати значення як ймовірності, а тому використовувати перехресну ентропію, але явно роблю щось не так.


1
Ви згадали про використання сигмоїду для функцій активації в перших шарах. Вони виявляють "насичення", як більш повно пояснено у примітках CS231n . Ви спробували іншу функцію активації, як ReLU?
Джеррі

Зараз не можу згадати, якби я спробував інші, але дякую за обмін!
AkiRoss

Відповіді:


18

Я думаю, що найкраща відповідь на це полягає в тому, що функція втрати перехресної ентропії просто не дуже підходить до цієї конкретної задачі.

Використовуючи такий підхід, ви по суті говорите, що справжні дані MNIST є двійковими, а інтенсивність пікселів представляє ймовірність того, що кожен піксель "включений". Але ми знаємо, що це насправді не так. Тоді неправильність цього неявного припущення викликає у нас проблеми.

-[(цільовий)журнал(передбачення)+(1-цільовий)журнал(1-передбачення)]

перехресна ентропія проти втрати mse

Ми можемо бачити, що втрата перехресної ентропії асиметрична. Чому ми цього хотіли? Чи справді гірше прогнозувати 0,9 для цього 0,8 пікселя, ніж прогнозувати 0,7? Я б сказав, що, можливо, краще, якщо що.

Ми, мабуть, могли б детальніше розібратися і зрозуміти, чому це призводить до конкретних крапель, які ви бачите. Я б ризикнув здогадатися, що це тому, що інтенсивність пікселів в середньому вище 0,5 в регіоні, де ви бачите крапку. Але загалом це випадок неявних припущень моделювання, які ви зробили недоречними для даних.

Сподіваюся, що це допомагає!


3
Уо яка функція втрат підходить, якщо вхід плаває між 0 і 1?
Джемшит Іскендеров

Втрата бінарної хрестової ентропії
torayeff
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.