深度学习在CTR预估中的应用

在广告领域,预测用户点击率(Click Through Rate,简称CTR)领域近年也有大量关于深度学习方面的研究,仅这两年就出现了不少于二十多种方法

本文就近几年CTR预估领域中学术界的经典方法进行探究, 并比较各自之间模型设计的初衷和各自优缺点。

通过十种不同CTR深度模型的比较,不同的模型本质上都可以由基础的底层组件组成。

本文中出现的变量定义:

    • n: 特征个数,所有特征one-hot后 连接起来的整体规模大小
    • f: 特征field个数,表示特征类别有多少个
    • k: embedding层维度,在FM中是隐向量维度
    • H1: 深度网络中第一个隐层节点个数,第二层H2,以此类推。

二、深度学习模型

1. Factorization-machine(FM)

FM模型可以看成是线性部分的LR,还有非线性的特征组合xixj交叉而成,表示如下:

深度学习在CTR预估中的应用

其中vi是第i维特征的隐向量,长度k<<n,包含k个描述特征的因子。参数个数为k*n。所有包含xi的非零组合特征都可以用来训练vi,缓解数据稀疏问题。

图1是从神经网络的角度表示FM, 可以看成底层为特征维度为n的离散输入,经过embedding层后,对embedding层线性部分(LR)和非线性部分(特征交叉部分)累加后输出。

深度学习在CTR预估中的应用

图1 FM模型结构

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

(1)LR部分: 1+n

(2)embedding 部分: n*k

FM下文中将作为各种网络模型的基础组件

 

2. Deep Neural Network(DNN)

图2是经典的DNN网络, 结构上看就是传统的多层感知机(MultiLayer Perceptron,简称MLP)。

在MLP网络中,输入是原始的特征n维特征空间,假设第一层隐层节点数为H1,第二层为H2,以此类推。在第一层网络中,需要学习的参数就是n*H1。

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

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

 

深度学习在CTR预估中的应用

图2 DNN模型结构

DNN待学习参数: n*H1+H1*H2+H2*H3+H3*o(o为输出层大小,在ctr预估中为1)

DNN(后文称MLP)也将作为下文各种模型的基础组件之一。

 

3. Factorization-machine supported Neural Networks (FNN)

在上述的DNN中,网络的原始输入是全部原始特征,维度为n,通常都是百万级以上。

然而特征维度n虽然空间巨大,但如果归属到每个特征所属的field(维度为f),通常f维度会小很多。

如果有办法将每个特征用其所属的field来表示,原始输入将大大减少不少。Factorisation-machine supported Neural Networks,简称FNN就是基于这种思想提出来的。

深度学习在CTR预估中的应用

图3 FNN模型结构

FNN假设每个field有且只有一个值为1,其他均为0。x为原始输入的特征,它是大规模离散稀疏的。

它可以分成n个field,每一个field中,只有一个值为1,其余都为0(即one hot)。 field i的输入可以表示成 x[start_i: end_i], Wi为field i的embedding矩阵。

z为embedding后的向量,是一个k维的向量,它由一次项wi ,二次项vi=(vi1,vi2,…vik) 组成,其中k是FM中二次项的向量的维度。

而后面的l1,l2则为神经网络的全连接层的表示。

除此之外,FNN还具有以下几个特点:

  • FM参数需要预训练

FM部分的embedding需要预先进行训练,所以FNN不是一个end-to-end模型。

在其他论文中,有试过不用FM初始化embedding, 而用随机初始化的方法,要么收敛速度很慢,要么无法收敛。

  • 无法拟合低阶特征

FM得到的embedding向量直接concat连接之后作为MLP的输入去学习高阶特征表达,最终的DNN输出作为ctr预估值。因此,FNN对低阶信息的表达比较有限。

  • 每个field只有一个非零值的强假设

FNN假设每个fileld只有一个值为非零值,如果是稠密原始输入,则FNN失去意义。

对于一个fileld有几个非零值的情况,例如用户标签可能有多个,一般可以做average/sum/max等处理。

本质上讲,FNN = LR+DEEP = LR + embedding + MLP,参数如下

(1)LR部分: 1+n

(2)embedding部分: n*k

(3)MLP部分: f*k*H1+H1*H2+H2

可以看到,对比DNN,在进入MLP部分之前,网络的输入由n降到了f*k(f为field个数,几十到几百之间,k为隐向量维度,一般0~100)

 

4. Product-based Neural Network(PNN)

FNN的embedding层直接concat连接后输出到MLP中去学习高阶特征。

PNN,全称为Product-based Neural Network,认为在embedding输入到MLP之后学习的交叉特征表达并不充分,提出了一种product layer的思想,

既基于乘法的运算来体现体征交叉的DNN网络结构,如图4所示。

 

深度学习在CTR预估中的应用

图4 PNN模型结构

对比FNN网络,PNN的区别在于中间多了一层Product Layer层。Product Layer层由两部分组成,左边z为embedding层的线性部分,右边为embedding层的特征交叉部分。

除了Product layer不同,PNN和FNN的MLP结构是一样的。这种product思想来源于,在ctr预估中,认为特征之间的关系更多是一种and“且”的关系,而非add"加”的关系。

