首页 > 其他分享 >Time Matters Sequential Recommendation with Complex Temporal Information

Time Matters Sequential Recommendation with Complex Temporal Information

时间:2023-09-07 11:59:11浏览次数:52  
标签:Information psi tau bm Temporal embedding Time mathrm

目录

Ye W., Wang S., Chen X., Wang X., Qin Z. and Yin D. Time Matters: Sequential recommendation with complex temporal information. SIGIR, 2020.

Absolute + Relative 信息, 相对来说, 在 motivation 这一块挺详细的.

符号说明

  • \(\mathcal{U}, \mathcal{I}\), users, items;
  • \(S^u = [(s_1^u, t_1^u), (s_2^u, t_2^u), \ldots, (s_{l_u}^u, t_{l_u}^u)]\), \((s_i^u, t_i^u)\) 表示在时刻 \(t_i^u\) 所交互的 item.

TASER

  • TASER 的做法是首先通过 Absolute Temporal Modules 获得注入了绝对时间信息的 embedding, 然后再通过 Relative Temporal Module (主要是通过 attention) 注入相对时间信息. 最后通过一个 decoder 计算和不同 items 间的 scores.

Absolute Temporal Module

  • 假设序列长度为 \(l\), 除了序列中的时间信息 \(\bm{t}^u = [t_1, t_2, \ldots, t_l]\), 该模块还需要下一时刻的时间信息 \(t_{l+1}\), 然后该模块的输出为:

    \[\bm{z}_i = \mathrm{E}(u) + \mathrm{E}(s_i^u) + \mathrm{E}(t_i^u) + \mathrm{E}(t_{l+1}^u), \]

    \(\mathrm{E}(\cdot)\) 为 embedding layer.

  • 对于 user \(u\) 和 item \(s_i^u\), 就是普通的 embedding layer.

  • 对于每个时间戳, 是这么做的, 首先通过分桶将时间戳离散化, 接着我们可以得到:

    \[\bm{\tau}_i = \mathrm{E}(t_i) = \mathrm{E}(Bucketize(t_i)) \in \mathbb{R}^d. \]

  • 接着我们通过一个 group encoder 来进行转换. 该 encoder 有 \(|G|\) 个 groups:

    \[\bm{G} = \{\bm{g}_1, \bm{g}_2, \ldots, \bm{g}_{|\bm{G}|}\}. \]

    接着

    \[\bm{\psi} := \sum_{j=1}^{|\bm{G}|} p(j|\bm{\tau}) \bm{g}_j, \\ p(j|\bm{\tau}) = \frac{\exp(\bm{\tau}^T \bm{W}_{enc} \bm{g}_j)}{\sum_{k \in |\bm{G}|} \exp(\bm{\tau}^T \bm{W}_{enc} \bm{g}_k)}. \]

  • 故, 这部分的 embedding 实际上为:

    \[\bm{z}_i = \mathrm{E}(u) + \mathrm{E}(s_i^u) + \mathrm{E}(t_i^u) + \bm{\psi}_i + \bm{\psi}_{l+1}. \]

Relative Temporal Module

  • 这部分实际上就和相对位置编码类似了, 首先在计算 attention map \(\bm{E} \in \mathbb{R}^{l \times l}\) 的时候, 系数的计算方式改为:

    \[e_{ij} = \frac{ (\bm{z}_i \bm{W}_1^R) (\bm{z}_j \bm{W}_2^R + (\bm{\psi}_i - \bm{\psi}_j) \bm{W}_1^A)^T }{\sqrt{|\bm{z}_i \bm{W}_1^R|}}. \]

  • 然后变换后的特征为:

    \[\bm{p}_i = \sum_{j=1}^l e_{ij}(\bm{z}_j \bm{W}_3^R + (\bm{\psi}_i - \bm{\psi}_j) \bm{W}_2^A). \]

  • 可以类似地推广到多头注意力机制.

  • 然后通过 FFN 得到:

    \[\bm{C} = \text{FFN}(\bm{Z} + \bm{\mathcal{P}}) \in \mathbb{R}^{l \times d}. \]

