2024/1/7周报

news2024/12/23 12:48:36

文章目录

  • 摘要
  • Abstract
  • 文献阅读
    • 题目
    • 引言
    • 贡献
    • 相关工作
      • Temporal Recommendation
      • Sequential Recommendation
    • 方法
      • Problem Formulation
      • Input Embedding
      • Self-Attention Structure
      • Model Training
    • 实验
      • 数据集
      • 实验过程
      • 实验结果
  • 深度学习
    • Self-attention
      • 多头机制
      • 堆叠多层
  • 总结

摘要

本周阅读了一篇基于多时间嵌入的混合注意机制的顺序推荐的文章,为了解决以前模型的局限性,文章提出了MEANTIME(混合的Attention机制与多时间嵌入),它采用多种类型的时间嵌入,旨在捕捉各种模式,从用户的行为序列,和一个注意力结构,充分利用这种多样性。此外,还对self-attention的内容进行进一步的补充学习、复习。

Abstract

This week, an article on order recommendation based on multi-time embedded mixed Attention mechanism is readed. In order to solve the limitations of previous models, the author proposes MEANTIME (mixed attention mechanism and multi-time embedding), which uses various types of time embedding to capture various patterns, from the user’s behavior sequence and an attention structure, and make full use of this diversity. In addition, the content of self-attention is further supplemented and reviewed.

文献阅读

题目

MEANTIME: Mixture of Attention Mechanisms with Multi-temporal Embeddings for Sequential Recommendation

引言

背景:从用户的历史记录中获取用户的偏好对于做出有效的推荐至关重要,因为用户的偏好和项目的特征都是动态的;此外,用户的偏好在很大程度上取决于上下文;因此,sequential recommendation旨在通过用户的历史记录来预测用户可能更喜欢的下一组事物。

问题:大多数顺序推荐算法忽略了interactions’ timestamp values,虽然TiSASRec成功地结合了时间信息,但它却仅限于单个嵌入方案。由于timestamp values中的信息十分重要,因此探索多种形式的时间嵌入是有益的,而且这些嵌入可以充分提取不同的模式,以及可以充分利用这些多样性的模型架构。

方案:论文提出了MEANTIME,它引入多个时间嵌入,以更好地编码序列中用户项交互的绝对位置和相对位置。此外,论文使用了多个单独处理每个位置嵌入的自注意头,专注于特定的用户行为模式。

贡献

1)论文提出多样化用于编码序列中用户项交互位置的嵌入方案,通过将多个内核应用于序列中时间戳的位置/值来创建唯一的嵌入矩阵来实现的。
2)论文提出了一种新的模型架构,该架构同时操作多个self-attention heads,其中每个头通过利用提出的位置嵌入从用户的行为中提取特定模式。
3)通过实验证明了论文方法在真实世界数据集上的有效性,以及提供了一项全面的消融研究,帮助了解模型中各个组件的影响。

相关工作

Temporal Recommendation

Temporal Recommendation包含上下文信息,对推荐性能非常关键。TimeSVD++和BPTF将时间因子引入到矩阵分解方法中,Time-LSTM为LSTM配备了几种形式的时间门,以更好地模拟用户交互序列中的时间间隔,。CTA在时间信息上使用多个参数化核函数来校准自注意机制。

Sequential Recommendation

Sequential Recommendation的目的是根据用户的顺序历史来推荐相关的项目。SASRec成功地采用了自我注意机制,这在NLP领域取得了巨大的成功。BERT 4 Rec通过采用Transformer 和基于Cloz任务的训练方法改进了SASRec。TiSASRec通过将时间戳信息合并到自注意操作中来增强SASRec。论文工作旨在进一步扩大这一趋势,提出了一种新的模型架构,使用多种类型的时间嵌入和self-attention操作,以更好地捕捉用户行为的不同模式。

方法

本文设计了一种新的模型架构,为每个注意力头部注入各种时间嵌入,如下图所示:
在这里插入图片描述

Problem Formulation

基于给定的历史(Vu,Tu),预测用户u可能在目标时间戳与之交互的下一个项目。

Input Embedding

相对嵌入通过利用时间差信息来编码序列中每个交互对之间的关系。首先,我们定义了一个时间差矩阵,其元素定义为dab=(ta − tb)/T,其中T为可调整的单位时间差。如下所示,编码函数:
在这里插入图片描述
在这里插入图片描述

每一个嵌入都提供了对时间数据的独特视图。例如:Sin捕获周期性事件,较大的时间间隔要么在Exp中迅速衰减为零,要么在Log中可管理地增加;Pos可以从以前的模型中学习模式;最后Con完全消除了位置偏差,因此注意力只能集中在项目之间的关系上。

Self-Attention Structure

Attention Architecture:基于自注意力机制的模型采用了简单的绝对位置编码,将EItem和EPos的总和作为输入;EPos被仅依赖于阵列的位置索引之间差异的相对位置嵌入ER所取代,并且位置信息不再用于键和值编码器;参数bI和bR分别用作全局内容/位置偏差。对于绝对嵌入,论文也采用了前面的结构。

