96SEO 2026-02-23 11:54 1
#xff08;1#xff09;与传统的机器学习模型相比#xff0c;深度学习模型的表达能力更强#xff0c;能够挖掘#xff08;2#xff09;深度学习的模型结构非常灵活#xff0c;能够根据业务场景和数据特…参考自《深度学习推荐系统》用于学习和记录。

1与传统的机器学习模型相比深度学习模型的表达能力更强能够挖掘2深度学习的模型结构非常灵活能够根据业务场景和数据特点灵活调整模型结构使模型与应用场景完美契合。
将自编码器AutoEncoder的思想和协同过滤结合提出了一种单隐层神经网络推荐模型。
AutoRec模型是一个标准的自编码器它的基本原理是利用协同过滤中的共现矩阵完成物品向量或者用户向量的自编码。
再利用自编码的结果得到用户对物品的预估评分进而进行推荐排序。
自编码器是指能够完成数据“自编码”的模型。
无论是图像、音频还是数据都可以转换成向量的形式进行表达。
假设其数据向量为
\operatorname*{min}_{\theta}\sum_{r\in
中存储了所有数据向量的“精华”。
一般来说重建函数的参数数量远小于输人向量的维度数量因此自编码器相当于完成了数据压缩和降维的工作。
\pmb{r}^{(i)}(R_{1i},\ldots,R_{m
使所有该重建函数生成的评分向量与原评分向量的平方残差和最小。
在得到
模型的重建函数后还要经过评分预估和排序的过程才能得到最终的推荐列表。
模型的两个重点内容一重建函数的模型结构和利用重建函数得到最终推荐列表的过程。
分别代表输入层到隐层以及隐层到输出层的参数矩阵。
该模型结构代表的重建函数的具体形式如下所示。
为防止重构函数的过拟合在加人L2正则化项后AutoRec目标函数的具体形式如下所示。
\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)
模型是一个非常标准的三层神经网络模型的训练利用梯度反向传播即可完成。
利用求导过程中的链式法则ChainRule可以解决梯度反向传播的问题。
最终的损失函数到权重
∂w1∂Lo1∂h1∂Lo1⋅∂w1∂h1
在具体的计算中需要明确最终损失函数的形式以及每层神经元激活函数的形式再根据具体的函数形式进行偏导的计算。
基于AutoRec模型的推荐过程并不复杂。
当输入物品i的评分向量为
\widehat{R}_{\mathbf{u}\mathbf{i}}\big(h\big(\pmb{r}^{(\mathbf{i})};\widehat{\theta}\big)\big)_{u}
通过遍历输入物品向量就可以得到用户u对所有物品的评分预测进而根据评分预测排序得到推荐列表。
与之前的协同过滤算法一样AutoRec也分为基于物品的AutoRec和基于用户的AutoRec。
以上介绍的AutoRec输入向量是物品的评分向量因此可称为I-AutoRecItembasedAutoRec如果换做把用户的评分向量作为输入向量则得到U-AutoRecUser
AutoRec模型从神经网络的角度出发使用一个单隐层的AutoEncoder泛化用户或物品评分使模型具有一定的泛化和表达能力。
由于AutoRec模型的结构比较简单使其存在一定的表达能力不足的问题。
在模型结构上AutoRec模型和后来的词向量模型Word2vec完全一致但优化目标和训练方法有所不同。
模型完整地解决了从特征工程、稀疏向量稠密化、多层神经网络进行优化目标拟合等一系列深度学习在推荐系统中的应用问题为后续的研究打下了良好的基础。
DeepCrossing模型的应用场景是微软搜索引擎Bing中的搜索广告推荐场景。
针对该使用场景微软使用的特征如表3-1所示这些特征可以分为三类一类是可以被处理成
向量的类别型特征包括用户搜索词query、广告关键词keyword、广告标题title、落地页landing
page、匹配类型matchtype一类是数值型特征微软称其为计数型counting特征包括点击率、预估点击率clickprediction一类是需要进一步处理的特征包括广告计划campaign、曝光样例impression、点击样例click等。
严格地说这些都不是独立的特征而是一个特征的组别需要进一步处理。
例如可以将广告计划中的预算budget作为数值型特征而广告计划的id则可以作为类别型特征。
编码生成特征向量数值型特征则可以直接拼接进特征向量中在生成所有输人特征的向量表达后
为完成端到端的训练DeepCrossing模型要在其内部网络中解决如下问题。
1离散类特征编码后过于稀疏不利于直接输人神经网络进行训练如何解决稀疏特征向量稠密化的问题。
2如何解决特征自动交叉组合的问题。
3如何在输出层中达成问题设定的优化目标。
DeepCrossing模型分别设置了不同的神经网络层来解决上述问题。
如图所示4层—Embedding层、Stacking层、Multiple
ResidualUnits层和Scoring层。
接下来从下至上依次介绍各层的功能和实现。
Embedding层Embedding层的作用是将稀疏的类别型特征转换成稠密的Embedding向量。
Stacking层Stacking层堆叠层的作用比较简单Embedding特征和数值型特征拼接在一起形成新的包含全部特征的特征向量该层通常也被称为连接concatenate层。
MultipleResidualUnits层该层的主要结构是多层感知机相比标准的以感知机为基本单元的神经网络DeepCrossing模型采用了多层残差网络Multi-Layer
Network作为MLP的具体实现。
通过多层残差网络对特征向量各个维度进行充分的交叉组合使模型能够抓取到更多的非线性特征和组合特征的信息进而使深度学习模型在表达能力上较
2输入可以通过一个短路shortcut通路直接与输出向量进行元素加element-wiseplus操作生成最终的输出向量。
在这样的结构下残差单元中的两层ReLU网络其实拟合的是输出和输人之间的“残差”
1神经网络是不是越深越好对于传统的基于感知机的神经网络当网络加深之后往往存在过拟合现象即网络越深在测试集上的表现越差。
而在残差神经网络中由于有输入向量短路的存在很多时候可以越过两层ReLU网络减少过拟合现象的发生。
2当神经网络足够深时往往存在严重的梯度消失现象。
梯度消失现象是指在梯度反向传播过程中越靠近输人端梯度的幅度越小参数收敛的速度越慢。
为了解决这个问题残差单元使用了ReLU激活函数取代原来的sigmoid激活函数。
此外输人向量短路相当于直接把梯度毫无变化地传递到下一层这也使残差网络的收敛速度更快。
Scoring层Scoring层作为输出层就是为了拟合优化目标而存在的。
对于CTR预估这类二分类问题点击广告或内容的概率Scoring层往往使用的是逻辑回归模型而对于图像分类等多分类问题Scoring层往往采用softmax模型。
如果从深度学习的视角看待矩阵分解模型那么矩阵分解层的用户隐向量和物品隐向量完全可以看作一种Embedding方法。
最终的“Scoring层”就是将用户隐向量和物品隐向量进行内积操作后得到“相似度”这里的“相似度”就是对评分的预测。
综上利用深度学习网络图的方式来描述矩阵分解模型的架构
在实际使用矩阵分解来训练和评估模型的过程中往往会发现模型容易处于欠拟合的状态究其原因是因为矩阵分解的模型结构相对比较简单特别是“输出层”也被称为“Scoring层”无法对优化目标进行有效的拟合。
这就要求模型有更强的表达能力在此动机的启发下新加坡国立大学的研究人员提出了NeuralCF模型。
输出层的结构替代了矩阵分解模型中简单的内积操作。
这样做的收益是直观的一是让用户向量和物品向量做更充分的交叉得到更多有价值的特征组合信息二是引人更多的非线性特征让模型的表达能力更强。
原始的矩阵分解使用“内积”的方式让用户和物品向量进行交互为了进一步让向量在各维度上进行充分交叉可以通过“元素积”element-wiseproduct长度相同的两个向量的对应维相乘得到另一向量的方式进行互操作再通过逻辑回归等输出层拟合最终预测目标。
维向量softmax函数将其映射为一个概率分布。
标准的softmax函数
\sigma\!:\!\mathbb{R}^{n}\to\mathbb{R}^{n}
\sigma(X)_{i}{\frac{\exp(x_{i})}{\sum_{j1}^{n}\exp\!\left(x_{j}\right)}}\,
在分类问题中softmax函数往往和交叉熵cross-entropy损失函数一起使用
\mathrm{Loss}_{\mathrm{Cross\,Entriopy}}\,-\sum_{i}y_{i}\mathrm{ln}(\sigma({\pmb
LossCrossEntriopy−i∑yiln(σ(x)i)
个分类的预测值。
因为softmax函数把分类输出标准化成了多个分类的概率分布而交叉熵正好刻画了预测分类和真实结果之间的相似度所以softmax函数往
往与交叉熵搭配使用。
在采用交叉熵作为损失函数时整个输出层的梯度下降形式变得异常简单。
\frac{\partial\sigma(\pmb{x})_{i}}{\partial
l}{\sigma(\pmb{x})_{i}\big(1-\sigma(\pmb{x})_{j}\big),ij}\\
{-\sigma(\pmb{x})_{i}\cdot\sigma(\pmb{x})_{j},i\neq
∂xj∂σ(x)i{σ(x)i(1−σ(x)j),ij−σ(x)i⋅σ(x)j,ij
\frac{\partial\mathrm{Loss}}{\partial
x_{j}}\!\!\frac{\partial\mathrm{Loss}}{\partial\sigma(\pmb{x})}\!\cdot\!\frac{\partial\sigma(\pmb{x})}{\partial
∂xj∂Loss∂σ(x)∂Loss⋅∂xj∂σ(x)
\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)
\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
∂xj∂Loss∂σ(x)k∂(−ln(σ(x)k))⋅∂xj∂σ(x)k−σ(x)k1⋅∂xj∂σ(x)k{σ(x)j−1,jkσ(x)j,jk
可以看出softmax函数和交叉熵的配合不仅在数学含义上完美统一而且在梯度形式上也非常简洁。
基于上式的梯度形式通过梯度反向传播的方法即可完成整个神经网络权重的更新。
NeuralCF模型实际上提出了一个模型框架它基于用户向量和物品向量这两个Embedding层利用不同的互操作层进行特征的交叉组合并且可以灵活地进行不同互操作层的拼接。
NeuralCF模型也存在局限性。
由于是基于协同过滤的思想进行构造的所以NeuralCF模型并没有引入更多其他类型的特征这在实际应用中无疑浪费了其他有价值的信息。
NeuralCF模型的主要思想是利用多层神经网络替代经典协同过滤的点积操作加强模型的表达能力。
广义上任何向量之间的交互计算方式都可以用来替代协同过滤的内积操作相应的模型可称为广义的矩阵分解模型。
CrossingPNN模型在输人、Embedding层、多层神经网络以及最终的输出层部分并没有结构上的不同唯一的区别在于PNN模型用乘积层Product
Stacking。
也就是说不同特征的Embedding向量不再是简单的拼接而是用Product操作进行两两交互更有针对性地获取特征之间的交叉信息。
PNN模型对于深度学习结构的创新主要在于乘积层的引入。
具体地说PNN模型的乘积层由线性操作部分乘积层的z部分对各特征向量进行线性拼接和乘积操作部分中乘积层的p部分组成。
其中乘积特征交叉部分又分为内积操作和外积操作。
g_{\mathrm{inner}}\!\left(\pmb{f}_{i},\pmb{f}_{j}\right)
r}}\big(\pmb{f}_{i},\pmb{f}_{j}\big)\langle\pmb{f}_{i},\pmb{f}_{j}\rangle
g_{\mathrm{outer}}(\pmb{f}_{i},\pmb{f}_{j})
g_{\mathrm{outer}}\big(\pmb{f}_{i},\pmb{f}_{j}\big)\pmb{f}_{i}\,\pmb{f}_{j}^{\mathrm{T}}
是输入向量的维度。
这样的外积操作无疑会直接将问题的复杂度从原来的
为了在一定程度上减小模型训练的负担PNN模型的论文中介绍了一种降维的方法就是把所有两两特征Embedding向量外积互操作的结果叠加Superposition形成一个叠加外积互操作矩阵
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
的最终形式类似于让所有特征Embedding向量通过一个平均池化层AveragePooling后再进行外积互操作。
在实际应用中还应对平均池化的操作谨慎对待。
因为把不同特征对应维度进行平均实际上是假设不同特征的对应维度有类似的含义。
PNN的结构特点在于强调了特征Embedding向量之间的交叉方式是多样化的相比于简单的交由全连接层进行无差别化的处理PNN模型定义的内积和外积操作显然更有针对性地强调了不同特征之间的交互从而让模型更容易捕获特征的交叉信息。
但PNN模型同样存在着一些局限性例如在外积操作的实际应用中为了优化训练效率进行了大量的简化操作。
此外对所有特征进行无差别的交叉在一定程度上忽略了原始特征向量中包含的有价值信息。
本节介绍的是自提出以来就在业界发挥着巨大影响力的模型一谷歌于2016年提出的WideDeep模型。
WideDeep模型的主要思路正如其名是由单层的Wide部分和多层的Deep部分组成的混合模型。
其中Wide部分的主要作用是让模型具有较强的“记忆能力”memorizationDeep部分的主要作用是让模型具有“泛化能力”generalization正是这样的结构特点使模型兼具了逻辑回归和深度神经网络的优点一能够快速处理并记忆大量历史行为特征并且具有强大的表达能力不仅在当时迅速成为业界争相应用的主流模型而且衍生出了大量以WideDeep模型为基础结构的混合模型影响力一直延续到至今。
“记忆能力”可以被理解为模型直接学习并利用历史数据中物品或者特征的“共现频率”的能力。
一般来说协同过滤、逻辑回归等简单模型有较强的“记忆能力”。
由于这类模型的结构简单原始数据往往可以直接影响推荐结果产生类似于“如果点击过A就推荐B”这类规则式的推荐这就相当于模型直接记住了历史数据的分布特点并利用这些记忆进行推荐。
对“强特征”的记忆如果以“最终是否安装pandora”为数据标签label则可以轻而易举地统计出netflixpandora这个特征和安装pandora这个标签之间的共现频率。
假设二者的共现频率高达
这个特征如此之强以至于在设计模型时希望模型一发现有这个特征就推荐pandora这款应用就像一个深刻的记忆点一样印在脑海里这就是所谓的模型的“记忆能力”。
像逻辑回归这类简单模型如果发现这样的“强特征”则其相应的权重就会在模型训练过程中被调整得非常大这样就实现了对这个特征的直接记忆。
相反对于多层神经网络来说特征会被多层处理不断与其他特征进行交叉因此模型对这个强特征的记忆反而没有简单模型深刻。
“泛化能力”可以被理解为模型传递特征的相关性以及发掘稀疏甚至从未出现过的稀有特征与最终标签相关性的能力。
矩阵分解比协同过滤的泛化能力强因为矩阵分解引入了隐向量这样的结构使得数据稀少的用户或者物品也能生成隐向量从而获得有数据支撑的推荐得分这就是非常典型的将全局数据传递到稀疏物品上从而提高泛化能力的例子。
再比如深度神经网络通过特征的多次自动组合可以深度发掘数据中潜在的模式即使是非常稀疏的特征向量输入也能得到较稳定平滑的推荐概率这就是简单模型所缺乏的“泛化能力”。
EmbeddingDeep部分连接起来一起输入最终的输出层。
单层的Wide部分善于处理大量稀疏的id类特征Deep部分利用神经网络表达能力强的特点进行深层的特征交叉挖掘藏在特征背后的数据模式。
最终利用逻辑回归模型输出层将Wide部分和Deep部分组合起来形成统一的模型。
在具体的特征工程和输入层设计中展现了GooglePlay的推荐团队对业务场景的深刻理解。
从图3-14中可以详细地了解到WideDeep模型到底将哪些特征作为Deep部分的输人将哪些特征作为Wide部分的输入。
Deep部分的输人是全量的特征向量包括用户年龄Age、已安装应用数量#App
App曝光应用ImpressionApp等特征。
已安装应用、曝光应用等类别型特征需
Embedding拼接成1200维的Embedding向量再依次经过3层ReLU全连接层最终输入LogLoss输出层。
Wide部分的输人仅仅是已安装应用和曝光应用两类特征其中已安装应用代表用户的历史行为而曝光应用代表当前的待推荐应用。
选择这两类特征的原因是充分发挥Wide部分“记忆能力”强的优势。
Wide部分组合“已安装应用”和“曝光应用”两个特征的函数被称为交叉积变换Cross
\varnothing_{\kappa}(X)\prod_{i1}^{d}x_{i}^{c_{k
pandora”这两个特征同时为1时其对应的交叉积变换层的结果才为1否则为0。
在通过交叉积变换层操作完成特征组合之后Wide部分将组合特征输入最终的LogLoss输出层与Deep部分的输出一同参与最后的目标拟合完成Wide与Deep部分的融合。
在WideDeep模型之后有越来越多的工作集中于分别改进WideDeep模型的Wide部分或是Deep部分。
较典型的工作是2017年由斯坦福大学和谷歌的研究人员提出的DeepCross模型DCN。
DeepCross模型的结构图如图所示其主要思路是使用Cross网络替代原来的Wide部分。
设计Cross网络的目的是增加特征之间的交互力度使用多层交叉层Crosslayer对输人向量进行特征交叉。
假设第I层交叉层的输出向量为
可以看到交叉层操作的二阶部分非常类似于3.5节PNN模型中提到的外积操作在此基础上增加了外积操作的权重向量
可以看出交叉层在增加参数方面是比较“克制”的每一层仅增加了一个
维输人向量维度并且在每一层均保留了输入向量因此输出与输入之间的变化不会特别明显。
由多层交叉层组成的Cross网络在WideDeep模型中Wide部分的基础上进行特征的自动化交叉避免了更多基于业务理解的人工特征组合。
同WideDeep模型一样DeepCross模型的Deep部分相比Cross部分表达能力更强使模型具备更强的非线性学习能力。
1抓住了业务问题的本质特点能够融合传统模型记忆能力和深度学习模型泛化能力的优势。
2模型的结构并不复杂比较容易在工程上实现、训练和上线这加速了其在业界的推广应用。
也正是从WideDeep模型之后越来越多的模型结构被加入推荐模型中深度学习模型的结构开始朝着多样化、复杂化的方向发展。
本节将介绍的FNN、DeepFM及NFM模型使用不同的方式应用或改进了FM模型并融合进深度学习模型中持续发挥着其在特征组合上的优势。
FNN类似于DeepCrossing模型关键在于Embedding层的改进。
在神经网络的参数初始化过程中往往采用随机初始化这种不包含任何先验信息的初始化方法。
由于Embedding层的输入极端稀疏化导致Embedding层的收敛速度非常缓慢。
再加上Embedding层的参数数量往往占整个神经网络参数数量的大半以上因此模型的收敛速度往往受限于Embedding层。
在深度学习网络中Embedding层的作用是将稀疏输人向量转换成稠密向量但Embedding层的存在往往会拖慢整个神经网络的收敛速度原因有两个
1Embedding层的参数数量巨大。
这里可以做一个简单的计算。
假设输人层的维度是100,000Embedding层输出维度是32上层再加5层32维的全连接层最后输出层维度是10那么输人层到Embedding层的参数数量是
(32{\times}32){\times}4{}32{\times}10{}4416
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对WideDeep模型的改进之处在于它用FM替换了原来的Wide部分加强了浅层网络部分特征组合的能力。
FM部分对不同的特征域的Embedding进行了两两交叉也就是将Embedding向量当作原FM中的特征隐向量。
最后将FM的输出与
部分的输出一同输人最后的输出层参与最后的目标拟合。
这里的改进动机与DeepCross模型的完全一致唯一的不同就在于DeepCross模型利用多层Cross网络进行特征组合而DeepFM模型利用FM进行特征组合。
在数学形式上NFM模型的主要思路是用一个表达能力更强的函数替代原FM中二阶隐向量内积的部分。
NFM网络架构的特点非常明显就是在Embedding层和多层神经网络之间加入特征交叉池化层Bi-Interaction
是所有特征域的Embedding集合那么特征交叉池化层的具体操作如下所示。
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)
代表两个向量的元素积操作即两个长度相同的向量对应维相乘得到元素积向量其中第
在进行两两Embedding向量的元素积操作后对交叉特征向量取和得到池化层的输出向量。
再把该向量输入上层的多层全连接神经网络进行进一步的交
如果把NFM的一阶部分视为一个线性模型那么NFM的架构也可以视为WideDeep模型的进化。
相比原始的WideDeep模型NFM模型对其Deep部分加人了特征交叉池化层加强了特征交叉。
这是理解NFM模型的另一个角度。
在经典多层神经网络的基础上加入有针对性的特征交义操作让模型具备更强的非线性表达能力。
沿着特征工程自动化的思路深度学习模型从PNN一路走来经过了WideDeep、DeepCross、FNN、DeepFM、NFM等模型进行了大量的、基于不同特征互操作思路的尝试。
但特征工程的思路走到这里几乎已经穷尽了可能的尝试模型进一步提升的空间非常小这也是这类模型的局限性所在。
从这之后越来越多的深度学习推荐模型开始探索更多“结构”上的尝试诸如注意力机制、序列模型、强化学习等在其他领域大放异彩的模型结构也逐渐进入推荐系统领域并且在推荐模型的效果提升上成果显著。
AFM模型可以被认为是NFM模型的延续。
在NFM模型中不同域的特征Embedding向量经过特征交叉池化层的交叉将各交叉特征向量进行“加和”输入最后由多层神经网络组成的输出层。
问题的关键在于加和池化SumPooling操作它相当于“一视同仁”地对待所有交叉特征不考虑不同特征对结果的影响程度事实上消解了大量有价值的信息。
这里“注意力机制”就派上了用场它基于假设一不同的交叉特征对于结果的影响程度不同以更直观的业务场景为例用户对不同交叉特征的关注程度应是不同的。
相比于之前很多“学术风”的深度学习模型阿里巴巴提出的DIN模型显然更具业务气息。
它的应用场景是阿里巴巴的电商广告推荐因此在计算一个用户u是否点击一个广告a时**模型的输入特征自然分为两大部分一部分是用户u的特征组另一部分是候选广告a的特征组。
**无论是用户还是广告都含有两个非常重要的特征一商品idgood_id和商铺idshop_id。
用户特征里的商品id是一个序列代表用户曾经点击过的商品集合商铺id同理而广告特征里的商品id和商铺id就是广告对应的商品id和商铺id阿里巴巴平台上的广告大部分是参与推广计划的商品。
在原来的基础模型中Base模型用户特征组中的商品序列和商铺序列经过简单的平均池化操作后就进人上层神经网络进行下一步训练序列中的商品既没有区分重要程度也和广告特征中的商品id没有关系。
将上述“注意力”的思想反映到模型中也是直观的。
利用候选商品和历史行为商品之间的相关性计算出一个权重这个权重就代表了“注意力”的强弱加人了注意力权重的深度学习网络就是DIN模型其中注意力部分的形式化表达如下所示。
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
Vuf(Va)i1∑Nwi⋅Vii1∑Ng(Vi,Va)⋅Vi
次行为的Embedding向量。
这里用户的行为就是浏览商品或店铺因此行为的Embedding向量就是那次浏览的商品或店铺的Embedding向量。
函数到底采用什么形式比较好呢答案是使用一个注意力激活单元activationunit来生成注意力得分。
这个注意力激活单元本质上也是一个小的神经网络其具体结构如图3-24右上角处的激活单元所示。
可以看出激活单元的输人层是两个Embedding向量经过元素减element-wiseminus操作后Embedding输入最后通过单神经元输出层生成注意力得分。
如果留意图中的红线可以发现商铺id只跟用户历史行为中的商铺id序列发生作用商品id只跟用户的商品id序列发生作用因为注意力的轻重更应该由同类信息的相关性决定。
DIN模型与基于FM的AFM模型相比是一次更典型的改进深度学习网络的尝试而且由于出发点是具体的业务场景也给了推荐工程师更多实质性的启发。
**注意力机制在数学形式上只是将过去的平均操作或加和操作换成了加权和或者加权平均操作。
这一机制对深度学习推荐系统的启发是重大的。
**因为“注意力得分”的引入反映了人类天生的“注意力机制”特点。
对这一机制的模拟使得推荐系统更加接近用户真实的思考过程从而达到提升推荐效果的目的。
从“注意力机制”开始越来越多对深度学习模型结构的改进是基于对用户行为的深刻观察而得出的。
相比学术界更加关注理论上的创新业界的推荐工程师更需要基于对业务的理解推进推荐模型的演化。
阿里巴巴在2019年提出DIN模型的演化版本——DIEN。
DIEN
模型的应用场景和DIN完全一致其创新在于用序列模型模拟了用户兴趣的进化过程。
无论是电商购买行为还是视频网站的观看行为或是新闻应用的阅读行为特定用户的历史行为都是一个随时间排序的序列。
既然是时间相关的序列就一定存在或深或浅的前后依赖关系这样的序列信息对于推荐过程无疑是有价值的。
但本章之前介绍的所有模型有没有利用到这层序列信息呢答案是否定的。
即使是引人了注意力机制的AFM或DIN模型也仅是对不同行为的重要性进行打分这样的得分是时间无关的是序列无关的。
例如上周一位用户在挑选一双篮球鞋这位用户上周的行为序列都会集中在篮球鞋这个品类的商品上但在他完成购买后本周他的购物兴趣可能变成买一个机械键盘。
1它加强了最近行为对下次行为预测的影响。
在这个例子中用户近期购买机械键盘的概率会明显高于再买一双篮球鞋或购买其他商品的概率。
2序列模型能够学习到购买趋势的信息。
在这个例子中序列模型能够在一定程度上建立“篮球鞋”到“机械键盘”的转移概率。
如果这个转移概率在全局统计意义上是足够高的那么在用户购买篮球鞋时推荐机械键盘也会成为一个不错的选项。
直观上二者的用户群体很有可能是一致的。
**如果放弃序列信息则模型学习时间和趋势这类信息的能力就不会那么强推荐模型就仍然是基于用户所有购买历史的综合推荐而不是针对“下一次购买推荐。
**显然从业务的角度看后者才是推荐系统正确的推荐目标。
输出层的整体架构。
图中彩色的“兴趣进化网络”被认为是一种用户兴趣的Embedding方法它最终的输出是
1行为序列层BehaviorLayer浅绿色部分其主要作用是把原始的id类行为序列转换成Embedding行为序列。
2兴趣抽取层InterestExtractorLayer米黄色部分其主要作用是通过模拟用户兴趣迁移过程抽取用户兴趣。
3兴趣进化层InterestEvolvingLayer浅红色部分其主要作用是通过在兴趣抽取层基础上加入注意力机制模拟与当前目标广告相关的兴趣进化过程。
在兴趣进化网络中行为序列层的结构与普通的Embedding层是一致的模拟用户兴趣进化的关键在于“兴趣抽取层”和“兴趣进化层”。
兴趣抽取层的基本结构是GRUGatedRecurrentUnit门循环单元网络。
相比传统的序列模型
LongShort-TermMemory长短期记忆网络GRU解决了RNN的梯度消失问题。
与LSTM相比GRU的参数数量更少训练收敛速度更快因此成了DIEN序列模型的选择。
u_{t}\sigma(W^{u}i_{t}U^{u}h_{t-1}b^{u})}\\
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
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
W^{u},W^{r},W^{h},U^{z},U^{r},U^{h}
。
理论上在兴趣状态向量序列的基础上GRU网络已经可以做出下一个兴趣状态向量的预测但DIEN却进一步设置了兴趣进化层这是为什么呢
兴趣进化层注意力得分的生成过程与DIN完全一致都是当前状态向量与自标厂告向量进行互作用的结果。
也就是说DIEN在模拟兴趣进化的过程中需要考虑与目标广告的相关性。
**在兴趣抽取层之上再加上兴趣进化层就是为了更有针对性地模拟与目标广告相关的兴趣进化路径。
**由于阿里巴巴这类综合电商的特点用户非常有可能同时购买多品类商品例如在购买“机械键盘”的同时还在查看“衣服”品类下的商品那么这时注意力机制就显得格外重要了。
当目标广告是某个电子产品时用户购买“机械键盘”相关的兴趣演化路径显然比购买“衣服”的演化路径重要这样的筛选功能兴趣抽取层没有。
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}
由于序列模型具备强大的时间序列的表达能力使其非常适合预估用户经过一系列行为后的下一次动作。
事实上不仅阿里巴巴在电商模型上成功运用了序列模型YouTube、Netflix等视频流媒体公司也已经成功的在其视频推荐模型中应用了序列模型用于预测用户的下次观看行为nextwatch。
但在工程实现上需要注意序列模型比较高的训练复杂度以及在线上推断过程中的串行推断使其在模型服务过程中延迟较大这无疑增大了其上线的难度需要在工程上着重优化。
强化学习ReinforcementLearning是近年来机器学习领域非常热门的研究话题它的研究起源于机器人领域针对智能体Agent在不断变化的环境Environment中决策和学习的过程进行建模。
在智能体的学习过程中会完成收集外部反馈Reward改变自身状态State再根据自身状态对下一步的行动Action进行决策在行动之后持续收集反馈的循环简称“行动-反馈-状态更新”的循环。
2018年由宾夕法尼亚州立大学和微软亚洲研究院的学者提出的推荐领域的强化学习模型DRN就是一次将强化学习应用于新闻推荐系统的尝试。
智能体推荐系统本身它包括基于深度学习的推荐模型、探索explore策略以及相关的数据存储memory。
环境由新闻网站或App、用户组成的整个推荐系统外部环境。
在环境中用户接收推荐的结果并做出相应反馈。
行动对一个新闻推荐系统来说“行动”指的就是推荐系统进行新闻排序后推送给用户的动作。
反馈用户收到推荐结果后进行正向的或负向的反馈。
例如点击行为被认为是一个典型的正反馈曝光未点击则是负反馈的信号。
此外用户的活跃程度用户打开应用的间隔时间也被认为是有价值的反馈信号。
状态状态指的是对环境及自身当前所处具体情况的刻画。
在新闻推荐场景中状态可以被看作已收到所有行动和反馈以及用户和新闻的所有相关信息的特征向量表示。
站在传统机器学习的角度“状态”可以被看作已收到的、可用于训练的所有数据的集合。
在这样的强化学习框架下模型的学习过程可以不断地选代迭代过程主要有如下几步
2推荐系统基于当前已收集的数据状态进行新闻排序行动并推送到网站或App环境中。
强化学习相比传统深度模型的优势就在于强化学习模型能够进行“在线学习”不断利用新学到的知识更新自己及时做出调整和反馈。
这也正是将强化学习应用于推荐系统的收益所在。
智能体部分是强化学习框架的核心对推荐系统这一智能体来说推荐模型是推荐系统的“大脑”。
在DRN框架中扮演“大脑”角色的是DeepQ-Network深度Q网络简称DQN其中Q是Quality的简称指通过对行动进行质量评估得到行动的效用得分以此进行行动决策。
DON的网络结构如图所示在特征工程中套用强化学习状态向量和行动向量的概念把用户特征user
features归为状态向量因为它们与具体的行动无关把用户-新闻交叉特征和新闻特征归为行动特征因为其与推荐新闻这一行动相关。
用户特征和环境特征经过左侧多层神经网络的拟合生成价值value得分
价值得分和优势得分都是强化学习中的概念在理解DQN时读者不必过多纠结这些名词只要清楚DQN的结构即可。
事实上任何深度学习模型都可以作为智能体的推荐模型并没有特殊的建模方面的限制。
1在离线部分根据历史数据训练好DQN模型作为智能体的初始化模型。
2在
阶段利用初始化模型进行一段时间的推送push服务积累反馈feedback数据。
(3在
在第4步中出现的模型主更新操作可以理解为利用历史数据的重新训练用训练好的模型替代现有模型。
那么在第3步中提到的模型微调怎么操作呢这就牵扯到DRN使用的一种新的在线训练方法——竞争梯度下降算法DuelingBand
用Interleaving后续章节介绍将两个推荐列表组合成一个推荐列表后推送给用户。
其中α是探索因子决定探索力度的大小。
rand(-1,1)是一个[-1,1]之间的随机数。
DRN的在线学习过程利用了“探索”的思想其调整模型的粒度可以精细到每次获得反馈之后这一点很像随机梯度下降的思路虽然一次样本的结果可能产生随机扰动但只要总的下降趋势是正确的就能通过海量的尝试最终达到最优点。
DRN正是通过这种方式让模型时刻与最“新鲜”的数据保持同步将最新的反馈信息实时地融人模型中。
强化学习在推荐系统中的应用可以说又一次扩展了推荐模型的建模思路。
它与之前提到的其他深度学习模型的不同之处在于变静态为动态把模型学习的实时性提到了一个空前重要的位置。
它也给我们提出了一个值得思考的问题一到底是应该打造一个重量级的、“完美”的但训练延迟很大的模型还是应该打造一个轻巧的、简单的但能够实时训练的模型。
当然工程上的事情没有假设更没有猜想只通过实际效果说话“重量”与“实时”之间也绝非对立关系但在最终决定一个技术方案之前这样的思考是非常必要的也是值得花时间去验证的。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback