推荐系统学习笔记4:FNN、DeepFM、NFM
Keep Team Lv4

推荐系统学习笔记4:FNN、DeepFM与NFM——深度特征交互模型的演进

随着深度学习在推荐系统中的深入应用,研究者们提出了多种专门针对推荐任务设计的神经网络架构。FNN(Factorization-machine supported Neural Network)、DeepFM(Deep Factorization Machine)和NFM(Neural Factorization Machine)是三种重要的深度推荐模型,它们在不同方面改进了特征交互的学习方式。本文将详细分析这三种模型的架构、原理和应用。

1. 从FM到深度FM模型

1.1 FM模型的回顾与局限性

因子分解机(FM)通过隐向量的内积建模特征交互:
$$
\hat{y}{FM} = w_0 + \sum{i=1}^n w_i x_i + \sum_{i=1}^n \sum_{j=i+1}^n \langle \mathbf{v}_i, \mathbf{v}_j \rangle x_i x_j
$$

FM的优势

  • 能够处理稀疏数据下的特征交互
  • 线性时间复杂度
  • 在中小规模数据集上表现良好

FM的局限性

  1. 交互形式单一:只使用内积,限制了交互函数的表达能力
  2. 高阶交互缺失:只考虑二阶交互,无法建模更高阶的复杂交互
  3. 线性组合:特征交互后直接求和,缺乏非线性变换

1.2 深度FM模型的演进路径

为了解决FM的局限性,研究者提出了多种深度扩展:

  1. FNN:使用FM预训练嵌入,然后输入深度神经网络
  2. DeepFM:同时结合FM的二阶交互和深度神经网络的高阶交互
  3. NFM:在FM基础上增加神经交互层,学习更复杂的交互函数

2. FNN:基于FM预训练的深度神经网络

2.1 FNN模型架构

FNN的核心思想是使用FM预训练的隐向量作为深度神经网络的输入,从而获得更好的初始化。

架构概述

1
2
3
4
5
6
7
8
9
10
输入特征


FM嵌入层(预训练)


深度神经网络(DNN)


输出层

2.2 两阶段训练过程

阶段一:FM预训练

  1. 在训练数据上训练FM模型
  2. 保存特征隐向量 $\mathbf{v}_i$

阶段二:DNN训练

  1. 将特征通过预训练的隐向量转换为嵌入表示:
    $$
    \mathbf{z}_i = \mathbf{v}_i x_i
    $$
  2. 拼接所有嵌入向量:
    $$
    \mathbf{z} = [\mathbf{z}_1^T, \mathbf{z}_2^T, \dots, \mathbf{z}_n^T]^T
    $$
  3. 输入多层感知机:
    $$
    \mathbf{h}_1 = \sigma(\mathbf{W}_1 \mathbf{z} + \mathbf{b}_1)
    $$
    $$
    \mathbf{h}_L = \sigma(\mathbf{W}L \mathbf{h}{L-1} + \mathbf{b}_L)
    $$
  4. 输出预测:
    $$
    \hat{y} = \sigma(\mathbf{w}^T \mathbf{h}_L + b)
    $$

2.3 FNN的优势与局限性

优势

  1. 更好的初始化:FM预训练提供了有意义的特征表示
  2. 减少训练时间:相比随机初始化收敛更快
  3. 缓解过拟合:预训练相当于一种正则化

局限性

  1. 两阶段训练:流程复杂,需要分别训练两个模型
  2. FM局限性继承:受限于FM的表示能力
  3. 无法端到端优化:FM和DNN分开训练,不能协同优化

2.4 FNN的改进版本

2.4.1 SNN(Sampling-based Neural Network)

引入负采样技术,加速训练过程。

2.4.2 CCPM(Convolutional Click Prediction Model)

在FNN基础上增加卷积层,学习局部特征交互。

3. DeepFM:端到端的宽深融合模型

DeepFM是Wide&Deep架构的一种改进,用FM替换了Wide部分的线性模型,实现了真正的端到端训练。

3.1 DeepFM模型架构

DeepFM包含两个并行组件:

  1. FM组件:建模低阶特征交互
  2. 深度组件:建模高阶特征交互
1
2
3
4
5
6
7
8
9
10
11
12
输入特征

├─────────────────┐
│ │
FM组件 深度组件
(二阶交互) (高阶交互)
│ │
└─────────────────┘

输出层融合

预测结果

3.2 FM组件

FM组件与原始FM相同,但与其他组件共享特征嵌入:
$$
\hat{y}{FM} = \langle \mathbf{w}, \mathbf{x} \rangle + \sum{i=1}^n \sum_{j=i+1}^n \langle \mathbf{v}_i, \mathbf{v}_j \rangle x_i x_j
$$

3.3 深度组件

深度组件与FNN类似,但使用相同的嵌入层:

  1. 嵌入层:将稀疏特征映射为稠密向量
  2. 全连接层:多层神经网络学习高阶交互

3.4 共享嵌入层