Stacking Layers:将Position-wise前馈网络应用于self-attention的结果,以完成单层,然后堆叠L个这样的层,为每个子层应用残差连接以促进训练:
在这里插入图片描述
在这里插入图片描述

Prediction Layer:给定最后一层的输出,通过以下方式获得每个位置的项目得分分布:
在这里插入图片描述

Model Training

从(Vu,Tu)中对项目v和时间戳t的子序列进行采样,并以概率ρ用[MASK]随机屏蔽其中的一部分,将v转换为v’;然后我们将v′和t送到模型中以获得P,,损失函数如下:
在这里插入图片描述

实验

数据集

在四个不同领域具有稀疏性的数据集上评估了模型:MovieLens 1M、MovieLen 20M、Amazon Beauty和Amazon Game。其中遵循通用数据预处理过程,将每个数据集转换为隐式数据集,将每个数值评级或评论视为用户项交互的存在,最后按用户ID对交互进行分组,按时间戳对它们进行排序,丢弃了少于五次交互的用户和项目,以确保数据集的质量。

对于每个用户的项序列,将最后一个项用于测试,将倒数第二个项用于验证。剩下的用来训练。为了对排名列表进行评分,使用两个常用指标:Recall和Normalized Discounted Cumulative Gain (NDCG)。
Recall@K and NDCG@K都被设计为ground truth item在前k列表中排名较高时具有较大的值。设置K = 5和10。

实验过程

作者使用PyTorch实现了MEANTIME 1。
参数设置如下:
隐藏维度h ∈ {16,32,64,128},头数n ∈ {2,4},丢弃率∈ {0.2,0.5},权重衰减wd ∈ {0,0.00001}。对所有基于transformer的模型使用相同的最大序列长度(MovieLens为N = 200,Amazon为N = 50)和层数(L = 2)

实验结果

与最好基线相比,论文提出的模型在所有指标和数据集中都具有最优的性能。
在这里插入图片描述

多时间嵌入的效果:
下图比较了在ML-1M和Amazon Game数据集上所有可能的时间嵌入组合情况,结果表明具有不同特征的数据集需要精心选择的时间嵌入,以提供对用户-项目交互上下文的正确看法。
在这里插入图片描述

深度学习

Self-attention

例子:
以两个词的输入为例来解释self-attention的大致过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

此时每个词看的是整个输入序列,不再只看之前的序列,并且是并行计算,同时计算出所有的输出结果。

再以四输入四输出的例子进行补充说明:
在这里插入图片描述

其中只有Wq、Wk、Wv是机器需要学习的参数。

多头机制

CNN中,可以设置不同的filter来进行卷积,self-attention中也可以设置多组q,k,v的值得到不同的特征表达,这就是multi-headed机制。一般情况下,只做8组head即可,通过不同的head得到多个特征表达。多组结果z可以拼接在一起通过全连接层进行降维得到最终的结果。

堆叠多层

在这里插入图片描述

Self-attention输入输出都是向量,可以将self-attention也进行多层堆叠。10层以上都是很常见的。

补充说明:
结果需要通过Add和normalize,并且也可以类似CNN使用残差网络同等映射,以防在堆叠过程中出现结果变差的情况。

总结

本周继续学习了transformer中的核心机制self-attention并进行手动模拟推导,这有利于进一步理解transformer。decoder与encoder类似,只是attention的计算略有不同以及添加了mask机制。在decoder中,只能利用序列中已得出的结果,不能用后面未推导出的部分。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从0开始python学习-42.requsts统一请求封装

统一请求封装的目的: 1.去除重复的冗余的代码 2. 跨py文件实现通过一个sess来自动关联有cookie关联的接口。 3. 设置统一的公共参数,统一的文件处理,统一的异常处理,统一的日志监控,统一的用例校验等 封装前原本代…

案例093:基于微信小程序的南宁周边乡村游设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

Redis——centos7环境安装Redis6.2.14版本,make命令编译时报错:jemalloc/jemalloc.h:没有那个文件或目录

一、报错原因 在redis-6.2.14文件夹下有一个README.md文件,有如下一段话: 在构建 Redis 时,通过设置 MALLOC 环境变量来选择非默认的内存分配器。Redis 默认编译并链接到 libc malloc,但在 Linux 系统上,jemalloc 是…

如何实现安卓端与苹果端互通的多种方案

随着移动设备用户的爆炸性增长,跨平台应用开发变得尤为重要。在Android与iOS之间实现互通对于推广应用、增加用户覆盖面和提升用户体验有至关重要的作用。以下是实现Android与iOS互通的多种方案,以及每种方案的实现方法、细节注意点、适合团队的规模和建…

AWS EKS1.26+kubesphere3.4.1

1、前提准备 1台EC2服务器Amazon Linux2,设置admin的角色 安装 aws cli V2 ​ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zipsudo ./aws/installexport PATH/usr/local/bin:$PATHsou…

