ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Paper Note】FiBiNet论文详解

2021-06-26 16:30:11  阅读:265  来源: 互联网

标签:Bilinear layer Interaction tag FiBiNet Note cdots Paper embedding


概述

ctr预估任务中,对输入特征进行建模,通过权重weight拟合特征和样本的关系,但实际任务中,特征之间的重要度也是不同的,
某些特征天然地与label具有较强关联性,因此,在模型中增加对特征本身重要度的描述,有利于模型更好的描述样本。
FiBiNet通过SENet的方式来解决上述问题;同时,从FM到FFM、DeepFM等模型,交叉特征的重要程度不言而喻,通常通过点积或hadamard积的方式获取特征交互,
这样获取特征交互的方式是否有效或者说是否最佳?这篇论文通过Bilinear-Interaction提出了交互特征提取的新方式。

整体架构

如下图所示:
在这里插入图片描述

除常规的embedding layer、hidden layer,本文将详细介绍SENet layer和Bilinear-Interaction layer。

embedding layer

输入数据为高维稀疏特征,经过embedding生成低维embedding E = [ e 1 , e 2 , ⋯   , e f ] E=[e_1, e_2, \cdots , e_f] E=[e1​,e2​,⋯,ef​],其中f为field的个数

SENet layer

SE block最早出现在cv相关的论文中,来学习每个特征的重要性,之前的一篇博客********中有介绍,如下图所示:

Squeeze
将每个embedding做average pooling,计算公式如下:
z i = F s q ( e i ) = 1 k ∑ t = 1 k e i ( t ) (1) z_i = F_{sq}(e_i) = \frac{1}{k} \sum_{t=1}^k{e_i^{(t)}} \tag{1} zi​=Fsq​(ei​)=k1​t=1∑k​ei(t)​(1)

Excitation
通过两层fully connected layers来学习每个field的权重,表示如下:
A = F e x ( Z ) = σ 2 ( W 2 σ 1 ( W 1 Z ) ) (2) A = F_{ex}(Z)= \sigma_2(W_2 \sigma_1(W_1 Z)) \tag{2} A=Fex​(Z)=σ2​(W2​σ1​(W1​Z))(2)
其中, W 1 W_1 W1​ 是 f × r f \times r f×r 维权重矩阵, W 2 W_2 W2​ 是 r × f r \times f r×f 维权重矩阵,其中 r < f r<f r<f 。

Reweight
基于field粒度的乘积运算动态学习每个特征的重要度,实现如下:
V = F R e W e i g h t ( A , E ) = [ a 1 ⋅ e 1 , ⋯   , a f ⋅ e f ] = [ v 1 , ⋯   , v f ] (3) V = F_{ReWeight}(A, E) = [a_1 \cdot e_1, \cdots , a_f \cdot e_f] = [v_1, \cdots, v_f] \tag{3} V=FReWeight​(A,E)=[a1​⋅e1​,⋯,af​⋅ef​]=[v1​,⋯,vf​](3)

Bilinear-Interaction layer

不同于FM或DeepFM模型中使用点积或hadamard积来获取交互特征,本文提出了Bilinear-Interaction方式,具体情况入下图c中所示, v i v_i vi​ 首先会乘一个权重矩阵 W W W 之后再和 v j v_j vj​ 计算hadamard积。
在这里插入图片描述
根据权重矩阵 W W W 的不同分配方式,会有三种情况:
Field-All Type
所有的field共用一个权重矩阵 W W W,具体如下:
p i j = v i ⋅ W ⊙ v j (4) p_{ij} = v_i \cdot W \odot v_j \tag{4} pij​=vi​⋅W⊙vj​(4)
上述方式,参数量为 m m m , m m m 为权重矩阵的参数量,下同。
Field-Each Type
每个field对应一个权重矩阵 W W W,具体如下:
p i j = v i ⋅ W i ⊙ v j (5) p_{ij} = v_i \cdot W_i \odot v_j \tag{5} pij​=vi​⋅Wi​⊙vj​(5)
上述方式,参数量为 f × m f \times m f×m, f f f 为field个数,下同。
Field-Interaction Type
每个交叉特征对应一个权重矩阵 W W W,具体如下:
p i j = v i ⋅ W i j ⊙ v j (6) p_{ij} = v_i \cdot W_{ij} \odot v_j \tag{6} pij​=vi​⋅Wij​⊙vj​(6)
上述方式,参数量为 f ( f − 1 ) 2 × m \frac{f(f-1)}{2} \times m 2f(f−1)​×m。

经过SENet和Bilinear-Interaction之后,原本的embedding计算得到向量 q = [ q 1 , ⋯ q i ⋯ q n ] q = [q_1, \cdots q_i \cdots q_n] q=[q1​,⋯qi​⋯qn​]。

Other layer

后面是一些常规操作,首先将embedding经过Bilinear-Interaction得到的 p p p 和embedding经过SENet再经过Bilinear-Interaction得到的 q q q 进行concat:
c = F c o n c a t ( p , q ) = [ p 1 , ⋯ p n , q 1 , ⋯   , q n ] = [ c 1 , ⋯   , c 2 n ] (7) c = F_{concat}(p,q) = [p_1, \cdots p_n, q_1, \cdots, q_n] = [c_1, \cdots, c_{2n}] \tag{7} c=Fconcat​(p,q)=[p1​,⋯pn​,q1​,⋯,qn​]=[c1​,⋯,c2n​](7)
之后经过多层hidden layer:
a ( l ) = σ ( W ( l ) a ( l − 1 ) + b ( l ) ) (8) a^{(l)} = \sigma(W^{(l)} a^{(l-1)} + b^{(l)}) \tag{8} a(l)=σ(W(l)a(l−1)+b(l))(8)
hidden layer输出的结果经过sigmoid输出:
y ^ = σ ( w 0 + ∑ i = 0 m w i x i + y d ) (9) \hat{y} = \sigma(w_0 + \sum_{i=0}^m{w_i x_i} + y_d) \tag{9} y^​=σ(w0​+i=0∑m​wi​xi​+yd​)(9)
损失函数定义为:
l o s s = − 1 N ∑ i = 1 N ( y i l o g ( y ^ i ) + ( 1 − y i ) ∗ l o g ( 1 − y ^ i ) ) (10) loss = -\frac{1}{N} \sum_{i=1}^N(y_i log(\hat{y}_i) + (1-y_i) * log(1-\hat{y}_i)) \tag{10} loss=−N1​i=1∑N​(yi​log(y^​i​)+(1−yi​)∗log(1−y^​i​))(10)

标签:Bilinear,layer,Interaction,tag,FiBiNet,Note,cdots,Paper,embedding
来源: https://blog.csdn.net/roguesir/article/details/118250083

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有