DeepFM的关键创新是FM组件和深度组件共享相同的嵌入层

  • 参数效率:减少总参数量
  • 信息共享:两部分相互促进
  • 端到端训练:统一优化目标

嵌入层的输出同时用于FM的内积计算和深度组件的输入。

3.5 模型输出

DeepFM的最终预测是FM组件和深度组件的加权和:
$$
\hat{y} = \sigma(\hat{y}{FM} + \hat{y}{DNN})
$$

其中$\sigma$是sigmoid激活函数。

3.6 DeepFM的优势

  1. 无需特征工程:自动学习低阶和高阶特征交互
  2. 端到端训练:FM和DNN联合优化
  3. 共享嵌入:提高参数效率,促进信息共享
  4. 强表达能力:同时捕获显式和隐式特征交互

3.7 DeepFM的实际应用

3.7.1 在华为应用市场的应用

DeepFM在华为应用市场推荐系统中取得了显著效果:

  • 点击率提升:相比基线模型提升15.2%
  • 转化率提升:相比基线模型提升12.8%
  • 训练效率:比Wide&Deep训练速度快30%

3.7.2 超参数设置

  • 嵌入维度:10-20
  • 隐藏层:3-5层,每层256-1024个神经元
  • 激活函数:ReLU
  • 优化器:Adam
  • 学习率:0.001-0.01

4. NFM:神经因子分解机

NFM在FM的基础上引入神经交互层(Neural Interaction Layer),用神经网络替代内积来计算特征交互。

4.1 NFM模型架构

NFM的核心创新是双向交互层(Bi-Interaction Layer),它显式地建模特征对之间的交互。

架构流程

1
2
3
4
5
6
7
8
9
10
11
12
13
输入特征


嵌入层


双向交互层


隐藏层堆叠


输出层

4.2 双向交互层

双向交互层计算所有特征嵌入向量的逐元素乘积和:
$$
f_{BI}(\mathcal{V}x) = \sum{i=1}^n \sum_{j=i+1}^n x_i \mathbf{v}_i \odot x_j \mathbf{v}_j
$$

其中$\odot$表示逐元素乘法(Hadamard积)。

数学性质

  1. 对称性:$f_{BI}$关于特征顺序对称
  2. 非线性:相比内积具有更强的表达能力
  3. 维度保持:输出维度与嵌入维度相同

4.3 与传统FM的关系

当双向交互层的输出直接连接到输出层时,NFM退化为FM:
$$
\hat{y}{NFM} = w_0 + \sum{i=1}^n w_i x_i + \mathbf{h}^T f_{BI}(\mathcal{V}_x)
$$
如果$\mathbf{h}$是全1向量,则等价于FM。

4.4 深度堆叠层

在双向交互层之后,NFM可以堆叠多个全连接层来学习高阶交互:
$$
\mathbf{z}_1 = \sigma_1(\mathbf{W}1 f{BI}(\mathcal{V}_x) + \mathbf{b}_1)
$$
$$
\mathbf{z}_L = \sigma_L(\mathbf{W}L \mathbf{z}{L-1} + \mathbf{b}_L)
$$

4.5 NFM的优势

  1. 更强的交互建模:双向交互层比内积更具表达能力
  2. 深度非线性:通过深度网络学习复杂函数
  3. 参数效率:相比PNN等模型参数更少
  4. 可解释性:双向交互层具有明确的语义

4.6 NFM的变体

4.6.1 AFM(Attentional Factorization Machine)

在NFM基础上增加注意力机制,学习不同特征交互的重要性权重。

4.6.2 NFM with Feature Gating

引入门控机制,动态控制特征信息的流动。

5. 三种模型的比较分析

5.1 架构比较

模型 核心思想 交互方式 训练方式 参数共享
FNN FM预训练+深度网络 深度隐式交互 两阶段训练
DeepFM FM+DNN并行 显式二阶+隐式高阶 端到端训练 嵌入层共享
NFM 神经交互层+深度网络 神经双向交互 端到端训练 完全共享

5.2 表达能力分析

5.2.1 交互阶数

  • FNN:理论上可以学习任意阶交互,但实际受网络深度限制
  • DeepFM:显式二阶+隐式高阶
  • NFM:通过双向交互层显式建模二阶交互,深度网络建模高阶交互

5.2.2 交互函数复杂度

  • FNN:深度神经网络的万能逼近能力
  • DeepFM:FM的线性交互+DNN的非线性交互
  • NFM:双向交互层的非线性变换+DNN的进一步抽象

5.3 计算复杂度比较

模型 时间复杂度 空间复杂度 适合数据规模
FNN $O(nkd + d^2L)$ $O(nk + dL)$ 中小规模
DeepFM $O(nk + nkd + d^2L)$ $O(nk + dL)$ 大规模
NFM $O(n^2k + d^2L)$ $O(nk + dL)$ 中小规模

其中:

  • $n$:特征数量
  • $k$:嵌入维度
  • $d$:隐藏层维度
  • $L$:隐藏层数量

5.4 实际效果对比

在公开数据集上的实验结果:

