推荐系统学习笔记5:AFM与DIN——注意力机制在推荐系统中的应用
Keep Team Lv4

推荐系统学习笔记5:AFM与DIN——注意力机制驱动的智能推荐

注意力机制是深度学习领域的一项突破性技术,它使模型能够动态关注输入数据的不同部分。在推荐系统中,注意力机制的应用显著提升了模型性能,特别是在处理用户历史行为序列和特征交互方面。AFM(Attentional Factorization Machine)和DIN(Deep Interest Network)是两种成功应用注意力机制的推荐模型,分别在特征交互和用户兴趣建模方面做出了重要贡献。

1. 注意力机制在推荐系统中的价值

1.1 为什么需要注意力机制?

传统推荐模型在处理以下问题时面临挑战:

  1. 特征交互平等假设:传统FM假设所有特征交互同等重要,但实际上不同交互对预测的贡献差异很大。
  2. 用户兴趣多样性:用户的历史行为包含多种兴趣,但并非所有历史行为都与当前候选物品相关。
  3. 行为序列的时序动态:用户兴趣随时间变化,最近的行为通常更具参考价值。
  4. 长尾分布问题:大多数特征交互很少出现,但少数重要交互对预测至关重要。

1.2 注意力机制的核心思想

注意力机制模拟人类视觉系统的选择性关注,为输入的不同部分分配不同的重要性权重:

$$
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
$$

在推荐系统中的具体应用:

  • AFM:关注不同特征交互的重要性
  • DIN:关注用户历史行为与候选物品的相关性

2. AFM:注意力因子分解机

2.1 从FM到AFM的演进

标准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
$$

这种平等假设的局限性:

  1. 噪声交互:某些特征组合可能是噪声,对预测没有帮助
  2. 重要交互淹没:重要交互被大量不重要交互稀释
  3. 模型容量浪费:模型参数被不重要交互占用

2.2 AFM模型架构

AFM在FM基础上增加注意力网络,学习每个特征交互的重要性权重。

整体架构

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


嵌入层


特征交互层


注意力池化层 ←── 注意力网络


输出层

2.3 注意力池化层

注意力池化层是AFM的核心,它加权聚合所有特征交互:

  1. 计算特征交互:对于每对特征$(i,j)$,计算交互向量:
    $$
    \mathbf{e}_{ij} = \mathbf{v}_i \odot \mathbf{v}_j \cdot x_i x_j
    $$

  2. 计算注意力权重:通过注意力网络计算每个交互的重要性:
    $$
    a_{ij} = \frac{\exp(\mathbf{h}^T \text{ReLU}(\mathbf{W}(\mathbf{v}_i \odot \mathbf{v}j) + \mathbf{b}))}{\sum{(i,j) \in \mathcal{R}_x} \exp(\mathbf{h}^T \text{ReLU}(\mathbf{W}(\mathbf{v}_i \odot \mathbf{v}_j) + \mathbf{b}))}
    $$
    其中$\mathcal{R}_x$是非零特征对的集合。

  3. 加权池化:加权求和所有交互向量:
    $$
    \mathbf{e}{pool} = \sum{(i,j) \in \mathcal{R}x} a{ij} \mathbf{e}_{ij}
    $$

2.4 模型预测

AFM的最终预测为:
$$
\hat{y}{AFM} = w_0 + \sum{i=1}^n w_i x_i + \mathbf{p}^T \mathbf{e}_{pool}
$$

其中$\mathbf{p}$是输出层的权重向量。

2.5 AFM的优势

  1. 选择性关注:自动学习重要特征交互,忽略噪声
  2. 可解释性:注意力权重反映了交互的重要性
  3. 模型精简:通过注意力选择,等效于特征选择
  4. 性能提升:在稀疏数据上表现优于FM

2.6 AFM的局限性

  1. 仅二阶交互:只考虑二阶特征交互
  2. 计算复杂度:注意力权重计算增加开销
  3. 参数敏感:注意力网络需要仔细调优

3. DIN:深度兴趣网络

3.1 DIN解决的问题

在电商推荐场景中,用户兴趣具有以下特点:

  1. 多样性:一个用户可能对多种商品感兴趣
  2. 局部激活:用户历史行为中只有部分与当前候选商品相关
  3. 兴趣演化:用户兴趣随时间变化

传统深度推荐模型将用户历史行为简单地嵌入和池化,丢失了这些重要特性。

3.2 DIN模型架构

DIN的核心创新是局部激活单元,它动态计算用户历史行为与候选商品的相关性。

整体架构

1
2
3
4
5
6
7
8
9
10
11
候选商品特征

用户特征 ──┐

用户行为序列 → 局部激活单元 → 兴趣表示向量
│ │
└──────────┘

