论文:
论文地址:https://dl.acm.org/doi/pdf/10.1145/3340531.3412108
论文题目:《Dimension Relation Modeling for Click-Through Rate Prediction》
前面我们介绍的文章基本上都跟业务强相关,比如一些tag-embedding相关的文章,这次介绍的这篇论文就没那么浓厚的业务色彩了,完全是基于model以及特征之间的创新,就跟我们之前提到的阿里的那篇CAN一样,我们一起来看看这篇CIKM的短论文吧。
一 、背景
在ctr预估任务中,输入的特征一般是一些高维稀疏特征,比如像user_id,item_id,对于这些离散特征,原始的做法是转换成one-hot的形式,然后通过lr得到ctr的预估结果。但是,对于维度很高的离散特征来说,one-hot就有一个致命的缺点,那就是稀疏性,因为其中只有一个dimension为1,其他的都为0。所以现在一般的做法都是用embedding技术来做,把高维离散特征映射成低维稠密特征。
这篇论文觉得,如果直接使用embedding技术来进行映射会有几个不足之处:
1.没有考虑特征的dimension之间的关系,不同field下同一个dimension对于模型整体的贡献是不一样的
2.忽略了特征直接的交互关系,这一点比较好理解,也就是我们所说的特征交叉,这个交叉的关系是体现在fields维度上的,而1中的关系是体现在dimension关系上的
你现在看这两句话可能会觉得有点难以理解,后面我们带着文中的公式来看这两句话,相信你很快就能理解了。
二、模型结构
2.1 DRM(Dimension Relation Module)
我们先看一下DRM的总体模型结构,左边的V是我们的原始特征,一共有m个field,每个field的维度为d,前面我们说到了1的不足之处是没考虑不同field中dimension的重要性,所以DRM主要是通过一个attention结构来计算出每一个dimension对于模型的重要性。
dimension重要性矩阵S的计算如下:
其中U是v的转置,两个W是映射参数矩阵,维度都是m×m,计算得到的S的维度为d×d,Sji表示第i个维度对第j个维度的影响。
计算出dimension重要性矩阵S后,我们就可以把这个分数加权到到V中了:
这里为什么不直接对V进行加权,理由是,通过一个映射矩阵,让模型能够更好的优化,其中W的维度为m×m,
按道理说,我们利用S对V加权后就结束了,但是本文认为,加权后的E不一定是比原来的V更好,所以这里采用了残差的思想,保留了原始的V:
计算出来的E的维度为m×d
2.2 FED(Field-wise Module)
FED网络结构是针对原始embedding不足之处2的设计,我们之前特征之间是有关系的,比如gender和age之间的关系建模很大程度上能反映出一个user的偏好,比如一个20岁的女生,她的兴趣点已经能够模糊的得到了。
FED主要是通过attention的方式来计算重要性的,跟DRM不同的地方在于,DRM计算的是dimension上的重要性,FED计算的是field上的重要性,你可以理解为,为每个field计算出一个重要性,下面我们来看看FED的计算方式吧。
field特征重要性H的计算方式如下:
其中E是DRM输出的结果,两个W是映射矩阵,最后计算出来的H的维度为m×m,Hji表示第i个field对第j个field的影响。
同样的,使用一个残差来保留原始的E:
其中W的维度为d×d,计算出来的F的维度为m×d。
2.3 模型是输出和损失函数
这里,我们再得到最后的y之前,有三个主要的输入:
1. 这个就是DRM的输出,维度为dm,也就是flatten之后的了,
2.这个是FED的输出,维度为dm,也就是flatten之后的了
3.这个是DNN的输出,维度为l,在我的视角里,其实这里也是残差的思想,保留了特征的原始输入,保证模型的下限
损失函数当然就是我们熟悉的交叉熵:
三、实验结果
可以看到,在没有DRM,只使用DNN的情况下,模型的效果是不如加了DRM的,在使用FED后,跟deepfm以及xDeepfm这种模型比也有这么好的auc,而且模型整体的参数量并不是很大,感觉可以在ctr预估中去尝试使用下,代码应该不难复现。