Приветствую сообщество! В продолжение моей предыдущей статьи о системах рекомендаций предлагаю следующую тему - вариационные автоэнкодеры. Это невероятно интересный подход, хотя его математика может заставить выпить не одну чашку кофе, чтоб ее поняли. Тут я опять же сконцентрируюсь на математике и не буду рассматривать практическую реализацию, так как она есть в некоторых библиотеках машинного обучения, куда и можно обратиться за кодом.
Вариационные автоэнкодеры или 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 – это компромисс между тем, насколько хорошо мы можем подогнать данные и насколько близки приблизительные данные к предыдущим во время обучения. Вводя параметр