Datewhale组队学习——深度学习推荐系统(4)

模型背景

web应用程序的变量大部分是离散的、非连续的。在稀疏的数据中建立模型,需要挖掘出特征之间的关联。很多成功的算法依靠手动进行特征组合,这类做法的缺点是成本很高,需要依靠大量人力进行设计,难以推广。因此,解决方案是设计专门自动学习特征的模型,代表模型FM。但FM本身基于线性模型,性能有限,所以需要更复杂的模型,于是,作者提出了NFMs。

模型结构

NFM的表达式:
y ^ N F M ( x ) = w 0 + ∑ i = 1 n w i x i + f ( x ) \hat{y}{N F M}(\mathbf{x})=w{0}+\sum_{i=1}^{n} w_{i} x_{i}+f(\mathbf{x}) y^NFM(x)=w0+i=1nwixi+f(x)

对比FM表达式
y = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ i + 1 n < v i , v j > x i x j y = w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^{n}\sum_{i+1}^n\lt v_i,v_j\gt x_ix_j y=w0+i=1nwixi+i=1ni+1n<vi,vj>xixj

从表达式来看,前两项基本一致,都是线性回归,区别在于第三部分的表达式,也就是 f ( x ) f(x) f(x)部分,这也是NFM核心部分。

f ( x ) f(x) f(x)的具体结构如下图所示

NFM网络结构(一阶线性回归部分未包括)
在这里插入图片描述

F(x)各层解析

Embedding Layer

Embedding层是一个全连接层,本身结构和作用与之前相似,把稀疏向量转化成稠密向量。

假设 v i ∈ R k \mathbf{v}{\mathbf{i}} \in \mathbb{R}^{k} viRk为第 i i i个特征的embedding向量, 那么 V x = { x 1 v 1 , … , x n v n } \mathcal{V}{x}=\left\{x_{1} \mathbf{v}{1}, \ldots, x{n} \mathbf{v}_{n} \right\} Vx={x1v1,,xnvn} x i ≠ 0 x_{i}\neq0 xi=0)表示的下一层的输入特征。

Bi-Interaction 层

NFM区别FM的核心。作用是将Embedding向量转换为一个向量.

假设 V x \mathcal{V}_{x} Vx是所有特征embedding的集合, 那么在特征交叉池化层的操作:

f B I ( V x ) = ∑ i = 1 n ∑ j = i + 1 n x i v i ⊙ x j v j f_{B I}\left(\mathcal{V}{x}\right)=\sum_{i=1}^{n} \sum_{j=i+1}^{n} x_{i} \mathbf{v}{i} \odot x{j} \mathbf{v}_{j} fBI(Vx)=i=1nj=i+1nxivixjvj

⊙ \odot 表示两个向量的元素积操作,即两个向量对应维度相乘得到的元素积向量(可不是点乘呀),其中第 k k k维的操作: ( v i ⊙ v j ) k = v i k v j k \left(v_{i} \odot v_{j}\right){k}=\boldsymbol{v}{i k} \boldsymbol{v}_{j k} (vivj)k=vikvjk

Bi-Interaction 层没有引入额外参数,可以在线性时间内被计算。上文公式可以被转换为下面形式
f B I ( V x ) = 1 2 [ ( ∑ i = 1 n x i v i ) 2 − ∑ i = 1 n ( x i v i ) 2 ] f_{B I}\left(\mathcal{V}{x}\right)=\frac{1}{2}\left[\left(\sum_{i=1}^{n} x_{i} \mathbf{v}{i}\right)^{2}-\sum_{i=1}^{n}\left(x_{i} \mathbf{v}_{i}\right)^{2}\right] fBI(Vx)=21(i=1nxivi)2i=1n(xivi)2

按照论文中的观点,可以在 O ( k N x ) O(kN_x) O(kNx) N x N_x Nx x x x中非零的数目)内进行Bi-Interaction。

隐藏层

