推荐算法—ctr预估

总览

内容来源:https://zhuanlan.zhihu.com/p/63186101
下面首先列出这张深度学习CTR模型的演化图谱
推荐算法—ctr预估

LR

LR+GBDT

FM/FFM模型——因子分解和特征交叉

FM 模型可以看成是线性部分的 LR,还有非线性的特征组合 xixj 交叉而成,表示如下:
推荐算法—ctr预估
可以化简,减小复杂度
推荐算法—ctr预估
推荐算法—ctr预估
从神经网络的角度表示 FM, 可以看成底层为特征维度为 n 的离散输入,经过 embedding 层后,对 embedding 层线性部分(LR)和非线性部分(特征交叉部分)累加后输出

FM 等价于 FM + embedding,待学习的参数如下:

  • LR 部分:1+n
  • embedding 部分:n*k

Deep Neural Network (DNN) ——多层感知机器模拟特征组合

推荐算法—ctr预估
对于大多数 CTR 模型来说,特征体系都极其庞大而且稀疏,典型的特征数量级 n 从百万级到千万级到亿级甚至更高,这么大规模的 n 作为网络输入在 CTR 预估的工业界场景中是不可接受的。

下面要讲到的大多数深度学习 CTR 网络结构,都围绕着如何将 DNN 的高维离散输入,通过 embedding 层变成低维稠密的输入工作来展开。

DNN 待学习参数:

  • nH1+H1H2+H2H3+H3o
  • o 为输出层大小,在 CTR 预估中为 1。

Deep Crossing(2016年)——DNN中deep加了resnet

推荐算法—ctr预估
微软于2016年提出的Deep Crossing可以说是深度学习CTR模型的最典型和基础性的模型。如图2的模型结构图所示,它涵盖了深度CTR模型最典型的要素,即通过加入embedding层将稀疏特征转化为低维稠密特征,用stacking layer,或者叫做concat layer将分段的特征向量连接起来,再通过多层神经网络完成特征的组合、转换,最终用scoring layer完成CTR的计算。跟经典DNN有所不同的是,Deep crossing采用的multilayer perceptron是由残差网络组成的,这无疑得益于MSRA著名研究员何恺明提出的著名的152层ResNet。

FNN(2016年)——用FM的隐向量完成Embedding初始化

推荐算法—ctr预估
DNN 中,网络的原始输入是全部原始特征,维度为 n,通常都是百万级以上。然而特征维度 n 虽然空间巨大,但如果归属到每个特征所属的 field(维度为 f),通常 f 维度会小很多

FNN相比Deep Crossing的创新在于使用FM的隐层向量作为user和item的Embedding,从而避免了完全从随机状态训练Embedding。由于id类特征大量采用one-hot的编码方式,导致其维度极大,向量极稀疏,所以Embedding层与输入层的连接极多,梯度下降的效率很低,这大大增加了模型的训练时间和Embedding的不稳定性,使用pre train的方法完成Embedding层的训练,无疑是降低深度学习模型复杂度和训练不稳定性的有效工程经验。

  • FM 部分的 embedding 需要预先进行训练,所以 FNN 不是一个 end-to-end 模型
  • FNN 对低阶信息的表达比较有限
  • FNN 假设每个 fileld 只有一个值为非零值,如果是稠密原始输入,则 FNN 失去意义。对于一个 fileld 有几个非零值的情况,例如用户标签可能有多个,一般可以做 average/sum/max 等处理

PNN (2016年)——丰富特征交叉的方式

推荐算法—ctr预估
FNN 的 embedding 层直接 concat 连接后输出到 MLP 中去学习高阶特征。
PNN,全称为 Product-based Neural Network,认为在 embedding 输入到 MLP 之后学习的交叉特征表达并不充分,提出了一种 product layer 的思想,既基于乘法的运算来体现体征交叉的 DNN 网络结构
Product Layer 层由两部分组成,左边 z 为 embedding 层的线性部分,右边为 embedding 层的特征交叉部分。
这种 product 思想来源于,在 CTR 预估中,认为特征之间的关系更多是一种 and“且”的关系,而非 add"加”的关系。例如,性别为男且喜欢游戏的人群,比起性别男和喜欢游戏的人群,前者的组合比后者更能体现特征交叉的意义。

Google Wide&Deep(2016年)——记忆能力和泛化能力的综合权衡

推荐算法—ctr预估
Google Wide&Deep模型的主要思路正如其名,把单输入层的Wide部分和经过多层感知机的Deep部分连接起来,一起输入最终的输出层。其中Wide部分的主要作用是让模型具有记忆性(Memorization),单层的Wide部分善于处理大量稀疏的id类特征,便于让模型直接“记住”用户的大量历史信息;Deep部分的主要作用是让模型具有“泛化性”(Generalization),利用DNN表达能力强的特点,挖掘藏在特征后面的数据模式。最终利用LR输出层将Wide部分和Deep部分组合起来,形成统一的模型。Wide&Deep对之后模型的影响在于——大量深度学习模型采用了两部分甚至多部分组合的形式,利用不同网络结构挖掘不同的信息后进行组合,充分利用和结合了不同网络结构的特点。

  • LR 部分的特征,仍然需要人工设计才能保证一个不错的效果。因为 LR 部分是直接作为最终预测的一部分,如果作为 Wide 部分的 LR 特征工程做的不够完善,将影响整个 Wide & Deep 的模型精度。
  • 模型是 end-to-end 结构,Wide 部分和 Deep 部分是联合训练的。
  • Embedding 层 Deep 部分单独占有
  • LR: 1+n
    embedding 部分:n * k
    MLP 部分:f * k * H1 + H1 * H2 + H2 * 1

