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