M7-061M7: Retrieval, Ranking & RecSysDeep Recommendation ModelsMedium
Mastery:

Deep Recommendation Models: 解释 DIN(深度兴趣网络)的注意力机制。

📐 Mathematical Definition
DIN: vu(item)=∑i∈historyα(item,i)⋅ei;α=attention\text{DIN}:\ v_u(\text{item})=\sum_{i\in\text{history}}\alpha(\text{item},i)\cdot e_i;\qquad \alpha=\text{attention}
⚡ Executive Summary
Core Concept: 用'候选物品'作为 query 对用户历史行为做注意力(而非固定池化),使用户表示'随候选物品变化'。

📌 Key Takeaways

  • •
    用户历史行为的嵌入 + 注意力权重(query = 候选物品)
  • •
    注意力使'用户表示随候选变化'(而非固定向量)
  • •
    再加'注意力激活单元'保留兴趣强度信息

📐 Mathematical Derivations

数学机理:<strong>DIN(Deep Interest Network,Zhou 等 2018,阿里)</strong> 的动机与机制——(1) <strong>'固定用户向量'的问题</strong>——传统做法把'用户历史行为的嵌入'做<strong>固定池化</strong>(如 sum/mean)得到<strong>一个固定</strong>的用户向量;<strong>问题</strong>——(a) 用户兴趣是<strong>多样的</strong>(喜欢'化妆品'也喜欢'运动');(b) <strong>候选物品不同,相关的历史行为不同</strong>(推荐'运动鞋'时应关注'运动'行为,推荐'口红'时应关注'化妆'行为);(c) 固定池化把'所有兴趣'平均,<strong>稀释了与当前候选相关的兴趣</strong>。(2) <strong>DIN 的注意力机制</strong>——用<strong>候选物品作为 query</strong>,对用户历史行为做<strong>注意力</strong>:v_u(item)=Σ_{i∈history} α(item, i)·e_i,其中 (a) <strong>e_i</strong> 是第 i 个历史物品的嵌入;(b) <strong>α(item, i)</strong> 是'候选物品 item 与历史物品 i 的注意力权重'(通过一个小 MLP 计算 [e_item, e_i, e_item−e_i] 的输出);(c) <strong>关键</strong>——<strong>用户表示随候选物品变化</strong>('自适应');(d) <strong>对比 Transformer 的 self-attention</strong>——DIN 的注意力是'候选物品(query)对历史(key/value)'的<strong>外部注意力</strong>(cross-attention 风格),而非'历史内部的自注意力';且<strong>无 softmax 归一化</strong>(DIN 用'注意力激活单元'而非 softmax——见下)。(3) <strong>注意力激活单元(activation unit)</strong>——(a) DIN 不用标准 softmax 注意力,而是用一个<strong>小 MLP</strong> 输出 α,并<strong>保留'未归一化'的注意力总和</strong>(作为'兴趣强度'的额外特征);(b) <strong>为什么</strong>——softmax 的归一化会<strong>丢失'兴趣的绝对强度'</strong>('看了 100 次'与'看了 1 次'的权重差异被归一化掉);保留总和可让模型利用'强度'信息。(4) <strong>其他技术</strong>——(a) <strong>自适应正则(adaptive regularization)</strong>——对'高频特征'用更强的正则(因为高频特征的嵌入更新多、易过拟合);(b) <strong>Dice 激活函数</strong>(数据分布自适应的激活)。<strong>优势</strong>——(a) <strong>表达力强</strong>(用户表示自适应);(b) <strong>可解释</strong>(注意力权重显示'哪些历史行为影响了推荐');(c) 在电商场景显著提升(阿里的实验)。<strong>局限</strong>——(a) <strong>长序列的计算成本</strong>(注意力 ∝ 序列长度);(b) 序列很长时需截断/采样;(c) 未建模'时序'(后续有 DIEN 用 GRU 建模兴趣演化)。<strong>后续发展</strong>——(a) <strong>DIEN</strong>(用 GRU + 注意力建模兴趣演化);(b) <strong>DSIN</strong>(会话划分 + 会话内/间注意力);(c) <strong>BST</strong>(用 Transformer 建模行为序列);(d) <strong>SIM</strong>(长序列的两阶段检索——先用'通用兴趣'粗筛、再精算)。<strong>与'序列推荐'的关系</strong>——(a) DIN 关注'候选相关的行为'(attention);(b) SASRec 关注'行为顺序'(sequence);(c) 两者可结合(如 BST 用 Transformer + 位置编码)。<strong>评估</strong>——(a) AUC/GAUC;(b) 在线 CTR。<strong>实践建议</strong>——(a) <strong>有丰富行为历史</strong> → DIN 类模型;(b) <strong>序列很长</strong> → 用 SIM(两阶段)或截断;(c) <strong>需建模演化</strong> → DIEN;(d) <strong>与序列模型结合</strong>(BST)。<strong>度量</strong>——(a) AUC/GAUC;(b) 在线 CTR;(c) 延迟(序列长度的影响)。

🏭 Production Trade-offs

深度剖析与工程权衡:① <strong>'用户表示随候选变化'是 DIN 的核心洞察</strong>——固定池化会稀释相关兴趣;面试中能指出这一点是深度理解的标志。② <strong>'DIN 的注意力是外部注意力(cross-attention 风格)'</strong>——与 Transformer 的 self-attention 不同(候选作 query、历史作 key/value)。③ <strong>'保留未归一化的注意力总和'是 DIN 的细节</strong>——softmax 会丢失'兴趣强度';故用激活单元。④ <strong>'长序列的计算成本'</strong>——注意力 ∝ 序列长度;故需 SIM(两阶段检索)处理超长序列。⑤ <strong>'DIEN 建模兴趣演化'</strong>——DIN 未建模时序,DIEN 用 GRU 补充。⑥ <strong>面试要点</strong>——被问'DIN 是什么',应给出'<strong>候选作 query 对历史做注意力(用户表示自适应)+ 激活单元(保留兴趣强度)</strong>'与'<strong>与 self-attention 的差异、长序列用 SIM</strong>';能指出'固定池化稀释相关兴趣'是深度理解的标志。
⚠️ Common Interview Pitfalls
  • ✕
    用固定池化(mean/sum)聚合历史(稀释相关兴趣)
  • ✕
    用 softmax 归一化(丢失兴趣强度)
🎯 Interviewer Follow-ups
  • ?
    为什么'固定用户向量'不够?
  • ?
    DIN 的注意力与 Transformer 的差异?
📚

Associated Knowledge Base Guides & Mindmaps

Explore the comprehensive technical article, exam cards, and global architecture tree.

← PreviousM7-060: Deep Recommendation Models: 解释 DeepFM 相比 Wide&Deep 的改进。📋Back to BankNext →M7-062: Deep Recommendation Models: 解释 MMoE 与多任务学习在推荐中的应用。