Decoder

  • 这部分就是首先利用一个线形层:

    \[\bm{x} = linear(\bm{C}) \in \mathbb{R}^d. \]

  • 然后通过与 item embeddings 的内积计算 scores:

    \[score_i = \bm{e}_i^T \mathbf{B} \bm{x}, \]

    虽然作者实际上额外引入了一个可训练的矩阵 \(\mathbf{B}\).

标签:Information,psi,tau,bm,Temporal,embedding,Time,mathrm
From: https://www.cnblogs.com/MTandHJ/p/17684424.html

相关文章

  • 深入研究java.lang.Runtime类
    在线API:http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html转自:http://lavasoft.blog.51cto.com/62575/15565一、概述     Runtime类封装了运行时的环境。每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接。     ......
  • ElementUI-DateTimePicker时间限制+清空
    1需求有两个时间控件,开始时间不能大于结束时间<el-col:span="8"><el-date-pickerv-model="queryParams.startDate"size="small"type="datetime"......
  • zone.js由入门到放弃之三——zone.js 源码分析【setTimeout篇】
    Delegate是个好东西,看看孙啸达同学对ZoneDelegate的介绍吧,这是他关于zone.js系列文章的第三篇~zone.js系列往期文章zone.js由入门到放弃之一——通过一场游戏认识zone.jszone.js由入门到放弃之二——zone.jsAPI大练兵zone.js源码分析接下来的全是干货,从头到尾,一干到底一点前置:Zon......
  • 无涯教程-JavaScript - TIMEVALUE函数
    描述TIMEVALUE函数返回由文本字符串表示的时间的十进制数。十进制数字是一个介于0(零)到0.99988426之间的值,代表从0:00:00(12:00:00AM)到23:59:59(PM11:59:59)的时间。语法TIMEVALUE(time_text)争论Argument描述Required/OptionalTime_textAtextstringthatre......
  • Pandas中的to_datetime函数用法
    Pandas中的to_datetime函数用法importdatetimeimportpandasaspdimportnumpyasnp将字符串转换为日期时间:pd.to_datetime('2023-09-06')Timestamp('2023-09-0600:00:00')将多个字符串转换为日期时间:pd.to_datetime(['2023-09-06','2023-09-07'......
  • A Challenge Dataset and Effective Models for Aspect-Based Sentiment Analysis
    摘要基于方面的情感分析(ABSA)由于其广泛的应用,近年来受到了越来越多的关注。在现有的ABSA数据集中,大多数句子只包含一个或多个具有相同情感极性的方面,这使得ABSA任务退化为句子级情感分析。在本文中,我们提出了一个新的大规模多方面多情感(MAMS)数据集,其中每个句子至少包含两个具有不......
  • [VLDBJ 2019]Distributed Subgraph Matching on Timely Dataflow
    [VLDBJ2019]DistributedSubgraphMatchingonTimelyDataflow只关注这篇中的subgraphmatching的内容定义\(g=(V_g,E_g,L_g)\)分别表示点、边,以及把任意点或边映射成label的函数。如果是无标签图则会映射为空。对于任意点\(\mu\inV_g\),定义\(N_g(\mu)\)为它的邻居节......
  • os.path.getmtime(file) 与 os.stat(file).st_mtime 的区别
    os.path.getmtime(file)和os.stat(file).st_mtime都用于获取文件的最后修改时间,但它们之间有一些区别:返回值类型:os.path.getmtime(file)返回的是一个浮点数,表示文件的最后修改时间,以秒为单位。os.stat(file).st_mtime返回的也是一个浮点数,表示文件的最后修改时间,以秒为单位。......
  • dotnet 将任意时区的 DateTimeOffset 转换为中国时区时间文本
    本文告诉大家在拿到任意时区的DateTimeOffset对象,将DateTimeOffset转换为使用中国的+8时区表示的时间在开始之前,需要说明的是,采用DateTimeOffset会比DateTime更优的一个点是DateTimeOffset是带上时区的,这就意味着方便的在多个不同的时区进行传递和序列化的时候,不会丢......
  • MySQL将timestamp默认值设置为null
    问题以前MySQL创建表的的时候,timestamp类型的字段可以不加默认值。createTimetimestampCOMMENT'创建时间',这样创建是没有问题的。但是现在却报错,“Invaliddefaultvaluefor‘createTime’”问题原因:因为MySQL5.6以后timestamp设定默认值规则改变,不能为000000-0000:00:00......