Обучение VAE и нижняя вариационная граница
В машинном обучении для оптимизации каких-либо вероятностных моделей часто используется нижняя вариационная граница (evidence lower bound), о ней и пойдет речь.
В первую очередь задача. Допустим мы генерируем картинки следующим образом: сэмплируем из стандартного многомерного нормального распределения какой-то вектор
Совместное распределение такого процесса мы назовем
Как такое обучить, если у нас есть очень много лиц? Заведем процесс, обратный процессу
Для простоты я буду опускать далее индексы
Окей, а теперь формально запишем, что мы хотим от нашей модели. Мы хотим, чтобы в среднем мы нормальные картинки генерировали. А на языке статистики это значит, что мы хотим, чтобы правдоподобие наших реальных картинок было максимальным в нашей генерирующей модели
То есть это значение маргинального распределения на наших картинках. Само маргинальное распределние -- просто распределение картинок, которые мы генерируем. И мы пытаемся максимизировать это распределение в точках реальных картинок.
По некоторым причинам удобнее работать с логарифмом этой величины. Так как логарифм -- функция монотонная, значение максимума не изменится
Так как картинок у нас много, усредним по "всем реальным картинкам" эту величину, взяв по их распределению мат. ожидание и получим
Но теперь вспомним, что для такого распределения реальных картинок у нас уже есть обозначение -- это просто
Так что мы по факту хотим оптимизировать
Теперь распишем аккуратно то, что находится справа под математическим ожиданием, зафиксировав конкретный
Для вогнутых функций
Получаем, применим его:
Величина справа и называется нижней вариационной границей или ELBO (Evidence Lower BOund)
Почему она нам вообще интересна? На это есть две причины:
Максимизируя нижнюю границу (по нашим параметрам
и ) мы можем быть уверены, что наша оцениваемая величина не меньше её значения, а значит тоже как бы при этом процессе максимизируется На самом деле эта нижняя граница может стать точной оценкой нашей величины (т.е. не только снизу)
Если первое, наверное, очевидно, то второе требует пояснения. Для этого, раскроем совместное распределение по правилу
Первое слагаемое от
Что это вообще значит?
Максимизируя ELBO, мы не только максимизируем
но и минимизируем, Если мы доминимизируем
до нуля, то мы будем в аккурат максимизировать (потому что ELBO будет попросту совпадать с ней)
Оба распределения под KL-дивергенцией параметризуются обучаемыми параметрами, а значит, эта KL-дивергенция для достаточно хороших параметризующих алгоритмов может быть устремлена к нулю
Отлично! Теперь мы просто забиваем на лог-правдоподобие
Следующая проблема, которая перед нами встает: как оценить это самое ELBO
Что мы вообще знаем в нашей модели? Мы умеем с помощью наших алгоритмов (нейросеток)
Осталось понять, почему то, что мы получили -- это как бы хорошо. Для этого осознаем один факт про математическое ожидание:
Доказать этот факт довольно просто:
А теперь вспомним, что на самом-то деле мы хотим не саму ELBO оптимизировать, а его мат. ожидание по
И тут нам как раз пригождается это свойство матожей:
Хорошо это в первую очередь потому, что мы переписали ELBO таким образом, что оно зависит от
Вот у нас есть картинка
Первое слагаемое (уменьшаемое) можно самым тупым образом оценить: чтобы оценить мат. ожидание, можно взять среднее. А среднее для одного элемента это сам этот элемент :). Так что мы просто сэмплируем
Так как плотность многомерного нормального (оно же в данном случае правдоподобие) описывается формулой
Получается, что лог-правдоподобие:
Второе слагаемое (вычитаемое) -- KL-дивергенция двух нормальных с известными средними и дисперсиями. Здесь мы уже можем явно записать, чему она равна:
Таким образом мы можем явно оценить два слагаемых: первое через MSE реального изображения и реконструированного, второе по формуле KL-дивергенции. А значит оптимизировать наши параметры