作者:一元
公众号:炼丹笔记
之前和海归博士朋友聊天,他说,这篇文章是他所有的复现算法中,处理序列最好的算法之一。原本以为Bert只常见于NLP中,本文我们一起详细地阅读学习一下如何使用Bert来做推荐系统并取得最好的效果的。
之前我们的序列化模型从左到右的无向模型是次优的,
- 单向体系结构限制了隐藏表示在用户行为序列中的能力;
- 假设一个严格有序的序列,这并是实用的;
本文是最早使用Bert方法来处理该问题的文章。为了防止信息泄露并且高效地训练双向模型,我们在序列化建模时采用了Cloze目标,通过联合调节左右上下文来预测序列中的随机屏蔽项。通过这种方式,我们学习了一个双向表示模型,通过允许用户历史行为中的每一项融合来自左侧和右侧的信息来融合信息。
Bert4Rec
问题描述
![v2-0ed8d568421abca07200bd93eee4fe16_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/b400b1f17a5586b3c33a1fb2d2e14254.png)
模型框架
![v2-16d1cfd4b3a9894b9aacd431e753d8ee_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/3d3b0d789c3ecc40ba4b3daef017941c.jpeg)
如上图所示,Bert4Rec是由L个有向Transformer层堆叠起来的,在每一层,它通过与Transformer层并行地交换前一层所有位置的信息,迭代地修改每个位置的表示,与图1d中基于RNN的方法不同, self-attentio赋予BERT4Rec直接捕捉任何距离的依赖关系的能力,而不是像图1d中基于RNN的方法那样一步一步地传递相关信息。这种机制导致了一个全局的接受野,而基于CNN的方法,如Caser通常有一个有限的接受野。此外,与基于RNN的方法相比,self-attention非常易于直接并行化。
对比图1b、1c和1d,最显著的区别是基于SASRec和RNN的方法都是从左到右的单向结构,而我们的BERT4Rec使用双向的自我注意来建模用户的行为序列。这样,我们提出的模型可以获得更强大的用户行为序列表示,从而提高推荐性能。
1. Transformer层
![v2-f5d608a48d8b943d2aa07def2e3a2c27_b.jpg](https://i-blog.csdnimg.cn/blog_migrate/78f7a712b5450096cbcb8e7353df1fc9.png)
2. Multi-Head Self-Attention
注意机制已经成为各种任务中序列建模的一个重要组成部分,它允许