【论文精读】Self-Attention Sequencial Recommendation <更新中>

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

【写在前面】

论文的阅读方式:看模型图,method,abstract,introduc,experi,related,conclusion

目录

Abstract(摘要)

①背景

②目标

③贡献

1.Introduction(引言)

1.1.SASRec目标

1.2.以前的方法(MCs和RNNs)

①MCs

②RNNs

③方法对比

1.3.提出新方法(SASRec,含模型图!!)

①idea的来源

②idea的创新

③解读模型图

2.Related Work(相关工作)

2.1.一般推荐

2.2.临时推荐

2.3.序列推荐

2.4注意力机制

3.Methodology(方法论)

3.1.Embedding Layer(嵌入层)

①输入序列

②输入、项目嵌入

③位置嵌入

3.2.Self-Attention Block(自注意力块)

①自注意力层

②因果关系

③点对点前馈网络

3.3.Stacking Self-Attention Block(堆叠自注意力块)

①残差连接

②层归一化

③丢弃

3.4.Prediction Layer(预测层)

①共享项目嵌入

②显式用户建模

3.5.网络训练

3.6.Network Training(复杂性分析)

①空间复杂度

②时间复杂度

③处理长序列

3.7.Discussion(讨论)

4.Experiments(实验)

4.1.数据集

①数据集选择

②数据集操作

4.2.对比实验

①一般推荐

②序列推荐

③基于序列推荐系统的深度学习

4.3.实施细节

4.4.指标评估

①Hit Rate@10

②NDCG@10

4.5.推荐性能

①其他模型情况

②本文模型情况

4.6.Ablation Study(消融实验)

①Remove PE(移除PE)

②Unshared IE(非共享项目嵌入)

③Remove RC(移除RC)

④Remove Dropout(移除丢弃)

⑤Number of blocks(调整块数量)

⑥多头

4.7.训练效率和可扩展性

①训练效率

②可扩展性

4.8.可视化注意力权重

①位置上的注意力

②项目间的注意力

5.Conclusion(结论)

Reference(文献)


Abstract(摘要)

①背景

序列动态成为捕捉用户活动上下文的关键,原先有两种方法:

  • 马尔科夫链(Markov Chains,下文按MCs描述):根据最后一个或几个行为来预测其下一个行为,在简约模型中极度稀疏数据集里表现很好。

  • 循环神经网络(Recurrent Neural Networks,下文按RNNs描述):揭示长期上下文语义,在较复杂模型中稠密数据集里表现更好。

②目标

