Wide & Deep模型
Memorization 和 Generalization是推荐系统很常见的两个概念。
- Memorization指的是通过用户与商品的交互信息矩阵学习规则,Generalization则是泛化规则。
- Memorization趋向于更加保守,推荐用户之前有过行为的items。相比之下,generalization更加趋向于提高推荐系统的多样性(diversity)。
- Memorization只需要使用一个线性模型即可实现,而Generalization需要使用DNN实现。(左边的wide部分(一个简单的线性模型),右边的deep部分(一个典型的DNN模型))
wide部分是一个广义的线性模型,输入的特征主要有两部分组成,一部分是原始的部分特征,另一部分是原始特征的交互特征(cross-product transformation),对于交互特征可以定义为: ϕ k ( x ) = ∏ i = 1 d x i c k i , c k i ∈ 0 , 1 \phi_{k}(x)=\prod_{i=1}^d x_i^{c_{ki}}, c_{ki}\in {0,1} ϕk(x)=i=1∏dxicki,cki∈0,1
Deep部分是一个DNN模型,输入的特征主要分为两大类,一类是数值特征(可直接输入DNN),一类是类别特征(需要经过Embedding之后才能输入到DNN中),Deep部分的数学形式如下: a ( l + 1 ) = f ( W l a ( l ) + b l ) a^{(l+1)} = f(W^{l}a^{(l)} + b^{l}) a(l+1)=f(Wla(l)+bl)
Wide部分与Deep部分的结合
W&D模型是将两部分输出的结果结合起来联合训练,将deep和wide部分的输出重新使用一个逻辑回归模型做最终的预测,输出概率值。联合训练的数学形式如下: P ( Y = 1 ∣ x ) = δ ( w w i d e T [ x , ϕ ( x ) ] + w d e e p T a ( l f ) + b ) P(Y=1|x)=\delta(w_{wide}^T[x,\phi(x)] + w_{deep}^T a^{(lf)} + b) P(Y=1∣x)=δ(wwideT[x,ϕ(x)]+wdeepTa(lf)+b)
操作流程
**Retrieval **:利用机器学习模型和一些人为定义的规则,来返回最匹配当前Query的一个小的items集合,这个集合就是最终的推荐列表的候选集。
Ranking:
收集更细致的用户特征,如:
- User features(年龄、性别、语言、民族等)
- Contextual features(上下文特征:设备,时间等)
- Impression features(展示特征:app age、app的历史统计信息等)
将特征分别传入Wide和Deep一起做训练。在训练的时候,根据最终的loss计算出gradient,反向传播到Wide和Deep两部分中,分别训练自己的参数(wide组件只需要填补deep组件的不足就行了,所以需要比较少的cross-product feature transformations,而不是full-size wide Model)
- 训练方法是用mini-batch stochastic optimization。
- Wide组件是用FTRL(Follow-the-regularized-leader) + L1正则化学习。
- Deep组件是用AdaGrad来学习。
训练完之后推荐TopN