华为 DeepFM (2017年)——用FM代替Wide部分

推荐算法—ctr预估
在Wide&Deep之后,诸多模型延续了双网络组合的结构,DeepFM就是其中之一。DeepFM对Wide&Deep的改进之处在于,它用FM替换掉了原来的Wide部分,加强了浅层网络部分特征组合的能力。事实上,由于FM本身就是由一阶部分和二阶部分组成的,DeepFM相当于同时组合了原Wide部分+二阶特征交叉部分+Deep部分三种结构,无疑进一步增强了模型的表达能力。

  • Wide 部分取代 WDL 的 LR,比 FNN 和 PNN 更能捕捉低阶特征信息。
  • Wide & Deep 部分的 embedding 层得需要针对 Deep 部分单独设计;而在 DeepFM 中,FM 和 Deep 部分共享 embedding 层,FM 训练得到的参数既作为 Wide 部分的输出,也作为 DNN 部分的输入
  • end-end训练
  • FM 部分:1+n
    embedding 部分:n * k
    DNN 部分:f * k * H1 + H1 * H2+H1
    通过 embedding 层后,FM 部分直接输出没有参数需要学习,进入 DNN 部分的参数维度从原始 n 维降到 f*k 维

Google Deep&Cross(2017年)——使用Cross网络代替Wide部分

推荐算法—ctr预估
Google 2017年发表的Deep&Cross Network(DCN)同样是对Wide&Deep的进一步改进,主要的思路使用Cross网络替代了原来的Wide部分。其中设计Cross网络的基本动机是为了增加特征之间的交互力度,使用多层cross layer对输入向量进行特征交叉。单层cross layer的基本操作是将cross layer的输入向量xl与原始的输入向量x0进行交叉,并加入bias向量和原始xl输入向量。DCN本质上还是对Wide&Deep Wide部分表达能力不足的问题进行改进,与DeepFM的思路非常类似。

NFM(2017年)——对Deep部分的改进

推荐算法—ctr预估
前面的 DeepFM 在 embedding 层后把 FM 部分直接 concat 起来(f*k 维,f 个 field,每个 filed 是 k 维向量)作为 DNN 的输入

Neural Factorization Machines,简称 NFM,提出了一种更加简单粗暴的方法,在 embedding 层后,做了一个叫做 BI-interaction 的操作,让各个 field 做 element-wise 后 sum 起来去做特征交叉,MLP 的输入规模直接压缩到 k 维,和特征的原始维度 n 和特征 field 维度 f 没有任何关系

Bi-interaction 听名字很高大上,其实操作很简单:就是让 f 个 field 两两 element-wise 相乘后,得到 f*(f-1)/2 个向量,然后直接 sum 起来,最后得到一个 k 维的向量。所以该层没有任何参数需要学习

  • NFM 在 embedding 做了 bi-interaction 操作来做特征的交叉处理,优点是网络参数从 n 直接压缩到 k(比 FNN 和 DeepFM 的 f*k 还少),降低了网络复杂度,能够加速网络的训练得到模型;但同时这种方法也可能带来较大的信息损失

AFM(2017年)——引入Attention机制的FM

推荐算法—ctr预估
AFM的全称是Attentional Factorization Machines,通过前面的介绍我们很清楚的知道,FM其实就是经典的Wide&Deep结构,其中Wide部分是FM的一阶部分,Deep部分是FM的二阶部分,而AFM顾名思义,就是引入Attention机制的FM,具体到模型结构上,AFM其实是对FM的二阶部分的每个交叉特征赋予了权重,这个权重控制了交叉特征对最后结果的影响,也就非常类似于NLP领域的注意力机制(Attention Mechanism)。为了训练Attention权重,AFM加入了Attention Net,利用Attention Net训练好Attention权重后,再反向作用于FM二阶交叉特征之上,使FM获得根据样本特点调整特征权重的能力。

阿里DIN(2018年)——阿里加入Attention机制的深度学习网络

推荐算法—ctr预估
AFM在FM中加入了Attention机制,2018年,阿里巴巴正式提出了融合了Attention机制的深度学习模型——Deep Interest Network。与AFM将Attention与FM结合不同的是,DIN将Attention机制作用于深度神经网络,在模型的embedding layer和concatenate layer之间加入了attention unit,使模型能够根据候选商品的不同,调整不同特征的权重。

阿里DIEN(2018年)——DIN的“进化”

推荐算法—ctr预估
DIEN的全称为Deep Interest Evolution Network,它不仅是对DIN的进一步“进化”,更重要的是DIEN通过引入序列模型 AUGRU模拟了用户兴趣进化的过程。具体来讲模型的主要特点是在Embedding layer和Concatenate layer之间加入了生成兴趣的Interest Extractor Layer和模拟兴趣演化的Interest Evolving layer。其中Interest Extractor Layer使用了DIN的结构抽取了每一个时间片内用户的兴趣,Interest Evolving layer则利用序列模型AUGRU的结构将不同时间的用户兴趣串联起来,形成兴趣进化的链条。最终再把当前时刻的“兴趣向量”输入上层的多层全连接网络,与其他特征一起进行最终的CTR预估。

参考

https://www.jianshu.com/p/d5dfe2013715
https://blog.****.net/dengxing1234/article/details/79916532