DeepFM论文阅读笔记

概括

DeepFM模型是华为诺亚实验室于2017年发布的推荐系统模型(论文链接)。这篇文章是基于Google的Wide & Deep模型的改进和提升,被广泛的应用在工程推荐系统上。

DeepFM是基于Wide & Deep模型思想的,因此模型的结构也是同样用一个浅层模型来提取记忆,即出现过的特征组合,一个深层模型负责泛化,即搜索新的特征组合。DeepFM对于Wide & Deep的改进主要有:

  1. Wide模型由LR修改成了FM(Factor Machine),FM可以起到自动学习交叉特征的作用,避免了外积交叉特征工程部分。
  2. 共享原始输入特征,原始的特征即用在Wide模型,又用在Deep模型上,也是为了简化特征工程。

DeepFM和其他推荐系统模型比较:

在这里插入图片描述

模型结构

DeepFM分为FM和DNN两部分,就像前面讨论的,这两部分共享相同的输入权重 。对于一个简单一阶特征 i i i, 用一个标量 ω i \omega_{i} ωi来描述特征权重,同时引入一个隐向量 V i V_{i} Vi 来描述这个特征和其他特征之间的交互性影响,并构造FM模型以期待模型自动学习出这个特征的隐向量表达 V i V_{i} Vi.

模型的训练过程类似Wide & Deep, Wide模型和Deep模型联合训练,联合训练的模型的表达式:

y ^ = s i g m o i d ( y F M + y D N N ) \hat{y} = sigmoid(y_{FM} + y_{DNN}) y^=sigmoid(yFM+yDNN)

  • FM模型

    FM模型的结构如图所示。相比于Wide & Deep的特征外积只能在连两个特征同时显性出现,FM这种隐向量表达的方法更适用于挖掘更深层次的特征耦合。

在这里插入图片描述

FM部分的输出表达式写作:

y F M = < ω , x > + ∑ j 1 = 1 d ∑ j 2 = j 1 + 1 d < V i , V j > x j 1 ⋅ x j 2 y_{FM} = <\omega, x> + \sum_{j_1=1}^{d}\sum_{j_2=j_1+1}^{d}<V_{i}, V_{j}>x_{j_1} \cdot x_{j_2} yFM=<ω,x>+j1=1dj2=j1+1d<Vi,Vj>xj1xj2

FM模型里面的一些参数还是要着重理解一下的,原文中对FM层的Embedding结构也做了详细的说明,这里我的理解公式在记号上可能有一些小小的偏差,公式里面的 i , j i, j i,j代表的是不同的field,而公式最后的feature value的下标,应该对应的是field i i i 和 field j j j.

在这里插入图片描述

上图是原文里面对Embedding层的解释,这里我再补充一张图。共有 m m m个field, 每个field对应一个one-hot向量,每个field的输入长度可以不同, 成为一个sparse feature. Embedding层的每个圆点代表一个神经元,神经元本身是没有数值的,sparse feature到Embedding神经元的连线权重,就是所谓的Embedding Vector V V V. 图上所示一共有 m m m个field,每个field对应着 k k k个嵌入维度, m m m个field对应的总特征维度和为 N N N, 所以总的嵌入层的权重个数为 N × k N \times k N×k. 第 i i i个field的one-hot向量作用在第 j j j个Embedding神经元上面的权重记作 V i j V_{ij} Vij,像上面的原文示意图里面,第一个field的one-ho向量分别作用在5个Embedding神经元上面,权重分别是 V 11 , V 12 , V 13 , V 14 , V 15 V_{11},V_{12},V_{13},V_{14},V_{15} V11,V12,V13,V14,V15,这5个值组合起来就是上面FM公式中所提到的 V 1 V_{1} V1,在FM部分和DNN部分,这个Embedding的 V V V向量是共享权重的,对于同一特征来说,得到的 V i V_{i} Vi是相同的。

在这里插入图片描述

二维特征的推导参考这篇博客

∑ i = 1 n − 1 ∑ j = i + 1 n < V i , V j > x i x j = 1 2 ∑ i = 1 n ∑ j = 1 n < V i , V j > x i x j − 1 2 ∑ i = 1 n < V i , V i > x i x i = 1 2 ∑ i = 1 n ∑ j = 1 n ∑ f = 1 K ( v i , f ∗ v j , f ) x i x j − 1 2 ∑ i = 1 n ∑ f = 1 K ( v i , f ∗ v i , f ) x i x i = 1 2 ∑ f = 1 K ( ( ∑ i = 1 n ( v i , f ∗ x i ) ( ∑ j = 1 n ( v j , f ∗ x j ) ) − 1 2 ∑ i = 1 n ( v i , f ∗ x i ) 2 ) = 1 2 ∑ f = 1 K ( ( ∑ i = 1 n v i , f ∗ x i ) 2 − ∑ i = 1 n ( v i , f ∗ x i ) 2 ) \begin{aligned} \sum_{i=1}^{n-1}\sum_{j=i+1}^{n}<V_{i}, V_{j}>x_{i}x_{j} & = \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}<V_{i}, V_{j}>x_{i}x_{j} - \frac{1}{2}\sum_{i=1}^{n}<V_{i}, V_{i}>x_{i}x_{i} \\ &= \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{f=1}^{K}(v_{i, f} * v_{j, f})x_{i}x_{j} - \frac{1}{2} \sum_{i=1}^{n}\sum_{f=1}^{K}(v_{i, f} * v_{i, f})x_{i}x_{i} \\ &= \frac{1}{2}\sum_{f=1}^{K}\left((\sum_{i=1}^{n}(v_{i, f} * x_{i})(\sum_{j=1}^{n}(v_{j, f} * x_{j})) - \frac{1}{2}\sum_{i=1}^{n}(v_{i, f} * x_{i})^{2}\right) \\ &= \frac{1}{2}\sum_{f=1}^{K}\left((\sum_{i=1}^{n} v_{i, f} * x_{i})^{2} - \sum_{i=1}^{n}(v_{i, f} * x_{i})^{2}\right) \end{aligned} i=1n1j=i+1n<Vi,Vj>xixj=21i=1nj=1n<Vi,Vj>xixj21i=1n<Vi,Vi>xixi=21i=1nj=1nf=1K(vi,fvj,f)xixj21i=1nf=1K(vi,fvi,f)xixi=21f=1K((i=1n(vi,fxi)(j=1n(vj,fxj))21i=1n(vi,fxi)2)=21f=1K((i=1nvi,fxi)2i=1n(vi,fxi)2)

  • DNN模型

    DNN模型的结构如图所示。CTR模型的输入向量大部分都是非常稀疏的,因此必须引入Embeddeding层。DeepFM的Embedding层的设计有下面的特点:(1)输入维度可以不同,输出维度必须相同;(2)FM模型中,特征 i i i的隐向量 V i V_{i} Vi被复用到DNN模型作为特征压缩的权重。这一点很重要,也是DeepFM模型的精髓,FM部分的权重是通过FM和DNN模型整体训练出来的,而不是单独用FM模型训练再利用的。

在这里插入图片描述

一些总结

DeepFM从推出后在工业界的得到了广泛的应用,其先进的思想主要是用FM模型来替代Wide & Deep模型中的Wide部分。而FM训练的隐向量,刚好又被用来作为Deep模型里面的特征表达向量,从而避免了复杂的特征工程,真正实现了end-to-end的推荐系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值