FNN模型

8/2/2021 FNN模型

# FNN模型的提出主要是为了解决什么问题?它是如何解决的?

在神经网络的参数初始化过程中,往往采用不带有先验信息地随机初始化,但由于Embedding层的输入极端稀疏化,在随机梯度下降的过程中,只有与非零特征相连的Embedding层的权重会被更新,导致Embedding层的收敛速度很慢,且Embedding层的参数数量往往占整个神经网络参数数量的大半以上,模型的收敛速度往往受限于Embedding层。

针对这个难题,FNN使用FM模型训练好的各特征隐向量初始化Embedding层的参数,相当于在初始化神经网络参数时引入了先验信息,这样一来神经网络训练的起点更接近于目标的最优点,加速了神经网络的收敛。

# FNN的模型结构是什么样的?

结构如下,总体上来讲,FNN就是一个FM+MLP:

上图的右侧已经标明了每一层的含义,下面从模型自顶向下的角度详细解释一下。

  • 输出层:

模型的输出是一个实数作为预测的CTR,即特定用户在指定上下文的条件下点击给定广告的概率。

  • L2层:tanh激活函数
  • L1层:同为tanh激活函数

作者尝试了线性函数,sigmoid函数,tanh函数,得出tanh函数的效果最好,因此这一层选用了tanh函数。

  • Dense real层

重点说一下Dense real层,z定义如下:

其中是一个全局的偏置标量,是特征域的总数,是第个特征域在FM中的参数向量,定义如下:

其中是第个特征域的起止下标,所有的权重都是通过偏置项和向量分别初始化,初始化,初始化,通过这种方式,FNN中的第一层的参数向量z就是通过预训练好的FM模型来初始化的。

# FNN模型中是如何使用FM来初始化Embeddiing层参数的?

先给出FM的方程:

每个特征都有一个偏置向量以及一个维隐向量,特征交互是通过将他们的隐向量进行内积操作得到的。

需要注意的是,虽然上图中FM中的参数直接指向了FNN的Embedding层各神经元,但其具体意义是初始化Embedding神经元与输入神经元之间的连接权重。假设FM的隐向量的维度为,第个特征域的第维特征的隐向量,那么隐向量的第维度就会成为连接输入神经元和神经元之间连接权重的初始值。

需要说明的是,在训练FM的过程中,并没有对特征域进行区分,但在FNN中,特征被分成了不同特征域,因此每个特征域具有对应的Embedding层,并且每个特征域Embedding的维度都应该与FM隐向量维度保持一致。

使用预训练的FM来初始化FNN模型的第一层参数可以有效地学习特征表示,并且绕开了高维二值输入带来的计算复杂度高问题。​更进一步,隐含层的权重(除了FM层)可以通过预训练的RBM来进行初始化。FM的权重可以通过SGD来进行更新,我们只需要更新那些不为0的单元,这样可以减少大量的计算。通过预训练FM层和其他的层进行初始化之后,再通过监督学习的方法进行微调,使用交叉熵的损失函数.

# FNN模型的特点是什么?有那些优缺点?

FNN模型的特点:

  1. 采用FM预训练得到的隐含层及其权重作为神经网络的第一层的初始值,之后再不断堆叠全连接层,最终输出预测的点击率。
  2. 可以将FNN理解成一种特殊的embedding+MLP,其要求第一层嵌入后的各特征域特征维度一致,并且嵌入权重的初始化是FM预训练好的。
  3. 这不是一个端到端的训练过程,有贪心训练的思路。而且如果不考虑预训练过程,模型网络结构也没有考虑低阶特征组合。

FNN模型的优缺点:

优点:

  • 引入DNN对特征进行更高阶组合,减少特征工程,能在一定程度上增强FM的学习能力,这种尝试为后续深度推荐模型的发展提供了新的思路。

缺点:

  • 两阶段训练模式,在应用过程中不方便,且模型能力受限于FM表征能力的上限。
  • FNN专注于高阶组合特征,但是却没有对低阶特征进行建模。