推荐系统学习笔记5:AFM与DIN——注意力机制驱动的智能推荐
注意力机制是深度学习领域的一项突破性技术,它使模型能够动态关注输入数据的不同部分。在推荐系统中,注意力机制的应用显著提升了模型性能,特别是在处理用户历史行为序列和特征交互方面。AFM(Attentional Factorization Machine)和DIN(Deep Interest Network)是两种成功应用注意力机制的推荐模型,分别在特征交互和用户兴趣建模方面做出了重要贡献。
1. 注意力机制在推荐系统中的价值
1.1 为什么需要注意力机制?
传统推荐模型在处理以下问题时面临挑战:
- 特征交互平等假设:传统FM假设所有特征交互同等重要,但实际上不同交互对预测的贡献差异很大。
- 用户兴趣多样性:用户的历史行为包含多种兴趣,但并非所有历史行为都与当前候选物品相关。
- 行为序列的时序动态:用户兴趣随时间变化,最近的行为通常更具参考价值。
- 长尾分布问题:大多数特征交互很少出现,但少数重要交互对预测至关重要。
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
$$
这种平等假设的局限性:
- 噪声交互:某些特征组合可能是噪声,对预测没有帮助
- 重要交互淹没:重要交互被大量不重要交互稀释
- 模型容量浪费:模型参数被不重要交互占用
2.2 AFM模型架构
AFM在FM基础上增加注意力网络,学习每个特征交互的重要性权重。
整体架构:
1 | 输入特征 |
2.3 注意力池化层
注意力池化层是AFM的核心,它加权聚合所有特征交互:
计算特征交互:对于每对特征$(i,j)$,计算交互向量:
$$
\mathbf{e}_{ij} = \mathbf{v}_i \odot \mathbf{v}_j \cdot x_i x_j
$$计算注意力权重:通过注意力网络计算每个交互的重要性:
$$
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$是非零特征对的集合。加权池化:加权求和所有交互向量:
$$
\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的优势
- 选择性关注:自动学习重要特征交互,忽略噪声
- 可解释性:注意力权重反映了交互的重要性
- 模型精简:通过注意力选择,等效于特征选择
- 性能提升:在稀疏数据上表现优于FM
2.6 AFM的局限性
- 仅二阶交互:只考虑二阶特征交互
- 计算复杂度:注意力权重计算增加开销
- 参数敏感:注意力网络需要仔细调优
3. DIN:深度兴趣网络
3.1 DIN解决的问题
在电商推荐场景中,用户兴趣具有以下特点:
- 多样性:一个用户可能对多种商品感兴趣
- 局部激活:用户历史行为中只有部分与当前候选商品相关
- 兴趣演化:用户兴趣随时间变化
传统深度推荐模型将用户历史行为简单地嵌入和池化,丢失了这些重要特性。
3.2 DIN模型架构
DIN的核心创新是局部激活单元,它动态计算用户历史行为与候选商品的相关性。
整体架构:
1 | 候选商品特征 |
3.3 局部激活单元
局部激活单元模拟了人类注意力机制,根据候选商品动态选择相关历史行为。
计算过程:
- 行为嵌入:将用户历史行为$b_i$嵌入为向量$\mathbf{e}_i$
- 候选商品嵌入:将候选商品$a$嵌入为向量$\mathbf{e}_a$
- 激活权重计算:
$$
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}))}
$$ - 兴趣表示:加权求和历史行为嵌入:
$$
\mathbf{v}U = \sum{i=1}^T w_i \mathbf{e}_i
$$
3.4 特征表示与组合
DIN使用多种特征:
- 用户画像特征:年龄、性别、地理位置等
- 用户行为特征:点击、购买、收藏历史
- 商品特征:类别、品牌、价格等
- 上下文特征:时间、场景等
特征组合方式:
- 类别特征:嵌入层
- 连续特征:归一化或分桶
- 多值特征:加权求和或最大池化
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适用场景
- 特征交互稀疏:需要识别重要交互
- 特征维度高:需要特征选择
- 可解释性要求高:需要理解特征重要性
- 静态特征为主:特征交互相对稳定
4.2.2 DIN适用场景
- 用户行为丰富:有详细历史行为数据
- 兴趣多样性:用户有多种兴趣
- 实时性要求高:需要快速响应用户当前兴趣
- 序列数据可用:有时间顺序的行为序列
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 层次注意力网络
构建多层次注意力机制:
- 词级注意力:关注重要词汇
- 行为级注意力:关注重要行为
- 会话级注意力:关注重要会话
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 计算效率问题
问题:注意力机制计算复杂度高,特别是对于长序列。
解决方案:
- 局部注意力:只关注局部窗口
- 稀疏注意力:只计算部分位置的注意力
- 低秩近似:使用低秩矩阵近似注意力
- 分块计算:将序列分块并行计算
7.2 过拟合问题
问题:注意力机制参数多,容易过拟合。
解决方案:
- DropAttention:随机丢弃注意力权重
- 注意力平滑:混合均匀注意力和学习到的注意力
- 早停法:基于验证集性能早停
7.3 可解释性问题
问题:某些注意力机制的可解释性有限。
解决方案:
- 可视化工具:可视化注意力权重
- 约束注意力:添加可解释性约束
- 后验分析:分析注意力权重与业务逻辑的对应关系
8. 未来发展方向
8.1 动态注意力机制
根据输入数据动态调整注意力机制的结构和参数。
8.2 多模态注意力
处理文本、图像、视频等多种模态数据,学习跨模态注意力。
8.3 因果注意力
考虑因果关系,区分相关性和因果性。
8.4 联邦注意力学习
在保护隐私的前提下,跨多个客户端学习注意力模型。
9. 总结
AFM和DIN代表了注意力机制在推荐系统中的两种重要应用范式:
AFM:在特征交互层面应用注意力,识别重要的特征组合,提高了FM模型的表达能力和可解释性。
DIN:在用户行为序列层面应用注意力,动态捕捉用户兴趣与候选物品的相关性,实现了更加精准的个性化推荐。
注意力机制的引入使推荐系统能够更加智能地处理复杂数据,关注重要信息,忽略噪声。随着注意力机制的不断发展,它在推荐系统中的应用将更加广泛和深入。
在实际应用中,需要根据具体业务场景和数据特点选择合适的注意力机制,并注意平衡效果和效率。注意力机制不是银弹,它需要与合适的特征工程、模型架构和训练策略相结合,才能发挥最大价值。
注意力机制正在深刻改变推荐系统的设计范式。从AFM的特征交互注意力到DIN的用户兴趣注意力,再到更复杂的多模态、多层次注意力,这一技术为推荐系统带来了前所未有的灵活性和智能性。掌握注意力机制的原理和应用,已成为现代推荐系统工程师的必备技能。