Машинне навчання - як зважити втрату KLD проти реконструкції втрат у варіаційному автокодері -

майже у всіх прикладах коду, які я бачив для VAE, функції втрат визначаються наступним чином (це код тензор-потоку, але я бачив подібні для theano, torch тощо. Це також для convnet, але це також не надто актуально, просто впливає на осі суми беруться):

Однак числовий діапазон kl_loss і rec_loss дуже залежить від прихованого затемнення простору та розміру вхідної функції (наприклад, роздільна здатність пікселів) відповідно. Чи було б розумно замінити зменшення_суми на зменшення_значення, щоб отримати на z-dim KLD і на піксель (або функцію) LSE або BCE? Що ще важливіше, як ми зважуємо приховану втрату з втратою на реконструкцію під час підсумовування остаточної втрати? Це просто спроби та помилки? чи існує якась теорія (або принаймні емпіричне правило) для цього? Я ніде не міг знайти інформацію про це (включаючи оригінальний документ).

Проблема, з якою я стикаюся, полягає в тому, що якщо баланс між розмірами моєї вхідної функції (x) та розмірами прихованого простору (z) не є "оптимальним", або мої реконструкції дуже хороші, але вивчений прихований простір неструктурований (якщо x розміри дуже висока, і помилка реконструкції домінує над KLD), або навпаки (реконструкції погані, але вивчений прихований простір добре структурований, якщо KLD домінує).

Мені доводиться нормалізувати втрати при реконструкції (ділення на розмір вхідної функції) і KLD (ділення на розміри z), а потім вручну зважувати термін KLD з довільним коефіцієнтом ваги (Нормалізація така, що я можу використовувати той самий або аналогічна вага незалежно від розмірів x або z). Емпірично я знайшов близько 0,1, щоб забезпечити хороший баланс між реконструкцією та структурованим прихованим простором, який мені здається "солодкою плямою". Я шукаю попередню роботу в цій галузі.

За запитом, математичне позначення вище (з акцентом на втрати L2 для помилки реконструкції)

де $ J $ - розмірність прихованого вектора $ z $ (і відповідне середнє значення $ \ mu $ та дисперсія $ \ sigma ^ 2 $), $ K $ - розмірність вхідних ознак, $ M $ - міні-партія розмір, верхній індекс $ (i) $ позначає $ i $ -ю точку даних, а $ \ mathcal ^ $ - втрата для $ m $ -го міні-пакета.

4 відповіді 4

Для тих, хто спотикається на цій посаді, також шукає відповіді, ця тема у Twitter додала багато дуже корисного розуміння.

обговорює моє точне питання з кількома експериментами. Цікаво, що, здається, їх $ \ beta_ $ (що схоже на мою нормалізовану вагу KLD) також зосереджений приблизно на 0,1, при цьому більш високі значення дають більш структурований прихований простір за рахунок гіршої реконструкції, а нижчі значення дають кращу реконструкцію з менш структурованою прихованою простору (хоча їх основна увага приділяється вивченню розплутаних уявлень).

та відповідне читання (де обговорюються подібні питання)

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

У підрозділі 3.1 статті автори зазначили, що вони не змогли навчити пряму реалізацію VAE, яка однаково зважувала ймовірність та розбіжність KL. У їхньому випадку втрата KL була небажано зменшена до нуля, хоча, як очікувалося, вона мала невелике значення. Щоб подолати це, вони запропонували використовувати "відпал витрат KL", який повільно збільшував ваговий коефіцієнт терміну розбіжності KL (синя крива) з 0 до 1.

машинне

Це обхідне рішення також застосовується в Ladder VAE.

Bowman, S.R., Vilnis, L., Vinyals, O., Dai, A.M., Jozefowicz, R. and Bengio, S., 2015. Генерування речень із неперервного простору. препринт arXiv arXiv: 1511.06349.

Оновлення від 6 грудня 2020 року: Я зробив допис у блозі, щоб детально пояснити це.