OpenHarmony鸿蒙源码下载编译和开发环境搭建

目录 一、开发环境搭建和源码下载二、编译三、总结 一、开发环境搭建 最好是在如Ubuntu18.04以上的系统中搭建,不然有些软件依赖需要解决,加大搭建时间 如gitee中开源OpenHarmony中的文档所示,搭建开发环境,搭建文档网站如下&a…

【算法设计与分析】分治-时间复杂度计算

目录 主定理 Master Theorem分治算法运行时间的递归表示主定理的简化形式 主定理的一般形式 递归树 Recursion Tree递归树的简单结论 主定理 Master Theorem 分治算法运行时间的递归表示 将原问题分解成 a 个子问题递归求解,每个子问题的规模是原问题的 1/b。同时子…

Unity游戏内相机(主角头部视角)的旋转问题:“万向节锁定”(Gimbal Lock)

前言: 在Unity中,相机的正前方是Z正半轴,相机的正右方是X正半轴,相机的正上方是Y正半轴。这个很好理解。 现在,我想要相机看向左前上方45,你会觉得要怎么做呢? 如果是我的话,我的第一…

在VM下使用Composer完成快照方式的软件制作

Composer允许您构建软件、应用程序、偏好设置文件或是文档的安装包,安装包可以部署到远程电脑或是作为镜像流程的一部分。构建软件包的第一步就是创建包源,根据要打包的软件,Composer允许您监视软件的安装和使用驱动器上已存在的文件来创建包…

Linux的top命令

通过top命令可以查看CPU、内存使用情况 -p:只显示某个进程的信息 -d:设置刷新时间 -c:显示产生进程的完整命令,默认是进程名 -n:指定刷新次数 -u:查找特点用户启动的进程 -b:以非交互非全…

【数据结构】八大排序之快速排序算法

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 一.快速排序简介及思路 二.快速排序代码实现的三种方式 📌左右交换法 📌挖坑填坑法 📌前后指针法 三.快速排序的时间复杂度分析…

MvvmToolkit的使用

背景:MvvmLight不更新了,用Toolkit代替 1、首先下载好社区版本的NuGet包 2、ViewModel中需要继承ObservableObject,查看ObservableObject可以看到里面有实现好InotifyPropertyChanged。 3、对于属性的set,可以简写成一行&#xff…

网络名称解读 -入门5

WAN: Wide Area Network(跨区域),LAN: Local Area NetworkWAN MAC, 用来连接上级网络, LAN MAC, 用于内部网路。 LAN & WAN 3.1,LAN表示子网,通过掩码来筛选子网内主机数量&…

【动态规划】【字符串】C++算法:140单词拆分

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 字符串 LeetCode140:单词拆分 II 给定一个字符串 s 和一个字符串字典 wordDict ,在字符串 s 中增加空格来构建一个句子,使得句子中所有的单词都在词典中。以任意顺序 返回…

创建专业电子邮件签名:提升个人与品牌形象的实用指南

电子邮件签名乃是品牌建设中常被忽略的一环。试想一下,若名片只是普通的、手工切割的复印纸,上面用黑体打印着你的联系方式,那将是多么平凡无奇。这将显得廉价、乏味且不专业——这正是人们不愿如此的原因。相反,他们渴望让自己的…

MySQL-DDL

DDL是数据定义语言,用来定义数据对象(数据库,表,字段) 数据库操作: 1.查询: 查询所有数据库:SHOW DATABASES; 查询当前数据库:SELECT DATABASE(); 2.创建: C…

彻底解决vue-video-player视频铺满div

需求 最近需要接入海康视频摄像头,然后把视频的画面接入到自己的网站系统中。以前对接过rtsp固定IP的显示视频,这次的不一样,没有了固定IP。海康的解决办法是,摄像头通过配置服务器到萤石云平台,然后购买企业版账号和…

编程语言的未来?直观点5年之际!

编程语言的未来?未来5年应该如何发展! 随着科技的飞速发展,编程语言在计算机领域中扮演着至关重要的角色。它们是软件开发的核心,为程序员提供了与机器沟通的桥梁。那么,在技术不断进步的未来,编程语言的走…

selenium实现UI自动化

1.selenium简介 selenium是支持web浏览器自动化的一系列工具和库的综合项目。具有支持linux、windows等多个平台,支持Firefox、chrome等多种主流浏览器;支持Java、Python等多种语言。 主要包括的三大工具有: WebDriver(rc 1.0)、…

优雅永不过时: spring-retry 重试框架

文章目录 前言一、幂等性是重试的前提二、使用步骤1.引入依赖2.启动类或配置类上添加EnableRetry,启用retry框架3.创建一个要重试的方法4.自定义一个retry监听5.创建一个测试类 总结 前言 Spring Retry 是一个用于在 Spring 应用中实现重试机制的库。它提供了一种方便的方式来…