Приветствую сообщество! В продолжение моей предыдущей статьи о системах рекомендаций предлагаю следующую тему - вариационные автоэнкодеры. Это невероятно интересный подход, хотя его математика может заставить выпить не одну чашку кофе, чтоб ее поняли. Тут я опять же сконцентрируюсь на математике и не буду рассматривать практическую реализацию, так как она есть в некоторых библиотеках машинного обучения, куда и можно обратиться за кодом.
Вариационные автоэнкодеры или VAEs – это автоэнкодер, распределение кодировок которого регулируется во время обучения, чтобы гарантировать, что его скрытое пространство имеет полезные свойства, позволяющие нам генерировать некоторые новые данные. Сам термин «вариационный» происходит от тесной связи между регуляризацией и методом вариационного вывода в статистике. Данный подход чем-то похож на генеративные модели (GAN). Они могут производить случайные выходные данные, которые схожи с тренировочными данных. Похожую концепцию реализуют и вариационные автоэнокдеры, но позволяют исследовать данные нужным нам способом. Насколько мне известно, на данный момент, VAEs достаточно известны благодаря «deep fake» разработкам, таким как лиц людей которые никогда не жили или создания искусственной музыки.
Нейросеть автоэнкодера это пара из двух нейросетей – энкодера и декодера. При передаче данных в энкодер, данный компонент преобразует их, делая данные более компактными и сжатым, а компонент декодера, что понятно из контекста, преобразует их в оригинальный вид. То есть, по сути, VAEs очень похожи на уже классические сверточные нейросети. В сверточных нейронных сетях сверточные слои принимают большую по объему единицу данных и преобразует ее в более плотный и компактный вид. Затем новый формат используется для классификации других данных (например породы вашего любимого животного). VAE выполняет похожий порядок, на входе кодирует данные, причем так чтоб содержалось достаточно данных о искомом объекте и затем используя декодер становится возможным на основе существующего представления делать некоторые предположения. Во многих статьях вид классического автоэнкодера представляют следующим рисунком:
В рамках систем рекомендаций на основе коллаборативной фильтрации и VAE известно о множестве моделей, но в этой статье мы рассмотрим основной из них – Standard-VAE (SVAE), так как остальные подходы базируются именно на нем. Для SVAE мы будем полагать , для индексации пользователей (users) и для индексации рекомендуемых объектов (items), и будем рассматривать как обучение с неявной связью. Матрица взаимодействия пользователя с объектом — это матрица кликов . Нижний регистр — это вектор «мешок слов» с количеством кликов для каждого элемента пользователя u.
Как упоминалось выше, система рекомендаций на основе автоэнкодера — это неконтролируемая модель, пытающаяся восстановить свои входные данные в выходном слое. Средний слой (слой узких мест) используется как характерное представление входных данных. В данном алгоритме используется стандартный вариационный автоэнкодер и выводится вариационная функция потерь нижней границы стандартного вариационного автоэнкодера. Результатом SVAE является распределение вероятностей по K элементам (объектам рекомендаций). Это то, чем SVAE отличается от обычного VAE, в котором конечный выход является реконструированным входом. Таким образом, SVAE принимает рейтинги пользователей в виде матрицы щелчков , а затем кодирует матрицу для определения среднего , и стандартного отклонения , K-мерного латентного представления , с помощью функции кодировщика . Другими словами, скрытый вектор для каждого пользователя выбирается из распределения Гаусса, где , то есть – это нормально распределенная случайная величина со средним и среднеквадратичным распределением . Затем функция декодера используется для декодирования скрытого вектора из K-мерного пространства в распределение вероятностей в исходном N-мерном пространстве, то есть из исходного пространства объектов с кликами мы получаем новое пространство с вероятностями отношения пользователя к объекту. В результате мы получаем вероятности просмотра каждого из N объектов рекомендаций (фильмов, книг и др.) каждым пользователем.
Также в данной модели используется особая целевая функция или функция потерь — ELBO (Evidence Lower Bound), можно перевести как «нижний предел доказательств»:
где – вектор объектов рекомендаций, – скрытое представление , и – это априорное и апостериорное распределения, – мера расходимости Кульбака-Лейблера.
Первая часть уравнения ELBO рассматривает логистическую логарифмическую вероятность для объекта с учетом его скрытого представления (ошибки реконструкции), в то время как второй член KL можно рассматривать как часть регуляризации. Логарифмы в данном случае являются натуральными и имеют основание, которое равно иррациональной константе. Наша цель – максимизировать ELBO, что эквивалентно минимизации отрицательного ELBO (NELBO).
Стоить заметить, что введенная нами мера расхождения Кульбака-Лейблера распределения P относительно Q – не является метрикой и имеет следующий вид:
Значение функционала можно понимать как количество неучтённой информации распределения P, если Q было использовано для приближения P. Данная мера расхождения также интерпретируется как величина потерь информации при замене истинного распределения P на распределение Q.
В свою очередь функция логистической логарифмической вероятности для пользователя задается как:
где – содержит все объекты , а – выход генеративной функции.
Также, ELBO обычно расширяется, введя параметр , чтобы контролировать степень регуляризации:
Представление о регуляризации ELBO – это компромисс между тем, насколько хорошо мы можем подогнать данные и насколько близки приблизительные данные к предыдущим во время обучения. Вводя параметр, мы ослабляем влияние априорного ограничения. В результате модель становится менее способной генерировать новые предпочтения пользователей с помощью наследственной выборки. Важно отметить, что основная цель не в максимальном увеличении вероятности или создании воображаемых предпочтений пользователей, а в том, чтобы дать хорошие рекомендации. Таким образом, рассмотрение как параметра регуляризации приводит к значительному повышению производительности.
Поэтому обычно для SVAE добавляют простую эвристику для настройки . Данную эвристику можно описать так: мера расхождения , рассмотренной ранее, линейно нормализуется путем медленного увеличения от 0 до 1 в течение большого количества шагов обучения. Предполагается, что должно достигнуть примерно в 80% эпох, а затем останется стабильным на значении 1. После чего оптимальная находится на основе пикового значения метрики NDCG@K для проверочных наборов данных. После нахождения оптимального бета мы переобучаем модель с той же нормализацией, но останавливаем увеличение после достижения значения оптимального, найденного на предыдущем шаге. В качестве альтернативы можно сказать, что мы нормализуем до тех пор, пока он не достигнет нового предела нормализации в 80% эпох.
На этом все! Конечно это не вся математика которая лежит в основе подхода. Можно и дальше разбирать различные компоненты, но в более общем виде мы имеем представление указанное выше. Кроме Standard-VAE есть популярный подход Multi-VAE, который использует полиномиальное правдоподобие и рассматривает проблему как мультиклассовую классификацию, но в общих чертах он очень схож с подходом рассмотренным в данной работе.