最近基于transformer的一些NLP模型很火(比如BERT,GPT-2等),因此将transformer模型引入到推荐算法中是近期的一个潮流。transformer比起传统的LSTM、GRU等模型,可以更好地建模用户的行为序列。本文主要整理transformer在推荐模型中的一些应用。
1. Self-Attentive Sequential Recommendation
模型结构:
![84d77eac7054fdd8b107477daec923f4.png](https://img-blog.csdnimg.cn/img_convert/84d77eac7054fdd8b107477daec923f4.png)
方法:
符号定义:
![84e69d4a3c5650f494a180448203fdce.png](https://img-blog.csdnimg.cn/img_convert/84e69d4a3c5650f494a180448203fdce.png)
问题定义:模型输入是用户u的一个历史交互序列:
- Embedding层
将输入序列
位置embedding: 因为self-attention并不包含RNN或CNN模块,因此它不能感知到之前item的位置。本文输入embedding中也结合了位置Embedding P信息,并且位置embedding是可学习的:
![39d099f50767de935f0507616ece6ae5.png](https://img-blog.csdnimg.cn/img_convert/39d099f50767de935f0507616ece6ae5.png)
- Self-Attention层
Transformer中Attention的定义为:
![ddb23a53106f5293194080fd1345833b.png](https://img-blog.csdnimg.cn/img_convert/ddb23a53106f5293194080fd1345833b.png)
本文中,self-attention以embedding层的输出作为输入,通过线性投影将它转为3个矩阵,然后输入attention层:
![bbe017905d01d2c9a605cea01744a7e5.png](https://img-blog.csdnimg.cn/img_convert/bbe017905d01d2c9a605cea01744a7e5.png)
为了避免在预测i时刻的item时用到后续时刻的信息,本文将符合(j > i)条件的
- Point-wise前馈网络
尽管self-attention能够用自适应权重并且聚焦之前所有的item,但最终它仍是个线性模型。可用一个两层的point-wise前馈网络去增加非线性同时考虑不同隐式维度之间的交互:
![9bdf4cac8166c35e1692cf42d62f95bc.png](https://img-blog.csdnimg.cn/img_convert/9bdf4cac8166c35e1692cf42d62f95bc.png)
- Self-Attention layer的堆叠
![0831a4c46fb747705125c9f4413e884a.png](https://img-blog.csdnimg.cn/img_convert/0831a4c46fb747705125c9f4413e884a.png)
- 预测层
最后采用MF层来预测相关的item i:
![3db13ae7204efa52a03327b78cd25b6a.png](https://img-blog.csdnimg.cn/img_convert/3db13ae7204efa52a03327b78cd25b6a.png)
其中
为了减少模型尺寸及避免过拟合,共用一个item embedding:
![127b4d66c1ae984d55b29bf5785e9850.png](https://img-blog.csdnimg.cn/img_convert/127b4d66c1ae984d55b29bf5785e9850.png)
- 显式用户建模
为了提供个性化推荐,当前主要有两种方法:学习显式的用户embedding表示用户偏好(MF,FPMC,Caser);考虑用户之前的行为,通过访问过的item的embedding推测隐式的用户embedding。本文采用第二种方式,同时额外在最后一层插入显式用户embedding
![3c297eeb85ce8d6ef62ff6e4af786027.png](https://img-blog.csdnimg.cn/img_convert/3c297eeb85ce8d6ef62ff6e4af786027.png)
但是通过实验发现增加显式用户embedding并没有提升效果。
- 网络训练
定义时间步t的输出为:
![5fb8244c31e2d78f9983352131d0c4d0.png](https://img-blog.csdnimg.cn/img_convert/5fb8244c31e2d78f9983352131d0c4d0.png)
用二元交叉熵损失作为目标函数:
![519826bb76337f4741421cb32bbbb332.png](https://img-blog.csdnimg.cn/img_convert/519826bb76337f4741421cb32bbbb332.png)
2. Next Item Recommendation with Self-Attention
模型:
![27bbe9f1c0d1557a025c6a0e2f37f1af.png](https://img-blog.csdnimg.cn/img_convert/27bbe9f1c0d1557a025c6a0e2f37f1af.png)
本文亮点是同时建模用户短期兴趣(由self-attention结构提取)和用户长期兴趣。其短期兴趣建模过程如下:
假定使用用户最近的L条行为记录来计算短期兴趣。可使用X表示整个物品集合的embedding,那么,用户u在t时刻的前L条交互记录所对应的embedding表示如下:
![35d43bc63fed17e85f38c02d7fbac2b0.png](https://img-blog.csdnimg.cn/img_convert/35d43bc63fed17e85f38c02d7fbac2b0.png)
其中每个item的embedding维度为d,将
![9fc215da4135af9685e7acdfcd5e58b2.png](https://img-blog.csdnimg.cn/img_convert/9fc215da4135af9685e7acdfcd5e58b2.png)
![ac9f9ca9a80da0fcbdea1201f8a86f4f.png](https://img-blog.csdnimg.cn/img_convert/ac9f9ca9a80da0fcbdea1201f8a86f4f.png)
这里需要注意和传统transformer的不同点:
- 计算softmax前先掩掉
矩阵的对角线值,因为对角线其实是item与本身的一个内积值,容易给该位置分配过大的权重。
- 没有将输入
乘以
得到
,而是直接将输入
乘以softmax算出来的score。
- 直接将embedding在序列维度求平均,作为用户短期兴趣向量。
另外加入了时间信号:
![b4c89d1a567357c4192dcc5f7e777386.png](https://img-blog.csdnimg.cn/img_convert/b4c89d1a567357c4192dcc5f7e777386.png)
self-attention模块只使用用户最近的L个交互商品作为用户短期的兴趣。那么怎么建模用户的长期兴趣呢?可认为用户和物品同属于一个兴趣空间,用户的长期兴趣可表示成空间中的一个向量,而某物品也可表示为成该兴趣空间中的一个向量。那如果一个用户对一个物品的评分比较高,说明这两个兴趣是相近的,那么它们对应的向量在兴趣空间中距离就应该较近。这个距离可用平方距离表示:
![d2c9b4bbfab44d45f71ef4d6f8e0511c.png](https://img-blog.csdnimg.cn/img_convert/d2c9b4bbfab44d45f71ef4d6f8e0511c.png)
综合短期兴趣和长期兴趣,可得到用户对于某个物品的推荐分,推荐分越低,代表用户和物品越相近,用户越可能与该物品进行交互:
![376b28e919b248a9269ba9434eea892c.png](https://img-blog.csdnimg.cn/img_convert/376b28e919b248a9269ba9434eea892c.png)
模型采用pair-wise的方法训练,即输入一个正例和一个负例,希望负例的得分至少比正例高γ,否则就发生损失,并在损失函数加入L2正则项:
![0e2a2aa438f21863821d263a06dcd5e0.png](https://img-blog.csdnimg.cn/img_convert/0e2a2aa438f21863821d263a06dcd5e0.png)
3. BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer
亮点:结合使用预训练的BERT模型
模型架构:
![3d689410ae654c15d6cf7653538e8503.png](https://img-blog.csdnimg.cn/img_convert/3d689410ae654c15d6cf7653538e8503.png)
- Embedding Layer
模型的输入是用户历史交互序列,对交互序列中的每一个物品i,其Embedding包含两部分,一部分是物品的Embedding,用vi表示,另一部分是位置信息的Embedding,用pi表示。这里的pi是可学习的。
- Transformer Layer
主要包括Multi-Head Self-Attention层和Position-Wise Feed-Forward Network,其中Multi-Head Self-Attention计算过程如下:
![5ff15e772bf768abe2dffc52db555ccc.png](https://img-blog.csdnimg.cn/img_convert/5ff15e772bf768abe2dffc52db555ccc.png)
![aae6f7aca5f65222e32b5588c80df70a.png](https://img-blog.csdnimg.cn/img_convert/aae6f7aca5f65222e32b5588c80df70a.png)
Position-Wise Feed-Forward Network的作用是将每个位置(也可理解为每个时间刻t)上的输入分别输入到前向神经网络中:
![10559b8b7ffc74775128a7f49e7a45f1.png](https://img-blog.csdnimg.cn/img_convert/10559b8b7ffc74775128a7f49e7a45f1.png)
- Stacking Transformer Layer
使用了类似于resnet的skip连接结构:
![9a69b34c145608d61c139433aa4fd0c0.png](https://img-blog.csdnimg.cn/img_convert/9a69b34c145608d61c139433aa4fd0c0.png)
- Output Layer
![a7e21c0214e75fe6925263f31021989b.png](https://img-blog.csdnimg.cn/img_convert/a7e21c0214e75fe6925263f31021989b.png)
- 模型训练
因为在BERT4Rec中,输入历史序列[v1,v2,...,vt-1],输出的是包含上下文信息的向量[h1,h2,...,ht-1],这里每个向量ht都包含了整个序列的信息。如果要预测用户t时刻的交互物品vt,如果直接把vt作为输入,那么其余每个物品在Transformer Layer中会看到目标物品vt的信息,造成一定程度的信息泄漏。因此可把对应位置的输入变成[mask]标记。打标记的方式和BERT一样,随机把输入序列的一部分遮盖住,然后让模型来预测这部分对应的商品:
![666fa6cc0790b8580c68b844fb95f9f8.png](https://img-blog.csdnimg.cn/img_convert/666fa6cc0790b8580c68b844fb95f9f8.png)
最终的loss函数为:
![9de6ead4d78a52d2a223e61c9b61c4ae.png](https://img-blog.csdnimg.cn/img_convert/9de6ead4d78a52d2a223e61c9b61c4ae.png)
4. Behavior Sequence Transformer
![d5b07d468e88335024cfd89e75fe9a10.png](https://img-blog.csdnimg.cn/img_convert/d5b07d468e88335024cfd89e75fe9a10.png)
这里就不详细介绍了,可参考我之前的一篇文章:https://zhuanlan.zhihu.com/p/72018969
总结
transformer结构可用于对用户短期内的行为序列进行建模(比如最近的n次行为序列),比起传统的RNN、CNN模型,transformer的优势在于它在每个时刻t求得的隐藏向量ht都包含整个序列的信息(这其实就是self-attention结构的优势,可建模出任意一个时刻item和所有时刻item的相关性)。因此可将transformer结构用于用户的短期兴趣embedding建模,然后再将该embedding向量用于召回或者ranking阶段。
参考文献:
- https://arxiv.org/pdf/1808.09781.pdf
- https://arxiv.org/pdf/1808.06414.pdf
- https://arxiv.org/pdf/1904.06690.pdf
- https://arxiv.org/pdf/1905.06874.pdf