Hierarchical Gating Networks for Sequential Recommendation (KDD19)
按时间顺序来的用户和商品交互信息在推荐系统中是至关重要的,推荐系统随着时间的沉淀,用户和商品的数量以及交互信息都会快速增长,这为算法建模带来了非常大的帮助,与此同时也为推荐系统带来非常大的挑战,其中最大的两个挑战为:
- 如何从稀疏的不明显的反馈中对用户的长期兴趣进行建模;
- 如何从大量的用户和商品行为中捕捉用户的短期兴趣;
本文针对上述的两大挑战进行建模。
序列化问题描述
为了进行序列化推荐,对于每个用户,我们抽取个连续的商品作为输入,然后我们需要预测接下来的个商品。这个问题可以重新表述为:在用户和商品的交互序列中,给定个连续商品,其它个商品(为商品数)和该商品交互的可能性。
对于序列化的推荐问题,用户对于商品的喜好可以从两个角度进行建模:用户的长期兴趣建模以及用户的短期兴趣建模。对于短期用户兴趣建模一般又可以分为:group-level以及instance-level的关系。
- group-level的兴趣:比如用户买了一张床和一个床垫,那么一个枕头可能会是一个非常好的推荐;
- instance-level的兴趣:比如一个用户买了一个手机,那么他可能会买一个屏幕保护器,所以这是一个不错的推荐。
也可以参考上图理解一下。
模型方案
针对group-level影响的Hierarchical Gating
之前工作在对group-level的序列交叉建模的时候主要使用CNN,RNN以及self-attention等模型。本文和之前的工作不一样的地方在于提出了一种Hierarchical Gating网络来建模user-item的关系,而Hierarchical Gating由Feature Gating和Instance Gating两块组成。
1. Feature Gating
假设我们的序列Embedding之后变为,其中为item的embedding, 是item的个数。
表示用户的第条子序列。
Gated Linear Unit:
原先论文中的Gated Linear Unit的形式为:,其中为输入embedding, 为学习参数, 为卷积操作, 为element-wise的乘法操作。
Personalized Feature Gating:
上面的操作没有考虑用户的偏好,很多用户可能只关心商品上的某些信息而并不关心其他的内容,例如有些用户只关心某个电影是否为他喜欢的演员参演而并不关心电影的内容等。所以我们需要将用户的喜好加入进模型,于是我们便可以得到:
其中, 是用户的embedding向量,, , 这样用户相关的特征就可以被传到下游。
2. Instance Gating
个性化Instance Gating:
其中:
- , instance gating之后的序列embedding;
- ,
Aggregation Layer:
为了将商品的embedding转为一个group-level的潜在表示,我们使用average-pooling或者max-pooling操作。
Item-Item乘积
目前非常多的工作专注在group-level的信息,而没有明显的去捕捉item-item之间的关系,但是我们知道在过去的个商品和在未来可能和用户交互的商品之间存在较强的关系,此处我们用输入的Item的embedding和输出的Item的embedding的乘积来捕捉item之间的关系(过去的个商品与未来的个商品);
其中为我们的输出商品embedding,上面的乘积和捕捉了用户累计的item-item的关系。
模型预测
模型最终的预测为:
其中:
- Item对之间的关系, Item-Item的Product:;
- 用户短期兴趣, HGN捕获用户的Group-level的信息:
- 用户的长期兴趣,
模型训练
我们的目标就是希望用户的有关联的商品和其他负样本的距离越大越好,所以有:
其中:
- 表示用户在个连续商品中的一个;
- 表示在中的一个商品;
- 表示随机采样的负样本.
- 为Gating网络的参数
实验
实验主要验证四个问题:
- 模型的效果相较于之前的模型是否最好?(模型效果)
- 本文提出的几个模块是否都有用?(消融实验)
- 模型的训练速度怎么样?
- 模型中各个参数的影响怎么样?
1. 模型效果
- 从上面的实验看出,HGN在所有模型上的表现都超过了其他的方法。
2. 消融实验
- 传统的BPR矩阵分解模型只能捕捉长期的用户兴趣,而对于用户的短期兴趣捕捉较差;
- Feature Gating取得的效果要好于Instance Gating的效果;
- Average pooling的效果要好于max pooling的效果;
- HGN的网络效果比CNN和GRU要好;
- 我们将Item-Item的Product的结果也加入模型的效果也可以得到进一步的提升;
3. 模型训练效率
- 在忽略负样本采样的时间,仅考虑模型训练的情况下,HGN模型的训练时间是非常少的。
4. 参数敏感度
- 我们发现随着embedding的维度上升,模型的效果可以得到很大的提升;
- 固定时,越大往往可以取得更好的效果;
- 越大的不一定可以取得越好的效果,可能会引入很多冗余的信息。
小结
本文提出了HGN算法,用矩阵分解的形式捕捉用户的长期兴趣,同时将短期兴趣进行拆分,分为group-level以及instance-level的,通过Hierarchical Gating来处理group-level的信息,item-item的乘积来捕捉商品之间的关系。模型最终的效果也比之前所有的方案要好。
参考文献
- Hierarchical Gating Networks for Sequential Recommendation:https://arxiv.org/pdf/1906.09217.pdf
- https://github.com/allenjack/HGN/blob/master/model/gating_network.py
- https://www.youtube.com/watch?v=jpIU-RaM4QI
这是一篇KDD19的论文,文章最大的亮点个人感觉是类似于对于group-level和instance-level的关系处理,看在数据集上的效果还是很棒的,序列建模可以参考一波这样的建模策略。 我是二品炼丹师一元,关注我们的公众号。