核心要点

  • 传统模型把用户历史行为做定长 sum/avg pooling,丢失了与候选的相关性

  • DIN 用注意力:以候选广告为 query,对用户历史行为加权求和(局部激活

  • 只有与当前候选相关的历史行为被激活,兴趣表示随候选动态变化

  • DIEN 在 DIN 基础上用 GRU + 兴趣抽取/演化层建模兴趣随时间的演化

标准回答

问题:用户历史行为很丰富,但对某个具体候选广告,只有部分历史是相关的。传统做法对行为序列做 sum/average pooling 得到固定用户向量,无论推什么都一样,无法表达「兴趣的多样性与局部相关性」。

DIN 的局部激活(Local Activation):以候选广告作为 query,对用户历史行为序列中的每个物品计算注意力权重(activation unit),再做加权求和得到用户兴趣向量。这样推不同候选时,被「激活」的历史行为不同——推手机时手机相关行为权重高,推衣服时衣服相关行为权重高,用户表示随候选动态变化。

DIEN 的兴趣演化:DIN 没有显式建模兴趣的时间演化。DIEN 增加两层:兴趣抽取层用 GRU 从行为序列抽取每一步的潜在兴趣,兴趣演化层用带注意力的 AUGRU 建模兴趣随时间的迁移,更好捕捉「兴趣漂移」。

二者都是阿里在 CTR 预估精排阶段的代表性序列建模工作。

常见误区

⚠️ 常见踩坑

DIN 的注意力 query 是「候选广告」而非用户自身;它解决的是「历史行为对当前候选的相关性加权」,不是普通自注意力。漏掉「随候选动态变化」就答错了核心。

追问

追问 1DIN 的注意力为什么不用 softmax 归一化权重?

DIN 刻意不对注意力权重做 softmax 归一化,而是保留权重之和反映「相关历史的总强度」。归一化会抹掉用户对某候选历史证据多寡的信息,导致不同候选的兴趣强度不可比。

追问 2DIEN 相比 DIN 解决了什么?

DIN 把历史行为看作无序集合,忽略时间演化。DIEN 用 GRU 显式建模兴趣随时间的产生与漂移,并用辅助 loss 监督每步兴趣,更适合兴趣快速变化的场景。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。