第 87 题:多兴趣召回(MIND),动态路由的胶囊网络实现细节?
题目
多兴趣召回(MIND),动态路由的胶囊网络实现细节?
完整讲解
一、MIND 与多兴趣召回
MIND(Multi-Interest Network with Dynamic Routing)做多兴趣召回:用户有多个兴趣,用多个兴趣向量表示,召回时用每个兴趣向量分别检索再合并,从而覆盖「多兴趣」、提升召回多样性与命中率。核心是如何从用户行为序列中动态生成多个兴趣向量。
二、动态路由与胶囊网络
- 胶囊与动态路由:将每个行为物品视为一个「胶囊」(向量),用户侧有 $K$ 个兴趣胶囊。动态路由迭代地计算「行为胶囊 → 兴趣胶囊」的归属:兴趣胶囊由行为胶囊的加权和得到,权重由当前兴趣与行为的相似度(如内积)经 softmax 得到;下一轮用更新后的兴趣胶囊再算权重,如此迭代 2~3 轮,使兴趣胶囊自动聚类行为,形成 $K$ 个兴趣向量。
- 公式:设行为嵌入 $\boldsymbol{e}i$,兴趣胶囊 $\boldsymbol{c}_j$,路由系数 $b{ij}$ 经 softmax 得 $w_{ij}$,更新 $\boldsymbol{c}j = \text{squash}(\sum_i w{ij} \boldsymbol{e}i)$,squash 为压缩模长的非线性;$b{ij}$ 每轮加上 $\boldsymbol{e}_i^\top \boldsymbol{c}_j$(兴趣-行为一致性)再 softmax,实现动态路由。
- 实现细节:$K$ 为超参(兴趣数);迭代轮数通常 2~3;squash 保证胶囊模长在 (0,1);训练时用多兴趣向量与正样本的相似度(如 max 或 sum)做损失,负样本用 in-batch 或采样。
三、与双塔的结合
- 用户侧输出 $K$ 个兴趣向量;物品侧仍为单塔。召回时用 $K$ 个兴趣分别 ANN 检索,取并集或按分融合,实现多兴趣召回。
面试要点
- 能说明 MIND 目标:多兴趣向量表示用户,多兴趣分别召回再合并;动态路由从行为序列生成 $K$ 个兴趣胶囊。
- 能解释胶囊与动态路由:行为为胶囊,兴趣胶囊由行为加权和得到,权重由兴趣-行为相似度迭代更新(2~3 轮),squash 压缩模长。
- 能提及 $K$、迭代轮数、训练时多兴趣与正负样本的损失形式。
记忆要点
- MIND:多兴趣召回;$K$ 个兴趣向量,动态路由从行为序列生成。
- 动态路由:行为胶囊 → 兴趣胶囊,权重由相似度迭代更新,squash;2~3 轮。
- 召回:$K$ 个兴趣分别 ANN,结果合并。