基于自注意力网络的SASRec

运用了自注意力网络(self-attention network,SAN)的序列推荐算法(SASRec)能以并行化的方式捕捉同一序列上不同时间步间的转移关系,最后通过加权求和的方式得出每个时间步的序列特征。

算法原理:

SASRec主要由一个输入层、一个自注意力网络和一个预测(输出)层组成。输入层负责将每个物品编码为一个物品嵌入向量,并根据它们在用户行为序列中的顺序将它们拼接为用户序列的嵌入矩阵,预测层从自注意力网络输出的嵌入矩阵中提取每个时间步的用户偏好特征,将其与候选物品特征结合后,即可得出对应的用户对物品的偏好值。

自注意力网络是由若干自注意力块堆叠而成的。一个自注意力块包含一个能捕捉不同时间步之间关联关系的自注意力层和一个独立捕捉个时间步信息的前馈层。

自注意力块内部和外部的网络层之间又通过残差连接,从而解决了梯度消失或梯度爆炸的问题,更好的传播低层的信息。

Abstract

序列动态推荐希望可以关注“上下文”信息。目前出现了马尔科夫链(MC)和循环神经网络(RNN)两种方法。马尔科夫链假设用户的下一个动作可以根据最后几个动作来预测,而RNN原则上允许发现更长期的语义。MC适合要求模型简约的极其稀疏的数据集。而RNN适合模型复杂且密集的数据集。

INTRODUCTION

新的序列模型Transfomer在机器翻译任务中实现了最先进的性能和效率。transformer基于一种“自注意力”的注意力机制,这个机制非常高效。能够揭示句子中单词之间的句法和语义模式。

构建的基于自注意力的序列推荐模型(SASRec)在每个时间步自适应地为先前的项目分配权重。

由于自注意力机制,SASRec 倾向于考虑对密集数据集的长期依赖,同时关注稀疏数据集上的近期活动。

适用于并行加速,比基于CNN/RNN的替代方案快一个数量级。

RELATED WORK

A. General Recommendation

B. Temporal Recommendation

C. Sequential Recommendation

D. Attention Mechanisms

METHODOLOGY

A. Embedding Layer

为了方便并行化,将每个用户的输入物品序列的长度固定为L。对于用户历史交互物品数量大于L的,我们截取最新的序列片段;对于用户的历史交互数量小于L的情况,我们使用一个填充项对序列的开头进行填充【A constant zero vector 0 is used as the embedding for the padding item.常量0用作填充项目的嵌入】。通常选择一个较大且合适的L值以完整地保留多数用户的历史物品序列,过度增大L值可能对提升推荐效果的作用不大,甚至会影响算法效率。

Positional Embedding

由于自注意力模型不包含任何循环或卷积模块,因此它不知道先前项目的位置。因此我们将一个可学习的位置嵌入P注入到输入嵌入。初始输入嵌入矩阵为物品嵌入向量和位置嵌入向量相加得到。物品嵌入矩阵和位置嵌入矩阵是被所有物品序列所共享的,由模型学习到的参数。{如果使用固定位置嵌入,会发现性能变差,为何?}

B. Self-Attention Block

自注意力定义如下,Q代表Query,K代表Key,V代表Value。在QKT得到的矩阵中,第p行、第q列的元素蕴含着第p个时间步和第q个时间步的内容之间的关联度信息。▲表示一个因果掩码(mask),可以看作通过一个形似下三角的过滤器将来自未来的信息滤除(即q>p的情况)。最后再乘以V,就是根据前面算出的权重对所有时间步的信息加权,重新得到各时间步的序列特征。

Self-Attention layer

自注意力方法使用相同的对象作为Query、Key和Value。自注意力操作将嵌入E作为输入,通过线性投影转换为三个矩阵,并将它们输入到注意力层。【投影使模型更加灵活,例如模型可以学习不对称交互】

Causality

由于序列的性质,模型在预测第(t+1)各项目时应仅考虑前t个项目。然而,自注意力层(St)的第t个输出包含后续项目的嵌入,这使得模型ill-posed。通过禁止Qi和Kj(j>i)之间的所有链接来修改注意力。【在计算第t+1个位置的注意力权重时,Qt+1只能和K1....Kt进行交互。保证模型在预测时不会利用未来的信息。】

Point-Wise Feed-Forward Network

尽管自注意力能够通过自适应权重聚合所有先前项目的嵌入,但是它是一个线性模型。因此我们使用前馈网络为模型赋予非线性并考虑不同潜在维度之间的相互作用。

注意Si和Sj之间没有交互作用,意味着可以防止信息泄露(从后到前)

C. Stacking Self-Attention Blocks

在经过第一个自注意力块后,Fi聚合了所有先前项目的嵌入,通过另外一个基于F的自注意力块来学习更复杂的项目转换可能会更有用。堆叠自注意力块(自注意力层+前馈网络)以及第b个自注意力块。

当网络更深,会出现几个问题(1)模型容量增加容易过拟合(2)训练过程不稳定(由于梯度消失等)(3)具有更多参数的模型需要更多的训练时间。

g(x)表示自注意力层或前馈网络。对于每个块中的层g,在输入g之前对输入x应用层归一化,对g的输出应用dropout,并将输入x添加到最终输出。

Residual Connections

残差网络的核心思想是通过残差连接将低层特征传播到高层。为什么有剩余连接?因为现有的序列推荐方法表明,最后访问的项目在预测下一个项目起着关键作用,然后在几个自注意力块后,最后访问的项目的嵌入与所有先前的项目纠缠在一起添加剩余连接可以将最后访问的项目嵌入传播到最后一层,更好的利用低层信息。

Layer Normalization

对输入进行归一化有利于稳定和加速神经网络训练。

Dropout

缓解过拟合问题,dropout正则化技术被证明在各种神经网络架构中有效。

dropout的想法:在训练期间以概率p随机“关闭”神经元,并在测试时使用所有神经元。dropout可以被视为集成学习的一种形式,考虑了共享参数的大量模型。

D. Prediction Layer

在b个自注意力块自适应且分层地提取先前项目的信息之后,预测下一个项目。

采用MF层来预测项目i的相关性:

E. Network Training

将每个用户序列转换为固定长度序列(通过截断或填充),将ot定义为时间步t的预期输出

binary cross entropy loss

该网络由Adam优化器(SGD随机梯度下降的变体)进行优化。

缺点

实验无法扩展到非常长的序列。只关注最近的动作而不是所有动作。

Q&A

为什么在学习到的序列特征上加一个用户的潜在特征并不能特工这个序列特征的表征能力?【推测原因是模型已经通过考虑用户的所有行为来生成序列特征,本身就已经包含了足够的用户信息。】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/935059.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件工程知识点

CMMI 阶段式模型 初始的:过程不可预测且缺乏控制。 已管理的:过程为项目服务。 已定义的:过程为组织服务。 定量管理的:过程已度量和控制。 优化的:集中于过程改进。 CMMI连续式模型 CL0(未完成的&#…

#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit(5)进阶模式-MITM中间人代理与劫持(上)

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Windows11安装Isaac Lab

1.1 下载文件 将 Isaac Lab 仓库克隆到您的工作空间: git clone https://github.com/isaac-sim/IsaacLab.git 1.2 创建Isaac Sim符号链接 F:cd IsaacLab 官方文档里路径/有问题,改成\): # 打开IsaacLab目录cd IsaacLab# 使用…

AI 的时代,新科技和新技术如何推动跨学科的整合?

在当前AI的发展中,我们面临的一个主要挑战就是融合的问题,这实际上不仅是技术上的融合,还有更深层次的哲学层面的思考。 或许在中国这方面的讨论较少,但在西方哲学和神学的语境中,探讨万物的根本和不同学科之间的联系…

力扣打卡12:复原IP地址

链接:93. 复原 IP 地址 - 力扣(LeetCode) 这道题需要对字符串进行操作,我选择了三层循环,其实还可以递归。 我在循环时进行了剪枝,比如一些情况直接跳出循环。 我的代码: class Solution { p…

R学习——数据框

目录 1数据框的合并 2数据框的访问 2.1 通过索引[] 2.2符号$访问 2.3 attach访问 2.4 with访问 1数据框的合并 当每个内容存储为单独的向量,data.frame可以进行这些内容单独数据框合并。 2数据框的访问 2.1 通过索引[] [i]输出对应的列 [i,]输出对应的行 …

XMOS将在CES 2025上展出多款由边缘AI驱动的创新音效、音频、识别和处理解决方案

全球智能物联网技术领导者暨匠心独到的半导体科技企业XMOS宣布:该公司将再次参加2025年国际消费电子展(CES 2025),并将在本届CES上展出一系列由人工智能(AI)驱动的全新空间音效、语音捕获与降噪、音视频多模…

第一个C++程序--(蓝桥杯备考版)

第一个C程序 基础程序 #include <iostream>//头⽂件 using namespace std;//使⽤std的名字空间 int main()//main函数 {cout << "hello world!" << endl; //输出&#xff1a;在屏幕打印"hello world!" return 0;}main函数 main 函数是…

密码学——密码学基础、散列函数与数字签名

1.密码学概述 是信息安全的基础和核心&#xff0c;是防范各种安全威胁的重要手段&#xff0c;信息安全的许多相关知识都与密码学相关。 密码学发展 密码学是一门古老而又年轻的学科 &#xff0c;几千年以前就存在&#xff0c;至今仍在发展演进。地位非常重要甚至起决定性作用…

李飞飞的生成式3D场景,对数字孪生的未来影响几何?

大家好&#xff0c;我是日拱一卒的攻城师不浪&#xff0c;致力于技术与艺术的融合。这是2024年输出的第47/100篇文章。 前言 这两天&#xff0c;AI界的教母李飞飞团队重磅发布了空间智能生成式AI大模型。 仅通过一张图片就能够生成一个可操作和交互的3D空间场景。 空间智能的…

H3C NAT实验

实验拓扑 实验需求 按照图示配置 IP 地址私网 A 通过 R1 接入到互联网&#xff0c;私网 B 通过 R3 接入到互联网私网 A 内部存在 Vlan10 和 Vlan20&#xff0c;通过 R1 上单臂路由访问外部网络私网 A 通过 NAPT 使 Vlan10 和 Vlan20 都能够使用 R1 的公网地址访问互联网私网 B…

【Java Web】Tomcat 快速入门

通常&#xff0c;为了让 Java 开发的应用程序&#xff08;app&#xff09;能够在服务器上正常运行&#xff0c;必须安装 Java 运行时环境&#xff08;JRE&#xff09;。JRE 主要支持 Java SE&#xff0c;而如果要运行 Java EE 应用&#xff0c;则需要更多的支持&#xff0c;比如…

域渗透入门靶机之HTB-Cicada

easy难度的windows靶机 信息收集 端口探测 nmap -sT --min-rate 10000 -p- 10.10.11.35 -oA ./port 发现开放了53&#xff0c;88&#xff0c;389等端口&#xff0c;推测为域控 进一步信息收集&#xff0c;对爆破的端口进行更加详细的扫描 小tips&#xff1a;对于众多的端口&…

QT核心功能概览

QT的学习&#xff08;一&#xff09;如何查阅QT文档&#xff1f;&#xff08;以QPushButton为例&#xff09;_qt的组件在qt文档那里面看-CSDN博客 QPushButton Class | Qt Widgets 5.15.18 一、前言 QT虽说功能很庞大&#xff0c;但是常用的控件也不是很多&#xff0c;也就只…

《Java核心技术I》并行数组算法

并行数组算法 Arrays类提供了大量并行化操作。 Arrays.parallelSort方法可以对一个基本类型值或对象的数组排序。 package arrays;import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import …

深度学习:重塑学校教育的未来

摘要&#xff1a;本文旨在全面剖析深度学习技术在教育领域的应用现状及未来前景。通过对当前深度学习技术在教育中的应用案例进行深入剖析&#xff0c;探讨其在教学效果、学习体验等方面的积极作用&#xff0c;同时分析存在的挑战与问题。在此基础上&#xff0c;本文将进一步展…

从根上理解 mysql -数据在页中是怎么存储的

之前说了&#xff0c;一行数据是怎么存储的。现在来看下 数据在页中是怎么存储的 基础知识 页是Innodb管理的存储空间的基本单位,一般是16kb页分为好多类型 大概十多种&#xff0c;面试中平时所说的页即为索引页&#xff08;数据页&#xff09;&#xff0c;当然也有像insert …

在C#中编程绘制和移动线段

这个示例允许用户绘制和移动线段。它允许您根据鼠标下方的内容执行三种不同的操作。 当鼠标位于某个线段上时&#xff0c;光标会变成手的形状。然后您可以单击并拖动来移动该线段。当鼠标位于线段的终点上时&#xff0c;光标会变成箭头。然后您可以单击并拖动以移动终点。当鼠…

快速学习selenium基础操作

全篇大概19000字&#xff08;含代码&#xff09;&#xff0c;建议阅读时间1h 什么是Selenium&#xff1f; Selenium是一系列自动化工具集的统称&#xff0c;官方工具有 Selenium IDE、Selenium WebDriver、Selenium Grid&#xff0c; 主要用于桌面端Web应用程序的自动化。能够通…

说下JVM中一次完整的GC流程?

大家好&#xff0c;我是锋哥。今天分享关于【说下JVM中一次完整的GC流程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 说下JVM中一次完整的GC流程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中&#xff0c;垃圾回收&#xff08;GC&am…