推荐系统-DeepFM模型

2019-07-27  本文已影响0人  菜鸡不得行

1. 介绍

特征组合的问题

对于基于CTR预估的推荐系统,最重要的是学习用户点击行为背后的隐含特征或特征组合。在不同的推荐任务中,低阶组合特征或者高阶组合特征都可能会对最终的CTR产生影响。

FM模型通过对每一维特征的隐向量内积来提取特征组合,也能得到比较好的结果。FM理论上来说,虽然可以对高维特征组合进行建模,但因为计算复杂度的原因,一般只用到二阶特征组合。

对于高维特征来说,可以通过神经网络去解决。

神经网络的问题

下面图片来自张俊林教授的PPT

通常情况下,对于离散特征的处理,一般将其转化成one-hot的形式,但是one-hot类型的特征输入到神经网络中,会导致网络参数太多。


为了解决这个问题,可以使用类似于FFM模型的思想,将特征分成不同field:


再加上两层全连接层,让Dense Vector进行组合,就可以得到高阶的特征组合。


在这种情况下,特征组合隐含的体现在隐藏层,如果想要把低阶特征组合进行单独建模,然后和高阶特征组合进行融合,可以通过神经网络和FM模型组合来实现。



5.png

再将神经网络和FM模型进行组合时,一般有两种方式,一种是并行结构,一种是串形结构。



7.png

DeepFM模型就是一种并行结构。

2. DeepFM模型

首先看一下DeepFM模型的结构。


DeepFM包含两部分:神经网络和分解机。分别负责低阶特征的提取和高阶特征的提取。这两部分共享同样的输入。DeepFM模型的预测结果可以写成
\huge{\hat{y}=sigmoid(y_{FM} + y_{DNN})}

FM部分

FM部分结构:


FM部分是一个分解机,因为加入了隐含变量,所以对于不出现或者极少出现的隐含变量也可以很好的学习。

FM的输出公式:
\huge{y_{FM}=<w,x>+\sum_{j_1=1}^d}\sum_{j_2=j_1+1}^d<V_i,V_j>x_{j_1}\cdot x_{j_2}

神经网络部分

结构:


神经网络部分是一个前馈网络,与图像这类输入不同,图像的输入一般是连续而且稠密的,然而这里用于推荐任务的输入一般是特别稀疏的。因此在该神经网络中,在第一层隐藏层之前,引入一个嵌入层(Embedding),把输入向量压缩到低维稠密向量。

嵌入层的结构如图:


从上图可以看出,

  1. 虽然输入的field长度不同,但经过嵌入层embedding之后,得到的向量长度都是 K。
  2. 而且从FM部分里得到的隐含变量\large{v_{i_k}} 被当成嵌入层的权重,这样FM部分就可以当成整个模型的一部分与其他深度学习模型一起参与整体的学习,实现端到端的训练。

关于第二点,举个例子,如上图所示,假设k=5 ,首先对于一条输入,同一个field中只有一个位置是1,所以从输入得到Dense vector的过程中,输入层只有一个神经元在起作用,得到的Dense vector其实就是输入层该神经元连接嵌入层的五个权重,即\large{v_{i_1},v_{i_2},v_{i_3},v_{i_4},v_{i_5}}.这五个值组合起来就是FM部分提到的V_i。所以在FM部分和神经网络部分,在这一块是共享权重的,对同一个特征来说,得到的V_i是相同的。

嵌入层

嵌入层的表示如下:
\huge{a^{(0)}=[e_1,e_2,...,e_m]}
其中,\large{e_i} 是第i 个field的embedding,m 是field的个数,a^{(0)} 是输入神经网络的向量,通过以下方式前向传播:
\huge{a^{l+1}=\sigma(W^{(l)}a^{(l)}+b^{(l)})}
FM部分与神经网络部分共享相同的embedding有两个好处

参考资料

https://www.zybuluo.com/JeemyJohn/note/1197954

上一篇下一篇

猜你喜欢

热点阅读