[搜广推]深度学习推荐模型(6)——FM 与深度学习模型的结合

FM

FM模型的提出是为了引入多维度特征交叉。

为每个特征分配一个隐向量,用隐向量的内积来捕捉特征间的交互关系。
隐向量通常是随机初始化的,隐向量的长度是超参数 k
在这里插入图片描述

FM的数学公式如下:

F M ( w , x ) = w 0 + ∑ i = 1 n w i x i + ∑ i = 1 n ∑ j = i + 1 n < v i ⋅ v j > x i x j FM(w,x) =w_0 + \sum_{i=1}^{n} w_i x_i+\sum_{i=1}^{n} \sum_{j=i+1}^{n} <v_i · v_j> x_i x_j FM(w,x)=w0+i=1nwixi+i=1nj=i+1n<vivj>xixj

右边等式第一项是偏置,第二项是每个特征独立的贡献,第三项是特征组合的贡献,<vi,vj>是隐向量内积

发展

进入深度学习时代后,FM的演化过程并没有停止,FNN、DeepFM及NFM模型使用不同的方式应用或改进了FM模型,并融合进深度学习模型中,持续发挥着其在特征组合上的优势

FNN

FNN(Factorization Machine supported Neural Network)是一种结合了因子分解机(Factorization Machine, FM)和神经网络(Neural Network, NN)的混合模型。

网络结构

FNN主要改进了Embedding层:

在神经网络的参数初始化过程中,往往采用随机初始化。由于Embedding层参数数量大,输入稀疏,因此收敛速度非常慢。

FNN模型通过使用FM模型训练得到的隐向量来初始化神经网络中的Embedding层参数。这样做相当于在初始化阶段就引入了有价值的先验信息,使得神经网络训练的起点更接近目标最优解,从而加速了整个神经网络的收敛过程,还有助于提高模型的泛化能力。
在这里插入图片描述
在FNN模型中,特征被分成了不同的特征域,每个特征域都有自己的Embedding层,且每个特征域的Embedding层的维度与FM隐向量的维度保持一致。
连接输入神经元和Embedding神经元之间的连接权重被初始化为FM模型中对应特征的隐向量。

DeepFM

FNN把FM的训练结果作为初始化权重,并没有对神经网络的结构进行调整,而DeepFM模型则结合了FM和Wide&Deep,用FM 替换了Wide&Deep的Wide部分,加强了浅层网络部分特征组合的能力。

DeepFM的动机是改进Wide 部分不具备自动的特征组合能力的缺陷。(和Deep&Cross动机一样,只不过Deep&Cross利用多层Cross网络而DeepFM用的是FM)

改进后,DeepFM模型的FM部分可以自动构造学习二阶交叉特征,不需要人工特征工程,也不需要预训练FM模型,这简化了模型的训练过程。

DeepFM的一个关键特点是FM部分和DNN部分共享底层的Embedding向量,然后联合训练,这样做可以更有效地学习特征表示。
在这里插入图片描述

NFM

无论是FM,还是其改进模型,归根结底是一个二阶特征交叉的模型。这使得它受组合爆炸问题的困扰,几乎不可能扩展到三阶以上,限制了其表达能力。而NFM模型的思路是利用深度神经网络更强的表达能力改进FM模型。

由于深度学习网络理论上有拟合任何复杂函数的能力,f(x)的构造工作可以交由深度学习网络来完成,并通过梯度反向传播来学习。
因此,NFM将二阶交叉特征的表示由原来的隐向量内积变成了一个神经网络。
在这里插入图片描述
NFM模型中,用来替代FM二阶部分的神经网络结构如下图所示:
在这里插入图片描述

这个网络的核心是Bi-Interaction Pooling部分,运算符号 ⊙ 表示逐元素乘法。它实现了输入向量值的两两相乘,然后累加起来。
在这里插入图片描述

其中, x i x_i xi x j x_j xj是标量,如果将 v i \mathbf{v}_i vi v j \mathbf{v}_j vj 表示为: v i = [ v i 1 , v i 2 , … , v i m ] , v j = [ v j 1 , v j 2 , … , v j m ] \mathbf{v}_i = [v_{i1}, v_{i2}, \ldots, v_{im}],\mathbf{v}_j = [v_{j1}, v_{j2}, \ldots, v_{jm}] vi=[vi1,vi2,,vim],vj=[vj1,vj2,,vjm]。那么逐元素乘法结果是:

( x i v i ) ⊙ ( x j v j ) = [ x i v i 1 ⋅ x j v j 1 , x i v i 2 ⋅ x j v j 2 , … , x i v i m ⋅ x j v j m ] (x_i \mathbf{v}_i) \odot (x_j \mathbf{v}_j) = [x_i v_{i1} \cdot x_j v_{j1}, x_i v_{i2} \cdot x_j v_{j2}, \ldots, x_i v_{im} \cdot x_j v_{jm}] (xivi)(xjvj)=[xivi1xjvj1,xivi2xjvj2,,xivimxjvjm]

上图所示的NFM架构图省略了一阶部分。如果把NFM的一阶部分视
为一个线性模型,那么NFM的架构也可以视为Wide&Deep模型的进化。相比Wide&Deep 模型,NFM 模型对其 Deep部分加人了特征交叉池化层,加强了特征交叉。

优势

  1. 在经典多层神经网络的基础上加人有针对性的特征交叉操作,让模型具备更强的非线性表达能力

局限

  1. 特征工程对模型的提升逐渐变小
  2. 在极高维的数据集中,FM可能会遇到性能瓶颈,因为它需要为每个特征学习一个隐向量,这在特征空间非常大时可能导致模型参数过多

参考

深度学习推荐系统(王喆)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值