论文 学习 Transformer : Attention Is All You Need

news2024/11/16 18:41:45

目录

概述:

对摘要的理解:

框架解析

按比例缩放的点积注意力

多头注意力机制

前馈神经网络与位置编码 


概述:

 

transformer 是一个encoder ——decoder 结构的用于处理序列到序列转换任务的框架,是第一个完全依赖自注意力机制,计算其输入输出表示的转换模型,核心是采用了注意力机制用于捕获输入序列不同位置之间的依赖关系,帮助模型在生成输出时能够关注到与当前任务最相关的信息,优势是能够捕获长距离依赖关系,并且对于输入序列的长度没有固定的限制,在处理长文本和复杂语言结构时表现出色,在编码器解码器框架中,编码器负责将输入系列转换成一个固定大小的表示(上下文向量)解码器根据这个表示,生成输出序列,transformer 能够并行化处理整个序列,从而大大提高了训练速度和效率

self—attention 机制:

注意力模型的本质思想:从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略不重要的信息。

transfomer 注意力的计算方法采用了Scaled Dot-Product Attention

注意力机制采用了multi head self Attention

框架中 使用了三种不同形式的的 多头注意力机制

 

对摘要的理解:

主流的序列转换模型基于复杂的循环或卷积神经网络,这些网络包括一个编码器和一个解码器。性能最佳的模型还通过注意力机制将编码器和解码器连接起来。我们提出了一种全新的简单网络架构,即Transformer,它完全基于注意力机制,完全摒弃了循环和卷积。

序列转换模型(Sequence Transduction Models)指将一个序列转换为另一个序列的模型。序列转换模型可以通过编码器(Encoder)和解码器(Decoder)两个主要部分实现。编码器使用循环神经网络(RNN)或其变种(如长短时记忆网络LSTM、门控循环单元GRU)对输入序列进行建模,得到上下文信息;利用编码器输出的上下文信息生成目标序列

注意力机制:处理一个任务时,我们不会平等地对待所有的信息,而是会将注意力集中在某些关键的部分。例如,当我们阅读一段文本时,我们会更关注与当前任务相关的词汇和句子,而忽略其他不相关的信息。注意力机制就是模拟这种行为,让模型在处理数据时能够自动地关注到更重要的部分。

框架解析

transformer 使用编码器和解码器堆叠自注意力和逐点全连接层

每个编码器由6个相同的层组成,每个层有两个子层他们分别是 掩码多头注意力层和全连接前馈神经网络 ,模型技巧(trick)有采用了残差链接和层归一化每个子层的输出是LayerNorm(x + Sublayer(x)),具体来说,1 首先对x进行嵌入编码 然后和位置编码相加 2 编码后的向量输入进多头注意力机制,3 残差链接层归一化,4  Position-wise Feed-Forward Networks 5 残差连接 层归一化

每个解码器由6个相同的层组成,每个层有三个子层他们分别是1 掩码多头注意力层(why mask:防止解码器在生成序列时查看未来的信息,即在解码时 只希望模型 看到当前词 和当前词 前面的部分 所以要对后面的单词进行mask 处理 方法是 设为很大的负数)   2  encoder-decoder 多头注意力机制和3全连接前馈神经网络 ,模型技巧(trick)有采用了残差链接和层归一化每个子层的输出是LayerNorm(x + Sublayer(x)),具体来说,1 首先对x进行嵌入编码 然后和位置编码相加 2 编码后的向量输入进掩码多头注意力机制,3 残差链接层归一化, encoder-decoder 多头注意力机制 (q 来自掩码多头注意力的输出 kv 来自编码器的输出) 残差链接层归一化4  Position-wise Feed-Forward Networks 5 残差连接 层归一化

按比例缩放的点积注意力

 

为什么使用按比例缩放的 点积注意力?

缓解输入向量维度对注意力权重的影响:在点积计算中,如果输入向量的维度非常高,那么点积的结果可能会非常大,导致后续的softmax函数进入饱和区,使得梯度变得非常小,从而难以训练。按比例缩放可以解决这个问题,使得点积的结果在合理的范围内,避免softmax函数进入饱和区。

点积 可以计算向量之间的余弦相似度,并且可以进行矩阵运算加快计算速度和效率

多头注意力机制

 

 为什么要采取多头注意力机制?

多头注意力机制则允许模型在多个不同的表示子空间上并行计算注意力权重,从而能够更全面地捕捉输入序列中的依赖关系。通过将不同的注意力头组合在一起,模型能够学习到更复杂的表示,并更准确地预测目标序列

文心一言 是这样回答的

