NFM(Neural Factorization Machines)是2017年由新加坡国立大学的何向南教授等人在SIGIR会议上提出的一个模型,论文《Neural Factorization Machines for Sparse Predictive Analytics》。
NFM主要是面向稀疏特征的交叉问题, 将FM对二阶特征的线性交叉,与神经网络对高阶特征非线性交叉无缝的结合在了一起。
- 提出了Bilinear Interaction(Bi-Interaction) pooling操作 (有别于传统的concatenate 或 avg pooling操作)
- 将FM看作是神经网络的一部分
模型
公式
传统的FM模型仅局限于线性表达和二阶交互, 无法胜任生活中各种具有复杂结构和规律性的真实数据, 针对FM的这点不足, 作者提出了一种将FM融合进DNN的策略,通过引进了一个特征交叉池化层的结构,使得FM与DNN进行了完美衔接,这样就组合了FM的建模低阶特征交互能力和DNN学习高阶特征交互和非线性的能力,形成了深度学习时代的神经FM模型(NFM)。
跟fm的公式很相似, 对比FM, 就会发现变化的是第三项,将fm的二阶部分换成了更为复杂的形式。
网络结构
NFM模型的深度网络部分结构图如图所示
embedding层
就是一个全连接层,将输入转换到低维度的稠密的嵌入空间中进行处理。
Bi-Interaction层
Bi是Bi-linear的缩写,这一层其实是一个pooling层操作,它把很多个向量转换成一个向量,形式化如下:
⊙ \odot ⊙ 代表两个向量的元素积操作,即两个长度相同的向量对应维相乘得到元素积向量,示例如下: [ 1 , 2 , 3 ] ⊙ [ 2 , 3 , 4 ] = [ 1 ∗ 2 , 2 ∗ 3 , 3 ∗ 4 ] = [ 2 , 6 , 12 ] [1,2,3]\odot[2,3,4]=[1*2,2*3,3*4]=[2,6,12] [1,2,3]⊙[2,3,4]=[1∗2,2∗3,3∗