微信开发工程师带你一文了解推荐领域最新工作( 四 )


总而言之,本文通过对序列数据特征的合理构建与利用,可以明显地提升推荐效果,淘宝将其投入在实际的生产场景中,也取得了较好的线上效果 。
2. Matching:Multi-Interest Network with Dynamic Routing for Recommendation at Tmall
本工作的主要目的在于在 matching 阶段进行特征工程的工作,实现提取更加结构化,使模型能够得到更多信息增益的特征 。获取更高质量的特征就可以进而促进整个推荐系统的效果改善 。
Matching 阶段需要获取客户感兴趣的商品,或者客户对某种商品感兴趣的概率 。所以在这个阶段,如何量化客户的“兴趣”更重要 。多数文章的做法一般是把用户的一些 profile 特征或者 history 信息简单地作为一个单向量输入 。这种做法忽略了存在多种兴趣的可能性:首先,有未利用的信息,在对整个模型而言会带来相应的信息损失;其次,用一个向量来代表所有不同兴趣本身就比较难,等价于把每个用户所有不同的兴趣压缩在一起,因此将用户的所有兴趣信息混合在一起会导致在 matching 阶段匹配到不准确的商品类型或者商品个体 。而且文中选择对用户的每个不同类型兴趣都会独立计算,这样能够保证 matching 阶段的待推荐商品的准确度 。
文中提出了先利用类似聚类的思想,先在用户的历史信息中分析提取客户的多兴趣的形式,并且每个用户的总兴趣数允许是不同的 。通过构建的多兴趣网络(MIND)可以实现这个目标,利用胶囊网络对用户行为的 embeded features 再提取就可以得到较好的兴趣类 。基于这些兴趣类,就可以在整个商品池中通过近似最近邻查找的方式找出该客户最可能感兴趣的 N 个商品作为 candidates,随后放入 ranking 阶段进行推荐方面的预测 。
网络结构如下图所示:

微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
整体网络结构就是通过将商品集合中的特征通过嵌入,映射到低维的特征空间,再将不同商品的嵌入特征连接起来输入到多兴趣提取层,通过学习胶囊网络中的参数,得到较好的模型后,再将胶囊网络提取的用户行为信息与用户的画像信息进行连接输入给全连接层作为最后的特征整合 。
在训练阶段,有几个主要的与其他工作不同之处:
  1. 通过构建合适的 label-attention 层来加强 capsules 网络的类内聚合性,原因是利用了商品类别作为查询,兴趣胶囊作为键值,如下图所示 。输出的形式如下:

微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
其中当 p 为 0 是,代表 capsule 选择最均匀的特征信息;如果 p 逐渐增大,那么 capsule 会选择相似度高的信息 。如果 p 无穷大,那么最终就会变为一个最大 Attention 方法,并且会忽略其他的值 。文中就是选择这种最大 attention 的方法 。
  1. 在训练过程中的模型参数初始化过程中,为了防止每个 capsules 的训练出很类似的效果,在动态路由算法的基础上,做了小量的修改和调整 。本文中,作者选择希望训练得到的胶囊落在同一个向量空间中,但是希望不同的 bilinear mApping 能够将兴趣映射到不同的向量空间中,所以选择 routing logit 为:

微信开发工程师带你一文了解推荐领域最新工作

文章插图
 

微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
代表商品 i 的嵌入特征,
微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
代表兴趣的向量 。
  1. 由于 Bilinear 矩阵是在各对胶囊之间共享的,为了避免矩阵训练得到单一结果,所以应该避免直接将所有权重初始化为 0,而应该从一个随机分布中抽样产生 。本文选择从正态分布中产生这些随机初始值 。
  2. 因为不同用户所用的兴趣胶囊个数可能是不同的,所以文中允许了动态的兴趣个数来提高网络的可塑性与准确性 。

微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
,由于多数人们的兴趣胶囊比较少量,这种可变个数的兴趣胶囊设定可以节省很多资源 。
整个 B2I Dynamic Routing 伪代码如下:
微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
在模型最终训练完成之后,整个 MIND 网络拿掉 label-aware 层就可以当做一个用户行为的表征映射 。在运行阶段,用户的行为序列以及用户的画像特征全部输入到


推荐阅读