Платформа Deep Recall Framework от Taobao Double Eleven

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

У технической команды Ali есть статья о системе поддержки Taobao Double Eleven:1 миллиард домашних страниц Taobao создается за один день, как инженеры Ali достигают этого?. Меня очень заинтересовал упомянутый в ней фреймворк глубокого вспоминания, и я попытаюсь его проанализировать.

Начните с встраивания графа

Система глубокого припоминания Али взята из «DeepWalk: онлайн-обучение социальным представлениям». Давайте посмотрим, о чем эта статья сегодня.

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

Problem Formulation

Сначала определите некоторые символы:G = (V, E)— ориентированный взвешенный граф, где V и E представляют наборы вершин и ребер соответственно.G_L = (V, E, X, Y)— частично размеченный граф социальной сети, гдеX \in R^{|V| * S},Sявляется размерностью пространства признаков.Y \in R^{|V| * \gamma}, \gammaэто набор меток. В алгоритмах общей классификации мы пытаемся найти карту, котораяXФункция сопоставляется с\gamma. В этой статье мы используем неконтролируемый подход для изучения структуры сети.

Наша цель - научитьсяX_E \in R^{|V| * d}, d — скрытая размерность вектора, и она мала. Этот d-мерный вектор представляет структурные особенности сети. Это выражение должно иметь следующие свойства:

  • Адаптивность: нет необходимости заново обучать всех при добавлении новых элементов
  • Сообществу известно: расстояние между двумя вложениями следует использовать для измерения сходства между исходными элементами.
  • низкий размер
  • Continuous: принимать значения в непрерывном пространстве

Random walk

Случайное блуждание является распространенным методом выборки, и в этой статье он используется для выборки последовательностей. Процесс случайного блуждания в этой статье выглядит следующим образом:v_iПервое случайное блуждание отмечено какW_{v_i} = \{W_{v_i}^1, W_{v_i}^2, ..., W_{v_i}^k\}, то вершина, которая будет выбрана следующейW_{v_i}^{k + 1}исходит из вершиныv_kслучайным образом выбираются среди соседей. В статье этот метод используется для завершения выборки, а выбранная последовательность используется в качестве корпуса в языковой модели.

Language Model

Вообще говоря, целью прогнозирования языковой модели является вероятность появления слова в ожидаемой последовательности, то есть при заданной последовательности слов:W_1^n = (w_0, w_1, ..., w_n), нам нужно максимизироватьPr(w_n | w_1, ..., w_{n-1})предсказыватьw_n. По аналогии с нашей задачей следует максимизироватьPr(v_i | (v_1, v_2, ..., v_{i-1})). Но наша цель научиться неявному представлению, пусть нужная нам карта будет\phi, то нам нужно максимизироватьPr(v_i|\phi(v_1), \phi(v_2), ..., \phi(v_{i - 1})). А новая языковая модель позволяет игнорировать порядок слов, превращая эту проблему в:

minimize ~ -logPr({v_{i - w}, ..., v_{i - 1}, v_{i + 1}, ...,v_{i + w}}|\phi(v_i))

вwэто размер окна. В этом случае узлы с похожими соседями будут иметь похожие выражения встраивания.

Method

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

в,tдлина каждого случайного блуждания.

Во-первых, случайная инициализация\phi. Постройте бинарное дерево из V, которое в основном будет выполнять иерархический softmax. после этого\gammaСлучайное блуждание раунда по V должно каждый раз нарушать порядок доступа к вершинам V. Случайное блуждание в каждом раунде V состоит из случайного блуждания длины t, начиная с каждой вершины. После формирования каждой последовательности случайных блужданий алгоритм Skip-Gram необходимо использовать один раз.

Skip-Gram — это языковая модель, которая максимизирует вероятность одновременного появления слов в окне, которую мы используем здесь для обновления.\phi. В частности, авторы используют иерархический метод softmax для оптимизации процесса Skip-Gram и используют метод стохастического градиентного спуска для завершения обновления. О Skip-Gram заинтересованные читатели могут прочитать в этом блогеWord2Vec Tutorial - The Skip-Gram Model.

Преобразование Taobao в DeepWalk

Затем, согласно1 миллиард домашних страниц Taobao создается за один день, как инженеры Ali достигают этого?Как мы можем применить модель DeepWalk к системе рекомендаций Taobao?

генерирующая сеть