这一层就是全连接的神经网络,用于学习要素的高等交互 ,公式如下:
z 1 = σ 1 ( W 1 f B I ( V x ) + b 1 )   z 2 = σ 2 ( W 2 z 1 + b 2 ) ⋮   z L = σ L ( W L z L − 1 + b L ) \begin{aligned} \mathbf{z}{1}=&\sigma{1}\left(\mathbf{W}{1} f{B I} \left(\mathcal{V}{x}\right)+\mathbf{b}{1}\right) \ \\ \mathbf{z}{2}=& \sigma{2}\left(\mathbf{W}{2} \mathbf{z}{1}+\mathbf{b}{2}\right) \\ &\vdots &\ \\\mathbf{z}{L}=& \sigma_{L}\left(\mathbf{W}{L} \mathbf{z}{L-1}+\mathbf{b}_{L}\right) \end{aligned} z1=z2=zL=σ1(W1fBI(Vx)+b1) σ2(W2z1+b2)σL(WLzL1+bL) 

其中 L L L表示隐藏层的数量, W 1 , b l W1,b_l W1bl σ l σ_l σl分别表示第l层的权重矩阵,偏差矢量和激活函数。
通过选择非线性激活函数激活函数可以以非线性组合激活函数

输出层

这个就是最后一层的结果直接过一个隐藏层,: f ( x ) = h T z L f(\mathbf{x})=\mathbf{h}^{T} \mathbf{z}_{L} f(x)=hTzL

所以, NFM模型的前向传播过程总结如下:
y ^ N F M ( x ) = w 0 + ∑ i = 1 n w i x i   + h T σ L ( W L ( … σ 1 ( W 1 f B I ( V x ) + b 1 ) … ) + b L ) \begin{aligned} \hat{y}{N F M}(\mathbf{x}) &=w{0}+\sum_{i=1}^{n} w_{i} x_{i} \ & +\mathbf{h}^{T} \sigma_{L}\left(\mathbf{W}{L}\left(\ldots \sigma{1}\left(\mathbf{W}{1} f{B I}\left(\mathcal{V}{x}\right)+\mathbf{b}{1}\right) \ldots\right)+\mathbf{b}_{L}\right) \end{aligned} y^NFM(x)=w0+i=1nwixi +hTσL(WL(σ1(W1fBI(Vx)+b1))+bL)

所有的参数 Θ = { w 0 { w i , v i } , h , { W l , b l } \Theta=\lbrace w_0 \lbrace w_i, v_i \rbrace,h, \lbrace W_l, b_l \rbrace Θ={w0{wi,vi},h,{Wl,bl},与FM相比,NFM的其他模型参数主要是 { W l , b l } \{W_l,b_l\} {Wlbl},用作高级交互。

论文补充

相比FM

文章提到,FM可以认为是NFM的一种特例,将 L L L设为0,并将Bi-Interaction池的输出直接映射到输出层,得出NFM-0

f B I ( V x ) = ∑ i = 1 n ∑ j = i + 1 n x i v i ⊙ x j v j = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n ∑ f = 1 k h f v i f v j f . x i x j f_{B I}\left(\mathcal{V}{x}\right)=\sum_{i=1}^{n} \sum_{j=i+1}^{n} x_{i} \mathbf{v}{i} \odot x{j} \mathbf{v}_{j} \\=w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^{n}\sum_{j=i+1}^n\sum_{f=1}^kh_{f}v_{if}v_{jf}.x_{i}x_j fBI(Vx)=i=1nj=i+1nxivixjvj=w0+i=1nwixi+i=1nj=i+1nf=1khfvifvjf.xixj
h h h变为(1…1)的向量,NFM变为FM公式。

Bi-Interaction层上可以使用dropout等技巧规范FM。

相比DeepCross

DeepCross或者Wide&Deep模型不能很好处理特征间的交互,NFM可以提供特征的二阶甚至更高阶的交互。

NFM模型的时间复杂度为 O ( k N x + ∑ l = 1 L d l − 1 d l ) O(kN_x+\sum_{l=1}^Ld_{l-1}d_l) O(kNx+l=1Ldl1dl),与DeepCross以及Wide&Deep一致。

参考资料

NFM论文
https://github.com/datawhalechina/team-learning-rs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值