1. 写在前面
今天整理的是MIND模型(Multi-Interest Network with Dynamic Routing), 这是阿里团队2019年在CIKM上发的一篇paper,该模型依然是用在召回阶段的一个模型,解决的痛点是之前在召回阶段的模型,比如双塔,上一篇介绍的YouTubeDNN召回模型等,在模拟用户兴趣的时候,总是基于用户的历史点击,最后通过pooling的方式得到一个兴趣向量,用该向量来表示用户的兴趣,但是该篇论文的作者认为,用一个向量来表示用户的广泛兴趣未免有点太过于单一,这是作者基于天猫的实际场景出发的发现,每个用户每天与数百种产品互动, 而互动的产品往往来自于很多个类别,这就说明用户的兴趣极其广泛,用一个向量是无法表示这样广泛的兴趣的,当然,即使能,向量的维度也会很大,会带来计算上的压力,于是乎,就自然而然的引出一个问题,有没有可能用多个向量来表示用户的多种兴趣呢? 如果这个问题交给我们想,我们应该也能想到解决方法,既然用户交互的历史商品很多,又来自不同的种类,那么我们完全可以对这些历史商品先聚类,然后每一类里面的商品进行pooling,不就得到多个向量来表示用户的多个兴趣了?
读完这篇paper之后,我感觉作者思考出发点应该也是这样,但是人家用了一种更加优雅的方式对用户交互过的历史商品进行聚类,即胶囊网络,该网络采用了动态路由算法能非常自然的将历史商品聚成多个集合,每个集合的历史行为进一步推断对应特定兴趣的用户表示向量。这样,对于一个特定的用户,MND输出了多个表示向量,它们代表了用户的不同兴趣。当用户再有新的交互时,通过胶囊网络,还能实时的改变用户的