Новый шум в области рекомендательной системы

Мы живем во времена, когда избалованы выбором. Будь то еда, музыка или развлечения, количество вариантов, которые у нас есть, просто ошеломляет. Но благодаря механизмам рекомендаций, которые подпитывают эти приложения / сайты, эти альтернативы предоставляются нам в виде ранжированного списка. В этом блоге мы обсудим новый алгоритм рекомендаций, который называется «Машины экстремальной глубокой факторизации» (xDeepFM).

Этот блог организован следующим образом:

  1. Текущие системы рекомендаций в разработке
  2. Представляем xDeepFM
  3. Введение в CIN (основа xDeepFM)
    3.1 Характеристики CIN
    3.2 Скрытые слои CIN
    3.3 Сходство с RNN
    3.4 Сходство с CNN
    3.5 Объединение и объединение скрытых слоев
    3.6 Вывод xdeepfm
  4. Сложность CIN
    4.1 Сложность пространства
    4.2 Сложность времени

5. Пример кода с использованием библиотеки deepCTR

6. Ссылки

7. Резюме

Давайте начнем!!

1. Текущие рекомендательные системы

В текущем ландшафте рекомендаций преобладают модели, основанные на FM / DNN. Но также появляются хорошие гибридные архитектуры, объединяющие системы на основе FM и DNN.

1. Подход на основе машины факторизации (FM)

  • + ve: автоматически изучает паттерн комбинаторных функций
  • + ve: Хорошее обобщение на невидимые особенности
  • -ve: пытается захватить все взаимодействия функций, что приводит к обнаружению бесполезных взаимодействий. Это может вызвать шум.
  • Примеры: самая надежная рабочая лошадка в области рекомендаций

2. Подход на основе глубокой нейронной сети (DNN)

  • + ve: изучает сложные и избирательные взаимодействия функций
  • -ve: взаимодействие функций моделируется на элементарном уровне. Одно горячее кодирование используется для категориальных переменных, чтобы представить их в измерении D. Это будет передано на полностью связанный уровень. Это резко контрастирует с подходами на основе FM, в которых модели обеспечивают взаимодействие на векторном уровне (вектор пользователя * вектор элемента).
  • Пример: DNN, часть Neural Collaborative Filtering (NCF), DNN для рекомендаций Youtube.

3. Подход DNN + FM (гибридный)

  • + ve: изучает взаимодействия функций как низкого, так и высокого порядка
  • Примеры: Wide & Deep Network (Youtube), Neural Collaborative Filtering (NCF), Deep and Cross network (DCN), Deep Factorisation Machine (DeepFM) и eXtreme Deep Factorisation Machine (xDeepFM).

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



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

2. Представляем xDeepFM

xDeepFM состоит из 3 частей:

  1. Линейная модель (прямая работа над необработанными входными функциями)
  2. Обычный DNN (работает поверх плотных встраиваний элементов)
  3. CIN (работает поверх плотных встраиваний функций)

Из этих трех CIN уникален для xDeepFM.

3. Представляем сжатую сеть взаимодействия (CIN).

Проблема с системами на основе DNN заключается в том, что они неявно изучают взаимодействия высокого порядка. В xDeepFM явные взаимодействия функций высокого порядка изучаются через сеть сжатого взаимодействия (CIN).

3.1 Характеристики CIN

CIN вводится xDeepFM из-за следующих преимуществ:

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

3.2 Скрытые слои CIN

Явные взаимодействия функций изучаются CIN через его скрытые слои (каждый x на рисунке 4 является скрытым слоем), которые определены следующим образом.

X (k-1, i) : Встраивание вектора i-го поля в k-й слой (k-1 скрытый слой)
X (0, j): встраивание вектора j-го поля в k-й слой (базовое встраивание / встраивание исходной функции)
W (k, h , i, j): обучаемый параметр с размером m * H (k-1)

Каждая строка в X (k) отличается только W (k, h). В отличие от DNN, здесь нет активации для преобразования скрытого слоя.

