打败bert4rec的Next-Item推荐算法

        今天给大家分享一篇打败了bert4rec的会话推荐算法paper。
       论文名称:Next-itemRecommendations in Short Sessions
       会议:recsys2021
       一、前言

       目前来看实验效果:

 
       论文的方法在两个数据集上的MPR都有提升。在一个数据集上的召回有提升。两个数据集不一样的地方是Reddit是短会话,绝大多数会话的itemID 个数少于5个。说明算法在会话items个数分布比较均衡的地方效果还不错。因而算法还是有意义的。

 
       短会话之next-Item推荐其实是有业务场景的。比如说刷抖音或者头条都是next-Item。电商的商品详情页右边这块的推荐也是next-item推荐场景。

 
       另外,这个作者 ShoujinWang,(麦考瑞大学博后,研究方向为数据挖掘,机器学习以及推荐系统)他们已经在这个领域琢磨了几年了。有代表性的工作有:
2019 AAAI . Session-basedrecommendation with graph neural networks
2018 AAAI. Attention-based transactional context embedding for next-itemrecommendation.
 
       这次这个工作也可以说是让人耳目一新的。在transformer统治next-item的年代还有一个简单的model能work.还是不错的。
 
 
二、算法内核情景分析
 
       问题及数据集是很好理解的。我特意下载了delicious数据集。他就是一个user-Item有时间戳的交互日志数据集。他将一定时间范围内的连续交互数据计算为一个session。然后预测这个session中下一个item会是啥。
 



       这里面有一个难点是小样本学习的问题。他一个session会话可能也就三五个ItemID,要在这短的序列中预测下一个Item其实是比较有挑战的。解决这个小样本学习的核心在于:1)同一个用户,他自身过去历史数据中,相似的序列下一个Item会是哪一个?2)不同用户,相似序列的下一个Item会是哪个?当然,还有一个问题是怎么定义相似序列。整篇paper主要解决这三个问题。
 
1、定义相似session。这个很简单。他就是两个session的交集除以并集。

 
2、如何将过往历史信息run进model.
 

 
       这个图讲的是一个事情。A和B是一个形象的说法,传统的做法是对每个session用一个encode网络编码成embedding,然后求这个embedding的相似度;这文章的做法是,两个session之间的距离是两个session中单个item之间距离的最小值。图C讲的是如何实现这个Idea的。一个session的ItemID 序列,通过RNN后求出一个embedding,然后跟当前的session下的最后一个item 逐个求相似度(其实就是一个余弦距离),然后maxpooling(这里的maxpooling的取法应该是Min)求出最短距离,来代表这两个session之间的相似度。
       这个算法做法的直觉解释其实更简单。就是说session本来就很短。那么最后一个item更能影响接下来的走势,而之前看过的item影响力会有限。
 
3、整体模型
 



 
       整个模型图解说:左边讲的是当前session相似session。中间讲的是如何将相似session的互信息run进model的。一个模块SSRN就是第二节讲的那块事情,然后计算出来了相似度,这个相似度作为权重卷进session的embedding中。然后作为互信息run进model。
 
三、总结
       个人猜测,文章可以说是在精细数据分析后得出的方法。通过精细的数据分析,你可以发现,短session中,如果有一个ItemID非常相近,他们之间的pattern匹配会更相近。而session embedding求相似度会稀释单个很相同的itemID之间的作用力。
       从这个角度出发,本文可以说是手工设计的注意力机制打败了bert。


请使用浏览器的分享功能分享到微信等