论文:
论文题目:《Multi-Interactive Attention Network for Fine-grained Feature Learning in CTR Prediction》
论文地址:https://arxiv.org/pdf/2012.06968.pdf
自上一篇文章到现在已经很久没时间好好沉淀看论文了,最近可能是事情有点多,老本行还是不能忘啊,所以来补补这个月欠下的文章吧。
一 、背景
我们之前在dien,din等文章中都能看到用户点击序列在推荐任务中的作用,一般情况下,我们任务用户在最近的几次点击表示用户的短期兴趣,比如用户在昨天点击了连衣裙,长筒裤,靴子这些物品,那就表示这个用户在今天可能会继续去浏览相关的物品,比如牛仔裤。用户的历史点击序列中潜藏着用户的多点兴趣,这也对整个用户的兴趣建模带来非常有效的帮助。
有些方法只关注用户的点击序列对于整个用户兴趣建模的影响,忽略了其他信息(用户的年龄,性别等用户画像信息),以及上下文信息(天气,季节)的影响,这就会导致下面几个问题:
1.以前的大多数方法都是从用户的历史行为中探索用户的兴趣,这可能会偏离用户的实际偏好,并会误导点击率预测,因为用户经常有与电子商务系统中任何历史行为无关的新需求。
2.在实际点击率情况下,许多用户的点击行为大多是很久以前发生的,而最近一段时间则没有活动。 因此,仅依靠用户的历史行为可能会导致过时的推荐,而这些推荐与用户的当前需求不符
3.忽略上下文信息会导致在推荐出不同季节的物品。所以候选物品跟上下文信息的交互同样十分重要。
举个例子来看:
如上图所示,比如用户在最近的点击行为很少,但是用于用户本人是个程序员,那么还是会给他推荐键盘。
其实,这篇文章也是关于用户的长短期兴趣的研究,如果说用户在近期的行为较为稀疏,那么也就是我们无法精确的捕获到用户的短期兴趣,但是我们又不能用几个月之前的点击来表征这个用户的短期兴趣偏好,因为用户在这个时候的兴趣已经转移到其他地方了。这个时候我们就需要去建模用户的长期兴趣来纠正整个兴趣的表示,也就是把画像信息,和上下文信息利用起来。
二 、模型
这里,我首先提几个我自己的看法,我们在之前的deepfm,dcn,din中已经证明了特征交叉带来的提升了,在fm中,交叉的特征是item之间,user之间以及item和user之间,而在din中,交叉的是候选item和历史点击中的所有item,这里体现的是一个共现性。在MIAN中,主要采取的就是din中这种交叉的方式。
模型的整体结构如下:
2.1 Embedding Layer
输入有四个:
候选Item,Behaviors,User-specifics,Context-info
分别经过embedding layer,
候选Item经过embedding层得到:
点击序列经过embedding层得到:
画像信息经过embeeding层得到:
上下文信息经过embedding层得到:
2.2 Multi-Interactive Layer
此前我们也说了,这四部分的信息是需要进行互相交叉的,候选item需要跟上下文信息进行交叉,也需要跟点击序列的item做交叉,所以这里我们就来讲一下这篇论文是怎么做特征交叉的。
2.2.1 Item-Behaviors Interaction Module (IBIM)
主要做候选item跟序列中的item进行交叉:
这里是用transformer进行序列建模的,跟原始transformer不一样的地方在于,这里是pre-ln,在原始transformer中ln是在multi-head-attention之后,这里是放在了之前。
有意思的地方是最后计算attention score的时候用是跟din中类似的方法。
2.2.2 Item-User Interaction Module (IUIM)
这部分主要做user跟候选item的交叉:
这里只有attention了,因为用户不同field之间的信息不需要进行self-attention:
2.2.3 Item-Context Interaction Module (ICIM)
这部分主要是候选item跟上下文信息进行交叉,为了体现候选item(短袖)跟季节(夏天)的共现性:
2.2.4 Global Interaction Module (GIM)
我们既然得到了三部分的交叉特征,也就是说,得到了三个共现的信息,这里我们还需要把原来的特征给加上,其实也就是残差的思想,为了不让交叉后的特征带来很大的偏差,还是稳妥点把原来的特征给加上,其实我这里很疑问,如果不加这三部分的交叉特征,只要原来是特征,那么模型的效果又会怎么样呢,dnn可以自己去组合这四部分的特征吧。。
直接看公式吧:
2.3 Prediction Layer
这里就不多说了,还是ctr中最经常用的point-wise方法:
三 ,实验结果
好像看起来没有这几个结构的效果反而变差了,所以这三部分的交叉是有效的。
这篇文章就介绍到这里了,没有什么特别亮眼的地方,也就是几个特征都跟候选item交叉一下,总之是一篇简单易懂的文章。