前言
本次分享2019年由阿里团队发表在CIKM上的论文“Multi-Interest Network with Dynamic Routing for Recommendation at Tmall”,应用胶囊网络的动态路由算法来构建一个多兴趣网络MIND,是一个召回阶段的模型。
本文约4.2k字,预计阅读15分钟。

1. 背景
文章是基于「手机天猫App」的背景来探索在十亿级别的天猫用户和商品中,给每个用户进行个性化的推荐。天猫的推荐(工业推荐)的流程主要分为「召回阶段和排序阶段」。召回阶段负责检索数千个与用户兴趣相关的候选物品,之后,排序阶段预测用户与这些候选物品交互的精确概率。「文章做的是召回阶段的工作」,来对满足用户兴趣的物品的有效检索。
1.1 多兴趣
建立「用户兴趣模型」和「寻找用户兴趣表示」是非常重要的。但在天猫塑造用户兴趣并不是一件小事,因为「用户的兴趣存在着多样性」。平均上,10亿用户访问天猫,每个用户每天与数百种产品互动。交互后的物品往往属于不同的类别,说明用户兴趣的多样性。
1.2 用户兴趣表示
基于协同过滤的方法通过历史交互物品或隐藏因子来表示用户兴趣,但会遇到「稀疏或计算问题」;
基于深度学习的方法用低维Embedding向量表示用户兴趣,但作者认为,这是「多兴趣表示的一个瓶颈」,因为不得不去压缩所有与用户多兴趣相关的的所有信息到一个表示向量,所有关于用户多兴趣的所有信息是混合在一起的,导致召回阶段的物品检索不准确。除非维度特别大,才能表示大量的兴趣信息(而维度一般会选择较小的值:8,16,32等);
DIN在Embedding的基础上加入Attention,来捕捉用户兴趣的多样性。但采用Attention机制,「对于每一个目标物品,都需要重新计算用户表示」,因此无法应用在召回阶段(DIN属于CTR模型);
1.3 胶囊网络
Hinton在2011年首次提出了“胶囊”的概念,“胶囊”是一组聚合起来输出整个向量的小神经元。采用动态路由代替反向传播来学习胶囊之间的连接权值,并利用期望最大化算法(EM)对其进行改进,克服了一些不足,获得了更好的精度。
对于胶囊网络和动态路由学习有帮助的博客:
https://medium.com/ai%C2%B3-theory-practice-business/understanding-hintons-capsule-networks-part-i-intuition-b4b559d1159b
https://medium.com/ai%C2%B3-theory-practice-business/understanding-hintons-capsule-networks-part-ii-how-capsules-work-153b6ade9f66
https://medium.com/ai%C2%B3-theory-practice-business/understanding-hintons-capsule-networks-part-iii-dynamic-routing-between-capsules-349f6d30418
2. 主要贡献
文章关注的是在召回阶段用户的多兴趣的问题,提出了使用「动态路由的多兴趣网络(MIND)」 来学习用户表示。
最主要的「创新点」是:采用胶囊网络的动态路由算法来获得用户多兴趣表示,将用户的历史行为聚集成多个集合内容,每一组历史行为进一步用于推断对应特定兴趣的用户表示向量。这样,对于一个特定的用户,MND输出了多个表示向量,它们共同代表了用户的不同兴趣。「用户表示向量只计算一次」(与DIN比较理解),可用于在匹配阶段从十亿个尺度的物品中检索相关物品。
3. MIND模型

3.1 问题表示
一篇足够优秀的论文,都会有对整篇论文研究的问题进行公式化描述。
3.1.1 任务目标
召回任务的目标是对于每一个用户 从十亿规模的物品池 检索出包含与用户兴趣相关的上千个物品集。
3.1.2 输入内容
对于模型,每个样本的输入可以表示为一个三元组: ,其中 代表与用户 交互过的物品集,即用户的历史行为; 表示用户的属性,例如性别、年龄等; 定义为目标物品 的一些特征,例如物品id和种类id等。
3.1.3 核心任务
MIND的核心任务是学习一个从原生特征映射到「用户表示」的函数,用户表示定义为:
其中 为用户 的表示向量, 为embedding的维度, 是表示向量的数量,即兴趣的数量。若 ,即其他模型(如Youtube DNN)的Embedding表示方式。
目标物品 的embedding函数为: