前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RecSys2020-SSE-PT解锁序列数据挖掘新姿势

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

作者头像
炼丹笔记
发布2021-05-14 16:13:05
6270
发布2021-05-14 16:13:05
举报
文章被收录于专栏:炼丹笔记

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

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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 炼丹笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Embedding 层
  • 2. Transformer的Encoder
  • 3. 预测层
  • 4. 随机共享Embedding
  • 1. 效果比较
  • 2. 正则化方案的比较
  • 3. 模型训练速度
  • 4. 解耦研究
    • 4.1 SSE概率
      • 4.2 采样概率
        • 4.3 Attention Block的个数
          • 4.4 个性化以及负样本的采样个数
          相关产品与服务
          文件存储
          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档