推荐系统FM系列文章(三)-- NFM模型

1,536 阅读3分钟

0. 写在前面

继上次介绍了DeepFM模型后,本文我们介绍将FM模型思想结合神经网络的又一工作 -- NFM(Neural Factorization Machine),一起来看看NFM相比于FM模型及DeepFM模型有哪些不同之处以及优化点。

个人心得:

  1. bi-interaction pooling layer,一种element-wise product的特征交叉层

论文地址:

arxiv.org/pdf/1708.05…

1. 背景

DeepFM将神经网络成功引入了FM模型当中,并取得了较为理想的效果。此外,推荐领域研究学者也提出了NFM模型,同样是将特征显式交叉的思想引入神经网络,与DeepFM相似,NFM模型的结构依然遵循类似的two-part结构,包括shallow-part(浅层)以及dnn-part(深层)。下面详细介绍NFM中的dnn-part。

2. 模型架构

NFM模型架构如图所示。上面说到,NFM分为两部分,分别为线性部分及神经网络部分。线性部分具备样本记忆的能力,神经网络部分负责复杂的特征抽取、特征交叉等工作,具体样本泛化能力。我们重点来看dnn这一部分。

NFM神经网络部分对输入样本的处理方式完全一致,类别特征onehot后进行embedding,连续特征直接embedding,两类特征的embedding维度保持一致,等价于FM模型二阶特征交叉项中隐向量的维度。每个特征field的embedding向量经过一层bi-interaction pooling layer后,输出与embedding向量维度一致的新向量,最后送入全连接层。由此可见,除了刚刚提到的bi-interaction pooling layer以外,NFM其他部分均平平无奇,下面我们就来看看bi-interaction pooling layer作为独立的一层,到底实现了什么功能。

3. bi-interaction pooling layer

之前我们说到DeepFM通过特征embedding的向量两两内积实现特征交叉,重点就在于“特征交叉”。在NFM中,bi-interaction layer就是那个实现特征交叉的关键一层。bi-interaction pooling layer实现特征交叉的方式如下式所示。

其中,xix_{i}表示特征取值,viv_{i}表示特征xix_{i}对应的embedding向量,@@运算符号表示element-wise product,即两个向量对应元素相乘,得到的向量维数与每个特征域embedding向量维数相同。通过对所有特征域进行两两交叉后,可以得到一系列特征交叉后的结果,最后将所有结果进行sum pooling操作,得到最终特征交叉后特征向量表示。 对比DeepFM的特征交叉方式,我们可以发现bi-interaction pooling layer:

  1. 采用特征pooling的方式代替DeepFM中二阶特征向量横向连接操作,得到的结果向量由nkn*k维优化为k维,大大减少训练参数数目。(nn为特征域个数,kk为embedding向量维度)
  2. 采用sum pooling的方式综合二阶特征信息,可能会有信息损失

4. 总结

NFM是第一个将bi-interaction layer引入神经网络的工作,在特征交叉方面提出了相应的优化点,推荐领域中后续很多工作均借鉴了NFM中bi-interaction pooling的思想,从另一方面也说明NFM在推荐算法发展过程中所起到的代表性。