CTR 预估(下)

FNN

CTR 预估(下)_第1张图片

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

field i 的输入可以表示成 x[start_i: end_i],Wi 为field i 的 embedding 矩阵。z为 embedding 后的向量,是一个 k 维的向量,它由一次项 wi ,二次项 vi=(vi1,vi2,…vik) 组成,其中 k 是 FM 中二次项的向量的维度。而后面的 l1,l2 则为神经网络的全连接层的表示。

FM 参数需要预训练

FM 部分的 embedding 需要预先进行训练,所以 FNN 不是一个 end-to-end 模型。在其他论文中,有试过不用 FM 初始化 embedding,而用随机初始化的方法,要么收敛速度很慢,要么无法收敛。有兴趣的同学可以实验验证下。

无法拟合低阶特征

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

PNN

CTR 预估(下)_第2张图片

Product-based Neural Network,认为在 embedding 输入到 MLP 之后学习的交叉特征表达并不充分,提出了一种 product layer 的思想,既基于乘法的运算来体现体征交叉的 DNN 网络结构

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

这种 product 思想来源于,在 CTR 预估中,认为特征之间的关系更多是一种 and“且”的关系,而非 add"加”的关系。例如,性别为男且喜欢游戏的人群,比起性别男和喜欢游戏的人群,前者的组合比后者更能体现特征交叉的意义。

PNN按product层的功能分为inner product layer和outer product layer,区别如下:

CTR 预估(下)_第3张图片

和FM类似,构造好网络之后,对输入数据做embedding处理之后得到低维的连续向量表示,经过任意两个feature的进行inner product or outer product(1也为feature的一部分,所以可以建模线性关系)

NFM

CTR 预估(下)_第4张图片

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 维的向量。所以该层没有任何参数需要学习。

图中只画了DNN的部分,NFM 等价于 FM + embedding + MLP

AFM

前面提到的各种网络结构中的 FM 在做特征交叉时,让不同特征的向量直接做交叉,基于的假设是各个特征交叉对 CTR 结果预估的贡献度是一样的。这种假设其实是不合理的,不同特征在做交叉时,对 CTR 预估结果的贡献度是不一样的。

Attention Neural Factorization Machines,简称 AFM 模型,利用了近年来在图像、NLP、语音等领域大获成功的 attention 机制,在前面讲到的 NFM 基础上,引入了 attention 机制来解决这个问题。

AFM 的网络结构如图所示。和 NFM 一样,这里也省略了 Wide 部分,只画出了 Deep 部分结构

CTR 预估(下)_第5张图片

不过AFM的注意力机制不是通过学习得到而是通过如下方式计算

CTR 预估(下)_第6张图片

DIN

受 attention 机制启发,DIN 在 embedding 层后做了一个 action unit 的操作,对用户的兴趣分布进行学习后再输入到 DNN 中去,网络结构如图所示:

CTR 预估(下)_第7张图片

DIN 把用户特征、用户历史行为特征进行 embedding 操作,视为对用户兴趣的表示,之后通过 attention network,对每个兴趣表示赋予不同的权值。

Vu:表示用户最终向量
Vi:表示用户兴趣向量(shop_id, good_id..)
Va:表示广告表示向量
Wi: 对于候选广告,attention 机制中该兴趣的权重

总结

CTR 预估(下)_第8张图片

你可能感兴趣的:(CTR 预估(下))