transformer 采取多头注意力机制(Multi-Head Attention)主要有以下几个原因:

  1. 多样性:多头注意力机制允许模型同时关注不同的位置和语义信息。每个头可以学习不同的注意力分布,从而捕捉输入序列中的不同依赖关系。如果只使用一个头,模型可能会错过某些重要的依赖关系。
  2. 更丰富的表示:通过多头注意力机制,模型可以并行学习多个自注意力表示。这使得模型能够更好地抓住输入数据的局部和全局信息,提供更丰富、更强大的表示。在自然语言处理任务中,这种丰富的表示往往导致更好的性能。
  3. 并行计算:多头注意力机制可以充分利用现代硬件并行计算的能力,例如 GPU。多个头可以在一次计算中同时进行处理,这样可以显著提高计算效率。
  4. 学习到不同维度的特征和信息:由于每个注意力头都是一个独立的self-attention,它们可以通过产生QKV矩阵来学习数据特征。每个self-attention最终会产生一个维度上的输出特征,因此当使用多头注意力机制时,模型可以学习到多维度的特征信息,从多个维度更好地理解数据。
  5. 提高模型容量和泛化能力:多头注意力机制增加了模型的容量,使得模型能够学习到更复杂的表示。由于能够从多个角度分析输入数据,模型的泛化能力得到提升。

总的来说,多头注意力机制通过提供多样性、更丰富的表示、并行计算能力以及学习不同维度特征的能力,帮助Transformer模型在处理序列数据时获得更好的性能。

多头注意力机制的多头是怎么实现的?

不是使用 dmodel 维键、值和查询执行单个注意力函数,e而是 将查询、键和值分别线性投影到 dk、dk 和 dv 维。在每个查询、键和值的每个投影版本上,然后我们并行执行注意力函数,产生 dv 维输出值

  1. 分割嵌入向量:首先,输入的嵌入向量(例如词嵌入向量)被分割成多个较小的部分,每个部分对应一个注意力“头”。假设输入的嵌入向量维度为D,注意力头数为h,则每个头处理的向量维度为D/h。这一步是为了让模型在更细粒度上学习数据的表示。
  2. 线性变换:对于每个分割后的部分(也就是每个头),应用三个不同的线性变换(全连接层),分别生成查询(Q)、键(K)和值(V)向量。每个线性变换的权重矩阵维度为(D/h)×(D/h)。
  3. 注意力计算:在每个头中,计算查询和键的点积,然后应用softmax函数得到注意力权重。最后,将注意力权重与值向量相乘,得到加权后的值向量。
  4. 拼接与线性变换:将所有头的加权后的值向量拼接起来,形成一个更大的向量。然后,再应用一个线性变换(全连接层),将拼接后的向量转换回原始嵌入向量的维度D。


 前馈神经网络与位置编码 

 

 

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

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

相关文章

基于Vue3与ElementUI Plus的酷企秀场景可视化DIY设计器探索(更新版)

一、引言 在当今数字化快速发展的时代,企业对于展示自身形象、产品细节以及提升客户体验的需求日益增强。酷企秀场景可视化DIY设计器,以其强大的功能和灵活的定制性,为企业提供了从VR全景展示到地图可视化、电子画册制作等一系列数字化解决方…

前端开发工程师——ajax

express框架 终端输入 npm init --yes npm i express 请求报文/响应报文 // 1.引入express const express require(express);// 2.创建应用对象 const app express();// 3.创建路由规则 // request:是对请求报文的封装 // response:是对响应报文的封装 app.get(…

基于Python的飞机大战游戏

学习目标 了解 飞机大战游戏的规则 理解 面向对象思想,会独立设计游戏的类与模块 掌握 pygame模块的使用 1.1 游戏介绍 飞机大战是一款由腾讯公司微信团队推出的软件内置的小游戏,这款游戏画面简洁有趣,规则简单易懂,操作简便易上手,在移动应用兴起之初曾风靡一时。 1.1.…

阿里云Redis创建使用

说明:本文介绍如何使用阿里云Redis,包括开通、连接、使用; 开通 进入官网Redis产品页,点击免费试用(白嫖); 选择中间这个,云数据库Redis版; 开通完成后,可在…

JDBC调用MogDB存储过程返回ref_cursor的方法和注意事项

MogDB在处理存储过程的时候,有时候需要返回结果集,类型为ref_cursor,但有时候可能会报错。而大部分应用程序都是使用Java JDBC. 根据我们这几年的数据库国产化改造经验,给大家分享一下JDBC调用 MogDB存储过程返回ref_cursor的方法…

C#实现多线程的几种方式

前言 多线程是C#中一个重要的概念,多线程指的是在同一进程中同时运行多个线程的机制。多线程适用于需要提高系统并发性、吞吐量和响应速度的场景,可以充分利用多核处理器和系统资源,提高应用程序的性能和效率。 多线程常用场景 CPU 密集型任务…

书生浦语训练营第四次课作业

