RecSys2020-SSE-PT解锁序列数据挖掘新姿势

2021-05-14 16:13:05 浏览数 (1)

作者:一元,炼丹笔记三品炼丹师

SSE-PT: Sequential Recommendation Via Personalized Transformer(RecSys2020)

背景

现在诸多的推荐算法在处理时间信息上, 除了在自然语言常用的RNN,CNN等模型, 就是基于Transformer的模型,但是和SASRec类似, 效果不错,但是缺少个性化,而且没有加入基于个性化的用户embedding。为了克服这种问题,本文提出来一种个性化的Transformer(SSE-PT),该方法相较于之前的方案提升了5%。

方案

模型框架

序列化推荐

给定个用户,每个用户按照一定顺序参与个商品的子集交互,序列化推荐的目的是从个商品按照个性化的排序选出topK个商品,我们假设某个用户在某个时间点的个商品的序列为:

s_i = (j_{i1},j_{i2},...,j_{iT}), for i le i le n

长度为的序列包含用户按照时间顺序(从旧到新)与之交互的最新的个商品的索引。对于不同的用户,序列可能会变化,我们也可以对短的序列进行pad来使他们的长度一样。一般我们用序列的最后一个商品作为测试集,倒数第二个作为验证。

个性化Transformer架构

SSE-PT使用随机共享embedding技术,

1. Embedding 层

我们定义用户和商品的look-up表, , , 其中和分别表示用户和商品的隐藏单元个数。此外,我们使用可学习的位置编码表,其中,,所有每个输入序列可以用下面的embedding表示:

E = left[ begin{matrix} [v_{j_{i1}};u_i] p_1 \ [v_{j_{i2}};u_i] p_2 \ ... \ [v_{j_{iT}};u_i] p_T end{matrix} right] in R^{T * d}

其中表示将item的embedding ,用户的embedding , 表示时刻的embedding。

2. Transformer的Encoder

这一块和之前的许多Transformer Encoder是类似的,所以此处我们跳过。

3. 预测层

在时刻,用户和商品的预测概率为:

p_{itl} = sigma(r_{itl})

其中为sigmoid函数, 表示用户在时刻与商品交互的概率

r_{itl} = F_{t-1}^B cdot [v_l;u_i]

其中表示Transformer编码器在最后一个时间段的隐藏单元的输出。

我们对于正的商品以及均匀采样的负样本, , 我们对以及进行求和,得到:

sum_{i} sum_{t=1}^{T-1} sum_{k in Omega} - [log(p_{itl} log(1- p_{itk}))]

在inference时刻,对于用户在时刻的topK推荐可以通过对于进行排序并且在排序列表中推荐top的K个商品.

4. 随机共享Embedding

对于提出的SSE-PT算法最为重要的正则技术是SSE(Stochastic Shared Embedding), SSE的主要思想是在SGD过程中随机地用另一个具有一定概率的Embedding来代替现在的Embedding,从而达到正则化嵌入层的效果。在没有SSE的情况下,现有的所有正则化技术,如层规范化、丢失和权重衰减等都会失效,不能很好地防止模型在引入用户嵌入后的过拟合问题。

  • SSE_PE: 以概率均匀地使用另外一个embedding替代当前的embedding;

在本文中,有三处不同的地方可以使用SSE-SE, 我们对输入/输出的用户embedding, 输入的商品embedding以及输出的商品embedding分别以概率,以及进行替换。

我们注意到输入用户embedding和输出用户embedding同时被SSE概率代替。经验上,我们发现SSE-SE在用户的embedding和输出项的embedding总是有帮助的,但是SSE-SE到输入项的embedding只有在平均序列长度较大时才有用,例如Movielens1M和Movielens10M都超过100。

处理长序列的SSE-PT

为了处理非常长的序列,可以在基本SSE-PT模型上稍作修改,将输入序列输入SSE-PT神经网络。此处我们将其称为SSE-PT ,以区别于前面讨论的SSE-PT模型,后者不能处理比长的序列。

SSE-PT 的motivation在于:

s_i = (j_{i1},j_{i2},...,j_{it}), for i le i le n, t >T

均匀采样并没有考虑到长序列中最新商品的重要性。为了处理该问题,我们引入额外的超参,我们称之为采样概率(sampling probability)。也就是说我们:

  • 以概率从中随机采样开始的index,然后构建序列
  • 以概率使用最近的序列

SSE-PT 模型可以和SSE-PT一样奏效,SSE-PT的时间复杂度为,所以,将降为一般可以在训练和推理阶段得到4倍的加速,而SSE-PT和SSE-PT 的空间复杂度都是

实验

1. 效果比较

  • SSE-PT算法在所有的4个数据集上的效果都好于其它的算法;

2. 正则化方案的比较

  • SSE-SE dropout weight decay是正则化里面最好的。

3. 模型训练速度

  • SSE-PT和SSE-PT 模型的训练速度与SASRec相当,其中SSE-PT 是速度最快、性能最好的模型。很明显,使用相同的训练时间,我们的SSE-PT和SSE-PT 比我们的基准SASRec取得了更好的排名性能.

4. 解耦研究

4.1 SSE概率
  • 鉴于SSE正则化对于我们的SSE-PT模型的重要性,我们仔细检查了输入用户嵌入的SSE概率。我们发现适当的超参数SSE概率不是很敏感:在0.4到1.0之间的任何地方都能得到很好的结果,比参数共享和不使用SSE-SE要好。
4.2 采样概率
  • 当最大长度相同时,使用适当的抽样概率(如0.2→0.3)将使其优于SSE-PT。
4.3 Attention Block的个数
  • 对于Movielens1M数据集,在B=4或5时达到最佳排序性能,对于Movielens10M数据集,在B=6时达到最佳排序性能
4.4 个性化以及负样本的采样个数
  • 当我们使用相同的正则化技术时,个性化模型总是优于非个性化模型。不管在评估过程中采样了多少个负数或者使用了什么排名标准,这都是正确的。

小结

在这篇论文中,作者提出了一个新的神经网路架构-Personal Transformer来解决时间协同排序问题。它拥有个性化模型的好处,比目前最好的个人用户获得更好的排名结果。通过研究推理过程中的注意机制,该模型比非个性化的深度学习模型更具解释性,并且更倾向于关注长序列中的最近项目。

参考文献

  1. SSE-PT: Sequential Recommendation Via Personalized Transformer:https://dl.acm.org/doi/pdf/10.1145/3383313.3412258
  2. https://github.com/SSE-PT/SSE-PT

0 人点赞