Широкая и глубокая модель: от Google до Huawei

Google искусственный интеллект Нейронные сети продукт

в предыдущем блогеСистема рекомендаций на основе глубокого обучения (2) на основе MLP, я кратко упомянул широкую и глубокую модель. Здесь я описываю эту модель отдельно, поскольку она является основой многих промышленных рекомендательных систем. С тех пор, как Google опубликовал эту статью в 2016 году, все больше и больше компаний начали использовать широкую и глубокую модель и ее варианты. Среди них DeepFM, предложенный Huawei, является более типичным вариантом, о котором упоминалось ранее, и я также опишу его в этой статье.

Wide & Deep Learning for Recommender Systems

Wide & Deep Learning for Recommender SystemsЭто статья, опубликованная Google в 2016 году. Эта статья всего на 4 страницах, очень-очень короткая, но ее содержание произвело огромное впечатление. Суть статьи в следующем:

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

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

One challenge in recommender systems, similar to the general search ranking problem, is to achieve both memorization and generalization. Memorization can be loosely defined as learning the frequent co-occurrence of items or features and exploiting the correlation available in the historical data. Generalization, on the other hand, is based on transitivity of correlation and explores new feature combinations that have never or rarely occurred in the past. Recommendations based on memorization are usually more topical and directly relevant to the items on which users have already performed actions. Compared with memorization, generalization tends to improve the diversity of the recommended items.

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

Выражение широкой частиy = W^T_{wide}\{x, \phi(x)\} + bwпараметр,xэто входная функция, введенная инженерией признаков,\phi(x)представляет собой преобразованную форму этих функций, наиболее распространенным преобразованием является перекрестное преобразование продукта, которое определяется как\phi_k(x) = \prod_{i=1}^{d}x_i^{c_{ki}}, c_{ki} \in \{0, 1\}.

Глубокая часть — это MLP, а форма каждого скрытого слоя —\alpha^{(l+1)} = f(W_{deep}^{(l)}a^{(l)} + b^{(l)}),lпредставляет количество слоев,f(\dot~)— функция активации, обычно ReLu.

Мы объединяем эти две части, чтобы получить широкую и глубокую модель, и способ объединения зависит от цели. Для задачи логистической регрессии прогнозируемый результат модели равенP(\hat{r_{ui}} = 1|x) = \sigma(W^T_{wide}\{x, \phi(x)\} + W_{deep}^{(l)}a^{(l_f)} + bias). в\sigmaпредставляет сигмовидную функцию,a^{(l_f)}Представляет собой активацию последнего слоя.

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

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

DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction

Приложение Huawei DeepFM имеет две разные версии на рынке приложений Huawei, одна из которых выпущена в 2017 году. DeepFM: A Factorization-Machine based Neural Network for CTR Predictionи в 2018 году DeepFM: An End-to-End Wide & Deep Learning Framework for CTR Prediction. Здесь я выбираю содержание статьи в последней версии. Перед этим тот же автор еще и статью написал с другой идеейHolistic Neural Network for CTR Prediction, тоже делается на Huawei AppGallery, решаемые задачи похожи, но методы не те, здесь мы их приводить не будем.

Основная идея DeepFM состоит в том, чтобы позволить глубокой и широкой частям совместно использовать параметры, В частности, они используют FM в качестве широкой части и DNN или PNN в качестве глубокой части, но помещают часть FM после слоя встраивания NN, так что они разделяют вложение . Структура его алгоритма показана на рисунке:

Основное преимущество этого заключается в том, что ввод широкой части исходной широкой и глубокой модели по-прежнему определяется разработкой признаков, но deepFM позволяет двум частям совместно использовать вложение, поэтому разработка признаков больше не требуется.

В частности, набор данных deepFM состоит из n(X, y)образец состава, которыйXпредставляет собой вход, состоящий из m полей, который содержит набор функций пар (пользователь, элемент),(X, y)затем преобразуется в соответствующий входной вектор(x, y).y \in \{0, 1\}. Прогнозируемый CTR всей сети\hat{y}(x) = sigmoid(y_{FM}(x) + y_{deep}(x)).

В статье протестировано 12 различных моделей, в том числе широкая модель, глубокая модель, широкая и глубокая модель и модель DeepFM, которые настроены как:

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

На самом деле, сама исходная широко-глубокая модель широко не используется, но широко используются ее различные варианты. Подросток, тебя не одурачить, если ты научишься покупать это.