DeepWalk — это модель, которая генерирует вложения в сети, сначала нам нужно сгенерировать сеть. Али использует алгоритм SWING для создания направленного взвешенного графа между товарами в виде сети. SWING на самом деле является методом, который использует треугольную структуру, называемую SWING, для создания подобия i-i на двудольном графе u-i.Если SWING не используется, вместо этого алгоритма следует использовать другие модели подобия. Сходство i-i, сгенерированное алгоритмом SWINGF, не является симметричным, поэтому окончательная форма представляет собой ориентированный взвешенный граф.

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

Выборка случайного блуждания для товарных сетей

В статье говорится, что они позаимствовалиNode2vec: Scalable Feature Learning for Networksвыборочный метод. Итак, каков метод выборки для этой статьи? Сам node2vec представляет собой полууправляемый метод обучения для изучения представлений признаков узлов в сети. Его процесс на самом деле очень похож на DeepWalk. Али здесь в основном использует процесс случайного блуждания.

Во-первых, мы определяем соседей DFS и BFS отдельно, как показано:

Соседи BFS относятся к соседним узлам, непосредственно подключенным к узлу, а соседи DFS относятся к соседям последовательности. BFS легко понять, почему существует определение соседей DFS?

Узлы в сети имеют два сходства: одно сходимость, например u и s1, и другое структурное сходство, например u и s6. Соседи BFS помогают исследовать конвергенцию, а соседи DFS помогают исследовать структурное сходство. В рекомендации продукта пиво и красное вино можно рассматривать как структурное сходство, а пиво и жареную курицу можно рассматривать как конвергенцию (мое личное мнение, возможны недоразумения). На практике обычно используются оба подобия. Node2vec определяет механизм случайного блуждания, который может использовать оба свойства одновременно:

  • Общее случайное блуждание определяет вероятность выбора следующего узла как регуляризованную вероятность перехода. которыйP(c_i = x| c_{i - 1} = v) = \begin{cases} \frac{\pi_{uv}}{Z}& \text{if }(v, x) \in E\\ 0& \text{otherwise}\end{cases}
  • И это случайное блуждание создает параметр смещения. Если случайное блуждание только что началось с узлаtперейти к узлуv, и запишите следующий посещенный узел какx,сделать\pi_{vx} = \alpha_{pq}(t, x) * w_{v,x}\alpha_{pq}(t, x) = \begin{cases} \frac{1}{p}& \text{if }d_{tx} = 0\\ 1& \text{if }d_{tx} = 1 \\ \frac{1}{q}& \text{if }d_{tx} = 2\\ \end{cases}
  • то есть установитьpДля параметра повторного посещения случайное блуждание занимает\frac{1}{p}Вероятность возврата узлаt;настраиватьqдля параметров удаленного доступа,qЧем он меньше, тем больше склонен к посещению узлов второй степени.

Помимо случайного блуждания, node2vec также использует метод отрицательной выборки для замены иерархического метода softmax в DeepWalk. Taobao также принял этот метод. В то же время они также приняли метод оптимизации динамического семплера. Что касается отрицательной выборки, заинтересованные читатели могут прочитать этот блог.Word2Vec Tutorial Part 2 - Negative Sampling.

расширенная оптимизация

На основании вышеизложенного Taobao предложила версию Sequence+Side-information.

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

Дополнительную информацию легче понять, это эквивалентно добавлению некоторых данных, связанных с самим элементом, но не структурой, и добавлению встраивания для обучения. В конце концов, наша цель — вспомнить предмет, а не измерить релевантность в социальных сетях, таких как Deep Walk.

«После построения всего сетевого графа поведения в сеансе вводится ребро связи вероятности перехода, подобное tf-idf, для преодоления проблемы горячей точки Гарри Поттера, и на этой основе выполняется вероятностная выборка для построения «виртуальной выборки». поведения пользователя для расширения. Охват и точность ввода ребенка в модель глубины позже сделают многоуровневую расширенную информацию более полной". .

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

Суммировать

В целом, структура глубокого припоминания Taobao выглядит примерно так:

  1. Создайте однородный сетевой граф на основе SWING или любого алгоритма таблицы релевантности i-i.
  2. Выполните случайное блуждание в соответствии с node2vec на этом графе сети и соберите обучающие выборки.
  3. Шаги 1 и 2 также можно заменить реальными данными сеанса пользователя.
  4. Добавьте дополнительную информацию к проекционному слою
  5. Выполнение алгоритма Skip-Gram

ps:

Что касается Skip-Gram, я думаю, что есть несколько блогов, которые также хорошо написаны, но некоторые из них являются китайскими переводами иностранных блогов: