[深度模型] 新浪微博点击预测模型FiBiNet
俊俊 推荐算法工程师一枚本人微信公众号为“推荐算法学习笔记”,定期推出经典推荐算法文章,欢迎关注。
一. 概述
本文主要介绍的paper名称为《FiBiNet: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction》
在做点击预测的时候,有一些特征是比另一些特征重要的。例如我们要预测一个人的收入,很显然他的职业比他的兴趣爱好更加重要。同时,在FM和FFM等模型当中,我们主要通过点积或Hadamard product的方法来计算特征之间的交互,是不是可以用更好的方式构造特征之间的交互?
因此,新浪微博提出了FiBiNet,通过Squeeze-and-Excitation Network(SENET)和Bilinear-Interaction的方式,来解决上述的问题。
二. 需了解的基础
需要对FM,FFM和DeepFM算法有一定的了解。如果没有,建议先阅读相关paper或资料。
三. 模型架构
整体模型架构如下所示
它主要有这几个部分组成的:sparse input layer,embedding layer,SENET layer,Bilinear-Interaction layer,combination layer,multiple hidden layers和 output layer。
下面分别对这几个layer进行具体的描述。
四. Sparse input and Embedding Layer
Sparse input and Embedding layer在深度预测模型如DeepFM,AFM中被广泛使用。原始的高维稀疏输入特征在这里被转换成低维的embedding:E = [e1, e2, e3, ... ef]。其中f表示field(feature)的个数,ei表示第i个field的embedding,每个field的维度都是一样的,用k来表示。
五. SENET Layer
这一层主要借鉴CV的SENET来学习每个特征的重要性。通过一系列的转换然后再和field对应的embedding结合起来,如下图所示
它包含三步:Squeeze,Excitation和Re-weight
(1) Squeeze
这一步主要是将每个embedding的维度做average pooling,将E = [e1, e2, e3, ... ef]转换成Z = [z1, z2, z3, ... zf],其中zi是一个scalar,i 是第i个特征。zi的计算公式如下所示
(2) Excitation
这一层主要通过两层fully connected layers来学习每个field的权重。第一层fully connected layer首先将Z = [z1, z2, z3, ... zf]的维度降低,然后第二层fully connected layer再将Z = [z1, z2, z3, ... zf]的维度还原。公式如下所示
其中W1是f*r维的矩阵,W2是r*f维的矩阵, r小于f。
(3) Re-weight
将原始的Embedings和(2)中得到的权重进行相乘,就得到了动态学习到特征重要性的Embeddings。如下所示
六. Bilinear-Interaction layer
在FM和DeepFM等模型中,常常采用点积或者Hadamard product的方式来计算特征交互。而paper作者认为这种方式过于简单,不足以表达特征之间的特征交互。因此提出了Bilinear-Interaction的方式,如下图所示
如上图的右侧所示,vi首先会乘以一个W矩阵,然后再和vj做Hadamard product。根据W矩阵的不同,有3种Bilinear-Interaction的方式
(1)Field-All Type:所有的fields共用一个W矩阵
(2)Field-Each Type:每个field对应一个W矩阵
(3)Field-Interaction Type:每个特征交叉对应一个W矩阵
最终,我们将SENET Layer的Embedding经过Bilinear-Interaction转换得到p = [p1, p2, .. pn]。将初始的Embedding经过Bilinear-Interaction转换得到q = [q1, q2, .. qn]。
七. Combination Layer和Multiple Hidden Layers
最终,我们将p = [p1, p2, .. pn]和q = [q1, q2, .. qn]放在一起concat起来,经过多层fully connected layes后,使用sigmoid函数得出预测的结果yd。
八. Output Layer
将上述的yd加上线性模型,就得出我们最终的预测值,公式如下所示
损失函数为
九. 总结
以上便是FiBiNet的介绍,如果有问题,欢迎和我联系。
本人微信公众号为“推荐算法学习笔记”,定期推出经典推荐算法文章,欢迎关注。
编辑于 07-03