深度推荐模型
注意力机制与推荐模型的结合
AFM
Attention Neural Factorization Machine
-
在NFM中,两两特征交叉向量之间可能有不同的权重,某些交叉特征可能更重要,某些则不那么重要。所以AFM在NFM的基础上引入了Attention机制,给交叉特征向量加上了不同的Attention Score
f Att ( f P I ( E ) ) = ∑ ( i , j ) ∈ R x a i j ( v i ⊙ v j ) x i x j f_{\text {Att }}\left(f_{P I}(\mathcal{E})\right)=\sum_{(i, j) \in \mathcal{R}_{x}} a_{i j}\left(\mathbf{v}_{i} \odot \mathbf{v}_{j}\right) x_{i} x_{j} fAtt (fPI(E))=(i,j)∈Rx∑aij(vi⊙vj)xixj
f a i j ′ = ( v i ⊙ v j ) x i x j f'_{a_{ij}} = \left(\mathbf{v}_{i} \odot \mathbf{v}_{j}\right) x_{i} x_{j} faij′=(vi⊙vj)xixj
-
对于 a i j a_{ij} aij来说,最简单的方式就是用一个单一的、只与当前交叉特征向量有关而与其他交叉向量无关的可学习参数来表示,但这存在一个问题:由于推荐系统领域输入特征的稀疏性,可能有一些交叉特征向量本身就是稀疏的(即为0向量),采用这种方式时,在梯度反向传播时,对应交叉特征的权重可能不会被有效更新
-
AFM使用了一个简单的AttentionNet来解决上述梯度的问题:一个简单的单全连接层+Softmax的结构
a i j ′ = h T Re L U ( W ( v i ⊙ v j ) x i x j + b ) a i j = exp ( a i j ′ ) ∑ ( i , j ) ∈ R x exp ( a i j ′ ) \begin{aligned} &a_{i j}^{\prime}=\mathbf{h}^{T} \operatorname{Re} L U\left(\mathbf{W}\left(\mathbf{v}_{i} \odot \mathbf{v}_{j}\right) x_{i} x_{j}+\mathbf{b}\right) \\ &a_{i j}=\frac{\exp \left(a_{i j}^{\prime}\right)}{\sum_{(i, j) \in \mathcal{R}_{x}} \exp \left(a_{i j}^{\prime}\right)} \end{aligned} aij′=hTReLU(W(vi⊙vj)xixj+b)aij=∑(i,j)∈Rxexp(aij′)exp(aij′)
其中, W W W为全连接层的权重矩阵, b b b为偏置向量, h h h为权重向量- 由于全连接层中每个输出神经元都与所有输入神经元(即特征交叉向量)相连,所以在反向传播时,有一些稀疏向量存在并不影响参数的更新(因为存在多条梯度路径,一条为0还可以用其余几条的梯度去更新)
-
DIN
Paper : Deep Interest Network for Click-Through Rate Prediction
Deep Interest Network
-
DIN引入attention机制,计算用户特征与候选广告之间的关联程度,从而表达用户特征之间的不同权重关系
v U ( A ) = f ( v A , e 1 , e 2 , … , e H ) = ∑ j = 1 H a ( e j , v A ) e j = ∑ j = 1 H w j e j \boldsymbol{v}_{U}(A)=f\left(\boldsymbol{v}_{A}, \boldsymbol{e}_{1}, \boldsymbol{e}_{2}, \ldots, \boldsymbol{e}_{H}\right)=\sum_{j=1}^{H} a\left(\boldsymbol{e}_{j}, \boldsymbol{v}_{A}\right) \boldsymbol{e}_{j}=\sum_{j=1}^{H} \boldsymbol{w}_{j} \boldsymbol{e}_{j} vU(A)=f(vA,e1,e2,…,eH)=j=1∑Ha(ej,vA)ej=j=1∑Hwjej
-
自适应激活函数(Dice)
- 普通的激活函数的分割点一般为 0 0 0,而DICE不固定为 0 0 0,而是伴随着数据的改变而动态变化
f ( s ) = p ( s ) ⋅ s + ( 1 − p ( s ) ) ⋅ α s , p ( s ) = 1 1 + e − s − E [ s ] Var [ s ] + ϵ f(s)=p(s) \cdot s+(1-p(s)) \cdot \alpha s, p(s)=\frac{1}{1+e^{-\frac{s-E[s]}{\sqrt{\operatorname{Var}[s]+\epsilon}}}} f(s)=p(s)⋅s+(1−p(s))⋅αs,p(s)=1+e−Var[s]+ϵs−E[s]1
-
一种高效正则化方法(Mini-batch Aware Regularization)
-
DNN模型往往参数量大且推荐系统模型输入十分稀疏,在SGD优化器设置下,只有非零元素才能被有效更新。这时若使用普通的 L 1 L_1 L1、 L 2 L_2 L2正则化对所有的参数都进行计算正则化项并更新,则会增加很多非必要的计算量,因此DIN运用了一种正则化方法使得只有那些非零元素才被计算正则化项进行更新
L 2 ( W ) = ∑ j = 1 K ∑ m = 1 B ∑ ( x , y ) ∈ B m I ( x j ≠ 0 ) n j ∥ w j ∥ 2 2 L_{2}(\mathbf{W})=\sum_{j=1}^{K} \sum_{m=1}^{B} \sum_{(\boldsymbol{x}, y) \in \mathcal{B}_{m}} \frac{I\left(\boldsymbol{x}_{j} \neq 0\right)}{n_{j}}\left\|\boldsymbol{w}_{j}\right\|_{2}^{2} L2(W)=j=1∑Km=1∑B(x,y)∈Bm∑njI(xj=0)∥wj∥22
-
AutoInt
Paper : AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks
AutoInt
-
模型结构
- 主要引入Self-Attention计算高阶交叉特征,引入残差计算最后的特征表示
α m , k ( h ) = exp ( ψ ( h ) ( e m , e k ) ) ∑ l = 1 M exp ( ψ ( h ) ( e m , e l ) ) ψ ( h ) ( e m , e k ) = ⟨ W Query ( h ) e m , W K e y ( h ) e k ⟩ \begin{gathered} \alpha_{\mathrm{m}, \mathrm{k}}^{(\mathrm{h})}=\frac{\exp \left(\psi^{(h)}\left(\mathbf{e}_{\mathrm{m}}, \mathbf{e}_{\mathrm{k}}\right)\right)}{\sum_{l=1}^{M} \exp \left(\psi^{(h)}\left(\mathbf{e}_{\mathrm{m}}, \mathbf{e}_{\mathrm{l}}\right)\right)} \\ \psi^{(h)}\left(\mathbf{e}_{\mathrm{m}}, \mathbf{e}_{\mathrm{k}}\right)=\left\langle\mathbf{W}_{\text {Query }}^{(\mathrm{h})} \mathbf{e}_{\mathrm{m}}, \mathbf{W}_{\mathrm{Key}}^{(\mathrm{h})} \mathbf{e}_{\mathrm{k}}\right\rangle \end{gathered} αm,k(h)=∑l=1Mexp(ψ(h)(em,el))exp(ψ(h)(em,ek))ψ(h)(em,ek)=⟨WQuery (h)em,WKey(h)ek⟩
e ~ m ( h ) = ∑ k = 1 M α m , k ( h ) ( W Value ( h ) e k ) \widetilde{\mathrm{e}}_{\mathrm{m}}^{(\mathrm{h})}=\sum_{k=1}^{M} \alpha_{\mathrm{m}, \mathrm{k}}^{(\mathrm{h})}\left(\mathbf{W}_{\text {Value }}^{(\mathrm{h})} \mathbf{e}_{\mathrm{k}}\right) e m(h)=k=1∑Mαm,k(h)(WValue (h)ek)
e ~ m = e ~ m ( 1 ) ⊕ e ~ m ( 2 ) ⊕ ⋯ e ~ m ( H ) \widetilde{\mathrm{e}}_{\mathrm{m}}=\widetilde{\mathrm{e}}_{\mathrm{m}}^{(1)} \oplus \widetilde{\mathrm{e}}_{\mathrm{m}}^{(2)} \oplus \cdots \widetilde{\mathrm{e}}_{\mathrm{m}}^{(\mathrm{H})} e m=e m(1)⊕e m(2)⊕⋯e m(H)
e m Res = ReLU ( e m + W Res e m ) \mathbf{e}_{\mathbf{m}}^{\operatorname{Res}}=\operatorname{ReLU}\left(\mathbf{\mathbf { e }}_{\mathbf{m}}+\mathbf{W}_{\operatorname{Res}} \mathbf{e}_{\mathbf{m}}\right) emRes=ReLU(em+WResem)
y ^ = σ ( w T ( e 1 Res ⊕ e 2 Res ⊕ ⋯ ⊕ e M Res ) + b ) \hat{y}=\sigma\left(\mathbf{w}^{\mathbf{T}}\left(\mathbf{e}_{1}^{\operatorname{Res}} \oplus \mathbf{e}_{2}^{\operatorname{Res}} \oplus \cdots \oplus \mathbf{e}_{\mathbf{M}}^{\operatorname{Res}}\right)+b\right) y^=σ(wT(e1Res⊕e2Res⊕⋯⊕eMRes)+b)
序列模型与推荐模型的结合
DIEN
Paper : Deep Interest Evolution Network for Click-Through Rate Prediction
Deep Interest Evolution Network
-
模型架构
-
由于用户历史数据是有前后时间关联的,所以DIEN考虑使用RNN模型来建模用户的行为模式
-
由于GRU只能学习到用户行为之间的依赖关系,无法直接反应出用户的兴趣,所以DIEN使用了一个辅助Loss来帮助学习
L a u x = − 1 N ( ∑ i = 1 N ∑ t log σ ( h t i , e b i [ t + 1 ] ) + log ( 1 − σ ( h t i , e ^ b i [ t + 1 ] ) ) ) , \begin{array}{r} L_{a u x}=-\frac{1}{N}\left(\sum_{i=1}^{N} \sum_{t} \log \sigma\left(\mathbf{h}_{t}^{i}, \mathbf{e}_{b}^{i}[t+1]\right)\right. \\ \left.+\log \left(1-\sigma\left(\mathbf{h}_{t}^{i}, \hat{\mathbf{e}}_{b}^{i}[t+1]\right)\right)\right), \end{array} Laux=−N1(∑i=1N∑tlogσ(hti,ebi[t+1])+log(1−σ(hti,e^bi[t+1]))),
L = L target + α ∗ L aux L=L_{\text {target }}+\alpha * L_{\text {aux }} L=Ltarget +α∗Laux
正样本即为下一个真实点击的item,负样本从非正样本中随机采样-
DIEN修改GRU结构,引入Attention机制,Attention Score计算公式如下
a t = exp ( h t W e a ) ∑ j = 1 T exp ( h j W e a ) a_{t}=\frac{\exp \left(\mathbf{h}_{t} W \mathbf{e}_{a}\right)}{\sum_{j=1}^{T} \exp \left(\mathbf{h}_{j} W \mathbf{e}_{a}\right)} at=∑j=1Texp(hjWea)exp(htWea)
-
GRU with Attentional Input(AIGRU)
- 将Attention直接作用于GRU的输入,无需修改GRU结构
i t ′ = h t ∗ a t \mathbf{i}_{t}^{\prime}=\mathbf{h}_{t} * a_{t} it′=ht∗at
-
Attention based GRU(AGRU)
- 将Attention机制应用于GRU的update gate
h t ′ = ( 1 − a t ) ∗ h t − 1 ′ + a t ∗ h ~ t ′ \mathbf{h}_{t}^{\prime}=\left(1-a_{t}\right) * \mathbf{h}_{t-1}^{\prime}+a_{t} * \tilde{\mathbf{h}}_{t}^{\prime} ht′=(1−at)∗ht−1′+at∗h~t′
-
GRU with Attentional Update Gate(AUGRU)
u ~ t ′ = a t ∗ u t ′ h t ′ = ( 1 − u ~ t ′ ) ∘ h t − 1 ′ + u ~ t ′ ∘ h ~ t ′ \begin{aligned} \tilde{\mathbf{u}}_{t}^{\prime} &=a_{t} * \mathbf{u}_{t}^{\prime} \\ \mathbf{h}_{t}^{\prime} &=\left(1-\tilde{\mathbf{u}}_{t}^{\prime}\right) \circ \mathbf{h}_{t-1}^{\prime}+\tilde{\mathbf{u}}_{t}^{\prime} \circ \tilde{\mathbf{h}}_{t}^{\prime} \end{aligned} u~t′ht′=at∗ut′=(1−u~t′)∘ht−1′+u~t′∘h~t′
-
-
强化学习与推荐模型的结合
DRN
Paper : DRN: A Deep Reinforcement Learning Framework for News Recommendation
Deep Reinforcement Learning Network
-
强化学习概念在推荐系统领域的解释
-
DQN的结构如下所示
-
DRN的迭代学习过程
-
在离线部分,根据历史数据训练模型,作为智能体的初始化模型
-
在两个时间戳间的时段,利用模型进行PUSH服务,同时积累FEEDBACK
-
在每个时间戳上,利用上一阶段积累的反馈数据进行MINOR UPDATE
-
每隔一段时间,利用历史收集的数据以及用户活跃度数据使用Experience Replay进行MAJOR UPDATE
-
重复上述2~4步
-
-
MINOR UPDATE——Dueling Bandit Gradient Descent
微更新——竞争梯度下降
-
对当前网络 Q Q Q的模型参数 W W W添加一个较小的随机扰动 Δ W \Delta W ΔW,得到新的模型参数 W ~ \widetilde{W} W ,对应于探索网络 Q ~ \widetilde{Q} Q
Δ W = α ⋅ rand ( − 1 , 1 ) ⋅ W \Delta \mathrm{W}=\alpha \cdot \operatorname{rand}(-1,1) \cdot \mathrm{W} ΔW=α⋅rand(−1,1)⋅W
α \alpha α为探索因子,决定探索力度大小 -
对当前网络 Q Q Q与探索网络 Q ~ \widetilde{Q} Q 分别生成推荐列表 L L L与 L ~ \widetilde{L} L ,用Interleaving将两个推荐列表组合成一个推荐列表后推送给用户
-
实时收集用户反馈。如果探索网络 Q ~ \widetilde{Q} Q 生成内容的效果好于当前网络 Q Q Q,则用探索网络代替当前网络,进入下一轮迭代
W ′ = W + η W ~ \mathrm{W}^{\prime}=\mathrm{W}+\eta \tilde{\mathrm{W}} W′=W+ηW~
否则保留当前网络不变。
-