DNN for 推荐_biji

Deep Neural Networks for YouTube Recommendations

其实熟悉Skip-Gram方法的同学很容易看出来,2.1把推荐问题定义为“超大规模多分类”问题的数学公式和word2vec的Skip-Gram方法的公式基本相同,所不同的是user_vec是通过DNN学习到的,而引入DNN的好处则是任意的连续特征和离散特征可以很容易添加到模型当中。同样的,推荐系统常用的矩阵分解方法虽然也能得到user_vec和item_vec,但同样是不能嵌入更多feature。
DNN for 推荐_biji_第1张图片
user embedding 是最后一层,item embedding 是 softmax 的 weight。通过内积限制两个embedding 在相同空间。图的左上角计算 hidden layer 与weight 空间的 top n 相似(近邻) 。
这里的最后一个 hidden 层和 softmax 层组成的结构与 word2vec 一模一样。唯一的区别是 word2vec 用输入层与 hidden 层之间的权重作为 word embedding,没用 hidden 层与输出层的权重;而这里用了 hidden 层与输出层的权重作为 video embedding,用 hidden 层作为 user embedding。
实现:一个向量(kx1)和m个向量(m*k)做点积操作,取最大的top-N,可以得到这个用户最喜欢的top-N个item。换另一个用户,仍然与相同的m个向量做点积后求top-N。提前可以通过某些方式加载好m个向量,之后求top-N。至于使用什么方法求最近邻,业界方法有很多,比如ann,faiss等。线上使用时候,user embedding实时生成,video embedding离线训练好之后推到线上,使用类LSH方法进行匹配(比如使用现成工具faiss)。

DNN for 推荐_biji_第2张图片
有点击的为正样本,有PV无点击的为负样本,正样本需要根据观看时长进行加权。因此,我们训练阶段网络最后一层用的是 weighted logistic regression。weighted LR,将watch time作为正样本的weight。

DNN for 推荐_biji_第3张图片
在处理测试集的时候,YouTube为什么不采用经典的随机留一法(random holdout),而是一定要把用户最近的一次观看行为作为测试集?
不对称的共同浏览问题,用户一开始看些热门的,然后找到细分的视频。传统的协同过滤算法,隐含的采用 hold-out 方式,忽略了不对称的浏览模式。
feature 不能穿越,采样可以穿越。对于 feature 和 lable 同时产生的,那就都不可以穿越,对于 feature 和 lable 无时间关系,label 的选取可以穿越。

DIN(Deep Interest Network)

DNN for 推荐_biji_第4张图片
DIN引入了attention机制,同一个用户与不同的item进行预测时,DIN会产生不同的用户embedding,具体来说,当预测某个item时,计算出该item与用户历史交互item的“匹配度”,用这个匹配度作为权重对用户历史交互item做加权平均得到用户的兴趣embedding,之后用这个兴趣embedding与用户的其他特征组成所谓label-aware的用户embedding。

题外话:

  1. 希望做个反向激活的网络结构,能自适应地挑跟candidate相关的用户行为来做用户兴趣的表征,后来写论文的时候仔细survey发现这个是attention的解法。
  2. 研制了一种可以认为是hard模式的attention结构:那是特征组合的解法,我们用ad的shop属性去hit用户历史行为过的shop list,如果命中了那么就说明历史用户有过直接行为,用行为id和频次来表示这个组合特征;如果没有命中特征就是空的,

Multi-Interest Network with Dynamic Routing for Recommendation at Tmall

DNN for 推荐_biji_第5张图片
MIND借鉴了Hiton的胶囊网络(Capsule Network),提出了Multi-Interest Extractor Layer来对用户历史行为embedding进行软聚类。而Capsule输入是一组向量,对这组向量进行仿射变换之后求加权和,把加权和输入非线性激活函数得到一个向量的输出。Hinton提出Capsule Network是为了解决传统的CNN中只能编码某个特征是否存在而无法编码特征的orientation。(在MIND的中我们只要记住Capsule可以接受一组向量输入,输出一个向量;如果我们K个capsule,就会有K个输出向量)
MIND中的用户特征由历史交item和基础画像属性组成,用户历史交互item由item ID,item所属类目ID和Item所属品牌ID三部分组成,这三部分进行低维embedding之后做average pooling,合成item本身的embedding表示。用户交互过的items生成的一组向量(即item embedding)作为Multi-Interest Extractor Layer的输入,经过dynamic routing之后,产生另外一组向量(即兴趣embedding),作为用户多样化兴趣的表示。用户基础画像属性的embedding与用户兴趣embedding分别做concat,接着经过两层ReLU隐层,得到用户的一组embedding。

在训练阶段,要进行预测的label只有一个embedding,而用户有一组,没法直接求内积计算匹配度,这里MIND提出了Label-aware Attention,思路跟DIN是一致的,就是根据label的embedding对用户的一组embedding分别求出权重(所谓label-aware),然后对用户的一组embedding求加权和,得到最终的一个embedding,只是具体方案上有差别。图三右上角是Label-aware Attention的图示,K,V都是用户embedding(矩阵),Q是label embedding(向量),K、Q相乘可以得到不同的用户embedding对label的响应程度,Power对求得的响应做指数运算(可以控制指数的大小),从而控制attention的程度,指数越大,响应高的用户embedding最终权重占比越大。SoftMax对结果进行归一化,最后一步的MatMul求得加权和。

Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks

Product-based Neural Networks for User Response Prediction

Deep & Cross Network for Ad Click Predictions

Deep Embedding Forest

Practical Lessons from Predicting Clicks on Ads at Facebook

这个是传统方式的实现,不是DNN
DNN for 推荐_biji_第6张图片
其中u是聚类参数,决定了空间的划分,w是分类参数,决定空间内的预测。这里面超参数分片数m可以较好地平衡模型的拟合与推广能力。当m=1时MLR就退化为普通的LR,m越大模型的拟合能力越强,但是模型参数规模随m线性增长,相应所需的训练样本也随之增长。因此实际应用中m需要根据实际情况进行选择。
DNN for 推荐_biji_第7张图片
DNN for 推荐_biji_第8张图片
Loss 中加了 L1 和 L2 正则项,MLR 算法变的不再是平滑的凸函数,梯度下降法不再适用,因此模型参数的更新使用 LBFGS 和 OWLQN 的结合.
MLR与LBFGS有三点不同:

1)OWLQN需要计算次梯度,MLR需要计算方向导数;

2)计算最终下降方向p时,MLR也要进行象限约束;

3)象限搜索line search,与OWLQN相似。
分布式参数实现
DNN for 推荐_biji_第9张图片

Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction

Ref

  1. Deep Neural Network for YouTube Recommendation论文精读
  2. 重读Youtube深度学习推荐系统论文,字字珠玑,惊为神文
  3. YouTube深度学习推荐系统的十大工程问题
  4. 推荐系统中的注意力机制——阿里深度兴趣网络(DIN)
  5. DIN paper
  6. DSSM论文阅读与总结
  7. 如何刻画用户的多样兴趣——MIND network阅读笔记
  8. 推荐系统遇上深度学习(十七)–探秘阿里之MLR算法浅析及实现
    9.MLR算法[Paper笔记]

你可能感兴趣的:(深度学习,tensorflow,推荐系统)