别再只懂协同过滤了!从Deep Crossing到DIEN,手把手拆解主流深度学习推荐模型(附演进图)
·
深度学习推荐模型演进:从特征交叉到用户行为序列建模
推荐系统作为信息过滤的核心技术,已经从早期的协同过滤发展到如今的深度学习时代。本文将系统梳理深度学习推荐模型的技术演进路径,揭示各模型间的继承关系与创新突破,帮助开发者构建完整的知识框架。
1. 深度学习推荐模型的奠基之作
早期的深度学习推荐模型主要解决传统方法无法处理的复杂特征交叉问题。2016年微软提出的Deep Crossing模型首次实现了推荐系统的端到端训练,其核心创新在于:
- Embedding层 :将稀疏的类别型特征转化为低维稠密向量
- Stacking层 :拼接不同特征的Embedding向量
- 残差网络 :使用多层残差单元进行特征交叉组合
- Scoring层 :拟合CTR预估等优化目标
# Deep Crossing模型结构示例
class DeepCrossing(nn.Module):
def __init__(self, feature_dim, embed_dim):
super().__init__()
self.embedding = nn.Embedding(feature_dim, embed_dim)
self.res_blocks = nn.Sequential(
ResidualBlock(embed_dim*2),
ResidualBlock(embed_dim*2)
)
self.scoring = nn.Linear(embed_dim*2, 1)
def forward(self, x):
emb = self.embedding(x)
stacked = torch.cat(emb, dim=1)
res_out = self.res_blocks(stacked)
return torch.sigmoid(self.scoring(res_out))
几乎同期提出的NeuralCF模型则改进了传统的矩阵分解方法:
| 对比维度 | 矩阵分解 | NeuralCF |
|---|---|---|
| 交互方式 | 内积操作 | 多层神经网络 |
| 特征交叉 | 线性组合 | 非线性组合 |
| 表达能力 | 较弱 | 更强 |
提示:当用户行为数据充足时,NeuralCF相比传统MF能捕捉更复杂的用户-物品关系
2. 特征交叉技术的演进
PNN(Product-based Neural Network)模型在Deep Crossing基础上引入乘积层,通过内积或外积操作增强特征交互:
- IPNN :使用内积计算特征向量相似度
- OPNN :通过外积生成特征交叉矩阵
- 计算优化 :采用叠加外积矩阵降低计算复杂度
特征交叉技术的重大突破来自Wide & Deep模型,它创造性地结合了:
- Wide部分 :保持记忆能力,处理稀疏ID类特征
- Deep部分 :提供泛化能力,进行深层特征交叉
# Wide & Deep模型结构示例
class WideAndDeep(nn.Module):
def __init__(self, wide_dim, embed_dim):
super().__init__()
self.wide = nn.Linear(wide_dim, 1)
self.deep = nn.Sequential(
nn.Linear(embed_dim*2, 64),
nn.ReLU(),
nn.Linear(64, 32)
)
self.output = nn.Linear(33, 1)
def forward(self, wide_x, deep_x):
wide_out = self.wide(wide_x)
deep_out = self.deep(deep_x)
return torch.sigmoid(
self.output(torch.cat([wide_out, deep_out], dim=1))
)
3. 注意力机制与序列建模
阿里巴巴提出的DIN(Deep Interest Network)模型首次将注意力机制引入推荐系统:
- 用户行为序列建模 :将用户历史行为作为序列处理
- 目标广告相关注意力 :计算行为项与候选广告的相关性
- 加权求和池化 :生成用户兴趣表示
DIEN(Deep Interest Evolution Network)进一步引入GRU网络模拟用户兴趣演化过程:
- 兴趣抽取层 :使用GRU捕捉兴趣迁移
- 兴趣进化层 :加入注意力机制强化目标相关兴趣
- 序列建模优势 :能捕捉用户兴趣的时序变化模式
注意:当用户有跨品类兴趣时,注意力机制能有效聚焦与当前推荐相关的兴趣路径
4. 强化学习在推荐系统中的应用
深度强化学习推荐框架DRN(Deep Reinforcement Learning Network)包含以下关键组件:
| 组件 | 功能 | 实现方式 |
|---|---|---|
| 智能体 | 推荐决策 | DQN网络 |
| 环境 | 用户反馈 | 点击/转化数据 |
| 状态 | 系统刻画 | 用户特征+环境特征 |
| 奖励 | 行为反馈 | 点击率/停留时长 |
其在线学习流程采用竞争梯度下降算法:
- 初始化DQN模型
- 在线收集用户反馈数据
- 定期进行模型微更新(mirco-update)
- 周期性主更新(major-update)
# DRN网络结构示例
class DRN(nn.Module):
def __init__(self, state_dim, action_dim):
super().__init__()
self.fc1 = nn.Linear(state_dim, 64)
self.fc2 = nn.Linear(64, 32)
self.value = nn.Linear(32, 1)
self.advantage = nn.Linear(32, action_dim)
def forward(self, x):
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
value = self.value(x)
adv = self.advantage(x)
return value + adv - adv.mean()
在实际电商场景中,我们发现DIEN结合用户实时行为数据能使CTR提升15-20%,而引入强化学习机制后,长期用户留存指标也有显著改善。模型部署时需要注意在线学习系统的稳定性,建议采用渐进式更新策略。
更多推荐


所有评论(0)