一:FNN–用FM的隐向量完成Embedding层的初始化。
1,提出背景:
(1)基于FM的特征组合受到计算复杂度的影响因而只能进行二阶特征交叉,但当面对海量高度稀疏的用户行为反馈数据时,二阶交叉是明显不够的,三阶,四阶甚至更高阶的特征组合交叉才能进一步提高模型的学习能力,如何能在引入更高阶的同时,又能将计算复杂度控制在一定范围之内,Dnn就是答案。
(2)在神经网络的初始化过程中,往往采用随机初始化这种不含任何先验信息的初始化方式,由于Embedding层的输入极端稀疏,再加上Embedding的参数数量往往占据了神经网络参数数量的大半以上,因此模型的收敛速度往往受限于Embedding层收敛速度。
2,什么是FNN
利用FM训练好的各特征隐向量来初始化Embedding层的参数,相当于在初始化神经网络模型参数时候,就已经引入了一定的先验信息,让神经网络的起点更叫靠近目标最优点,加速整个模型的收敛。模型结构如下:
二:FNN结构解析与训练
输入:类别特征,经过 field-wise one-hot编码的。每个field相当于一个类别特征,比如 city。FNN模型使用因子分解机作为底层,FNN = FM + MLP。
首先, W 0向量经过初始化, 向量z 通过训练FM模型来完成初始化:FM数学形式
需要注意的是,虽然模型结构图中把FM中的参数指向了Embedding层的神经元,但其具体意义是初始化Embedding神经元和输入神经元之间的链接权重。假设FM隐向量的维度为M,第i个特征域(fild i)的第k维特征的隐向量是Vik,那么隐向量的第L维Vilk就会成为链接输入神经元k和Embedding神经元L之间连接权重的初始值。
L2层:
这里,选择tanh 作为激活函数,是因为实验中它有最优的学习性能(相比sigmoid,不会有梯度消失)。
L1层:
输出 是0-1 的数值(sigmoid激活函数将多层mlp输出的多个神经元的值压缩到0-1之间),代表一个用户点击给定的广告的概率:
模型分成两个阶段训练:
(1)无监督训练
在使用FM模型得到z后, 使用RBM的对比散度进行逐层训练。
(2)有监督训练
为了加快参数更新:只对底层非0的元素进行权重更新。
需要说明的是,在Fnn中特征被分成了不同的特征域,每个特征域都有对应的Embedding层,并且每个特征域Embedding的维度都与对应的Fm隐向量维度保持一致。
三:FNN优缺点
优点:
引入DNN对特征进行更高阶组合,减少特征工程,能在一定程度上增强FM的学习能力。这种尝试为后续深度推荐模型的发展提供了新的思路(相比模型效果而言,个人感觉这种融合思路意义更大)。
缺点:
两阶段训练模式,在应用过程中不方便,且模型能力受限于FM表征能力的上限。
FNN专注于高阶组合特征,但是却没有将低阶特征纳入模型。