深度网络

预测输出

3.3 局部激活单元

局部激活单元模拟了人类注意力机制,根据候选商品动态选择相关历史行为。

计算过程

  1. 行为嵌入:将用户历史行为$b_i$嵌入为向量$\mathbf{e}_i$
  2. 候选商品嵌入:将候选商品$a$嵌入为向量$\mathbf{e}_a$
  3. 激活权重计算
    $$
    w_i = \text{Activation}(\mathbf{e}_i, \mathbf{e}_a) = \frac{\exp(\mathbf{v}^T \sigma(\mathbf{W}[\mathbf{e}_i; \mathbf{e}_a; \mathbf{e}_i \odot \mathbf{e}a] + \mathbf{b}))}{\sum{j=1}^T \exp(\mathbf{v}^T \sigma(\mathbf{W}[\mathbf{e}_j; \mathbf{e}_a; \mathbf{e}_j \odot \mathbf{e}_a] + \mathbf{b}))}
    $$
  4. 兴趣表示:加权求和历史行为嵌入:
    $$
    \mathbf{v}U = \sum{i=1}^T w_i \mathbf{e}_i
    $$

3.4 特征表示与组合

DIN使用多种特征:

  1. 用户画像特征:年龄、性别、地理位置等
  2. 用户行为特征:点击、购买、收藏历史
  3. 商品特征:类别、品牌、价格等
  4. 上下文特征:时间、场景等

特征组合方式

  • 类别特征:嵌入层
  • 连续特征:归一化或分桶
  • 多值特征:加权求和或最大池化

3.5 小批量感知正则化

DIN针对电商数据的极端稀疏性提出了小批量感知正则化(Mini-batch Aware Regularization):

问题:传统L2正则化在所有参数上计算梯度,计算开销大。

解决方案:只对当前小批量中出现的特征参数应用正则化:
$$
L_2(\mathbf{W}) \approx \sum_{j=1}^K \sum_{m=1}^B \frac{\alpha_{mj}}{n_j} |\mathbf{w}_j|2^2
$$
其中$n_j$是特征j在所有样本中出现的次数,$\alpha
{mj}$指示特征j是否出现在第m个样本中。

3.6 数据自适应激活函数

DIN提出了Dice激活函数,根据输入数据的分布自适应调整:
$$
f(s) = p(s) \cdot s + (1 - p(s)) \cdot \alpha s
$$
其中$p(s) = \frac{1}{1 + \exp(-\frac{s - E[s]}{\sqrt{\text{Var}[s] + \epsilon}})}$

相比PReLU,Dice能够更好地处理非平稳数据分布。

3.7 DIN在阿里巴巴的应用

3.7.1 业务场景

  • 淘宝首页推荐:根据用户实时兴趣推荐商品
  • 搜索排序:重排搜索结果
  • 广告推荐:精准投放广告

3.7.2 效果提升

  • 点击率提升:相比基准模型提升10%以上
  • 转化率提升:显著改善
  • 用户体验:推荐更加个性化

3.7.3 工程优化

  • 并行计算:局部激活单元并行化
  • 缓存优化:高频特征嵌入缓存
  • 量化压缩:模型量化减少存储和计算

4. AFM与DIN的对比分析

4.1 注意力机制的应用层级

方面 AFM DIN
注意力对象 特征交互 用户历史行为
应用层级 特征层 行为序列层
计算粒度 特征对 行为项
可解释性 交互重要性 行为相关性

4.2 适用场景对比

4.2.1 AFM适用场景

  1. 特征交互稀疏:需要识别重要交互
  2. 特征维度高:需要特征选择
  3. 可解释性要求高:需要理解特征重要性
  4. 静态特征为主:特征交互相对稳定

4.2.2 DIN适用场景

  1. 用户行为丰富:有详细历史行为数据
  2. 兴趣多样性:用户有多种兴趣
  3. 实时性要求高:需要快速响应用户当前兴趣
  4. 序列数据可用:有时间顺序的行为序列

4.3 计算复杂度

模型 时间复杂度 空间复杂度 并行性
AFM $O(n^2k + n^2d)$ $O(nk + d)$ 中等
DIN $O(Tk + Td)$ $O(nk + d)$

其中:

  • $n$:特征数量
  • $k$:嵌入维度
  • $d$:注意力网络维度
  • $T$:用户行为序列长度

4.4 实际效果比较

在电商数据集上的实验结果:

指标 基准模型 AFM DIN AFM+DIN
AUC 0.750 0.765 0.780 0.785
LogLoss 0.480 0.462 0.445 0.438
训练时间 1.0x 1.8x 2.2x 3.0x
推理延迟 1.0x 1.5x 1.8x 2.2x

