Как Netflix рекомендует фильмы пользователям?

К концу этого блога вы поймете, как Netflix рекомендует фильмы пользователям. Если у вас нет опыта работы с машинами Больцмана (BM), я рекомендую вам пройти по этой ссылке (Часть 1).

Почему RBM?

Зачем нам RBM, когда у нас есть машины Больцмана? На практике очень сложно реализовать BM, на самом деле, в какой-то момент мы столкнемся с препятствием, потому что мы не можем вычислить полную машину Больцмана, и причина этого в том, что по мере увеличения количества узлов, количество соединений между их растет в геометрической прогрессии. Поэтому был предложен другой тип архитектуры, который называется ограниченная машина Больцмана.

Как работает RBM?

Мы рассмотрим пример с фильмами, потому что вы можете использовать ограниченную машину Больцмана для создания рекомендательной системы, и это именно то, что мы собираемся делать в этом блоге. И это поможет нам построить интуитивное понимание ограниченной машины Больцмана.

Допустим, наша рекомендательная система будет работать с шестью фильмами. Конечно, на самом деле фильмов будет намного больше, но в нашем примере мы просто будем работать с шестью для простоты.

  1. Машина Больцмана — это модель генеративного типа, поэтому она всегда генерирует или способна генерировать эти состояния, передавая ей наши обучающие данные и используя процесс, называемый контрастной дивергенцией, который мы обсудим далее в блоге. . Мы помогаем машине Больцмана стать представлением нашей конкретной системы.
  2. Так, например, в процессе обучения ограниченная машина Больцмана может определить, что жанры фильмов являются важными характеристиками, и здесь важно понять, что она не знает, что это жанры, а просто определяет определенные функции.
  3. Что ж, давайте сделаем очевидным, что это не обязательно должны быть жанры, например, можно определить, что жанры А и Б важны для рекомендательной системы, но тогда другие важные функции включают актера, может быть, Леонардо ДиКаприо, награда может быть Оскар, режиссер Роберт Земекис.
  4. что это вообще означает, когда определено, что функция важна? Что ж, давайте пройдемся по этому, в процессе обучения мы подаем очень много строк в ограниченную машину Больцмана, и, например, эти строки могут выглядеть примерно так:

где у нас есть фильмы в виде столбцов, а затем пользователи в виде строк. И здесь у нас есть рейтинги или отзывы, которые каждый пользователь оставил для фильма, понравился ли он им, это единица или им не понравился, ноль, а также пустые ячейки тоже совершенно нормально, потому что это просто означает, что этот человек не смотрел этот фильм. (при обучении модели убедитесь, что данные в этом формате)

6. Благодаря этому процессу, когда мы вводим эти данные в эту ограниченную машину Больцмана, она способна лучше понять нашу систему, она пытается приспособиться к лучшему представлению нашей системы, она присваивает веса таким образом, чтобы скрытые узлы становятся отражением этих специфических особенностей. Так вот как происходит обучение РБМ

Теперь давайте посмотрим на что-нибудь повеселее. Давайте посмотрим, как это будет выглядеть в действии. Итак, теперь, когда мы обучили нашу машину, нашу ограниченную машину Больцмана. Мы знаем, что он может выбирать эти определенные функции и на основе того, что он ранее видел о тысячах наших пользователей и их рейтингах, и теперь мы собираемся рассмотреть конкретные функции.

  1. скажем, наша система выбрала драму как полнометражный фильм, действие, Леонардо ДиКаприо как актера в фильме, Оскар, независимо от того, получил фильм Оскар или нет, и Квентина Тарантино, был ли он режиссером фильма, опять же эти просто для понимания цели. На самом деле, ограниченная машина Больцмана понятия не имеет, Тарантино имя режиссера или нет. Это просто выбор функции.
  2. Сейчас мы посмотрим пару фильмов. Итак, машина обучена на большом количестве строк, и теперь мы собираемся ввести новую строку в эту ограниченную машину Больцмана, и мы увидим, как она будет давать нам предсказание, будет человек или нет. понравятся определенные фильмы. Это самое интересное. Это фактическое применение RBM.
  3. У нас есть фильмы «Матрица», «Бойцовский клуб», «Форрест Гамп», «Криминальное чтиво», «Титаник» и «Отступники».
  4. давайте посмотрим данные человека, что мы пытаемся дать рекомендацию, что они видели, что они не видели, что они оценили и как они это оценили. Вот они посмотрели «Матрицу», им не понравилось, поэтому поставили ноль, значит один лайк, ноль дизлайков. Бойцовский клуб, они не видели Бойцовский клуб.

