Привет, Хабр, сегодня хочу предложить рассмотреть RBM модель для системы рекомендаций. Я думаю многие слышали о данном подходе для нейронных сетей, но именно в контексте рекомендательных систем информации на русском языке мало, хотя подход очень популярен. Здесь я сконцентрируюсь на математике, в свою очередь подсмотреть реализацию вы можете в репозитории recommenders Microsoft (https://github.com/microsoft/recommenders).

RBM — это модель генеративной нейронной сети, которая обычно используется для обучения без учителя. Основная задача RBM – изучить совместное распределение вероятностей  P(\upsilon,\ h), где \upsilon – видимые единицы, а h – скрытые. Скрытые единицы представляют собой скрытые переменные, в то время как видимые единицы ограничены входными данными. Как только совместное распределение изучено, путем выборки из него создаются новые примеры.

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

  • Обобщаемость: модель хорошо обобщается на новые примеры, если они не сильно различаются по вероятности;

  • Стабильность во времени: если задача рекомендаций стационарна во времени, модель не нужно часто обучать, чтобы приспособиться к новым рейтингам / пользователям.

Стоит отметить, что данная модель ­– это неориентированная графическая модель, первоначально разработанная для изучения статистической механики илифизики магнитных систем. Статистическая механика обеспечивает вероятностное описание сложных систем, состоящих из огромного числа компонентов (обычно ∼1023). Вместо того, чтобы смотреть на конкретный экземпляр системы, цель статической механики описать их типичное поведение. Этот подход оказался успешным для описания газов, жидкостей, сложных материалов например,полупроводников и даже знаменитого бозона Хиггса! Разработанный для обработки и организации больших объемов данных, алгоритм идеально подходит в современных алгоритмах обучения. В контексте рекомендательных систем идея состоит в том, чтобы изучить типичное поведение пользователя, а не конкретные примеры.

Основной величиной каждой модели статической механики является распределение Больцмана – это можно рассматривать как наименее смещенное распределение вероятностей на данном вероятностном пространстве\Sigmaи может быть получено с использованием принципа максимальной энтропии на пространстве распределений над\Sigma. Его типичная форма:

P=1/Ze^{(-\beta H)}

где,Z– нормировочная константа, известная как статистическая сумма,\beta– параметр шума с единицами обратной энергии; H– гамильтониан или функция энергии системы.

По этой причине этот класс моделей в информатике также известен как энергетический. В физике\beta— это обратная температура системы в единицах постоянной Больцмана, но здесь мы фактически изменим масштаб внутриH, так что теперь это натуральное число.Hописывает поведение двух наборов стохастических векторов, обычно называемых v_iи h_jПервые составляют вход и выход алгоритма, а скрытые единицы — это скрытые факторы, которые мы хотим изучить. Эта структура приводит к следующей топологии нейронной сети:

Топология нейронной сети RBM
Топология нейронной сети RBM

Теперь ближе к алгоритму. Входные данные выборки, которая используется разработчиком, состоят из оценок от 1 до 5. Таким образом, мы будем рассматривать дискретное конфигурационное пространство mвидимых переменных, каждая из которых принимает значения в конечном множестве \chi_v= {\ \{1,2,3,4,5} \}. Глобальная конфигурация системы определяется следующим образом: v = {\ \{v_1,\ v_2,\ \ldots,\ v_m} \} \in\chi_v^mи назначается 0 для объекта без рейтинга. В добавок также указываются скрытые блоки, которые мы принимаем в качестве случайных двоичных величин \chi_h={\{0,1}\}, обозначающих, активен конкретный блок или нет, и h\ =\left\{h_1,\ h_2,\ \ldots,\ h_n\right\}\ \in\chi_h^n. Скрытые блоки могут описывать скрытые атрибуты объекта, дляфильмов−жанр,длястатей−областьисследованияит.д.. Минимальная модель такой системы определяется следующим гамильтонианом:

H=-\sum_{i,j\ \in\ G}{v_iw_{ij}h_j-\sum_{i=1}^{m}{v_ia_i-\sum_{j=1}^{n}{h_ib_i}}}

Первый член — это «термин взаимодействия», фиксирующий корреляции между видимыми и скрытыми единицами, в то время как два других члена являются «потенциальными терминами», принимая во внимание предвзятость единиц. Корреляционная матрица w_{ij} и два смещения a_i и b_iявляются параметрами обучения, которые должны быть зафиксированы путем минимизации правильно определенной функции стоимости. При этом нельзя напрямую минимизировать функцию ошибок между прогнозируемыми и оригинальными данными. Как и в любой задаче статической механики, правильной величиной, которую нужно минимизировать, является свободная энергия (при этом в нашем случае \beta=1).

F=\ -\log{Z}=-log\sum_{v_i,\ \ h_i}{P(v,h)}

На языке теории вероятностей указанная выше величинаFявляется кумулянтной производящей функцией. Одним из способов оценки свободной энергии является использование алгоритма выборки Монте-Карло с цепью Маркова, но здесь мы будем использовать вместо этого приближенный метод, называемый контрастной дивергенцией, основанный на выборке Гиббса. Его преимущество, в том, что он быстрее Монте-Карло. Как только кандидатFбыл найден, мы фиксируем параметры обучения, минимизируя F.

Рассмотрим модель более подробно. Вместо выборки непосредственно из совместного распределения вероятностей можно оценить условные распределения:

P(v,h)=P(v|h)P(h)=P(h|v)P(v)

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

Позитивная фаза начинается с фиксации видимых блоков в данных и определении P\left(h_j=1\ |\ v\right), то есть определение вероятности того, что j-й скрытый блок активен для всего входного вектора. На практике производящую функцию удобно оценивать как:

Z[v, b]=\prod_{j}\sum_{h_j=0,1}{e^{h_j(\sum_{i}{w_{ij}v_i\ +\ b_j})}=\prod_{j}{(1\ +\ e^{\sum_{i}{w_{ij}v_i\ +\ b_j}})}}

Взяв градиенты по смещению, получим:

\frac{\partial}{\partial b_j}\log{Z[v,b]}=\frac{1}{1+e^{-(\sum_{i}{w_{ij}v_i\ +\ b_j})}}=\sigma(\phi_j(v,b))

где \phi_j\left(v,\ b\right)=\sum_{i}{w_{ij}v_i}+b_j, и логистическая функция идентифицируется как \sigma\left(\bullet\right)\equiv P\left(h_j=1\ |\ v,b\right). Собственно \sigma используется, чтобы выбрать значение h_j.

В свою очередь негативная фаза включает использование выборочного значения скрытых единиц, чтобы определить P\left(v_i=q\ |\ h\right), , где q = 1, ..., 5. Это дается полиномиальным выражением:

P(v_i=q\ |\ h,a)=\prod_{v_i=1}^{q}e^{v_i(\sum_{i}{w_{ij}h_j\ +\ a_i})/Z_q}

где Z_q– статистическая сумма, вычисленная по результатам q. Далее, выбираются значения v_iиз приведенного выше распределения. Разумеется, что эти новые  v_iне обязательно являются теми, которые мы использовали в качестве входных данных, по крайней мере, не в начале обучения. Вышеупомянутые шаги повторяются ???? раз, причем ???? обычно увеличивается во время тренировки в соответствии с заданным значением.

В конце каждой k-шаговой выборки Гиббса расчитывается разница между начальной свободной энергией при ???? = 1 и заданном v и энергией после k-шагов и обновляются параметры обучения w_{ij}, b_i, a_i, путем дифференцирования ∆F.

∆F=F_0-F_k

Этот процесс повторяется для каждой обучающей эпохи, до тех пор, пока ∆F=0, то есть изученное распределение точно воспроизводит эмпирическое. В этом смысле v_i служит как входом, так и выходом модели. Поскольку w_{ij}содержит информацию о том, как соотносятся оценки пользователей, мы можем использовать эту информацию для создания рейтингов для неоцененных объектов путем выборки из изученного предельного распределения:

v_i=\sum_{v_i}{P(v)}

На этом вообщем-то и все! Как упоминалось выше, реализацию можно посмотреть у Microsoft. Она достаточно хорошо задокументирована и предоставляет простые примеры с использованием RBM.

Исследуйте и развивайтесь! ​

Комментарии (4)


  1. shok96
    31.07.2021 13:50

    Сильно много Null получается


    1. al-petrushin Автор
      31.07.2021 14:50

      Да, была небольшая проблема с формулами из-за чего они ломались. Сейчас вроде все исправил.


  1. Sergey_Kovalenko
    01.08.2021 10:11
    +1

    Все познается в сравнении. Было бы здорово, если бы Автор добавил в статью результат использования описанной им сетки на каком-нибудь изученном с помощью других подходов примере (тот же нетфликс), а затем сравнил качество нового и старых методов.

    Для не физиков не совсем понятно место со свободной энергией. Почему минимизируют ее. Почему гамильтониан именно такой?


    1. al-petrushin Автор
      17.11.2021 01:06

      Извиняюсь за задержку в ответе. Что касается вопросов:

      Было бы здорово, если бы Автор добавил в статью результат использования описанной им сетки на каком-нибудь изученном с помощью других подходов примере (тот же нетфликс), а затем сравнил качество нового и старых методов.

      Здесь, как и во многих других задачах машинного обучения, нет истинно верного или не верного подхода: нужно смотреть на разреженность матрицы оценок, тематику, наличие и количество скрытых факторов предпочтений пользователей. И уже после проведенного исследования над данными выбирать нужных подход. Кроме того, такие большие дяди как Netflix могут совмещать несколько подходов в одном, например сначала проходить ALS и вычленять поверхностные скрытые единицы и далее использовать deep dive и базы знаний для определения более глубоких предпочтений юзеров. Кроме того, целью данной работы была математика, а не практическая реализация. Надеюсь в будущем, я сделаю несколько статей о практике, но пока вы можете обратиться к репозиторию Microsoft, где представлено много подходов (в том числе и этот) и значения метрик качества ранжирования на одном датасете.

      Для не физиков не совсем понятно место со свободной энергией. Почему минимизируют ее. Почему гамильтониан именно такой?

      Свободная энергия касательно ИИ - это очень сложный вопрос, сказать честно, но ее минимизация формально связана с вариационными байесовскими методами и первоначально была введена Карлом Фристоном. Причем Фристон был неврологом и пытался описать исследования в своей области. А вот в физике это термодинамический потенциал и чем ее меньше, тем больше работы приложенной на тело. То есть очень грубо говоря, чем меньше свободной энергии, тем больше энергии в системе. Но, возвращаясь к ИИ и неврологии, когда система активно проводит исследование предметной области, чтобы минимизировать свободную энергию, она неявно выполняет активный вывод и максимизирует доказательства.
      Что касается гамильнониана, то он такой, потому, что описывает поведение двух наборов стохастических векторов, плюс он принимает скрытые факторы, которые мы не просто хотим изучить, а для некоторых объектов их "включать-выключать". Мне кажется, авторы подхода пробовали большое количество вариаций и пришли к идеальной модели. То есть, отвечая на ваш вопрос, он такой, потому что включая все вводные он работал лучше других.