推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM

以下为个人对文章的理解记录,如有错误,欢迎指正~~
如果觉得有帮助或者写的还行,点个赞呗~~~

Zhang J, Huang T, Zhang Z. FAT-DeepFFM: Field Attentive Deep Field-aware Factorization Machine[J]. arXiv preprint arXiv:1905.06336, 2019.
原文链接:https://arxiv.org/pdf/1905.06336.pdf

熟悉推荐系统中CTR预估的人对于这方面模型的演化应该如数家珍,以FM系列的模型来说,比较著名的包括:FM、AFM、NFM、DeepFM、FFM、HOFM等,都是基于FM进行的改进。前一篇文章中介绍的FwFM基于FFM进行了改进,而今天介绍的这一篇文章将DeepFM和FFM进行了结合,同时使用了CV中的SENET网络结构,提出了Field Attentive Deep Field-aware Factorization Machine,简称FAT-DeepFFM。

一、相关工作简介
如何将attention机制应用到CTR模型中是一个推荐中的研究方向。在AFM中已经使用了attention机制来计算二阶交互特征的重要性,本文则提出在特征交互前评估特征的重要性。为了实现这一目的本文借鉴了CV中的SENet结构,并且进行了改进,提出了CENet(Compose-Excitation network), 作为SENet的强化版本。

推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第1张图片
SENet block

另一方面,模型的改进路线为FM=>FFM=> (+) DeepFM => FAT-DeepFFM。所以先了解一下以上几个模型。
FMs模型,2010年提出的FM模型是经典中的经典。研究特征交互的CTR模型基本都有这篇文章的影子。
推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第2张图片
FMs模型

FFMs模型,与FM模型相比,FFM模型引入了域(field)的概念,增加了潜在向量的个数,如果有n个features属于f个field,则FFM模型的二次项有nf个隐向量,而FM可视为FFM的特例,是将所有特征都归属于一个field时的FFM模型。在上一篇文章中已经介绍了FFM模型的参数量相对FM特别多。
推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第3张图片
FFMs模型

DeepFM模型,2017年google提出来的模型,结合了FM和DNN的。
推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第4张图片
DeepFM模型

到这里,如果不提FAT-DeepFFM模型中的FAT部分,很多人都可以自己实现DeepFFM模型,每个Field学习f-1个embedding,然后其他不变,就可以了。在文中也给出了DeepFFM的模型结构图。
推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第5张图片
DeepFFM模型

接下来,详细介绍FAT-DeepFFM模型。

二、FAT-DeepFFM模型解析
1、模型完整结构
可以和DeepFM结构进行比较,可以看到主要的 差别是多了中间的Attentive Embedding matrix layer 这一层,那么只需要了解这一层的工作原理就可以了。

推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第6张图片
FAT-DeepFFM模型结构

2、CENet Field Attention on Embedding Matrix Layer
首先了解一下SENet结构,下图中一个是原CV中的SENet结构,第二副图是FiBiNet文中使用的SENet结构。这个结构首先是用在CV中的,作者借用了过来,SENet的主要作用是“把重要的特征增强,不重要的特征减弱,从而让提取的特征指向性更强”。可以看到,输入和输出的维度没有变,但是通过Attention结构提取了特征的重要程度,然后通过相乘再和原来的维度求和的方式实现了特征强化的目的。关于SENet结构的具体解析可以看 解读Squeeze-and-Excitation Networks(SENet)。
推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第7张图片
CV中的SENet block

推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第8张图片
FiBinet文中使用的SENet结构

作者根据FFM的特点,提出了SENet的改进版本——CENet Field attention。 可能看着比较复杂,但是仔细观察可以看到,实际的结构和上图FiBiNet SENet结构相同。为什么看起来这么负责呢?因为本文针对每个Field的f-1个embedding都使用了一个SENet结构。通过这种结构获得一个获得一个新的Embedding。大家可以重新看一下这幅图,就可以理解了。所以理解了SENet之后,再理解CENet其实不复杂。
推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第9张图片
CENet Field Attention

3、一些细节。
在特征交互时,作者提出了Inner product和Hadamard product两种方式。当然,这两种方式也是CTR模型中常用的两种方式。而且将向量的Hadamard积求和就是内积。通过这两种交互输入DNN的部分。
推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第10张图片
内积和哈德玛积

到此,介绍完了FAT-DeepFFM,虽然模型的名字越来越长了,但是只要理解了模型的每一部分,那么模型就不再复杂。

三、实验分析
本文选择在Criteo和Auazu数据集上进行实验。具体的对比细节可以看原文。


推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第11张图片
数据统计

1、FAT-DeepFFM和其他SOTAs模型对比


推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第12张图片
和SOTAs模型对比

效果有所改进,不过改进的幅度在0.001 level上。

2、哪个层面上的Attention对模型的影响大。
问题中的Attention层次是指将Attention用在什么地方,一共有两个地方可以使用:(1)Embeding后,(2)特征交互之后。


推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM_第13张图片

3、特征交互的方式对模型效果的影响。
主要探究是Inner product 和 Hadamard product两种方式对结果的影响。

四、小结
这是看到的第二篇将SENet结构运用在CTR模型中的文中,第一篇是FiBiNet模型,有兴趣的同学可以去搜索一下,之后也会写一篇介绍。在FiBiNet中,是生成了另外一组Embedding,然后接一个双塔结构。不得不说,将其他领域的结构放在推荐中还是有机会的,所以大家在学习的时候不要拘泥于一个领域,多看看其他领域如CV、NLP等,也会得到启发也说不定。
回到文章本身,就我个人对文章的理解来说,创新不算很大。而且FFM-based 模型的参数都很大,基本无法实现落地。不过对于特征强化这一点确实可以给人启发,如果这种结构适合其他所有的Embedding,那么是不是可以提高其他任务的效果呢。当然,不限于SENet这种结构,也可以是其他结构,等待大家的研究。

你可能感兴趣的:(推荐系统与深度学习(4):[SINA 2019] 做个加法吧:FFM+DeepFM+SENET=FAT-DeepFFM)