基础作业 环境配置 拷贝internlm开发机内的环境 studio-conda xtuner0.1.17# 激活环境 conda activate xtuner0.1.17 # 进入家目录 (~的意思是 “当前用户的home路径”) cd ~ # 创建版本文件夹并进入,以跟随本教程 mkdir -p /root/xtuner0…

社工库信息查询

此网站需要注册账号,新用户注册送3点券,每日签到可获得1.5点券。也可通过充值来查 我这里有方法可以利用缺陷来无限获取点券查人

QT7_视频知识点笔记_3_自定义控件,事件处理器⭐,定时器,QPainter,绘图设备,不规则窗口

第三天: 自定义控件,事件处理器⭐,定时器,QPainter,绘图设备,不规则窗口实现 1.自定义控件: 创建新的QT控件类,然后再需要使用的地方--》提升为 来使用如何使用基础控件的信号和槽函数&…

智能座舱语音助手产品方案

一、用户调研与痛点分析 1.目标用户分析 用户画像 性别女性年龄50地域2-3线城市职业退休或退居二线教育中专、 大专、 本科财务家庭财务管理者爱好享受生活、 照顾家庭标签有闲有小钱二、产品定位与卖点提炼 购车目的 愉悦自我, 专属于自己的座驾: 家…

【大数据·Hadoop】从词频统计由浅入深介绍MapReduce分布式计算的设计思想和原理

一、引入:词频统计问题 假如我们有一亿份文档,需要统计这一亿份文档的词频。我们会怎么做,有以下思路 使用单台PC执行:能不能存的下不说,串行计算,一份一份文档读,然后进行词频统计&#xff0…

最新版Ceph( Reef版本)文件存储简单对接k8s(下集)

假如ceph集群已经创建 1.创建cephfs_pool存储池 ceph osd pool create fs_kube_data 16 162.创建cephfs_metadata存储池 ceph osd pool create fs_kube_metadata 16 163 创建cephfs ceph fs new cephfs01 fs_kube_metadata fs_kube_data4 设置最大活动数 ceph fs set cephfs01…

保健品小程序商城线上经营的作用是什么

保健品涵盖酒水、醋、食品等多个类型,无论厂商还是经销商,手里的品牌和数量都比较多,由于特殊性,商家经营时需要找到目标客户,而市场中虽然有大量客户,但商家实际想要触达却并不容易。 渠道多样化&#xf…

MTEB - Embedding 模型排行榜

文章目录 关于 MTEBMTEB 任务和数据集概览使用 MTEB Pythont 库Installation使用 关于 MTEB MTEB : Massive Text Embedding Benchmark github : https://github.com/embeddings-benchmark/mtebhuggingface : https://huggingface.co/spaces/mteb/leaderboardpaper : https:/…

Java医院绩效考核系统源码B/S+avue+MySQL助力医院实现精细化管理 医院综合绩效核算系统源码

Java医院绩效考核系统源码B/SavueMySQL助力医院实现精细化管理 医院综合绩效核算系统源码 医院绩效考核系统目标是实现对科室、病区财务指标、客户指标、流程指标、成长指标的全面考核、分析,并与奖金分配、学科建设水平评价挂钩。 具体功能模块包括收入核算、成本…

(超简单)SpringBoot中简单用工厂模式来实现

简单讲述业务需求 业务需要根据不同的类型返回不同的用户列表,比如按角色查询用户列表、按机构查询用户列表,用户信息需要从数据库中查询,因为不同的类型查询的逻辑不相同,因此简单用工厂模式来设计一下; 首先新建一个…

安装SQL Server详细教程_sql server安装教程

一,SQL Server数据库安装 1.首先,下载安装程序 (1)从网盘下载安装exe 点击此处直接下载 (2)从官网下载安装exe文件 在官网选择Developer进行下载 2.开始安装 双击安装程序,开始安装 这里直…

springboot(3.2.5)初步集成MinIO(8.5.9)开发记录

springboot初步集成MinIO开发记录 说明一:引入maven依赖二:手动注入minioClient三:创建service类四:测试打印连接信息五:时区转化工具类六:常用操作演示 说明 这里只是作者开发的记录,已备将来…

程序人生 | 人生如棋,落子无悔

人生的开始,始于哭声,浮浮沉沉几十年。终了,一声长叹,在一片哭声中撒手离去。 人生的道路虽然漫长,但是关键就是那么几次机会的选择,可以决定此后几十年的光阴。 有个故事讲:古代有个人去砍柴…

Vue3:路由

1. 路由简介 在Vue3中,路由是一个核心概念,特别是在构建单页面应用程序(SPA)时。以下是Vue3中路由的基本概念: 1. **路由(Route)**:在Vue3中,路由是指根据特定的规则将用…