第六章:项目实战之推荐/广告系统
第三部分:精排算法
第二节:精排算法模型精讲: DNN、deepFM、ESMM、PLE、MMOE算法精讲与实现
2.DeepFM 模型
一、为什么需要 DeepFM?(从 DNN 和 FM 的缺陷切入)
在上一小节我们讲到的 DNN 精排模型虽然具备强大的非线性拟合能力,但它存在一个结构问题:
✅ 能学到高阶特征交互
❌ 低阶特征交互靠网络自己学,会非常困难、训练慢、效果不稳定
举个推荐中非常常见的交叉特征例子:
| 场景 | 重要交叉含义 |
|---|---|
| 用户性别 × 商品品类 | 不同性别对不同类目兴趣完全不同 |
| 城市 × 节日 × 商品价格区间 | 城市不同消费水平完全不同 |
| 用户职业 × 应用类型 | 职场/学生/自由职业者对 APP 内容行为差异明显 |
DNN 要靠大量训练样本才能自动“悟到”这些 feature cross。
于是业界希望:
最好有一个模型可以 显式地建模一阶关系 + 二阶特征交互 + 高阶特征交互,而且训练不要非常麻烦。
这就催生了 —— DeepFM(由华为诺亚提出)。
二、DeepFM 模型结构图(核心全貌)
DeepFM 由三部分组成:
| 组件 | 作用 |
|---|---|
| FM(左侧) | 显式建模 1 阶 / 2 阶特征交互 |
| Embedding | 为 FM 和 DNN 提供统一输入 |
| DNN(右侧) | 建模高阶非线性交互 |
整体结构如下:
┌─────────── FM ────────────┐ → 捕获一阶 + 二阶特征交互
[sparse features] → Embedding → concat ───────┤
└────────── DNN ───────────┘ → 捕获高阶特征交互
│
sigmoid
│
CTR / CVR 预测
输出为 FM 与 DNN 的联合结果:
三、FM 部分回顾(DeepFM 基石)
FM 的二阶交互核心公式:
通过 embedding 内积 显式建模二阶组合。
FM 特点:
不需要人工 feature crossing
建模低阶关联效果极好
训练收敛快
四、DeepFM PyTorch 版本(可运行)
import torch
import torch.nn as nn
import torch.nn.functional as F
class DeepFM(nn.Module):
def __init__(self, feature_size, emb_dim=16, hidden=[128, 64, 32]):
super().__init__()
self.embedding = nn.Embedding(feature_size, emb_dim)
# FM 一阶
self.fm_first = nn.Embedding(feature_size, 1)
# FM 二阶 + DNN 输入
input_dim = emb_dim * feature_size
# DNN
layers = []
for h in hidden:
layers.append(nn.Linear(input_dim, h))
layers.append(nn.ReLU())
input_dim = h
self.dnn = nn.Sequential(*layers)
self.out = nn.Linear(hidden[-1], 1)
def forward(self, x):
# x shape: [batch, field_num]
emb = self.embedding(x) # [B, F, E]
fm_first = self.fm_first(x).sum(dim=1) # 一阶
# FM 二阶: 1/2[(sum e)^2 - (square e)]
sum_emb = emb.sum(1)
square_sum = sum_emb * sum_emb
sum_square = (emb * emb).sum(1)
fm_second = 0.5 * (square_sum - sum_square).sum(1, keepdim=True)
# DNN
dnn_out = self.dnn(emb.view(emb.size(0), -1))
dnn_out = self.out(dnn_out)
return torch.sigmoid(fm_first + fm_second + dnn_out)
五、DeepFM 的优缺点与适用性
| 维度 | 结论 |
|---|---|
| ✅ 优点 | 低阶 + 高阶特征交互同时刻画;训练端到端;工业成熟 |
| ⚠️ 缺点 | 特征数量太多时,DNN 输入维度会膨胀 |
| ✅ 适用场景 | CTR/CVR 精排 baseline, 推荐/广告/信息流全面可用 |
一句话总结:
DeepFM 是工业界最稳定、效果稳健、泛用性极高的 CTR 精排基础模型之一。
11万+

被折叠的 条评论
为什么被折叠?



