深度学习在推荐系统中的一些应用

1 概述

目前,业界常用的对推荐系统推荐的结果进行打分的模型有LR,FM,GBDT,最近看了一些公司如Google[1][2],网易[3]将深度神经网络模型用于推荐系统的文章,都表明深度学习模型在推荐中非常不错的效果,本文会对这几篇文章中介绍的如何将深度学习模型用于推荐系统做一个简单的介绍。

2 Google将深度学习用于Google Play App推荐和Youtube视频推荐

2.1 Wide & Deep Learning for Recommend Systems

本文的主要想法是将推荐,广告中常用的LR模型(使用中需要进行大量特征变换来保证模型的“记忆“能力)和DNN模型(对稀疏的,未知的特征组合做低维嵌入来保证模型的“泛化”能力)结合起来进行联合训练,从而保证记忆能力和泛化能力的均衡。话不多说,看下图:

图中左右分别是浅层的LR模型和深层的深度神经网络模型,中间是二者联合的模型。

  • 这里针对LR模型值得提的是针对离散特征的叉积变换,定义如下:

\phi _{k}(x)=\prod_{i=1}^{d} x_{i}^{c_{ki}},         c_{ki} \in \{0, 1\}
这里c_{ki}在第i个特征属于第k个变换\phi _{k}时为1,否则为0。举个例子:特征AND(gender=female, language=en)gender=femalelanguage=en时才为1。
  • 联合训练模型
    P(Y=1|x)=\sigma (w_{wide}^{T}[x, \phi (x)]+w_{deep}^{T}a^{(l_{f})}+b)
    这里,w_{wide}^{T}是LR模型权重,w_{deep}^{T}是深度学习模型激活层输出a^{(l_{f})}的权重,结构图如下:
  • 离线AUC和在线转化率评测效果
    2.2 Deep Neural Networks for YouTube Recommendations

本文的主要思想是将深度神经网络模型应用推荐系统中的两个关键过程:候选集生成和排序
  • 候选集生成

这里的目的是从海量视频库中筛选出和用户相关的几百个视频。核心方法是将推荐转化为分类问题,公式如下:
P(w_{t}=i|U,C)=\frac{e^{v_{i}u}}{\sum_{j\in V}{e^{v_{j}u}} }
这里,u\in R^{N}代表(user, context)对的高维嵌入向量,v_{j}\in R^{N}代表每个候选视频的嵌入向量,w_{t}=i代表用户t时刻观看了视频i。候选集生成主要寻找与用户向量(神经网络变换后的特征向量)距离最近的N个向量。模型架构如下图:
  • 排序

这里通过神经网络和LR模型对每个候选的视频打分,并根据得分值对视频做排序。这里的预测目标是预期的观看时间,而不是常用的点击率。
这里的打分模型是加权LR,针对正样本的权重和观看时间成正比,负样本的权重为单位权重。并且针对类别特征做embedding,连续特征做分位数归一化。

3 网易将循环神经网络和前向神经网络用于电商网站考拉的物品推荐

本文的核心思想是用深度RNN模型对用户的浏览模式进行建模并联合FNN模型从而给用户提供个性化,实时的精准推荐。整个推荐模块的流程图如下:

  • Deep RNN Model

在RNN中要保持之前所有的状态是几乎不可能完成的,现实使用中只能跟踪有限数目的状态。假设能跟踪的状态数目为n,文中使用的方案是将状态n之前的所有状态近似成为一个历史状态。如下图所示:
  • Feedforward Neural Network

这里,文中使用FNN来模拟CF算法的过程,如下图所示:
下面是一些评测结果(记录数:232326,用户数:37667,物品数:1584):
(1)FNN有否对单物品预测准确率的影响

(2)FNN有否对topK物品准确率的影响

(3)history state有否对单物品准确率的影响
(4)history state有否对topK物品准确率的影响

4 小结

深层的神经网络在横扫图像,语音领域后,也正在向个性化推荐系统领域进军,深层的模型能更好的的对用户意图进行建模,更好的发现用户和物品之间的匹配。但神经网络模型用在推荐中解决的可能只是新颖性的问题,推荐系统的问题是多种多样的,因此,并不能抛弃传统的模型。此外,数据的处理也并没有因为深度学习模型的出现而变得不重要,Garbage In, Garbage Out!!!

参考文献
[1]Wide & Deep Learning for Recommender Systems
[2]Deep Neural Networks for YouTube Recommendations
[3]Personal Recommendation Using Deep Recurrent Neural Networks in NetEase

编辑于 2016-09-29