Система рекомендаций YouTube (ниже): Глубокие нейронные сети для рекомендаций YouTube

искусственный интеллект глубокое обучение алгоритм Архитектура

Кашель, я все еще хочу поговорить об этой статье, хотя о ней уже много говорят. В конце концов, в знак широкомасштабного применения моделей глубокого обучения к рекомендательным системам в отрасли эту статью нельзя обойти стороной. Оригинал изDeep Neural Networks for YouTube Recommendations, — статья, опубликованная YouTube в Recosys в 2016 году.

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

Overview

Есть три основные проблемы рекомендательной системы YouTube:

  • Масштаб: есть некоторые алгоритмы, которые хорошо работают в небольших задачах, но их трудно применить к более масштабным задачам, а YouTube имеет одну из крупнейших рекомендательных систем в мире. Масштаб — это первая проблема, к которой можно применить алгоритм. к.
  • Свежесть (на самом деле, мы обычно называем это холодным запуском контента): YouTube в некотором смысле является компанией с короткими видео. В отличие от таких компаний, как Netflix и Hulu, свежий контент создается на его веб-сайте в любое время. Как рекомендовать этот свежий контент? подлежит рассмотрению.
  • Шум: в неявной обратной связи и функциях контента много шума, и необходимо эффективно использовать эти зашумленные данные.

Модель YouTube обучается в Google Brain, открытой версией которого является tensorflow. Их модели имеют миллиарды параметров и обучаются на сотнях миллиардов данных. Структурная схема системы выглядит следующим образом:

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

Candidate Generation

На этапе отзыва YouTube выбирает сотни результатов отзыва из огромного набора данных. Прежде чем использовать нейронные сети, YouTube использовал алгоритм MF. Используя алгоритмы глубокого обучения, YouTube моделирует фазу поиска как модель классификации, целью которой являетсяC,ПользовательU, из коллекцииVнайти момент вtСкорее всего, смотретьw_t:P(w_t = i | U, C) = \frac{e^{v_iu}}{\sum_{j \in V} e^{v_ju}}

вuВстраивание, представляющее пользователя и контекст,vПредставляет встраивание видео. Задача глубокого обучения состоит в том, чтобы изучить встраивание пользователя на основе просмотра пользователем исторических данных и текущего контекста.uи используйте softmax, чтобы выбрать видео, которые, скорее всего, будут смотреть. Модель обучается с помощью неявной обратной связи, а пользователь смотрит видео как положительный образец.

При фактическом обслуживании YouTube не выполняет полный процесс softmax, а использует алгоритм ближайшего соседа для выбора наиболее вероятных N результатов.

Model Architecture

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

Настройки для каждого слоя:

Ranking

Структура модели ранжирования очень похожа на структуру модели отзыва. Особенность заключается в том, что используемая целевая функция — это функция watch_minutes_per_impression, а не функция ctr. В основном это делается для того, чтобы избежать проблем с кликбейтом. В китайском контексте кликбейт должен быть заголовком, то есть видео с привлекательным названием и скучным содержанием преднамеренно используется для привлечения внимания пользователей, заставляя пользователей быстро выходить после нажатия.

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

Структура всей модели ранжирования выглядит следующим образом:

Model Expected Watch Time

Кашель, это самое сложное для понимания в этой статье. Я сказал свое понимание, но оно не обязательно правильное. Комментарии и исправления приветствуются:

В статье в качестве цели прогнозирования используется значение watch_minutes_per_impression, но эту цель трудно предсказать напрямую, поэтому автор внес некоторые изменения в модель:

  • Вес всех положительных образцов равен времени просмотра
  • Вес всех отрицательных проб равен единице
  • Для решения этой проблемы мы используем взвешенную логистическую регрессию. Идею взвешенной логистической регрессии можно найти в статье Модель взвешенной логистической регрессии. Это метод повторной выборки корреляции.
  • В стандартной логистической регрессии значение y представляет собой число между [0,1], и его выражениеy = \frac{1}{1 + e^{-w^Tx + b}}, а его шансы выражаются какodds = e^{w^Tx + b} = \frac{p(y = 1| x)}{p(y = 0|x)}. Среди них вероятность появления положительного образца равнаp = \frac{odds}{odds + 1} = \frac{e^{w^Tx + b}}{1 + e^{w^Tx + b}}, вероятность появления отрицательного образца равна1 - p = \frac{1}{1 + e^{w^Tx + b}}
  • Во взвешенной логистической регрессии это выражение заменяется на:odds = \frac{\sum{T_i}}{N - k}, то есть сумма вероятностей положительных выборок и/или сумма вероятностей отрицательных выборок (гдеT_iпредставляет время просмотра каждого положительного образца,Nпредставляет собой общее количество образцов,kпредставляет количество положительных образцов).
  • Ожидаемое время просмотра на показ составляетE(T) = \frac {\sum{T_i}}{N} = \frac{odds}{\frac{N}{N - k}},Сейчасodds = E(T) * \frac{N}{N-k} = E(T) * \frac{1}{1 - p} \simeq E(T) * ( 1 + p) \simeq E(T). вpCTR, так какpВеличина относительно мала, и можно установить только два последних приближения. Таким образом, мы, наконец, можем использовать коэффициенты для оценки ожидаемых минут просмотра.
  • Поэтому при подачеe^{w^Tx + b}— расчетное значение watch_minutes_per_impression.