例如,性别为男且喜欢游戏的人群,比起性别男和喜欢游戏的人群,前者的组合比后者更能体现特征交叉的意义。

根据product的方式不同,可以分为inner product(IPNN)和outer product(OPNN),如图5所示。

 

深度学习在CTR预估中的应用

图5 PNN (左图:IPNN; 右图:OPNN)

Product layer的输出为

深度学习在CTR预估中的应用

  • Inner Product-based Neural Network

IPNN的叉项使用了内积g(fi, fj) = <fi, fj>。f个filed,两两求内积共计交叉项p部分的参数共f*(f-1)/2(f为特征的field个数,原始论文里用的N)个,线性部分z部分参数共f*k个。

需要学习的参数为:

(1)FM部分: 1+ n + n*k

(2)product部分: (f*k + f*(f-1)/2)*H1

(3)MLP部分:H1*H2+H2*1

  • Outer Product-based Neural Network

OPNN用矩阵乘法来表示特征的交叉, g(fi, fj)=fifit。f个field两两求矩阵乘法,交叉项p共f*(f-1)/2*k*k个参数。线性部分z部分参数共f*k个。需要学习的参数为:

(1)FM部分: 1+ n + n*k

(2)product部分: (f*k + f*(f-1)/2*k*k)*H1

(3)MLP部分:H1*H2+H2*1

 

 

5. Wide & Deep Learning (Wide&Deep)

前面介绍的两种变体DNN结构FNN和PNN,都在embedding层对输入做处理后输入MLP,让神经网络充分学习特征的高阶表达,deep部分是有了,

对高阶的特征学习表达较强,但wide部分的表达是缺失的, 模型对于低阶特征的表达却比较有限。google在2016年提出了大名鼎鼎的wide&Deep的结构正是解决了这样的问题。

Wide&deep结合了wide模型的优点和deep模型的优点,网络结构如图6所示,wide部分是LR模型,Deep部分是DNN模型。

 

深度学习在CTR预估中的应用

图6 Wide&Deep 模型结构

在这个经典的wide&deep模型中,google提出了两个概念,generalization(泛化性)和memory(记忆性)

  • Memory(记忆性)

wide部分长处在于学习样本中的高频部分,优点是模型的记忆性好,对于样本中出现过的高频低阶特征能够用少量参数学习;

缺点是模型的泛化能力差,例如对于没有见过的ID类特征,模型学习能力较差。

  • Generalization(泛化性)

deep部分长处在于学习样本中的长尾部分,优点是泛化能力强,对于少量出现过的样本甚至没有出现过的样本都能做出预测(非零的embedding向量);

缺点是模型对于低阶特征的学习需要用较多参才能等同wide部分效果,而且泛化能力强某种程度上也可能导致过拟合出现bad case.

除此之外,wide&deep模型还有如下特点

  • 人工特征工程

LR部分的特征,仍然需要人工设计才能保证一个不错的效果。因为LR部分是直接作为最终预测的一部分,

如果作为wide部分的LR特征工程做的不够完善,将影响整个wide&deep的模型精度

  • 联合训练

模型是end-to-end结构,wide部分和deep部分是联合训练的

  • embedding层deep部分单独占有

LR部分直接作为最后输出,因此embedding层是deep部分独有的。

wide&deep 等价于LR + embedding + MLP,需要学习的网络参数有:

    1. LR: 1+n
    2. embedding部分:n*k
    3. MLP部分: f*k*H1 + H1*H2 + H2*1

 

6. Factorization-Machine based Neural Network (deepFM)

google提出的wide&deep框架固然强大,但由于wide部分是个LR模型,仍然需要人工特征工程。

但wide&deep给整个学术界和工业界提供了一种框架思想。基于这种思想,华为诺亚方舟团队结合FM相比LR的特征交叉的功能,

将wide&deep部分的LR部分替换成FM来避免人工特征工程,于是有了deepFM,网络结构如图7所示。

深度学习在CTR预估中的应用

图7 DeepFM模型结构

比起wide&deep的LR部分,deeFM采用FM作为wide部分的输出,FM部分如图8所示。

 

深度学习在CTR预估中的应用

深度学习在CTR预估中的应用

图8 deepFM模型中的FM部分结构

除此之外,deepFM还有如下特点:

  • 低阶特征表达

wide部分取代WDL的LR,比FNN和PNN相比能捕捉低阶特征信息

  • embedding层共享

wide&deep部分的embedding层得需要针对deep部分单独设计;

而在deepFM中,FM和DEEP部分共享embedding层,FM训练得到的参数既作为wide部分的输出,也作为DNN部分的输入。

  • end-end训练

embedding和网络权重联合训练,无需预训练和单独训练

deepFM等价于FM + embedding + DNN

(1)FM部分: 1+n

(2)embedding部分:n*k

(3)DNN部分: f*k*H1 + H1*H2+H1

通过embedding层后,FM部分直接输出没有参数需要学习,进入DNN部分的参数维度从原始n维降到f*k维。

 

 

 

https://zhuanlan.zhihu.com/p/35484389

上一篇:深度时空网络、记忆网络与特征表达学习在 CTR 预估中的应用


下一篇:从最近的比赛学习CTR/CVR