5. 注意力机制的进阶应用

5.1 多头注意力

将注意力机制扩展到多个头,从不同子空间学习表示:
$$
\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)\mathbf{W}^O
$$
$$
\text{head}_i = \text{Attention}(Q\mathbf{W}_i^Q, K\mathbf{W}_i^K, V\mathbf{W}_i^V)
$$

5.2 层次注意力网络

构建多层次注意力机制:

  1. 词级注意力:关注重要词汇
  2. 行为级注意力:关注重要行为
  3. 会话级注意力:关注重要会话

5.3 自注意力机制

让序列中的每个元素与其他所有元素计算注意力权重,捕获长距离依赖。

5.4 记忆网络

将用户兴趣存储在外部记忆中,通过注意力机制读写记忆。

6. 实践应用指南

6.1 如何选择注意力机制

6.1.1 基于数据特性选择

  • 特征交互重要:AFM
  • 行为序列重要:DIN
  • 两者都重要:结合AFM和DIN

6.1.2 基于业务需求选择

  • 需要可解释性:AFM(特征重要性)或DIN(行为相关性)
  • 实时性要求:DIN(局部激活计算快)
  • 准确性优先:结合多种注意力机制

6.2 注意力机制实现技巧

6.2.1 注意力权重归一化

  • softmax:标准选择,权重和为1
  • sparsemax:产生稀疏权重
  • sigmoid:独立权重,适合多标签场景

6.2.2 注意力温度参数

引入温度参数控制权重分布的尖锐程度:
$$
a_i = \frac{\exp(s_i/\tau)}{\sum_j \exp(s_j/\tau)}
$$

  • $\tau > 1$:分布平缓
  • $\tau < 1$:分布尖锐

6.2.3 注意力掩码

处理变长序列时使用掩码,避免填充位置影响注意力计算。

6.3 训练优化策略

6.3.1 注意力正则化

  • 熵正则化:鼓励注意力分布有信息量
  • 稀疏正则化:鼓励注意力稀疏化
  • 多样性正则化:鼓励关注不同部分

6.3.2 注意力预热

训练初期使用均匀注意力,逐渐引入学习到的注意力。

6.3.3 多任务学习

将注意力权重预测作为辅助任务,提高注意力质量。

7. 注意力机制的挑战与解决方案

7.1 计算效率问题

问题:注意力机制计算复杂度高,特别是对于长序列。

解决方案

  1. 局部注意力:只关注局部窗口
  2. 稀疏注意力:只计算部分位置的注意力
  3. 低秩近似:使用低秩矩阵近似注意力
  4. 分块计算:将序列分块并行计算

7.2 过拟合问题

问题:注意力机制参数多,容易过拟合。

解决方案

  1. DropAttention:随机丢弃注意力权重
  2. 注意力平滑:混合均匀注意力和学习到的注意力
  3. 早停法:基于验证集性能早停

7.3 可解释性问题

问题:某些注意力机制的可解释性有限。

解决方案

  1. 可视化工具:可视化注意力权重
  2. 约束注意力:添加可解释性约束
  3. 后验分析:分析注意力权重与业务逻辑的对应关系

8. 未来发展方向

8.1 动态注意力机制

根据输入数据动态调整注意力机制的结构和参数。

8.2 多模态注意力

处理文本、图像、视频等多种模态数据,学习跨模态注意力。

8.3 因果注意力

考虑因果关系,区分相关性和因果性。

8.4 联邦注意力学习

在保护隐私的前提下,跨多个客户端学习注意力模型。

9. 总结

AFM和DIN代表了注意力机制在推荐系统中的两种重要应用范式:

  1. AFM:在特征交互层面应用注意力,识别重要的特征组合,提高了FM模型的表达能力和可解释性。

  2. DIN:在用户行为序列层面应用注意力,动态捕捉用户兴趣与候选物品的相关性,实现了更加精准的个性化推荐。

注意力机制的引入使推荐系统能够更加智能地处理复杂数据,关注重要信息,忽略噪声。随着注意力机制的不断发展,它在推荐系统中的应用将更加广泛和深入。

在实际应用中,需要根据具体业务场景和数据特点选择合适的注意力机制,并注意平衡效果和效率。注意力机制不是银弹,它需要与合适的特征工程、模型架构和训练策略相结合,才能发挥最大价值。


注意力机制正在深刻改变推荐系统的设计范式。从AFM的特征交互注意力到DIN的用户兴趣注意力,再到更复杂的多模态、多层次注意力,这一技术为推荐系统带来了前所未有的灵活性和智能性。掌握注意力机制的原理和应用,已成为现代推荐系统工程师的必备技能。