Understanding and Improving Interpolation in Autoencoders via an Adversarial Regularizer

David Berthelot, Colin Raffel, Aurko Roy, Ian Goodfellow

Статья: https://arxiv.org/abs/1807.07543

Код: https://github.com/brain-research/acai



А вот про автоэнкодеры. Которые умеют интерполировать в латентном пространстве.



Вроде как считается, что VAE отличается от обычного автоэнкодера именно этим. За счёт хитрых лоссов его латентные коды получаются непрерывными и более-менее любая точка из этого пространства генерит что-то похожее на реальность. В то время как обычный автоэнкодер ничего такого не гарантирует.



Но не всё так просто.



Если хочется уметь интерполировать в латентном пространстве так, чтобы любая комбинация вида alpha*z1 + (1-alpha)*z2 между двумя точками в этом пространстве z1 и z2 давала что-то хорошее, то VAE не так уж и хорош. На картинке с модельным примером с линиями хорошо видно. Каждый кадр нормальный, но нет непрерывности при движении по траектории в латентном пространстве. Другие автоэнкодеры тоже не очень. Например, сильно мылят или пытаются интерполировать в пространстве данных, между пиксельными картинками. Выглядит плохо.



Чтобы автоэнкодер соответствовал таким представлениям о прекрасном, авторами (среди которых есть и Гудфеллоу, автор GAN) в процедуру обучения вводится adversarial loss в лице critic network, в которую подаются интерполяции существующих примеров из данных, а критик должен определить, с каким коэффициентом alpha они были замешаны (либо ноль, если это не смесь). Получается ACAI, Adversarially Constrained Autoencoder Interpolation.



По сути, ACAI добивается того, чтобы интерполированные точки выглядели реалистично. Никаких ограничений на скрытые репрезентации не накладывается и структура этого пространства не задаётся (нет KL-лосса за несоответствие нормальному распределению, например, как в VAE). ACAI также не пытается отличать “настоящие” картинки от “ненастоящих”. Только предсказывает коэффициент интерполяции. И через стимулирование более качественной интерполяции влияет на скрытое представление.



Для численной оценки качества интерполяции предлагается простой бенчмарк с линиями (с часовой стрелкой если угодно), где всё понятно как мерять.



Сравниваются разные автоэнкодеры: обычный, denoising, VAE (не beta-VAE), adversarial autoencoder (AAE), vector quantizer VAE (VQ-VAE) и ACAI.



И картинки, и числа показывают, что ACAI работает лучше остальных перечисленных. Заодно получаем какую-то интересную интуицию про остальные автоэнкодеры на такой задаче.



Также проверяем качество representation learning’а — годные ли получаются фичи для downstream задач: классификации и кластеризации. Годные, ACAI рулит. Эпизодически также рулят другие автоэнкодеры, например Denoising AE на SVHN.



В общем, прикольная модель. Кажется полезной.