«Форрест Гамп», они видели «Форреста Гампа», и им понравился фильм. Криминальное чтиво, они видели «Криминальное чтиво», но фильм им не понравился. «Титаник» они смотрели, и он им понравился, а «Отступники» они не смотрели этот фильм, и теперь мы хотим порекомендовать этого человека, понравится им «Бойцовский клуб» или нет?

  1. Так машина Больцмана обучена, она уже знает об особенностях и сходствах. Теперь он попытается оценить, какие из этих функций будут активированы, и было бы полезно подумать об этом в аналогии со сверточной нейронной сетью. Там мы загружали изображение в нашу свёрточную нейронную сеть и выделяли определённые функции. Определенные функции будут подсвечиваться, если они присутствуют на этом изображении. То же самое и здесь: мы последовательно загружаем нашу ограниченную машину Больцмана, и определенные функции будут высвечиваться, если они присутствуют во вкусах и предпочтениях, симпатиях и предубеждениях этого пользователя. это очень интуитивное объяснение того, что происходит на заднем плане.
  2. Начнем с Драмы. Итак, с точки зрения драмы, какие фильмы здесь драмы? Мы знаем, что «Матрица» — это не драма, «Бойцовский клуб» — это не драма, «Форрест Гамп» — это драма. Криминальное чтиво — это не драма. «Титаник» — это драма, а «Отступники» — это драма, но у нас нет данных по «Отступникам».
  3. Так что эта машина Больцмана может учиться только у этих двоих. Да, он может только сказать, хорошо, так что этому человеку понравился Форест Гамп, а этому человеку понравился Титаник, и, исходя из этого, это означает, что этому человеку нравятся драматические фильмы. Далее, «Действие», и вы можете видеть, что у нас есть боевики «Матрица», «Бойцовский клуб», «Криминальное чтиво» и «Отступники». У нас есть четыре боевика, но из них у нас есть данные только по «Матрице» и «Криминальному чтиву», и оба они этому человеку не понравились.
  4. ДиКаприо. Таким образом, из всех этих фильмов Леонардо ДиКаприо присутствует в «Титанике» и «Отступниках», и на основании этого, только этого, одного фильма узел ДиКаприо будет выделен. Оскар. Итак, у нас есть три фильма на «Оскар». У нас есть данные только по «Форресту Гампу» и «Титанику», и, исходя из них, этому человеку понравились оба. И, наконец, Тарантино, единственный фильм с Тарантино в качестве режиссера — это «Криминальное чтиво», из всех, и этому человеку Тарантино не понравился этот фильм.
  5. Все из наших видимых узлов переходит в наши скрытые узлы, а наши скрытые узлы теперь мы знаем, какие из них активированы. А теперь происходит обратный пас.

Теперь происходит то, что машина Больцмана попытается реконструировать наши входные данные. (Контрастное расхождение) Так что в принципе именно это и происходит в тренировочном процессе.

  1. Что делает машина Больцмана, так это принимает значения в скрытые узлы, а затем пытается восстановить ваши входные данные на основе этих скрытых узлов во время обучения, если реконструкция неверна, тогда все корректируется, веса корректируются, а затем мы реконструируем снова и снова, но сейчас это тест, поэтому мы фактически вводим определенную строку и хотим получить наши прогнозы.
  2. Так что, по сути, никакой корректировки весов не будет. Мы просто посмотрим, как машина Больцмана реконструирует эти строки. И более того, нас не интересуют фильмы, для которых у нас уже есть рейтинги, для этого и существует обучающая часть машины Больцмана.
  3. Здесь нас будут интересовать только фильмы, у которых нет оценок, и мы будем использовать реконструируемые значения в качестве прогнозов. Итак, еще раз отсюда машина Больцмана будет реконструировать эти входные значения на основе того, что она узнала.
  4. Как он собирается реконструировать Бойцовский клуб? Что ж, Бойцовский клуб проверит все узлы и выяснит, какие из них загораются, основываясь на тренировках. Это драматический фильм? Нет, это не так. Это боевик? Да, это. Так что не всегда загорается. В нем есть Ди Каприо? Нет, это не так. Этот фильм получил Оскар? Это не так. И Тарантино режиссер этого фильма? Нет, он не.
  5. Это в нашем понимании, потому что мы знаем эти вещи. В понимании машины Больцмана это будет как, какой узел куда соединяется. Основываясь на анализе, мы знаем, что фильм «Бойцовский клуб» не понравится этому человеку.
  6. Теперь поговорим об Отступниках. (Рассмотрите это как упражнение и попробуйте сделать это самостоятельно) Решение: Исходя из моего анализа, этому человеку, скорее всего, понравится этот фильм.

Надеюсь, эта статья оказалась для вас информативной и пополнила ваши знания. Я хотел бы поблагодарить Geoffrey Hinton, Kirill Eremenko, Hadelin de Ponteves за их упрощенные объяснения по ограниченным машинам Больцмана, которые помогли мне в написании этой статьи.