首页 > 其他分享 >Time Interval Aware Self-Attention for Sequential Recommendation

Time Interval Aware Self-Attention for Sequential Recommendation

时间:2023-06-20 13:48:00浏览次数:55  
标签:mathbb Interval mathbf min Self Attention times ij ldots

目录

Li J., Wang Y., McAuley J. Time interval aware self-attention for sequential recommendation. WSDM, 2020.

本文介绍了一种更好利用时间戳信息的方式, 引入相对位置编码.

符号说明

Motivation

  • 无论是 GRU4Rec, 还是 SASRec 等, 他们处理序列 \(s=[s_1, s_2, \ldots, s_n]\), 仅仅是利用 \(s_i, s_j\) 的前后顺序关系, 但是, 模型是无法知道两个交互 \(s_i, s_j\) 的时间间隔.

  • 如上图所示, 即便两个用户的以往的交互序列是一致的, 但是倘若发生的时间间隔不同, 我们应该推荐的下一个 item 也应该有所差异 (在某一时间段内频繁观看一种类型的电影, 推荐的下一个 item 可能也应该更加关注短期偏好, 否则更应该关注一点长期兴趣).

TiSASRec

  • 首先, 和 SASRec 一样, 给定序列 \(s = [s_1, s_2, \ldots, s_n]\) 我们可以获得它的 embedding:

    \[\mathbf{E}^I = [m_{s_1}, m_{s_2}, \ldots, m_{s_n}] \in \mathbb{R}^{n \times d}. \]

  • 接着, 不同于 SASRec, 作者引入两个可学习的绝对位置编码:

    \[\mathbf{M}_k^P \in \mathbb{R}^{n \times d}, \mathbf{M}_v^{P} \in \mathbb{R}^{n \times d}, \]

    分别作用于 attention 中的 keys 和 values.

  • 此外, 为了让模型感知到时间间隔, 作者建立:

    \[\mathbf{M}^u = \left[ \begin{array}{cccc} r_{11}^u & r_{12}^u & \ldots & r_{1n}^u \\ r_{21}^u & r_{22}^u & \ldots & r_{2n}^u \\ \vdots & \vdots & \ddots & \vdots \\ r_{n1}^u & r_{n2}^u & \ldots & r_{nn}^u \\ \end{array} \right], \]

    其中

    \[r_{ij}^u = \lfloor \frac{|t_i - t_j|}{r_{min}^u} \rfloor, r_{min}^u = \min_{ij} |t_i - t_j|. \]

  • 此外, 在实际中, 作者将 \(\mathbf{M}^u\) 中元素超过 \(k\) 的元素截断为 \(k\), 即

    \[\mathbf{M}_{clipped}^u = clip(M^u, k): r_{ij}^u \leftarrow \min(k, r_{ij}^u). \]

  • 对于 \(r \in \{1, 2, \ldots, k\}\) 建立 embedding, 我们可以得到:

    \[\mathbf{M}_K^R \in \mathbb{R}^{k \times d}, \mathbf{M}_V^R \in \mathbb{R}^{k \times d}. \]

  • 对于长度为 \(n\) 的序列, 由此得到:

    \[\mathbf{E}_K^R \in \mathbb{R}^{n \times n \times d}, \mathbf{E}_V^R \in \mathbb{R}^{n \times n \times d} \]

    两组 embedding.

  • 作者是在注意力阶段引入位置编码的:

    \[z_i = \sum_{j=1}^n \alpha_{ij} (W^V m_{s_j} + r_{ij}^v + p_j^v) \in \mathbb{R}^d, \\ \alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k=1}^n \exp(e_{ik})}, \\ e_{ij} = \frac{(W^Q m_{s_i})^T (W^K m_{s_j} + r_{ij}^k + p_j^k)}{\sqrt{d}}. \]

    注: 这里我们省略了 mask.

  • 其它的部分和普通的 transformer 的架构是一致的.

代码

[official]

[PyTorch]

标签:mathbb,Interval,mathbf,min,Self,Attention,times,ij,ldots
From: https://www.cnblogs.com/MTandHJ/p/17493428.html

相关文章

  • GetSelfnameDlg::OnButton1()
    voidCGetSelfnameDlg::OnButton1(){ //HANDLEhThread; charszLibPath[_MAX_PATH]; //void*pLibRemote=0; //theaddress(intheremoteprocess)where //szLibPathwillbecopiedto; //DWORDhLibModule=0; //baseadressofloadedmodule......
  • Primes on Interval(欧拉筛+二分+滑动窗口)
    【题面】你决定用素数定理来做一个调查.众所周知,素数又被称为质数,其含义就是除了数字一和本身之外不能被其他任何的数字除尽.现在给定一个正整数序列 ,+1,⋯ ,a,a+1,⋯,b (≤)(a≤b),请找出一个最小值 l,使其满足对于任意一个长度为 l 的子串,都包含 k 个质数.......
  • Python的self作用,以及__init__,__new__
    本章来探讨一下Python类的self作用,以及__init__,__new__。为什么是探讨,不是学习,因为菜......
  • Vue进阶(幺贰陆):表格复用 TypeError: _self.$scopedSlots.default is not a function解
    (文章目录)一、前言在使用elementUI的el-table组件时,表头应用v-if判断来动态显示,正常来说这样的操作是没有问题的,但是如果在这基础上使用<templateslot-scope="scope">操作的话,表头一旦切换就会报错,错误信息如下:_self.$scopedSlots.defaultisnotafunction二、解决方......
  • attention学习-课程笔记
    attention层计算过程:相似度函数fatt计算输入X和查询向量q之间的相似度e;相似度e经过softmax计算得到权重a。 向量e和a的长度与输入X的第一个维度相同。权重a与输入X相乘,得到输出y。相似度计算可使用点积dotprodecut,由于输入X的维度通常较高,q.X值会很大,因此使用sqrt(Dq)进......
  • Python - 方法参数中,带self和不带self的区别
    不带self该python文件中,没有类的概念。因此所有的方法参数中,没有self#文件名solution.pydefpartition(head:Optional[ListNode],x:int)->Optional[ListNode]:#...if__name__=='__main__':#注意这里的区别...partition() 如果未来要在其他类里......
  • 报错:resolution will not be reattempted until the update interval of XXX has elap
     含义:在XXX的更新间隔过去或强制更新之前,不会重新尝试解析。如果你去本地的maven仓库,你会发现,其只有lastUpdate结尾的文件,没有jar包。这个时候,你无论怎么点击IDEA中的ReimportsAllMavenProjects都是没有用的。原因上面也说了,要么等更新时间过去,要么强制更新。maven的默认......
  • 关于vue 使用setInterval定时器关闭失效的问题 原因为事件传播
    /****data.isPlay为显示那个按钮**startHandle开始定时器setInterval**pauseHandle,stopHandle理解为关闭定时器就好了clearInterval**/<viewclass="btn"@click.stop="startHandle"><viewclass="btn-statusbtn-play"><view......
  • 论文解读- nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segment
    本篇主要解读论文“nnU-Net:Self-adaptingFrameworkforU-Net-BasedMedicalImageSegmentation”==nnU-Net:基于U-Net的自适应医学图像分割框架。实现见本专栏下其他博文。直达链接......
  • 关于self.view.window与viewDidLoad、viewWillAppear、viewDidAppear
    关于self.view.window与viewDidLoad、viewWillAppear、viewDidAppear 在进入一个界面(UIViewController),如果要在进入的时候使用self.view.window,那么必须在将使用代码放在viewDidAppear方法中,而viewDidLoad、viewWillAppear中self.view.window.frame为0{{0,0},{0,0}}。 -(void)......