一种深度挖掘特征之间交互的神经网络模型

今天的博客主要参考了2019年KDD会议上的paper《Pairwise Multi-Layer Nets for Learning Distributed Representation of Multi-field Categorical Data》。这篇paper主要针对输入源数据为多个领域的类别特征(且每个领域的特征都有多种取值),设计了一种巧妙的提取特征之间交互信息的结构,并在正式训练任务之前提出了一种预训练模型的方式。这篇paper提出的模型属于结构并不复杂,但是思想确很巧妙的类型,还是很值得学习的。

首先,整个模型的架构图如下所示:
在这里插入图片描述
可以看到和一般的神经网络不一样,该网络以特征之间pairwise的方式进行输入特征Embedding之间全部的两两交叉组合,文中作者给出了3种交叉方式:1 f s u m ( c i , c j ) = c i + c j f^{sum}(c_i,c_j)=c_i+c_j fsum(ci,cj)=ci+cj;2 f m u l ( c i , c j ) = c i ⨀ c j f^{mul}(c_i,c_j)=c_i \bigodot c_j fmul(ci,cj)=cicj; 3 f h i g h w a y ( c i , c j ) = τ ⨀ g ( W H ( c i + c j ) + b H ) + ( 1 − τ ) ⨀ ( c i + c j ) f^{highway}(c_i,c_j)=\tau \bigodot g(W_H(c_i+c_j)+b_H)+(1-\tau) \bigodot (c_i+c_j) fhighway(ci,cj)=τg(WH(ci+cj)+bH)+(1τ)(ci+cj) τ = σ ( W τ ( c i + c j ) + b τ ) \tau=\sigma (W_\tau (c_i+c_j)+b_\tau) τ=σ(Wτ(ci+cj)+bτ)。假设输入特征的field个数为n,那么交叉之后的交叉field Embedding个数则为 n ∗ ( n − 1 ) 2 \frac{n*(n-1)}{2} 2n(n1),接下来就是k-max pooling操作,从这些交叉field Embedding中选出模最大的k个,然后输入到下一层。从图中可以看出,每一层都经历了相同的操作,最后接到了输出层,这样多层的变换,使模型可以提取到更高阶的交互信息。由于是pairwise的方式进行训练,其中共现性的思想和Aprior思想又不谋而合,到这里其实整个模型的操作流程已经讲完了。

下面要重点讲一下作者巧妙设计的无监督预训练策略,如下图所示:
在这里插入图片描述
模型的训练目标是预测当前样本是真样本还是随机生成的样本,那么如何随机生成Fake sample呢?其实很简单,就是随机的去把某一个或某几个field的值替换成其他值,比方说有一个真样本 ( a 1 , b 2 , c 3 , d 4 ) (a_1,b_2,c_3,d_4) (a1,b2,c3,d4),如果把第一维 a 1 a_1 a1和第二维 b 2 b_2 b2随机替换掉,就变成了 ( a 3 , b 1 , c 3 , d 4 ) (a_3,b_1,c_3,d_4) (a3,b1,c3,d4),那么这个被随机替换了的就是负样本。这样先采用生成一些负样本,和原来数据中的正样本进行输入field Embedding的预训练过程,然后再把预训练后的模型参数针对目标下游任务进行fine-tuning。

作者在多个推荐数据集上进行了验证,和直接把输入field Embedding 向量拼接以及对输入field 向量sum-pooling操作进行比较,证明了这种结构的有效性。同时作者发现多层次的变换,更有利于模型提取到特征之间的高阶交叉信息,对最终效果的提升帮助是很大的。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值