Вариационные автоэнкодеры для системы рекомендаций

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Вариационные автоэнкодеры или VAEs – это автоэнкодер, распределение кодировок которого регулируется во время обучения, чтобы гарантировать, что его скрытое пространство имеет полезные свойства, позволяющие нам генерировать некоторые новые данные. Сам термин «вариационный» происходит от тесной связи между регуляризацией и методом вариационного вывода в статистике. Данный подход чем-то похож на генеративные модели (GAN). Они могут производить случайные выходные данные, которые схожи с тренировочными данных. Похожую концепцию реализуют и вариационные автоэнокдеры, но позволяют исследовать данные нужным нам способом. Насколько мне известно, на данный момент, VAEs достаточно известны благодаря «deep fake» разработкам, таким как лиц людей которые никогда не жили или создания искусственной музыки.

Нейросеть автоэнкодера это пара из двух нейросетей – энкодера и декодера. При передаче данных в энкодер, данный компонент преобразует их, делая данные более компактными и сжатым, а компонент декодера, что понятно из контекста, преобразует их в оригинальный вид. То есть, по сути, VAEs очень похожи на уже классические сверточные нейросети. В сверточных нейронных сетях сверточные слои принимают большую по объему единицу данных и преобразует ее в более плотный и компактный вид. Затем новый формат используется для классификации других данных (например породы вашего любимого животного). VAE выполняет похожий порядок, на входе кодирует данные, причем так чтоб содержалось достаточно данных о искомом объекте и затем используя декодер становится возможным на основе существующего представления делать некоторые предположения. Во многих статьях вид классического автоэнкодера представляют следующим рисунком:

Вид классического автоэнкодера
Вид классического автоэнкодера

В рамках систем рекомендаций на основе коллаборативной фильтрации и VAE известно о множестве моделей, но в этой статье мы рассмотрим основной из них – Standard-VAE (SVAE), так как остальные подходы базируются именно на нем. Для SVAE мы будем полагать u\in\{{1,\ \ldots,\ U}\}, для индексации пользователей (users) и i\in\left\{1,\ \ldots,\ I\right\}для индексации рекомендуемых объектов (items), и будем рассматривать как обучение с неявной связью. Матрица взаимодействия пользователя с объектом — это матрица кликов X\in N^{U\times I}. Нижний регистр x_u=\ \left[X_{u1},\ \ldots,\ X_{uI}\right]^T\in N^I— это вектор «мешок слов» с количеством кликов для каждого элемента пользователя u.

Как упоминалось выше, система рекомендаций на основе автоэнкодера — это неконтролируемая модель, пытающаяся восстановить свои входные данные в выходном слое. Средний слой (слой узких мест) используется как характерное представление входных данных. В данном алгоритме используется стандартный вариационный автоэнкодер и выводится вариационная функция потерь нижней границы стандартного вариационного автоэнкодера. Результатом SVAE является распределение вероятностей по K элементам (объектам рекомендаций). Это то, чем SVAE отличается от обычного VAE, в котором конечный выход является реконструированным входом. Таким образом, SVAE принимает рейтинги пользователей в виде матрицы щелчков x_u, а затем кодирует матрицу для определения среднего m_u, и стандартного отклонения \sigma_u, K-мерного латентного представления z_u, с помощью функции кодировщика g_\phi\left(x_u\right)=[m_u,\ \sigma_u]. Другими словами, скрытый вектор для каждого пользователя z_uвыбирается из распределения Гаусса, где z_u\ \sim N\left(m_u,\ \sigma_u\right),  то есть z_u– это нормально распределенная случайная величина со средним m_u и среднеквадратичным распределением \sigma_u.  Затем функция декодера f_\theta\left(z_u\right)=\pi_uиспользуется для декодирования скрытого вектора из K-мерного пространства в распределение вероятностей \pi_uв исходном N-мерном пространстве, то есть из исходного пространства объектов с кликами мы получаем новое пространство с вероятностями отношения пользователя к объекту. В результате мы получаем вероятности просмотра каждого из N объектов рекомендаций (фильмов, книг и др.) каждым пользователем.

Архитектура VAE
Архитектура VAE

Также в данной модели используется особая целевая функция или функция потерь — ELBO (Evidence Lower Bound), можно перевести как «нижний предел доказательств»:

Loss=\ \log{p_\theta\left(x_u\middle| z_u\right)-KL\left(q\left(z_u\right)\ ||\ p\left(z_u\middle| x_u\right)\ \right)}

где x_u– вектор объектов рекомендаций, z_u– скрытое представление x_u, qи p – это априорное и апостериорное распределения, KL – мера расходимости Кульбака-Лейблера.

Первая часть уравнения ELBO рассматривает логистическую логарифмическую вероятность для объекта с учетом его скрытого представления (ошибки реконструкции), в то время как второй член KL можно рассматривать как часть регуляризации. Логарифмы в данном случае являются натуральными и имеют основание, которое равно иррациональной константе. Наша цель – максимизировать ELBO, что эквивалентно минимизации отрицательного ELBO (NELBO).

Стоить заметить, что введенная нами мера расхождения Кульбака-Лейблера распределения P относительно Q – не является метрикой и имеет следующий вид:

KL(P\ ||\ Q)\ =\ -\sum{P(x)\log{Q\left(x\right)+\ }\sum{P(x)\log{P\left(x\right)}}}

Значение функционала можно понимать как количество неучтённой информации распределения P, если Q было использовано для приближения P. Данная мера расхождения также интерпретируется как величина потерь информации при замене истинного распределения P на распределение Q.

В свою очередь функция логистической логарифмической вероятности для пользователя x_uзадается как:

\log{p_\theta\left(x_u\middle| z_u\right)=\ \sum_{i}{x_{ui}\log{\sigma\left(f_{ui}\right)+\left(1-\ x_{ui}\right)\log{\left(1-\sigma\left(f_{ui}\right)\right)}}}}

где \sigma\left(x\right)=\ 1/{\left(1+\exp(-x)\right)}– содержит все объекты i, а f_{ui}– выход генеративной функции.

Также, ELBO обычно расширяется, введя параметр \beta, чтобы контролировать степень регуляризации:

Loss=\ \log{p_\theta\left(x_u\middle| z_u\right)-\beta KL\left(q\left(z_u\right)\ ||\ p\left(z_u\middle| x_u\right)\ \right)}

Представление о регуляризации ELBO ­– это компромисс между тем, насколько хорошо мы можем подогнать данные и насколько близки приблизительные данные к предыдущим во время обучения. Вводя параметр


Интересные статьи

Интересные статьи

Проработав 20 лет в ИТ, 8 из которых в должности CIO, а последние 5 в роли CEO ИТ-компании, я решил написать статью для тех, кто причастен к управлению цифровизацией бизнеса – собственников, CFO, CEO ...
С увеличением количества обслуживаемых продуктов наша дизайн-система начала разваливаться. Вырос порог входа для дизайнеров и работать с ней стало труднее. В статье расск...
Стоит признать, что стриминг существенным образом повлиял не только на заработок музыкантов, но и на то, как мы находим и слушаем их творчество. С другой стороны, промежу...
Введение Друзья, добрый день. Данную статью я хочу посвятить такому продукту, как MaxPatrol SIEM компании Positive Technologies уже более 17 лет разрабатывающей инновационные решения в о...
Если у вас есть интернет-магазин и вы принимаете платежи через Интернет, то с 01 июля 2017 года у вас есть онлайн-касса.