一种能自动抽取特征与特征interaction重要性的CTR模型

今天的博客主要参考了2019年推荐系统顶会RecSys的paper《FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction》。该篇paper最大的创新点就是提出了一种自动提取特征重要性的结构SENET Layer和提取特征之间交互重要性的结构Bilinear-Interaction Layer。

下面先来展示一下整体模型的架构图:
一种能自动抽取特征与特征interaction重要性的CTR模型_第1张图片
其实和一般的CTR模型是非常相似的,原始特征Embedding经过SENET Layer之后变成了SENET-like Embedding,然后这两种Embedding一起经过Bilinear-Interaction Layer层后进入combine layer后(这里的combine layer其实就是向量的concat操作)。接下来如果是shallow part那么就直接接输出,如果是deep part的话再经过multiple hidden layer后再接输出。下面就来详细介绍一下模型中两个最重要的部件SENET Layer层和Bilinear-Interaction Layer层。

SENET Layer层
一种能自动抽取特征与特征interaction重要性的CTR模型_第2张图片
上图其实就是SENET Layer层,而这种结构其实最早是运用在图像领域的,这里作者把其用到了推荐领域。其中 e 1 , e 2 , . . . e f e_1,e_2,...e_f e1,e2,...ef是原始特征Embedding,而 v 1 , v 2 , . . . v f v_1,v_2,...v_f v1,v2,...vf是变换后的Embedding,从e=>f只是乘以了一个权重系数,即 F r e w e i g h t ( e i ) = v i F_{reweight}(e_i)=v_i Freweight(ei)=vi。具体 F r e w e i g h t F_{reweight} Freweight是怎么做的呢?总共分为3个步骤:
1 假设原始特征有 E = [ e 1 , . . . e f ] E=[e_1,...e_f] E=[e1,...ef]其中f为特征field的数量, e i e_i ei是维度为k的Embedding向量。接下来经过变换 z i = 1 k ∑ t = 1 k e i ( t ) z_i=\frac{1}{k}\sum_{t=1}^{k}e_i^{(t)} zi=k1t=1kei(t),得到 Z = [ z 1 , . . . z i , . . z f ] Z=[z_1,...z_i,..z_f] Z=[z1,...zi,..zf](即向量i中每一维数值的平均值),其中 z i z_i zi为标量;
2 将得到的 Z = [ z 1 , . . . z i , . . z f ] Z=[z_1,...z_i,..z_f] Z=[z1,...zi,..zf]通过2层的全连接网络,得到权重系数输出 α = [ α 1 , . . . α f ] \alpha=[\alpha_1,...\alpha_f] α=[α1,...αf] α = σ 2 ( W 2 σ 1 ( W 1 Z ) ) \alpha=\sigma_2(W_2\sigma_1(W_1Z)) α=σ2(W2σ1(W1Z)),其中 W 1 ∈ R f ∗ f r W_1\in R^{f*\frac{f}{r}} W1Rfrf W 2 ∈ R f r ∗ r W_2\in R^{\frac{f}{r}*r} W2Rrfr是随着模型训练的参数,r作为维度的压缩系数是一个模型的超参数;
3 最后 V = F r e w e i g h t ( α , E ) = [ α 1 ∗ e 1 , . . . α f ∗ e f ] V=F_{reweight}(\alpha,E)=[\alpha_1*e_1,...\alpha_f*e_f] V=Freweight(α,E)=[α1e1,...αfef]
可以看出,在上述结构中模型可以自动的学习出不同field特征的重要性,将更重要的field特征赋予更高的权重,将不重要的field特征赋予更小的权重。

Bilinear-Interaction Layer层
一种能自动抽取特征与特征interaction重要性的CTR模型_第3张图片
图中列出了3中提取特征interaction的方式,其中a就是内积(inner product),b就是对位相乘(Hadamard product),而c作为本文提出的Bilinear-Interaction其实就是在b的基础上多乘了一个参数矩阵而已, p i j = v i ∗ W ⨀ v j p_{ij}=v_i *W \bigodot v_j pij=viWvj。同时关于这个 W W W参数作者提出了3种方式:
1 W W W被所有的物品交互共享,相当于增加了 K ∗ K K*K KK的参数量;
2 W W W以商品 i i i为based,即每一个商品有一个W,即 W = W i W=W_i W=Wi,相当于增加了 f ∗ K ∗ K f*K*K fKK的参数了;
3 W W W以商品 i i i和商品 j j j的交互为based,即 W = W i j W=W_{ij} W=Wij,相当于增加了 f ( f + 1 ) 2 ∗ K ∗ K \frac{f(f+1)}{2}*K*K 2f(f+1)KK的参数量。
后续作者实验部分发现,在不同的情况下这三种方式都有可能成为最优的方式。

最终作者通过大量的对比实验证明了无论是在shallow的结构中还是deep的结构中SENET Layer + Bilinear-Interaction Layer的组合使用都能比其他神经网络based的CTR模型得到最好的效果。

你可能感兴趣的:(深度学习)