推荐系统(二)-NFM、AFM和DeepFM模型

1、背景

1.1 wide&deep

首先来介绍一下wide&deep模型,模型结构如下图


The spectrum of Wide & Deep models.

模型中,wide部分负责记忆,deep部分负责扩展(泛化性)。一些重要特征往往放在wide的浅层,一些隐性的特征可以放在deep部分借助于embedding的学习和隐性交叉来学习特征之间的交互。

1.2 FNN

和wide deep出发点一样, 一些线性模型LR很难学到非线性表达, 非线性模型比如FM, GBDT又很难学到所有的特征组合方式。那么,如何利用DNN去自动学习到特征表达,自动去学习到特征之间的交叉呢?

首先需要对category特征进行一个one-hot编码。

l1, l2层都是隐藏层,那么, dense real layer 就可以看作一个embedding层, 每个field 分别 对应一个embedding的过程。通常,使用FM去初始化这些参数往往能够更快地收敛,最大限制避免训练过程中陷入局部最小,以及得到更好的结果。可以看到,FNN其实就是widedeep模型的deep部分,但是FNN有用FM进行一个参数初始化的过程

FNN 模型

1.3 PNN模型

上一篇文章介绍了PNN模型

PNN的结构的思想相比于WideDeep模型核心改动地方在对于embedding后的dense feature,增加了两两交叉的功能,widedeep是embedding feature全部输入到隐藏层了。不同field经过Embedding后的特征做点击运算其实就相当于FM,那么PNN认为首先需要确保学习到这些交叉特征,再去额外交给DNN去学习更复杂的交叉特征。那么PNN结构其实相当于FM+DEEP。

再说下网络细节: Embedding layer 和Wide Deep模型是一样的, 不同field特征映射到了一个embedding的空间上,这时,不是所有的特征直接送到一个NN网络里面去,这里分成两个部分z 和p。 

z部分直接就是原始的embedding特征不变; 

P部分是embedding特征两两做内积运算,达到FM的效果,接下来z和p拼接成一个vector, 送到一个NN网络里面,最后softmax输出概率值。

PNN

1.4 DeepFM

DeepFM相对于wide deep模型的改进在于,wide部分替换为了FM


DeepFM

2、方案

2.1 NFM Neural Factorization Machines for Sparse Predictive Analytics∗


NFM

FM的参数是这样的,


FM

而NFM相当于在Deep部分增加了一个Bi-Interaction Layer.该B-interaction Layer 得到的是一个和embedding维数相同的向量。然后后面接几个隐藏层输出结果。

Bi-Interaction Layer

 f_{BI} 的输入是整个的嵌入向量,x_{i} , x_{j}是特征取值, v_{i} ,v_{j}特征对应的嵌入向量。(这里是和PNN中只是简单相乘然后线性变化的最大不同。)中间的操作表示对应位置相乘(element-wise product)

NFM

2.2 AFM  Attentional Factorization Machine


AFM

AFM是NFM模型的一个改进, 在传统FM模型中,使用二阶交叉特征得到非线性表达能力,但是不是所有的特征交叉都会有预测能力,很多无用的特征交叉加入后反而会相当于加入了噪声。

因此,在这个模型中,加入了Attention Net 机制,aij表示特征i,j交叉的权重。计算方式如下: 经过一个attention net的隐藏层,得到该特征交叉的权重

假设输入有n个feature,那feature之前的交叉一共有n*(n-1)/2个,传统FM计算的方式如下:

xi, xj分别表示第i个和第j个feature,vi和vj表示每个feature对应的隐向量,AFM相当于在FM的基础上为每个交叉的特征学习了一个额外的权重。其计算公式如下:


aij是feature i和feature j 交叉的额外的权重,这部分采用一个简单的MLP通过梯度下降的方式优化loss来学习到,具体计算公式如下:

其中h, W和b都是模型的权重参数,这样,特征交叉的权重参数a就可以很容易计算出来。AFM的最终计算公式如下:


前面的为线性部分,后面的为引入attention的特征交叉部分。

3、总结

FNN是使用FM作为初始化embedding,

PNN是在embedding和DNN直接多了一层product layer。

AFM比FM多了attention;

DeepFMNFM还是有所区别,浅层部分使用了FM,深度部分使用的是简单的DNN,

NFM是相当于FM接上MLP串联的结构。

4、参考文献

Jun Xiao et all. “Attentional Factorization Machines: Learning the Weight of Feature Interactions via Attention Networks,” In IJCAi, 2017.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容