模型 MovieLens-1M Frappe Criteo
RMSE LogLoss AUC
FM 0.832 0.265 0.789
FNN 0.821 0.251 0.795
DeepFM 0.815 0.243 0.802
NFM 0.813 0.239 0.804

6. 实践应用指南

6.1 如何选择模型

6.1.1 根据数据规模选择

  • 小规模数据:NFM或FNN,避免过拟合
  • 大规模数据:DeepFM,充分利用数据

6.1.2 根据特征类型选择

  • 稠密特征为主:FNN或DeepFM
  • 稀疏特征为主:NFM或DeepFM

6.1.3 根据业务需求选择

  • 需要可解释性:DeepFM(FM部分可解释)
  • 追求最高精度:NFM
  • 考虑推理速度:DeepFM

6.2 实现注意事项

6.2.1 嵌入维度选择

  • 原则:高频特征高维度,低频特征低维度
  • 经验值:一般取10-50维
  • 调整方法:根据特征频率动态调整

6.2.2 网络深度设计

  • FNN:3-5层,避免梯度消失
  • DeepFM:DNN部分2-4层
  • NFM:双向交互层后接2-3层

6.2.3 正则化策略

  • L2正则化:所有权重矩阵
  • Dropout:隐藏层,比率0.3-0.5
  • 早停法:基于验证集性能

6.3 训练技巧

6.3.1 优化器选择

  • Adam:默认选择,适应大部分场景
  • AdaGrad:稀疏特征场景
  • SGD with Momentum:需要精细调优时

6.3.2 学习率策略

  • 余弦退火:逐渐降低学习率
  • 热重启:周期性增加学习率
  • 自适应学习率:根据梯度调整

6.3.3 批次大小

  • 原则:大批次稳定,小批次泛化
  • 推荐:256-1024
  • 调整:根据GPU内存调整

7. 高级主题与扩展

7.1 多任务学习扩展

7.1.1 DeepFM-MTL

在DeepFM基础上扩展为多任务学习,同时优化点击率、转化率、停留时长等多个目标。

7.1.2 共享-私有架构

每个任务有私有网络,同时共享公共特征表示。

7.2 序列建模扩展

7.2.1 DeepFM with RNN

在DeepFM基础上增加RNN层,建模用户行为序列。

7.2.2 NFM with Attention

在NFM中引入注意力机制,关注重要的历史行为。

7.3 图神经网络扩展

7.3.1 GraphFM

将用户-物品交互建模为图,使用图神经网络学习表示。

7.3.2 Social DeepFM

融入社交网络信息,利用朋友关系改进推荐。

8. 工业界应用案例

8.1 阿里巴巴的DeepFM实践

在阿里巴巴的电商推荐中,DeepFM被用于:

  1. 首页推荐:综合用户画像、历史行为、实时上下文
  2. 搜索排序:排序搜索结果中的商品
  3. 广告推荐:预测广告点击率和转化率

优化措施

  • 特征分桶:连续特征离散化
  • 嵌入压缩:低维嵌入+量化
  • 在线学习:实时更新模型

8.2 美团的NFM应用

美团在外卖推荐中使用NFM的改进版本:

  1. 多目标优化:同时优化点击、下单、评价
  2. 时空特征:结合时间和地理位置
  3. 实时更新:分钟级模型更新

8.3 腾讯的FNN应用

在腾讯新闻推荐中,FNN用于:

  1. 冷启动处理:利用FM预训练缓解冷启动
  2. 多源特征融合:文本、图像、用户行为
  3. 个性化推送:基于用户兴趣动态调整

9. 未来发展方向

9.1 自动化架构搜索

使用AutoML技术自动搜索最优的模型架构、嵌入维度、网络深度等超参数。

9.2 可解释性增强

开发可解释的深度推荐模型,提供推荐理由,增加用户信任。

9.3 联邦学习应用

在保护用户隐私的前提下,通过联邦学习训练跨平台的推荐模型。

9.4 跨域推荐

利用源域的知识改进目标域的推荐,解决数据稀疏问题。

10. 总结

FNN、DeepFM和NFM代表了深度推荐模型发展的重要阶段:

  1. FNN:开创了使用FM初始化深度网络的思路,但两阶段训练限制了其应用。
  2. DeepFM:实现了真正的端到端训练,通过共享嵌入层巧妙结合了FM和DNN。
  3. NFM:提出了双向交互层这一新颖架构,在表达能力和计算效率之间取得了良好平衡。

在实际应用中,DeepFM因其平衡性成为最受欢迎的选择,NFM在需要更强表达能力的场景中表现出色,而FNN因其简单的两阶段训练仍在某些特定场景中使用。

随着推荐系统场景的复杂化和数据规模的扩大,这些模型仍在不断演进。未来的深度推荐模型将更加注重效率、可解释性和隐私保护,同时继续提升推荐的准确性和多样性。


深度推荐模型的发展远未停止,新的架构和技术不断涌现。作为从业者,我们需要深入理解每种模型的原理和适用场景,在实践中根据具体需求选择合适的模型,并持续关注最新的研究进展。