交友类网站功能建设思路,莱芜手机网站建设电话,医药网站素材,海口网站建设策划方案参考自《深度学习推荐系统》#xff0c;用于学习和记录。
前言
#xff08;1#xff09;与传统的机器学习模型相比#xff0c;深度学习模型的表达能力更强#xff0c;能够挖掘#xff08;2#xff09;深度学习的模型结构非常灵活#xff0c;能够根据业务场景和数据特…参考自《深度学习推荐系统》用于学习和记录。
前言
1与传统的机器学习模型相比深度学习模型的表达能力更强能够挖掘2深度学习的模型结构非常灵活能够根据业务场景和数据特点灵活调整模型结构使模型与应用场景完美契合。
主流深度学习推荐模型的演化图谱 AutoRec 单隐层神经网络推荐模型
AutoRec 将自编码器AutoEncoder的思想和协同过滤结合提出了一种单隐层神经网络推荐模型。
AutoRec模型是一个标准的自编码器它的基本原理是利用协同过滤中的共现矩阵完成物品向量或者用户向量的自编码。再利用自编码的结果得到用户对物品的预估评分进而进行推荐排序。
自编码器
自编码器是指能够完成数据“自编码”的模型。无论是图像、音频还是数据都可以转换成向量的形式进行表达。假设其数据向量为 r \pmb{r} r 自编码器的作用是将向量 r \pmb{r} r 作为输入通过自编码器后得到的输出向量尽量接近其本身。
假设自编码器的重建函数为 h ( r ; θ ) h(r;\theta) h(r;θ) 那么自编码器的目标函数为 min θ ∑ r ∈ S ∥ r − h ( r ; θ ) ∥ 2 2 \operatorname*{min}_{\theta}\sum_{r\in S}\lVert r-h(r;\theta)\rVert_{2}^{2} θminr∈S∑∥r−h(r;θ)∥22
其中 s s s 是所有数据向量的集合。
在完成自编码器的训练后就相当于在重建函数 h ( r ; θ ) h(r;\theta) h(r;θ) 中存储了所有数据向量的“精华”。一般来说重建函数的参数数量远小于输人向量的维度数量因此自编码器相当于完成了数据压缩和降维的工作。
对一个物品i来说所有 m m m 个用户对它的评分可形成一个 m m m 维的向量 r ( i ) ( R 1 i , … , R m i ) \pmb{r}^{(i)}(R_{1i},\ldots,R_{m i}) r(i)(R1i,…,Rmi) AutoRec 要解决的问题是构建一个重建函数 h ( r ; θ ) h(r;\theta) h(r;θ) 使所有该重建函数生成的评分向量与原评分向量的平方残差和最小。在得到 AutoRec 模型的重建函数后还要经过评分预估和排序的过程才能得到最终的推荐列表。
下面为 AutoRec 模型的两个重点内容一重建函数的模型结构和利用重建函数得到最终推荐列表的过程。
AutoRec 模型的结构
网络的输入层是物品的评分向量 r \pmb{r} r 输出层是一个多分类层。图中蓝色的神经元代表模型的 k k k 维单隐层其中 k m k{}m km 图中的 V V V 和 W \pmb{W} W 分别代表输入层到隐层以及隐层到输出层的参数矩阵。该模型结构代表的重建函数的具体形式如下所示。 h ( r ; θ ) f ( W ⋅ g ( V r μ ) b ) h(r;\theta)f(W\cdot g(V r\mu)b) h(r;θ)f(W⋅g(Vrμ)b)
其中 f ( ⋅ ) , g ( ⋅ ) f(\cdot),g(\cdot) f(⋅),g(⋅) 分别为输出层神经元和隐层神经元的激活函数。
为防止重构函数的过拟合在加人L2正则化项后AutoRec目标函数的具体形式如下所示。 min θ ∑ i 1 n ∥ r ( i ) − h ( r ( i ) ; θ ) ∥ O 2 λ 2 ⋅ ( ∥ W ∥ F 2 ∥ V ∥ F 2 ) \underset{\theta}{\min}\sum_{i1}^{n}\lVert\boldsymbol{r}^{(i)}-\boldsymbol{h}\big(\boldsymbol{r}^{(i)};\theta\big)\rVert_{\mathcal{O}}^{2}\frac{\lambda}{2}\cdot(\lVert\boldsymbol{W}\rVert_{F}^{2}\lVert\boldsymbol{V}\rVert_{F}^{2}) θmini1∑n∥r(i)−h(r(i);θ)∥O22λ⋅(∥W∥F2∥V∥F2)
由于 AutoRec 模型是一个非常标准的三层神经网络模型的训练利用梯度反向传播即可完成。
神经元、神经网络和梯度反向传播
单神经元模型结构 简单神经网络
利用求导过程中的链式法则ChainRule可以解决梯度反向传播的问题。最终的损失函数到权重 w 1 w_{1} w1 的梯度是由损失函数到神经元 h 1 h_{1} h1 输出的偏导以及神经元 h 1 h_{1} h1 输出到权重 w 1 w_{1} w1 的偏导相乘而来的。也就是说最终的梯度逐层传导回来“指导”权重 w 1 w_{1} w1 的更新。 ∂ L o 1 ∂ w 1 ∂ L o 1 ∂ h 1 ⋅ ∂ h 1 ∂ w 1 \frac{\partial L_{o_{1}}}{\partial w_{1}}\frac{\partial L_{o_{1}}}{\partial h_{1}}\cdot\frac{\partial h_{1}}{\partial w_{1}} ∂w1∂Lo1∂h1∂Lo1⋅∂w1∂h1
在具体的计算中需要明确最终损失函数的形式以及每层神经元激活函数的形式再根据具体的函数形式进行偏导的计算。
基于 AutoRec 模型的推荐过程
基于AutoRec模型的推荐过程并不复杂。当输入物品i的评分向量为 r ( i ) \pmb{r}^{(\mathrm{i})} r(i) 时模型的输出向量 h ( r ( i ) ; θ ) h(r^{(\mathbf{i})};\theta) h(r(i);θ) 就是所有用户对物品i的评分预测。那么其中的第 u u u 维就是用户 u \mathbf{u} u 对物品i的预测 R ^ m i \widehat{R}_{\mathrm{mi}} R mi 如下所示。 R ^ u i ( h ( r ( i ) ; θ ^ ) ) u \widehat{R}_{\mathbf{u}\mathbf{i}}\big(h\big(\pmb{r}^{(\mathbf{i})};\widehat{\theta}\big)\big)_{u} R ui(h(r(i);θ ))u
通过遍历输入物品向量就可以得到用户u对所有物品的评分预测进而根据评分预测排序得到推荐列表。
与之前的协同过滤算法一样AutoRec也分为基于物品的AutoRec和基于用户的AutoRec。以上介绍的AutoRec输入向量是物品的评分向量因此可称为I-AutoRecItembasedAutoRec如果换做把用户的评分向量作为输入向量则得到U-AutoRecUser based Auto Rec。
AutoRec 特点和局限性
AutoRec模型从神经网络的角度出发使用一个单隐层的AutoEncoder泛化用户或物品评分使模型具有一定的泛化和表达能力。由于AutoRec模型的结构比较简单使其存在一定的表达能力不足的问题。
在模型结构上AutoRec模型和后来的词向量模型Word2vec完全一致但优化目标和训练方法有所不同。
Deep Crossing 模型——经典的深度学习架构
相比 AutoRec 模型过于简单的网络结构带来的一些表达能力不强的问题 DeepCrossing 模型完整地解决了从特征工程、稀疏向量稠密化、多层神经网络进行优化目标拟合等一系列深度学习在推荐系统中的应用问题为后续的研究打下了良好的基础。
Deep Crossing
DeepCrossing模型的应用场景是微软搜索引擎Bing中的搜索广告推荐场景。
针对该使用场景微软使用的特征如表3-1所示这些特征可以分为三类一类是可以被处理成 one-hot 或者 multi-hot 向量的类别型特征包括用户搜索词query、广告关键词keyword、广告标题title、落地页landing page、匹配类型matchtype一类是数值型特征微软称其为计数型counting特征包括点击率、预估点击率clickprediction一类是需要进一步处理的特征包括广告计划campaign、曝光样例impression、点击样例click等。严格地说这些都不是独立的特征而是一个特征的组别需要进一步处理。例如可以将广告计划中的预算budget作为数值型特征而广告计划的id则可以作为类别型特征。
类别型特征可以通过 one-hot 或 multi-hot 编码生成特征向量数值型特征则可以直接拼接进特征向量中在生成所有输人特征的向量表达后 DeepCrossing 模型利用该特征向量进行CTR预估。
Deep Crossing 模型的网络结构
为完成端到端的训练DeepCrossing模型要在其内部网络中解决如下问题。
1离散类特征编码后过于稀疏不利于直接输人神经网络进行训练如何解决稀疏特征向量稠密化的问题。
2如何解决特征自动交叉组合的问题。3如何在输出层中达成问题设定的优化目标。
DeepCrossing模型分别设置了不同的神经网络层来解决上述问题。如图所示4层—Embedding层、Stacking层、Multiple ResidualUnits层和Scoring层。接下来从下至上依次介绍各层的功能和实现。 Embedding层Embedding层的作用是将稀疏的类别型特征转换成稠密的Embedding向量。
Stacking层Stacking层堆叠层的作用比较简单Embedding特征和数值型特征拼接在一起形成新的包含全部特征的特征向量该层通常也被称为连接concatenate层。
MultipleResidualUnits层该层的主要结构是多层感知机相比标准的以感知机为基本单元的神经网络DeepCrossing模型采用了多层残差网络Multi-Layer Residual Network作为MLP的具体实现。通过多层残差网络对特征向量各个维度进行充分的交叉组合使模型能够抓取到更多的非线性特征和组合特征的信息进而使深度学习模型在表达能力上较 传统机器学习模型大为增强。
什么是残差神经网络其特点是什么
残差单元
与传统的感知机不同残差单元的特点主要有两个
1输入经过两层以ReLU为激活函数的全连接层后生成输出向量。
2输入可以通过一个短路shortcut通路直接与输出向量进行元素加element-wiseplus操作生成最终的输出向量。
在这样的结构下残差单元中的两层ReLU网络其实拟合的是输出和输人之间的“残差” x o − x i {{\pmb x}^{\mathrm o}-{\pmb x}^{\mathrm{i}}} xo−xi 这就是残差神经网络名称的由来。
残差神经网络的诞生主要是为了解决两个问题
1神经网络是不是越深越好对于传统的基于感知机的神经网络当网络加深之后往往存在过拟合现象即网络越深在测试集上的表现越差。而在残差神经网络中由于有输入向量短路的存在很多时候可以越过两层ReLU网络减少过拟合现象的发生。
2当神经网络足够深时往往存在严重的梯度消失现象。梯度消失现象是指在梯度反向传播过程中越靠近输人端梯度的幅度越小参数收敛的速度越慢。为了解决这个问题残差单元使用了ReLU激活函数取代原来的sigmoid激活函数。此外输人向量短路相当于直接把梯度毫无变化地传递到下一层这也使残差网络的收敛速度更快。
Scoring层Scoring层作为输出层就是为了拟合优化目标而存在的。对于CTR预估这类二分类问题点击广告或内容的概率Scoring层往往使用的是逻辑回归模型而对于图像分类等多分类问题Scoring层往往采用softmax模型。
NeuralCF 模型——CF 与深度学习的结合
如果从深度学习的视角看待矩阵分解模型那么矩阵分解层的用户隐向量和物品隐向量完全可以看作一种Embedding方法。最终的“Scoring层”就是将用户隐向量和物品隐向量进行内积操作后得到“相似度”这里的“相似度”就是对评分的预测。综上利用深度学习网络图的方式来描述矩阵分解模型的架构 在实际使用矩阵分解来训练和评估模型的过程中往往会发现模型容易处于欠拟合的状态究其原因是因为矩阵分解的模型结构相对比较简单特别是“输出层”也被称为“Scoring层”无法对优化目标进行有效的拟合。这就要求模型有更强的表达能力在此动机的启发下新加坡国立大学的研究人员提出了NeuralCF模型。
NeuralCF
如图所示NeuralCF用“多层神经网络 输出层的结构替代了矩阵分解模型中简单的内积操作。这样做的收益是直观的一是让用户向量和物品向量做更充分的交叉得到更多有价值的特征组合信息二是引人更多的非线性特征让模型的表达能力更强。 原始的矩阵分解使用“内积”的方式让用户和物品向量进行交互为了进一步让向量在各维度上进行充分交叉可以通过“元素积”element-wiseproduct长度相同的两个向量的对应维相乘得到另一向量的方式进行互操作再通过逻辑回归等输出层拟合最终预测目标。
softmax 函数
给定一个 n _n n 维向量softmax函数将其映射为一个概率分布。标准的softmax函数 σ : R n → R n \sigma\!:\!\mathbb{R}^{n}\to\mathbb{R}^{n} σ:Rn→Rn 由下面的公式定义 σ ( X ) i exp ( x i ) ∑ j 1 n exp ( x j ) \sigma(X)_{i}{\frac{\exp(x_{i})}{\sum_{j1}^{n}\exp\!\left(x_{j}\right)}}\, σ(X)i∑j1nexp(xj)exp(xi) 可以看到softmax函数解决了从一个原始的 n n n 维向量向一个 n n n 维的概率分布映射的问题。 在分类问题中softmax函数往往和交叉熵cross-entropy损失函数一起使用 L o s s C r o s s E n t r i o p y − ∑ i y i l n ( σ ( x ) i ) \mathrm{Loss}_{\mathrm{Cross\,Entriopy}}\,-\sum_{i}y_{i}\mathrm{ln}(\sigma({\pmb x})_{i}) LossCrossEntriopy−i∑yiln(σ(x)i)
其中 y i y_{i} yi 是第 i i i 个分类的真实标签值 σ ( x ) i \sigma({\pmb x})_{i} σ(x)i soft max i i i 个分类的预测值。因为softmax函数把分类输出标准化成了多个分类的概率分布而交叉熵正好刻画了预测分类和真实结果之间的相似度所以softmax函数往 往与交叉熵搭配使用。在采用交叉熵作为损失函数时整个输出层的梯度下降形式变得异常简单。
softmax函数的导数形式为 ∂ σ ( x ) i ∂ x j { σ ( x ) i ( 1 − σ ( x ) j ) , i j − σ ( x ) i ⋅ σ ( x ) j , i ≠ j \frac{\partial\sigma(\pmb{x})_{i}}{\partial x_{j}}\left\{\begin{array}{l l}{\sigma(\pmb{x})_{i}\big(1-\sigma(\pmb{x})_{j}\big),ij}\\ {-\sigma(\pmb{x})_{i}\cdot\sigma(\pmb{x})_{j},i\neq j}\end{array}\right. ∂xj∂σ(x)i{σ(x)i(1−σ(x)j),ij−σ(x)i⋅σ(x)j,ij
基于链式法则交叉熵函数到softmax函数第 j j j 维输人 x j x_{j} xj 的导数形式为 ∂ L o s s ∂ x j ∂ L o s s ∂ σ ( x ) ⋅ ∂ σ ( x ) ∂ x j \frac{\partial\mathrm{Loss}}{\partial x_{j}}\!\!\frac{\partial\mathrm{Loss}}{\partial\sigma(\pmb{x})}\!\cdot\!\frac{\partial\sigma(\pmb{x})}{\partial x_{j}} ∂xj∂Loss∂σ(x)∂Loss⋅∂xj∂σ(x) 在多分类问题中真实值中只有一个维度是1其余维度都为0。假设第 k k k 维是1即 y k 1 y_{k}{}1 yk1 那么交叉熵损失函数可以简化成如下形式 Loss Croff − ∑ i y i ln ( σ ( x ) i ) − y k ⋅ ln ( σ ( x ) k ) − ln ( σ ( x ) k ) \operatorname{Loss}_{\operatorname{Croff}}\,\,-\sum_{i}y_{i}\ln(\sigma(\pmb{x})_{i})-y_{k}\cdot\ln(\sigma(\pmb{x})_{k})-\ln(\sigma(\pmb{x})_{k}) LossCroff−i∑yiln(σ(x)i)−yk⋅ln(σ(x)k)−ln(σ(x)k)
则有 ∂ L o s s ∂ x j ∂ ( − ln ( σ ( x ) k ) ) ∂ σ ( x ) k ⋅ ∂ σ ( x ) k ∂ x j − 1 σ ( x ) k ⋅ ∂ σ ( x ) k ∂ x j { σ ( x ) j − 1 , j k σ ( x ) j , j ≠ k \frac{\partial\mathrm{Loss}}{\partial x_{j}}\!\!\frac{\partial(-\ln(\sigma(\pmb{x})_{k}))}{\partial\sigma(\pmb{x})_{k}}\!\cdot\!\frac{\partial\sigma(\pmb{x})_{k}}{\partial x_{j}}\!-\frac{1}{\sigma(\pmb{x})_{k}}\!\cdot\!\frac{\partial\sigma(\pmb{x})_{k}}{\partial x_{j}}\!\!\left\{\!\!\begin{array}{l l}{\sigma(\pmb{x})_{j}-1,jk}\\ {\sigma(\pmb{x})_{j},j\neq k}\end{array}\!\!\right. ∂xj∂Loss∂σ(x)k∂(−ln(σ(x)k))⋅∂xj∂σ(x)k−σ(x)k1⋅∂xj∂σ(x)k{σ(x)j−1,jkσ(x)j,jk
可以看出softmax函数和交叉熵的配合不仅在数学含义上完美统一而且在梯度形式上也非常简洁。基于上式的梯度形式通过梯度反向传播的方法即可完成整个神经网络权重的更新。
NeuralCF 模型的优势和局限性
NeuralCF模型实际上提出了一个模型框架它基于用户向量和物品向量这两个Embedding层利用不同的互操作层进行特征的交叉组合并且可以灵活地进行不同互操作层的拼接。
NeuralCF模型也存在局限性。由于是基于协同过滤的思想进行构造的所以NeuralCF模型并没有引入更多其他类型的特征这在实际应用中无疑浪费了其他有价值的信息。
PNN 模型——加强特征交叉能力
NeuralCF模型的主要思想是利用多层神经网络替代经典协同过滤的点积操作加强模型的表达能力。广义上任何向量之间的交互计算方式都可以用来替代协同过滤的内积操作相应的模型可称为广义的矩阵分解模型。
PNN 模型的网络架构
PNN模型的提出同样是为了解决CTR预估和推荐系统的问题。
相比Deep CrossingPNN模型在输人、Embedding层、多层神经网络以及最终的输出层部分并没有结构上的不同唯一的区别在于PNN模型用乘积层Product LayerDeep Crossing Stacking。也就是说不同特征的Embedding向量不再是简单的拼接而是用Product操作进行两两交互更有针对性地获取特征之间的交叉信息。 Product 层的多种特征交叉方式
PNN模型对于深度学习结构的创新主要在于乘积层的引入。具体地说PNN模型的乘积层由线性操作部分乘积层的z部分对各特征向量进行线性拼接和乘积操作部分中乘积层的p部分组成。其中乘积特征交叉部分又分为内积操作和外积操作。
内积操作就是经典的向量内积运算假设输入特征向量分别为 f i , f j \pmb{f}_{i},\pmb{f}_{j} fi,fj 特征的内积互操作 g i n n e r ( f i , f j ) g_{\mathrm{inner}}\!\left(\pmb{f}_{i},\pmb{f}_{j}\right) ginner(fi,fj) 的定义如下所示。 g i n n e r ( f i , f j ) ⟨ f i , f j ⟩ g_{\mathsf{i n n e r}}\big(\pmb{f}_{i},\pmb{f}_{j}\big)\langle\pmb{f}_{i},\pmb{f}_{j}\rangle ginner(fi,fj)⟨fi,fj⟩
外积操作是对输入特征向量 f i , f j \pmb{f}_{i},\pmb{f}_{j} fi,fj 的各维度进行两两交叉生成特征交叉矩阵外积互操作 g o u t e r ( f i , f j ) g_{\mathrm{outer}}(\pmb{f}_{i},\pmb{f}_{j}) gouter(fi,fj) 的定义如下所示。 g o u t e r ( f i , f j ) f i f j T g_{\mathrm{outer}}\big(\pmb{f}_{i},\pmb{f}_{j}\big)\pmb{f}_{i}\,\pmb{f}_{j}^{\mathrm{T}} gouter(fi,fj)fifjT
外积互操作生成的是特征向量 f i , f j \pmb{f}_{i},\pmb{f}_{j} fi,fj 各维度两两交叉而成的一个 M × M M{\times}M M×M 的方形矩阵其中 M M M 是输入向量的维度。这样的外积操作无疑会直接将问题的复杂度从原来的 M M M 提升到 M 2 M^{2} M2 为了在一定程度上减小模型训练的负担PNN模型的论文中介绍了一种降维的方法就是把所有两两特征Embedding向量外积互操作的结果叠加Superposition形成一个叠加外积互操作矩阵 p \pmb{p} p 具体定义如下所示。 p ∑ i 1 N ∑ j 1 N g o u t e r ( f i , f j ) ∑ i 1 N ∑ j 1 N f i f j T f Σ f Σ T , f Σ ∑ i 1 N f i p\sum_{i1}^{N}\sum_{j1}^{N}g_{\mathrm{outer}}\big(f_{i},f_{j}\big)\sum_{i1}^{N}\sum_{j1}^{N}f_{i}\,f_{j}^{\mathrm{T}}f_{\Sigma}\,f_{\Sigma}^{\mathrm{T}},f_{\Sigma}\sum_{i1}^{N}f_{i} pi1∑Nj1∑Ngouter(fi,fj)i1∑Nj1∑NfifjTfΣfΣT,fΣi1∑Nfi
从最终形式看叠加矩阵 p \pmb{p} p 的最终形式类似于让所有特征Embedding向量通过一个平均池化层AveragePooling后再进行外积互操作。
在实际应用中还应对平均池化的操作谨慎对待。因为把不同特征对应维度进行平均实际上是假设不同特征的对应维度有类似的含义。
PNN 模型的优势和局限性
PNN的结构特点在于强调了特征Embedding向量之间的交叉方式是多样化的相比于简单的交由全连接层进行无差别化的处理PNN模型定义的内积和外积操作显然更有针对性地强调了不同特征之间的交互从而让模型更容易捕获特征的交叉信息。
但PNN模型同样存在着一些局限性例如在外积操作的实际应用中为了优化训练效率进行了大量的简化操作。此外对所有特征进行无差别的交叉在一定程度上忽略了原始特征向量中包含的有价值信息。
WideDeep 模型——记忆能力和泛化能力的综合
本节介绍的是自提出以来就在业界发挥着巨大影响力的模型一谷歌于2016年提出的WideDeep模型。WideDeep模型的主要思路正如其名是由单层的Wide部分和多层的Deep部分组成的混合模型。其中Wide部分的主要作用是让模型具有较强的“记忆能力”memorizationDeep部分的主要作用是让模型具有“泛化能力”generalization正是这样的结构特点使模型兼具了逻辑回归和深度神经网络的优点一能够快速处理并记忆大量历史行为特征并且具有强大的表达能力不仅在当时迅速成为业界争相应用的主流模型而且衍生出了大量以WideDeep模型为基础结构的混合模型影响力一直延续到至今。
模型的记忆能力和泛化能力
“记忆能力”可以被理解为模型直接学习并利用历史数据中物品或者特征的“共现频率”的能力。一般来说协同过滤、逻辑回归等简单模型有较强的“记忆能力”。由于这类模型的结构简单原始数据往往可以直接影响推荐结果产生类似于“如果点击过A就推荐B”这类规则式的推荐这就相当于模型直接记住了历史数据的分布特点并利用这些记忆进行推荐。
对“强特征”的记忆如果以“最终是否安装pandora”为数据标签label则可以轻而易举地统计出netflixpandora这个特征和安装pandora这个标签之间的共现频率。假设二者的共现频率高达 10 % 10\% 10% 全局的平均应用安装率为 1 % 1\% 1% 这个特征如此之强以至于在设计模型时希望模型一发现有这个特征就推荐pandora这款应用就像一个深刻的记忆点一样印在脑海里这就是所谓的模型的“记忆能力”。像逻辑回归这类简单模型如果发现这样的“强特征”则其相应的权重就会在模型训练过程中被调整得非常大这样就实现了对这个特征的直接记忆。相反对于多层神经网络来说特征会被多层处理不断与其他特征进行交叉因此模型对这个强特征的记忆反而没有简单模型深刻。
“泛化能力”可以被理解为模型传递特征的相关性以及发掘稀疏甚至从未出现过的稀有特征与最终标签相关性的能力。矩阵分解比协同过滤的泛化能力强因为矩阵分解引入了隐向量这样的结构使得数据稀少的用户或者物品也能生成隐向量从而获得有数据支撑的推荐得分这就是非常典型的将全局数据传递到稀疏物品上从而提高泛化能力的例子。再比如深度神经网络通过特征的多次自动组合可以深度发掘数据中潜在的模式即使是非常稀疏的特征向量输入也能得到较稳定平滑的推荐概率这就是简单模型所缺乏的“泛化能力”。
WideDeep 模型的结构 WideDeep Wide EmbeddingDeep部分连接起来一起输入最终的输出层。单层的Wide部分善于处理大量稀疏的id类特征Deep部分利用神经网络表达能力强的特点进行深层的特征交叉挖掘藏在特征背后的数据模式。最终利用逻辑回归模型输出层将Wide部分和Deep部分组合起来形成统一的模型。
在具体的特征工程和输入层设计中展现了GooglePlay的推荐团队对业务场景的深刻理解。从图3-14中可以详细地了解到WideDeep模型到底将哪些特征作为Deep部分的输人将哪些特征作为Wide部分的输入。 Deep部分的输人是全量的特征向量包括用户年龄Age、已安装应用数量#App Installs、设备类型Device Class、已安装应用User Installed App曝光应用ImpressionApp等特征。已安装应用、曝光应用等类别型特征需 EmbeddingConcatenated Embedding拼接成1200维的Embedding向量再依次经过3层ReLU全连接层最终输入LogLoss输出层。
Wide部分的输人仅仅是已安装应用和曝光应用两类特征其中已安装应用代表用户的历史行为而曝光应用代表当前的待推荐应用。选择这两类特征的原因是充分发挥Wide部分“记忆能力”强的优势。 Wide部分组合“已安装应用”和“曝光应用”两个特征的函数被称为交叉积变换Cross Product Transformation函数其形式化定义如下所示。 ∅ κ ( X ) ∏ i 1 d x i c k i c k i ∈ { 0 , 1 } \varnothing_{\kappa}(X)\prod_{i1}^{d}x_{i}^{c_{k i}}\quad c_{k i}\in\{0,1\} ∅κ(X)i1∏dxickicki∈{0,1} c k i c_{k i} cki 是一个布尔变量当第 i i i 个特征属于第 k k k 个组合特征时 c k i c_{k i} cki 的值为1否则为0 x i x_{i} xi 是第 i i i 个特征的值。例如对于“ANDuser installed app i \scriptstyle{i} i netfliximpression app e \scriptstyle{\mathfrak{e}} e pandora)”这个组合特征来说只有当“user installed app \mathrm{} netflix’和“impression app \mathrm{} pandora”这两个特征同时为1时其对应的交叉积变换层的结果才为1否则为0。
在通过交叉积变换层操作完成特征组合之后Wide部分将组合特征输入最终的LogLoss输出层与Deep部分的输出一同参与最后的目标拟合完成Wide与Deep部分的融合。
WideDeep 模型的进化——DeepCross模型
在WideDeep模型之后有越来越多的工作集中于分别改进WideDeep模型的Wide部分或是Deep部分。较典型的工作是2017年由斯坦福大学和谷歌的研究人员提出的DeepCross模型DCN。
DeepCross模型的结构图如图所示其主要思路是使用Cross网络替代原来的Wide部分。 设计Cross网络的目的是增加特征之间的交互力度使用多层交叉层Crosslayer对输人向量进行特征交叉。假设第I层交叉层的输出向量为 x l \pmb{x}_{l} xl 那么第 l 1 l{}1 l1 层的输出向量如下所示。 x l 1 x 0 x l T W l b l x l {\pmb x}_{l1}{\pmb x}_{0}{\pmb x}_{l}^{\mathrm{T}}{\pmb W}_{l}{\pmb b}_{l}{\pmb x}_{l} xl1x0xlTWlblxl
可以看到交叉层操作的二阶部分非常类似于3.5节PNN模型中提到的外积操作在此基础上增加了外积操作的权重向量 w l w_{l} wl 以及原输人向量 x l \pmb{x}_{l} xl 和偏置向量 b l ∘ \pmb{b}_{l\circ} bl∘ 交叉层的操作如图所示。
可以看出交叉层在增加参数方面是比较“克制”的每一层仅增加了一个 n n n 维的权重向量 w l \pmb{w}_{l} wl n n n 维输人向量维度并且在每一层均保留了输入向量因此输出与输入之间的变化不会特别明显。由多层交叉层组成的Cross网络在WideDeep模型中Wide部分的基础上进行特征的自动化交叉避免了更多基于业务理解的人工特征组合。同WideDeep模型一样DeepCross模型的Deep部分相比Cross部分表达能力更强使模型具备更强的非线性学习能力。
WideDeep模型的影响力
WideDeep模型能够取得成功的关键在于
1抓住了业务问题的本质特点能够融合传统模型记忆能力和深度学习模型泛化能力的优势。
2模型的结构并不复杂比较容易在工程上实现、训练和上线这加速了其在业界的推广应用。
也正是从WideDeep模型之后越来越多的模型结构被加入推荐模型中深度学习模型的结构开始朝着多样化、复杂化的方向发展。
FM与深度学习模型的结合
本节将介绍的FNN、DeepFM及NFM模型使用不同的方式应用或改进了FM模型并融合进深度学习模型中持续发挥着其在特征组合上的优势。
FNN——用 FM 的隐向量完成 Embedding 层初始化 FNN类似于DeepCrossing模型关键在于Embedding层的改进。
在神经网络的参数初始化过程中往往采用随机初始化这种不包含任何先验信息的初始化方法。由于Embedding层的输入极端稀疏化导致Embedding层的收敛速度非常缓慢。再加上Embedding层的参数数量往往占整个神经网络参数数量的大半以上因此模型的收敛速度往往受限于Embedding层。
为什么Embedding层的收敛速度往往很慢
在深度学习网络中Embedding层的作用是将稀疏输人向量转换成稠密向量但Embedding层的存在往往会拖慢整个神经网络的收敛速度原因有两个
1Embedding层的参数数量巨大。这里可以做一个简单的计算。假设输人层的维度是100,000Embedding层输出维度是32上层再加5层32维的全连接层最后输出层维度是10那么输人层到Embedding层的参数数量是 32 × 100 , 000 3 , 200 , 000 32{\times}100,000{}\ 3{,}200,000 32×100,000 3,200,000 其余所有层的参数总数是 ( 32 × 32 ) × 4 32 × 10 4416 (32{\times}32){\times}4{}32{\times}10{}4416 (32×32)×432×104416 。那么Embedding层的权重总数占比是 3 , 200 , 000 / ( 3 , 200 , 000 4416 ) 99.86 % 3,\!200,\!000\,/\,(3,\!200,\!0004416)99.86\% 3,200,000/(3,200,0004416)99.86%
也就是说Embedding层的权重占了整个网络权重的绝大部分。那么训练过程可想而知大部分的训练时间和计算开销都被Embedding层占据。
2由于输入向量过于稀疏在随机梯度下降的过程中只有与非零特征相连的Embedding层权重会被更新请参照随机梯度下降的参数更新公式理解这进一步降低了Embedding层的收敛速度。
针对Embedding层收敛速度的难题FNN模型的解决思路是用FM模型训练好的各特征隐向量初始化Embedding层的参数相当于在初始化神经网络参数时已经引入了有价值的先验信息。下图是FM各参数和FNN中Embedding层各参数的对应关系 DeepFM——用 FM 代替 Wide 部分
DeepFM对WideDeep模型的改进之处在于它用FM替换了原来的Wide部分加强了浅层网络部分特征组合的能力。FM部分对不同的特征域的Embedding进行了两两交叉也就是将Embedding向量当作原FM中的特征隐向量。最后将FM的输出与 Deep 部分的输出一同输人最后的输出层参与最后的目标拟合。这里的改进动机与DeepCross模型的完全一致唯一的不同就在于DeepCross模型利用多层Cross网络进行特征组合而DeepFM模型利用FM进行特征组合。
NFM——FM 的神经网络化尝试
在数学形式上NFM模型的主要思路是用一个表达能力更强的函数替代原FM中二阶隐向量内积的部分。
NFM网络架构的特点非常明显就是在Embedding层和多层神经网络之间加入特征交叉池化层Bi-Interaction Pooling Layer。假设 V x V_{x} Vx 是所有特征域的Embedding集合那么特征交叉池化层的具体操作如下所示。 f B I ( V x ) ∑ i 1 n ∑ j i 1 n ( x i v i ) ⊙ ( x j v j ) f_{\mathrm{BI}}(V_{x})\sum_{i1}^{n}\sum_{ji1}^{n}(x_{i}v_{i})\,\odot(x_{j}\,v_{j}) fBI(Vx)i1∑nji1∑n(xivi)⊙(xjvj)
其中 ⊙ \odot ⊙ 代表两个向量的元素积操作即两个长度相同的向量对应维相乘得到元素积向量其中第 k k k 维的操作如下所示。 ( v i ⊙ v j ) k ν i k ν j k \left(v_{i}\odot v_{j}\right)_{k}\pmb{\nu}_{i k}\pmb{\nu}_{j k} (vi⊙vj)kνikνjk
在进行两两Embedding向量的元素积操作后对交叉特征向量取和得到池化层的输出向量。再把该向量输入上层的多层全连接神经网络进行进一步的交 叉。
如果把NFM的一阶部分视为一个线性模型那么NFM的架构也可以视为WideDeep模型的进化。相比原始的WideDeep模型NFM模型对其Deep部分加人了特征交叉池化层加强了特征交叉。这是理解NFM模型的另一个角度。
基于 FM 的深度学习模型的优点和局限性
在经典多层神经网络的基础上加入有针对性的特征交义操作让模型具备更强的非线性表达能力。
沿着特征工程自动化的思路深度学习模型从PNN一路走来经过了WideDeep、DeepCross、FNN、DeepFM、NFM等模型进行了大量的、基于不同特征互操作思路的尝试。但特征工程的思路走到这里几乎已经穷尽了可能的尝试模型进一步提升的空间非常小这也是这类模型的局限性所在。
从这之后越来越多的深度学习推荐模型开始探索更多“结构”上的尝试诸如注意力机制、序列模型、强化学习等在其他领域大放异彩的模型结构也逐渐进入推荐系统领域并且在推荐模型的效果提升上成果显著。
注意力机制在推荐模型中的应用
AFM 引入注意力机制的 FM
AFM模型可以被认为是NFM模型的延续。在NFM模型中不同域的特征Embedding向量经过特征交叉池化层的交叉将各交叉特征向量进行“加和”输入最后由多层神经网络组成的输出层。问题的关键在于加和池化SumPooling操作它相当于“一视同仁”地对待所有交叉特征不考虑不同特征对结果的影响程度事实上消解了大量有价值的信息。
这里“注意力机制”就派上了用场它基于假设一不同的交叉特征对于结果的影响程度不同以更直观的业务场景为例用户对不同交叉特征的关注程度应是不同的。 DIN——引入注意力机制的深度学习网络
相比于之前很多“学术风”的深度学习模型阿里巴巴提出的DIN模型显然更具业务气息。它的应用场景是阿里巴巴的电商广告推荐因此在计算一个用户u是否点击一个广告a时**模型的输入特征自然分为两大部分一部分是用户u的特征组另一部分是候选广告a的特征组。**无论是用户还是广告都含有两个非常重要的特征一商品idgood_id和商铺idshop_id。用户特征里的商品id是一个序列代表用户曾经点击过的商品集合商铺id同理而广告特征里的商品id和商铺id就是广告对应的商品id和商铺id阿里巴巴平台上的广告大部分是参与推广计划的商品。 在原来的基础模型中Base模型用户特征组中的商品序列和商铺序列经过简单的平均池化操作后就进人上层神经网络进行下一步训练序列中的商品既没有区分重要程度也和广告特征中的商品id没有关系。
将上述“注意力”的思想反映到模型中也是直观的。利用候选商品和历史行为商品之间的相关性计算出一个权重这个权重就代表了“注意力”的强弱加人了注意力权重的深度学习网络就是DIN模型其中注意力部分的形式化表达如下所示。 V u f ( V a ) ∑ i 1 N w i ⋅ V i ∑ i 1 N g ( V i , V a ) ⋅ V i V_{\mathrm{{u}}}f(V_{\mathrm{{a}}})\sum_{i1}^{N}{w_{i}\cdot V_{i}}\sum_{i1}^{N}{g(V_{i},V_{\mathrm{{a}}})\cdot V_{i}} Vuf(Va)i1∑Nwi⋅Vii1∑Ng(Vi,Va)⋅Vi
其中 V u V_{\mathrm{u}} Vu Embedding V a V_{a} Va 是候选广告商品的Embedding向量 V i \pmb{V}_{i} Vi 是用户 u \mathbf{u} u 的第 i i i 次行为的Embedding向量。这里用户的行为就是浏览商品或店铺因此行为的Embedding向量就是那次浏览的商品或店铺的Embedding向量。
因为加人了注意力机制所以 V u . V_{\mathrm{u}}. Vu. 从过去 V i \pmb{V}_{i} Vi 的加和变成了 V i \pmb{V}_{i} Vi 的加权和 V i \pmb{V}_{i} Vi 的权重 w i w_{i} wi 就由 V i \pmb{V}_{i} Vi 与 V a V_{a} Va 的关系决定也就是式中的 g ( V i , V a ) g(V_{i},V_{a}) g(Vi,Va) 即“注意力得分”。
那么 g ( V i , V a ) g(\pmb{V}_{i},\pmb{V}_{a}) g(Vi,Va) 函数到底采用什么形式比较好呢答案是使用一个注意力激活单元activationunit来生成注意力得分。这个注意力激活单元本质上也是一个小的神经网络其具体结构如图3-24右上角处的激活单元所示。
可以看出激活单元的输人层是两个Embedding向量经过元素减element-wiseminus操作后Embedding输入最后通过单神经元输出层生成注意力得分。
如果留意图中的红线可以发现商铺id只跟用户历史行为中的商铺id序列发生作用商品id只跟用户的商品id序列发生作用因为注意力的轻重更应该由同类信息的相关性决定。
DIN模型与基于FM的AFM模型相比是一次更典型的改进深度学习网络的尝试而且由于出发点是具体的业务场景也给了推荐工程师更多实质性的启发。
注意力机制对推荐系统的启发
**注意力机制在数学形式上只是将过去的平均操作或加和操作换成了加权和或者加权平均操作。这一机制对深度学习推荐系统的启发是重大的。**因为“注意力得分”的引入反映了人类天生的“注意力机制”特点。对这一机制的模拟使得推荐系统更加接近用户真实的思考过程从而达到提升推荐效果的目的。
从“注意力机制”开始越来越多对深度学习模型结构的改进是基于对用户行为的深刻观察而得出的。相比学术界更加关注理论上的创新业界的推荐工程师更需要基于对业务的理解推进推荐模型的演化。
DIEN——序列模型与推荐系统的结合
阿里巴巴在2019年提出DIN模型的演化版本——DIEN。DIEN 模型的应用场景和DIN完全一致其创新在于用序列模型模拟了用户兴趣的进化过程。
DIEN 的进化动机
无论是电商购买行为还是视频网站的观看行为或是新闻应用的阅读行为特定用户的历史行为都是一个随时间排序的序列。既然是时间相关的序列就一定存在或深或浅的前后依赖关系这样的序列信息对于推荐过程无疑是有价值的。但本章之前介绍的所有模型有没有利用到这层序列信息呢答案是否定的。即使是引人了注意力机制的AFM或DIN模型也仅是对不同行为的重要性进行打分这样的得分是时间无关的是序列无关的。
例如上周一位用户在挑选一双篮球鞋这位用户上周的行为序列都会集中在篮球鞋这个品类的商品上但在他完成购买后本周他的购物兴趣可能变成买一个机械键盘。
序列信息的重要性在于
1它加强了最近行为对下次行为预测的影响。在这个例子中用户近期购买机械键盘的概率会明显高于再买一双篮球鞋或购买其他商品的概率。
2序列模型能够学习到购买趋势的信息。在这个例子中序列模型能够在一定程度上建立“篮球鞋”到“机械键盘”的转移概率。如果这个转移概率在全局统计意义上是足够高的那么在用户购买篮球鞋时推荐机械键盘也会成为一个不错的选项。直观上二者的用户群体很有可能是一致的。
**如果放弃序列信息则模型学习时间和趋势这类信息的能力就不会那么强推荐模型就仍然是基于用户所有购买历史的综合推荐而不是针对“下一次购买推荐。**显然从业务的角度看后者才是推荐系统正确的推荐目标。
DIEN 模型的架构 模型仍是输人层Embedding层 连接层 多层全连接神经网络 输出层的整体架构。图中彩色的“兴趣进化网络”被认为是一种用户兴趣的Embedding方法它最终的输出是 h ′ ( T ) h^{\prime}(T) h′(T) 这个用户兴趣向量。
兴趣进化网络分为三层从下至上依次是
1行为序列层BehaviorLayer浅绿色部分其主要作用是把原始的id类行为序列转换成Embedding行为序列。2兴趣抽取层InterestExtractorLayer米黄色部分其主要作用是通过模拟用户兴趣迁移过程抽取用户兴趣。3兴趣进化层InterestEvolvingLayer浅红色部分其主要作用是通过在兴趣抽取层基础上加入注意力机制模拟与当前目标广告相关的兴趣进化过程。
在兴趣进化网络中行为序列层的结构与普通的Embedding层是一致的模拟用户兴趣进化的关键在于“兴趣抽取层”和“兴趣进化层”。
兴趣抽取层的结构
兴趣抽取层的基本结构是GRUGatedRecurrentUnit门循环单元网络。相比传统的序列模型 RNNRecurrent Neural Network循环神经网络和LSTM LongShort-TermMemory长短期记忆网络GRU解决了RNN的梯度消失问题。与LSTM相比GRU的参数数量更少训练收敛速度更快因此成了DIEN序列模型的选择。 每个GRU单元的具体形式由系列公式定义。 u t σ ( W u i t U u h t − 1 b u ) r t σ ( W r i t U r h t − 1 b r ) h t ~ tanh ( W h i t r t ∘ U h h t − 1 b h ) h t ( 1 − u t ) ∘ h t − 1 u t ∘ h ~ t \begin{array}{r l}{\quad u_{t}\sigma(W^{u}i_{t}U^{u}h_{t-1}b^{u})}\\ {\quad r_{t}\sigma(W^{r}i_{t}U^{r}h_{t-1}b^{r})}\\ {\widetilde{h_{t}}\operatorname{tanh}(W^{h}i_{t}r_{t}\circ U^{h}h_{t-1}b^{h})}\\ {\qquad h_{t}(1-u_{t})\circ h_{t-1}u_{t}\circ\widetilde{h}_{t}}\end{array} utσ(WuitUuht−1bu)rtσ(WritUrht−1br)ht tanh(Whitrt∘Uhht−1bh)ht(1−ut)∘ht−1ut∘h t
其中 σ \sigma σ 是Sigmoid激活函数·是元素积操作 W u , W r , W h , U z , U r , U h W^{u},W^{r},W^{h},U^{z},U^{r},U^{h} Wu,Wr,Wh,Uz,Ur,Uh 是6组需要学习的参数矩阵 i t i_{t} it 是输人状态向量也就是行为序列层的各行为Embedding b ( t ) \pmb{b}(t) b(t) h t \pmb{h}_{t} ht 是GRU网络中第 t t t 个隐状态向量。
经过由GRU组成的兴趣抽取层后用户的行为向量 b ( t ) {\pmb b}(t) b(t) 被进一步抽象化形成了兴趣状态向量 h ( t ) {\pmb h}(t) h(t) 。理论上在兴趣状态向量序列的基础上GRU网络已经可以做出下一个兴趣状态向量的预测但DIEN却进一步设置了兴趣进化层这是为什么呢
兴趣进化层的结构
兴趣进化层注意力得分的生成过程与DIN完全一致都是当前状态向量与自标厂告向量进行互作用的结果。也就是说DIEN在模拟兴趣进化的过程中需要考虑与目标广告的相关性。
**在兴趣抽取层之上再加上兴趣进化层就是为了更有针对性地模拟与目标广告相关的兴趣进化路径。**由于阿里巴巴这类综合电商的特点用户非常有可能同时购买多品类商品例如在购买“机械键盘”的同时还在查看“衣服”品类下的商品那么这时注意力机制就显得格外重要了。当目标广告是某个电子产品时用户购买“机械键盘”相关的兴趣演化路径显然比购买“衣服”的演化路径重要这样的筛选功能兴趣抽取层没有。
兴趣进化层完成注意力机制的引入是通过AUGRUGRU with Attentional Update gate基于注意力更新门的GRU结构具体形式如下所示。 u ~ t ′ a t ⋅ u t ′ h t ′ ( 1 − u ~ t ′ ) ∘ h t − 1 ′ u ~ t ′ ∘ h ~ t ′ \begin{array}{r l}{\widetilde{\pmb{u}}_{t}^{\prime}a_{t}\cdot\pmb{u}_{t}^{\prime}}\\ {\pmb{h}_{t}^{\prime}(1-\widetilde{\pmb{u}}_{t}^{\prime})\circ\pmb{h}_{t-1}^{\prime}\widetilde{\pmb{u}}_{t}^{\prime}\circ\widetilde{\pmb{h}}_{t}^{\prime}}\end{array} u t′at⋅ut′ht′(1−u t′)∘ht−1′u t′∘h t′
可以看出AUGRU在原始的 u t ′ \pmb{u}_{t}^{\prime} ut′ 原始更新门向量中的 u t {\pmb u}_{t} ut 门基础上加人了注意力得分 a t \pmb{a}_{t} at 注意力得分的生成方式与DIN模型中注意力激活单元的基本一致。
序列模型对推荐系统的启发
由于序列模型具备强大的时间序列的表达能力使其非常适合预估用户经过一系列行为后的下一次动作。
事实上不仅阿里巴巴在电商模型上成功运用了序列模型YouTube、Netflix等视频流媒体公司也已经成功的在其视频推荐模型中应用了序列模型用于预测用户的下次观看行为nextwatch。
但在工程实现上需要注意序列模型比较高的训练复杂度以及在线上推断过程中的串行推断使其在模型服务过程中延迟较大这无疑增大了其上线的难度需要在工程上着重优化。
DRN——强化学习与推荐系统的结合
强化学习ReinforcementLearning是近年来机器学习领域非常热门的研究话题它的研究起源于机器人领域针对智能体Agent在不断变化的环境Environment中决策和学习的过程进行建模。在智能体的学习过程中会完成收集外部反馈Reward改变自身状态State再根据自身状态对下一步的行动Action进行决策在行动之后持续收集反馈的循环简称“行动-反馈-状态更新”的循环。
2018年由宾夕法尼亚州立大学和微软亚洲研究院的学者提出的推荐领域的强化学习模型DRN就是一次将强化学习应用于新闻推荐系统的尝试。
深度强化学习推荐系统框架 智能体推荐系统本身它包括基于深度学习的推荐模型、探索explore策略以及相关的数据存储memory。
环境由新闻网站或App、用户组成的整个推荐系统外部环境。在环境中用户接收推荐的结果并做出相应反馈。 行动对一个新闻推荐系统来说“行动”指的就是推荐系统进行新闻排序后推送给用户的动作。
反馈用户收到推荐结果后进行正向的或负向的反馈。例如点击行为被认为是一个典型的正反馈曝光未点击则是负反馈的信号。此外用户的活跃程度用户打开应用的间隔时间也被认为是有价值的反馈信号。
状态状态指的是对环境及自身当前所处具体情况的刻画。在新闻推荐场景中状态可以被看作已收到所有行动和反馈以及用户和新闻的所有相关信息的特征向量表示。站在传统机器学习的角度“状态”可以被看作已收到的、可用于训练的所有数据的集合。
在这样的强化学习框架下模型的学习过程可以不断地选代迭代过程主要有如下几步
1初始化推荐系统智能体
2推荐系统基于当前已收集的数据状态进行新闻排序行动并推送到网站或App环境中。
3用户收到推荐列表点击或者忽略反馈某推荐结果。
4推荐系统收到反馈更新当前状态或通过模型训练更新模型。
5重复第2步。
强化学习相比传统深度模型的优势就在于强化学习模型能够进行“在线学习”不断利用新学到的知识更新自己及时做出调整和反馈。这也正是将强化学习应用于推荐系统的收益所在。
深度强化学习推荐模型
智能体部分是强化学习框架的核心对推荐系统这一智能体来说推荐模型是推荐系统的“大脑”。在DRN框架中扮演“大脑”角色的是DeepQ-Network深度Q网络简称DQN其中Q是Quality的简称指通过对行动进行质量评估得到行动的效用得分以此进行行动决策。 DON的网络结构如图所示在特征工程中套用强化学习状态向量和行动向量的概念把用户特征user features和环境特征context features归为状态向量因为它们与具体的行动无关把用户-新闻交叉特征和新闻特征归为行动特征因为其与推荐新闻这一行动相关。 用户特征和环境特征经过左侧多层神经网络的拟合生成价值value得分 V ( s ) V(s) V(s) 利用状态向量和行动向量生成优势advantage得分 A ( s , a ) A(s,\pmb{a}) A(s,a) 最后把两部分得分综合起来得到最终的质量得分 Q ( s , a ) Q(s,\pmb{a}) Q(s,a)
价值得分和优势得分都是强化学习中的概念在理解DQN时读者不必过多纠结这些名词只要清楚DQN的结构即可。事实上任何深度学习模型都可以作为智能体的推荐模型并没有特殊的建模方面的限制。
DRN 的学习过程 按照从左至右的时间顺序依次描绘DRN学习过程中的重要步骤。
1在离线部分根据历史数据训练好DQN模型作为智能体的初始化模型。2在 t 1 → t 2 t_{1}{\rightarrow}t_{2} t1→t2 阶段利用初始化模型进行一段时间的推送push服务积累反馈feedback数据。(3在 t 2 t_{2} t2 时间点利用 t 1 → t 2 t_{1}{\rightarrow}t_{2} t1→t2 阶段积累的用户点击数据进行模型微更新minorupdate) 4在 t 4 t_{4} t4 时间点利用 t 1 → t 4 t_{1}{\rightarrow}t_{4} t1→t4 阶段的用户点击数据及用户活跃度数据进行模型的主更新major update。
5重复第2~4步。
在第4步中出现的模型主更新操作可以理解为利用历史数据的重新训练用训练好的模型替代现有模型。那么在第3步中提到的模型微调怎么操作呢这就牵扯到DRN使用的一种新的在线训练方法——竞争梯度下降算法DuelingBand it Gradient Descent Algorithm) 。
DRN 的在线学习方法——竞争梯度下降算法 其主要步骤如下
1对于已经训练好的当前网络 Q Q Q 对其模型参数 W \pmb{W} W 添加一个较小的随机扰动 △ W \triangle \pmb{W} △W得到新的模型参数 W ~ \tilde{W} W~这里称W对应的网络为探索网络 Q ~ \tilde{Q} Q~
2对于当前网络 Q Q Q 和探索网络 Q ~ \tilde{Q} Q~ 分别生成推荐列表 L L L 和 L ~ \tilde{L} L~ 用Interleaving后续章节介绍将两个推荐列表组合成一个推荐列表后推送给用户。
3实时收集用户反馈。如果探索网络Q生成内容的效果好于当前网络 Q \boldsymbol{\mathcal{Q}} Q 则用探索网络代替当前网络进入下一轮选代反之则保留当前网络。
在第1步中由当前网络 Q Q Q 生成探索网络 Q ~ \tilde{Q} Q~ 产生随机扰动的公式。 △ W α ∗ r a n d ( − 1 , 1 ) ∗ W \triangle \pmb{W} \alpha * rand(-1, 1)*\pmb{W} △Wα∗rand(−1,1)∗W 其中α是探索因子决定探索力度的大小。rand(-1,1)是一个[-1,1]之间的随机数。
DRN的在线学习过程利用了“探索”的思想其调整模型的粒度可以精细到每次获得反馈之后这一点很像随机梯度下降的思路虽然一次样本的结果可能产生随机扰动但只要总的下降趋势是正确的就能通过海量的尝试最终达到最优点。DRN正是通过这种方式让模型时刻与最“新鲜”的数据保持同步将最新的反馈信息实时地融人模型中。
强化学习对推荐系统的启发
强化学习在推荐系统中的应用可以说又一次扩展了推荐模型的建模思路。它与之前提到的其他深度学习模型的不同之处在于变静态为动态把模型学习的实时性提到了一个空前重要的位置。
它也给我们提出了一个值得思考的问题一到底是应该打造一个重量级的、“完美”的但训练延迟很大的模型还是应该打造一个轻巧的、简单的但能够实时训练的模型。当然工程上的事情没有假设更没有猜想只通过实际效果说话“重量”与“实时”之间也绝非对立关系但在最终决定一个技术方案之前这样的思考是非常必要的也是值得花时间去验证的。
总结