як зважувати втрати KLD проти втрати на відновлення у змінному автокодері


26

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

# latent space loss. KL divergence between latent space distribution and unit gaussian, for each batch.
# first half of eq 10. in https://arxiv.org/abs/1312.6114
kl_loss = -0.5 * tf.reduce_sum(1 + log_sigma_sq - tf.square(mu) - tf.exp(log_sigma_sq), axis=1)

# reconstruction error, using pixel-wise L2 loss, for each batch
rec_loss = tf.reduce_sum(tf.squared_difference(y, x), axis=[1,2,3])

# or binary cross entropy (assuming 0...1 values)
y = tf.clip_by_value(y, 1e-8, 1-1e-8) # prevent nan on log(0)
rec_loss = -tf.reduce_sum(x * tf.log(y) + (1-x) * tf.log(1-y), axis=[1,2,3])

# sum the two and average over batches
loss = tf.reduce_mean(kl_loss + rec_loss)

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


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

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


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

Lлатент(i)=-12j=1J(1+журнал(σj(i))2-(мкj(i))2-(σj(i))2)

Lrеcон(i)=-к=1К(ук(i)-хк(i))2

L(м)=1Мi=1М(Lлатент(i)+Lrеcон(i))

де - розмірність латентного вектора z (і відповідне середнє μ і дисперсія σ 2 ), K - розмірність вхідних ознак, M - розмір міні-партії, індекс ( i ) позначає i- ю точку даних і L ( m ) - втрати для m- ї міні-партії.Jzмкσ2КМ(i)iL(м)м

Відповіді:


17

7

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

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

Малюнок 2. Вага терміна дивергенції KL варіативної нижньої межі за типовим графіком сигмоїдного відпалу, побудованого поряд із (не зваженим) значенням терміну дивергенції KL для нашого VAE на Penn TreeBank.

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

Папір:

Bowman, SR, Vilnis, L., Vinyals, O., Dai, AM, Jozefowicz, R. and Bengio, S., 2015. Генерування речень із суцільного простору . arXiv передрук arXiv: 1511.06349.

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