3.3 Сходство с RNN

Уравнение 1 похоже на модели на основе RNN, поскольку выходные данные CIN зависят от последнего скрытого слоя и дополнительных входных данных.

3.4 Сходство с CNN

m: Число строк в исходной матрице признаков
H (k): Число строк в матрице признаков на скрытом слое. k

Z (k + 1) - это промежуточный тензор, который является внешним произведением скрытого слоя X (k) и исходной матрицы признаков X (0). Z (k + 1) можно рассматривать как особый тип изображения, а W (k, h) - как фильтр.

Когда вы перемещаете матрицу веса по измерению D (размер каждой встраиваемой функции), вы получаете скрытый вектор X (k + 1, i).

T: Глубина сети

3.5 Объединение и объединение скрытых слоев

Результат скрытых слоев суммируется по строкам, а затем объединяется вместе перед подачей на выходной слой.

  1. Каждый скрытый слой связан с модулями вывода.
  2. Объединение сумм применяется на каждом скрытом слое для создания вектора объединения в виде:

Все векторы объединения из скрытых слоев объединяются перед подключением к модулям вывода:

3.6 Выходное уравнение xDeepFM

Linear, CIN и DNN все обучаются параллельно с выходным уравнением следующим образом:

Сигма: сигмовидная функция
a: Необработанные характеристики
W, b : обучаемые параметры

Уровни на основе DNN и CIN хорошо дополняют друг друга, так как вместе они могут учиться

1. Как неявное (DNN), так и явное (CIN) взаимодействие функций.

2. Взаимодействие признаков как низкого (DNN), так и высокого (Оба) порядка.

4. Пространственно-временная сложность CIN

4.1 Сложность пространства

Первый член представляет количество параметров на выходном слое.
Второй член представляет количество параметров на каждом слое k
Если мы предположим, что все скрытые слои имеют одинаковое количество векторов признаков H. Число параметров можно представить как O (m * H * H * T)

4.2 Сложность времени

Сложность по времени эквивалентна O (mHD * H * T).
mhd: Стоимость вычисления Z (k + 1, h) для 1 строки
H: Количество векторов признаков (строк) на слое H
T: Количество скрытых слоев в CIN

На этом мы закончили с теорией xdeepfm. Пришло время увидеть это в действии.

5. Закодированный пример

Я использовал реализацию xDeepFM из библиотеки deepCTR. Для некоторых других реализаций ознакомьтесь с сегментом «Ссылки».

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

Редкие объекты требуют внедрения, а плотные объекты требуют нормализации. Мы используем масштабатор MinMax для нормализации, а LabelEncoder - для кодирования функций.

# creating a dense feat
dense_feature_columns = [DenseFeat(feat, 1) for feat in dense_features]

В следующем блоке кода мы инициализируем, компилируем, обучаем и прогнозируем с помощью xDeepFM.

6. Ссылки

  1. Бумага xDeepFM
  2. Вот некоторые из готовых реализаций xDeepFM: -
    1. Код от авторов статьи xDeepFM
    2. Код из библиотеки Microsoft для рекомендации
    3. deepctr который используется в следующей реализации

7. Резюме

xDeepFM - пример гибридной архитектуры. Он сочетает в себе MF с DNN, чтобы получить лучшую производительность. Он делает это с помощью CIN (сжатая сеть взаимодействия). У CIN ​​есть 2 особых достоинства:

  1. Он может эффективно изучать взаимодействия функций с ограниченной степенью.
  2. Он изучает взаимодействие функций на векторном уровне.

Как и другие популярные гибридные методы, xDeepFM включает CIN с DNN.
Благодаря этому взаимодействия функций высокого порядка могут быть изучены как явно, так и неявно. Это снижает потребность в ручном проектировании функций.

Я настоятельно рекомендую вам попробовать библиотеку Microsoft или код автора xDeepFM, чтобы поиграть с различными реализациями xDeepFM.

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



Пожалуйста, не стесняйтесь делиться своими мыслями и идеями в разделе комментариев.