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


整个网络的结构如下:

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

文章插图
 
本文主要的核心模块 Interacting Layer 的结构如下:
微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
实际上是以关注的某个特征作为 query,其他的特征向量作为 key, value,并且允许多种不同类型的相似度计算从而得到不同的 attention value,这也是 multi-head 的主要特点 。
微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
最后把所有的
微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
向量拼接起来作为学习到的组合特征,最后经过一个 ReLU 变换与之前的 feature 重新结合即可得到 Interacting Layer 的输出:
微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
最终的预测输出为:
微信开发工程师带你一文了解推荐领域最新工作

文章插图
 

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

文章插图
 
由于本文的主要贡献在于,更加快速有效的高阶特征提取工作以及特征的可解释性,所以从这两个角度来看本文方法的效果 。
微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
通过表格可以看出 AutoInt 在大多数场景下都有更好的效果,对于 Interacting Layer 的层数选取也是依据实验结果得到的启发式结论:
微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
当 Interacting Layer 过多的时候不仅会增加模型复杂度,模型的预测效果也会受到影响 。最后是模型的特征解释:
微信开发工程师带你一文了解推荐领域最新工作

文章插图
 
在这个数据任务当中,Interacting Layer 确实捕捉到了有意义的组合特征:,左图中红色方框部分 。右图我们给出了数据本身的相关性的热力图,从中可以发现,注意力机制基本能够将高度相关的特征进行组合并且给以较高的权重,这样的话一层 Interacting Layer 之后输出的特征实际上就具有了较好的解释性 。
总结以上这些是今年来在推荐系统方面比较有意义的工作,任何模型的效果都强依赖数据、特征、样本质量 。论文思想实际上也是来源于人的本身行为习惯生活经验等,例如购物时候行为序列的重要性等 。通过思考如何让计算机模拟或者关注人们在日常行为的一些关键模式,得到特征的有效转变和映射,让整个模型能够有更好的表现 。所谓网络的构建不同也无非在于不同应用场景,特征的利用方式不同 。
【微信开发工程师带你一文了解推荐领域最新工作】另外推荐领域一些最新论文其实也是参考了 NLP 一些新的思路,例如上面介绍的 BST、autoint 都引入了 Transformer 的核心模块 Multi-head Self-attention,在此基础上做各种变换,实现各种玩法 。看懂论文需要先彻底熟悉 Multi-head Self-attention 的原理,可以结合源论文与代码去看,用开源数据集去跑流程,打印中间结构,熟悉论文思想的同时也可以提升工程实现能力 。
从各自的出发点来看,三篇文章都可以相互弥补:
对于 MIND 而言,虽然已经考量了顾客在浏览商品的时候会有固定类别的兴趣偏好,但是仅仅考虑了历史行为中的聚类信息而没有利用行为的序列或者趋势信息,这种序列信息往往在下一步的对未来行为的推荐中会更有作用 。另外文中也提及了,这种聚类的方式还有待改进,通过结合其他方法能够提升类别的聚合性,进一步提升类别的准确程度 。而 BST 本身恰恰就是利用原始特征在 ranking 模块通过网络结构来获取序列行为信息 。但 BST 本身的劣势在于,如果原始特征维度很大,人工的构建交叉特征很不现实 。
此时,AutoInt 就可以出面帮助解决对于 raw features,如何快速高效构建 cross features 的问题 。通过 AutoInt 构建出来的特征是否在其他的分类器或者模型上依旧能够带来提升,这是有待进一步实验研究的问题 。另外,如何针对推荐系统的冷启动问题或者不同客户群体进行推荐的策略也可以基于以上工作加以改进 。最后,这些光鲜亮丽的论文思想听上去很是高大上,在实际场景下真正复现论文里面的效果还是比较难的,需要结合数据场景作各种优化,模型结构优化,还要具备生产环境下复杂模型上线的能力,这些都是需要努力去攻克的 。


推荐阅读