为了实现 “捕捉长期上下文语义” 和 “基于较少的用户行为做出预测” 的状态,因此提出基于自注意力机制的序列推荐(Self-Attentive Sequential Recommendation,下文按SASRec描述

③贡献

  • 在每个时间步中,SASRec从用户操作历史中识别出哪些行为是相关的,并用相关度较高的行为去预测其下一个行为。

  • 在稀疏或稠密的数据集里均优于其他方法(MC/CNN/RNN),效率上高出一个数量级别。

  • 通过注意力权重的可视化展示,该方法能自适应处理各种密度下的数据集,揭示在活动序列中有意义的模式。


1.Introduction(引言)

1.1.SASRec目标

将 “用户行为的个性化模型(基于历史活动)” 与 “基于用户最近行为的一些上下文” 结合。主要关注如何简单地捕捉用户行为变化的高阶动态。

1.2.以前的方法(MCs和RNNs)

①MCs

  • 定义:假设 “下一个行为的发生” 是 “基于之前一个或几个行为” 作为条件,应用于描述用户在短序列活动中的特征,以便推荐。

②RNNs

  • 定义:通过隐藏状态总结先前的所有行为,以来预测下一个行为。

③方法对比

以前的方法虽然好,但两者分别存在局限性,如下,

MCs:

  • 优势:能做出强有力的简单假设,在稀疏设置中表现优秀;

  • 缺点:难以捕捉更加复杂场景中的复杂动态。

RNNs:

  • 优势:能处理复杂场景的复杂动态;

  • 缺点:需要输入大量稠密的数据集,才能超越简单模型。

1.3.提出新方法(SASRec,含模型图!!)

①idea的来源

受启发于transformer:一种完全基于self-attention机制的架构,能高效揭示句中的词间句法和语义模式,在机器翻译中表现出前沿的性能和效率。

②idea的创新

  • 原理:在序列推荐模型中引入self-attention机制。在每一个时间步中自适应地给先前行为动态分配权重。考虑在稠密数据集中长距离依赖,关注稀疏数据集中近期活动,即结合两者的优势,一方面根据过去的所有行为(RNNs)获取上下文,另一方面根据少量动作(MCs)便可进行预测。

  • 核心组件:自注意力。适合并行加速度,比基于CNN/RNN的替代方法快一个数量级。

  • 实验过程(大致):分析SASRec的复杂性和可扩展性,进行全面的消融实验,可视化注意力权重以定性地揭示模型表现力。

③解读模型图

图:为简化的SASRec方法训练过程。在每个时间步中,该模型都考虑了之前的项目,并使用了注意力机制关注与“下一个项目”更相关的之前项目。

模型解读
架构部分 作用 例子

输入(Training Action Sequence)

S_{1},S_{2},...,S_{n}是输入序列;

表示用户的行为序列

例如用户购买的物品,从左至右依次为电脑 (S_{1})、鼠标 (S_{2})、打印机 (S_{3})、书籍 (S_{4})

词嵌入(Embedding Layer)

输入的每个动作都会先经过这层;

该层将离散的物品标识(S_{1},S_{2}等)转化为连续向量表示;即将输入序列转化为高维稠密向量,使得模型捕获物品之间的语义关系

自注意力(Self-Attention Layer)

作为Transformer 的核心;

该层会计算序列中每个元素与其他元素的相关性,捕捉长距离依赖关系,帮助模型理解序列中元素之间的交互信息

例如模型关注打印机(S_{3}) ,是否与鼠标(S_{2}) 或电脑(S_{1}) 间是否有关系

前馈网络(Point-Wise Feed Forward Network (FFN))

自注意力机制的输出会经过一个前馈神经网络FFN;

该层网络是逐点的操作,不同序列位置的向量独立通过相同的全连接层,增加非线性表示能力,捕获更加复杂的模式

堆叠块(Stacking Blocks)

该层框架允许堆叠多个注意力层和前馈网络,实现在更深的网络中捕获更复杂的特征

预测(Prediction Layer)

每个位置的输出都会经过该层,预测下一步的目标(即序列的下一项)

例如输入“电脑 (S_{1})、鼠标 (S_{2})、打印机 (S_{3})”,会输出“预测下一步为书籍”


2.Related Work(相关工作)

2.1.一般推荐

2.2.临时推荐

2.3.序列推荐

2.4注意力机制


3.Methodology(方法论)

通过嵌入层、堆叠自注意力块,和预测层来建立一个序列推荐模型,用来分析SASRec的复杂性。

①用户动作序列

S^{u}=(S{_{1}^{u}},S{_{2}^{u}},...,S{_{|S{^{u}}|}^{u}})

  • 目标:预测用户的下一个行为

  • S^{u}:用户u的完整动作序列,可能按时间排序

  • S{_{1}^{u}},S{_{2}^{u}},...,S{_{|S{^{u}}|}^{u}}:分别表示用户u在各个段时间内的具体行为项

②该方法中模型图的序列

 根据模型图,按用户动作序列公式变形得,输入序列为S{_{1}^{u}},S{_{2}^{u}},...,S{_{|S{^{u}}|-1}^{u}},输出序列为S{_{2}^{u}},S{_{3}^{u}},...,S{_{|S{^{u}}|}^{u}}

③公式符号

后续公式可能会用到表中的符号,参考如下:

3.1.Embedding Layer(嵌入层)

①输入序列

根据输入序列为S{_{1}^{u}},S{_{2}^{u}},...,S{_{|S{^{u}}|-1}^{u}}。用户的交互序列 S^{u}通常是一个可变长度的序列,且其长度可能小于或大于模型的固定长度 n;另要求所有输入序列S^{u}都具有固定长度 n(S=\left \{ S_{1} ,S_{2},...,S_{n} \right \}),n为模型能处理的最大序列长度:

  • sequence length > n,考虑最近的n个行为

  • sequence length < n,重复在左侧添加“填充”项(一般用零向量填充),直至长度为n

②输入、项目嵌入

  • 创建项目嵌入:M\in R^{\left | I \right |*d}

  • 检索输入嵌入:E\in R^{n*d}

  • E_{i}=M_{S_{i}},即每一行 E_{i} 对应于序列S^{u}中第 i 个物品的嵌入向量

③位置嵌入

  • 在项目嵌入M\in R^{\left | I \right |*d}里,将一个可学习的位置嵌入 P\in R^{n*d},注入到输入嵌入E\in R^{n*d}中;

  • 为什么不用《Attention is all you need》中的固定位置嵌入?

        因为固定位置嵌入式通过预定义的公式生成序列中的每个位置嵌入,该类嵌入方式是不可学习的,仅仅反映每个时间步的位置。使用这种嵌入会造成推荐系统任务产生动态序列长度、行为权重不均,以及时间间隔的影响等问题。综上,由于缺乏灵活性,无法捕捉用户行为的相对位置和动态模式,该方式很难适用于推荐系统的需求。

3.2.Self-Attention Block(自注意力块)

本文中,一个自注意力块一般包含一个自注意力层(Self-Attention Layer)和一个点对点前馈网络(Point-Wise Feed-Forward Network)。

  • 为什么设计成这种自注意力块?

        因为分层设计能让模型从粗到细地逐层提取序列中的全局和局部信息,应用在推荐系统中,不仅能获取到用户整体特征,还可以重点考虑到用户在被推荐的活动中比较重要的细节局部特征,即:

        Self-Attention:全局信息提取,捕获输入序列(用户行为序列)中各项目间的依赖关系(全局关联),得到特征元素S{_{i}^{(b)}}

        FFN:对每个位置的元素S单独非线性特征变换,即对关联进行逐点的特征增强,得到输出F{_{i}^{(b)}}

  • 了解自注意力(Self-Attention)公式

Attention(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt{d}})V

解读公式:

  • q:查询向量,当前输入与其他输入之间的匹配计算的起点;

  • k:键向量,计算注意力权重,确定查询和各输入部分相关性的重要向量;

  • v:值向量,权重最终作用的对象,最终关注机制希望从输入序列中提取的信息;

  • \sqrt{d}:该比例因子为避免内积值过大,尤其当维度很高时。

  • 自注意力机制的作用

        经q、k、v交互计算全局相关性权重,重新加权输入序列特征,以获取重要特征信息。

自注意力层

(Self-Attention layer)

S=SA(\hat{E})=Attention(\hat{E}W^{Q},\hat{E}W^{K},\hat{E}W^{V})

  • 本文采用输入嵌入矩阵\hat{E}作为输入,并通过线性投影后将其转换为3个矩阵,并将其输入进自注意力层。

  • 作用:该方法能使得模型更加灵活,学习到不对称交互(如

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值