含义
NFM模型是将FM与DNN进行融合,通过引入特征交叉池化层将FM与DNN进行衔接,这样就组合了FM的建模低阶特征交互能力和DNN学习高阶特征交互和非线性的能力。
在上一节DEEPFM中,我们已经知道,FM只能将两个特征进行重组,而不能将高阶特征进行重组,并且FM是线性组合,将DNN引入,可以提升FM进行特征交互能力和学习非线性表达的能力。
NFM公式
与FM公式相比,红色部分被一个表达能力更强的函数替代,特征之间的交互不局限于两个特征,也不局限与线性组合了。
NFM在fm得到二阶的交叉特征之后,加入了一个网络,将二阶特征再进行合并,进而就可以提取高阶交叉特征,因此增强了FM的表达能力。
NFM得隐藏层是全连接层,预测层
池化层:
常见的池化层
它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效地原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。
池化的作用:
池化操作后的结果相比其输入缩小了。池化层的引入是仿照人的视觉系统对视觉输入对象进行降维和抽象。在卷积神经网络过去的工作中,研究者普遍认为池化层有如下三个功效:
1.特征不变性:池化操作是模型更加关注是否存在某些特征而不是特征具体的位置。其中不变形性包括,平移不变性、旋转不变性和尺度不变性。
平移不变性是指输出结果对输入对小量平移基本保持不变,例如,输入为(1, 5, 3), 最大池化将会取5,如果将输入右移一位得到(0, 1, 5),输出的结果仍将为5。对伸缩的不变形,如果原先的神经元在最大池化操作后输出5,那么经过伸缩(尺度变换)后,最大池化操作在该神经元上很大概率的输出仍是5.
2.特征降维(下采样):池化相当于在空间范围内做了维度约减,从而使模型可以抽取更加广范围的特征。同时减小了下一层的输入大小,进而减少计算量和参数个数。
3.在一定程度上防止过拟合,更方便优化。
4.实现非线性(类似relu)。
5.扩大感受野。
思考题
NFM中的特征交叉与FM中的特征交叉有何异同,分别从原理和代码实现上进行对比分析
1、FM模型只将特征组合为双特征,也就是说不能学习更高阶的特征组合,但是NFM加入了DNN,因此就能学习2阶以上的特征。
2、FM的特征组合,是线性的,就是组合特征之间,是线性组合。而NFM使用一个函数取代了原来的线性部分,因此特征之间不局限于线性组合了。
问题
如何确定输入应该进入linear input还是dnn input??这种分割是按照什么标准的??还是完全人为判断???