Fun-Rec项目中的深度兴趣网络(DIN)模型解析
引言
在推荐系统领域,如何有效捕捉用户动态变化的兴趣一直是一个核心挑战。阿里巴巴在2018年提出的深度兴趣网络(Deep Interest Network, DIN)模型,通过引入注意力机制,为这一挑战提供了创新性的解决方案。本文将深入解析DIN模型的原理、架构及实现细节,帮助读者全面理解这一重要模型。
DIN模型的业务背景与动机
电商推荐场景的特殊性
电商广告推荐场景具有两个显著特点:
- 用户会产生大量历史行为数据(浏览、购买等)
- 用户兴趣具有多样性和动态性
传统Embedding&MLP模型在处理这类场景时存在明显不足:
- 将所有历史行为特征简单拼接,忽略了不同行为对当前预测的重要性差异
- 无法自适应地捕捉用户兴趣的动态变化
- 池化操作会丢失历史行为的细粒度信息
注意力机制的引入
DIN模型的核心创新在于引入了注意力机制,具体表现为:
- 局部激活单元:计算候选商品与历史行为商品的相关性
- 动态权重分配:根据相关性为历史行为分配不同权重
- 兴趣强度保留:不使用softmax归一化,保留原始相关性分数
这种设计使得模型能够:
- 聚焦于与当前候选商品相关的历史行为
- 自适应地调整用户兴趣表示
- 保留用户对特定商品的兴趣强度
DIN模型架构详解
特征表示与处理
DIN模型处理的特征主要分为三类:
- 稠密特征(Dense):连续型数值特征
- 稀疏特征(Sparse):离散型类别特征
- 变长稀疏特征(VarlenSparse):用户历史行为序列
特征处理流程:
- 稀疏特征通过Embedding层转换为低维稠密向量
- 变长稀疏特征需要先进行padding处理,然后同样通过Embedding层
- 稠密特征直接拼接使用
核心组件:注意力池化层
注意力池化层(AttentionPoolingLayer)是DIN模型的核心创新,其工作流程如下:
-
输入准备:
- 候选商品embedding:作为查询向量(query)
- 历史行为商品embedding:作为键向量(keys)
-
注意力计算:
- 通过前馈神经网络计算query与每个key的相关性分数
- 输入包括原始embedding和它们的外积(显式交叉特征)
-
加权求和:
- 使用相关性分数作为权重,对历史行为embedding进行加权求和
- 得到用户针对当前候选商品的兴趣表示
数学表达式: $$ \boldsymbol{v}{U}(A)=\sum{j=1}^{H} a\left(\boldsymbol{e}{j}, \boldsymbol{v}{A}\right) \boldsymbol{e}_{j} $$
其中$a(\cdot)$是注意力网络,$\boldsymbol{e}{j}$是历史行为embedding,$\boldsymbol{v}{A}$是候选商品embedding。
模型整体架构
DIN模型的完整架构包含以下层次:
- 输入层:接收各类特征输入
- Embedding层:处理稀疏特征和变长序列特征
- 注意力池化层:计算历史行为与候选商品的相关性
- 拼接层:合并稠密特征、稀疏特征和注意力加权后的序列特征
- DNN层:学习高阶特征交互
- 输出层:预测点击概率
DIN模型的实现要点
数据处理注意事项
-
序列padding处理:
- 不同用户的历史行为序列长度不同
- 需要统一padding到相同长度
- 使用mask机制标识padding位置
-
特征分组处理:
- 区分稠密、稀疏和变长稀疏特征
- 分别进行不同的预处理
关键实现步骤
- 输入层构建:为每种特征类型创建对应的Input层
- Embedding层构建:为离散特征创建Embedding矩阵
- 注意力计算:
# 获取当前行为和历史行为的embedding query_embed = embedding_lookup(behavior_feature, input_layer, embedding_layer) keys_embed = embedding_lookup(behavior_seq_feature, input_layer, embedding_layer) # 应用注意力池化 seq_embed = AttentionPoolingLayer()([query_embed, keys_embed]) - 特征拼接:合并各类处理后的特征
- DNN构建:实现多层感知机进行最终预测
模型优化技巧
-
注意力网络设计:
- 加入外积特征增强交互信息
- 使用PReLU激活函数
- 保持注意力权重非归一化
-
训练技巧:
- 使用自适应学习率优化器
- 采用早停策略防止过拟合
- 合理设置batch size
实际应用思考
DIN模型在工业实践中仍有多个值得探索的方向:
-
序列分割策略:
- 是否应该按时间窗口分割长序列?
- 如何平衡近期行为和长期兴趣?
-
注意力机制改进:
- 能否使用其他注意力计算方式(如Transformer中的缩放点积注意力)?
- 是否应该引入多头注意力机制?
-
特征工程优化:
- 如何更好地构建行为序列特征?
- 是否应该引入时间衰减因子?
-
模型扩展:
- 能否结合图神经网络捕捉商品间高阶关系?
- 如何融入用户画像特征增强个性化?
总结
DIN模型通过创新的注意力机制,有效解决了传统推荐模型在捕捉用户动态兴趣方面的不足。其核心价值在于:
- 业务适配性:紧密结合电商推荐场景特点
- 模型创新性:引入局部激活单元实现动态兴趣建模
- 实现简洁性:在基础模型上添加注意力模块,易于实现
理解DIN模型不仅有助于掌握推荐系统中的注意力机制应用,也为后续更复杂的模型(如DIEN、DSIN等)打下了坚实基础。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



