Transformer与注意力机制

news2024/12/28 18:22:40

Transformer与注意力机制

1. RNN基础

循环神经网络(RNN)是专门用来处理自然语言、金融信息等时序数据的一种神经网络。它的结构和运作方式如下图所示,基于马尔可夫决策模型。
请添加图片描述
图1 循环神经网络的结构和运作方式

应该注意到以下几个性质:

  1. RNN是串联处理输入数据的。(时序中靠后的输入依赖前面一个输入的隐层输出值)

  2. RNN层数不固定,但总共只有3个参数组(输入参数、隐藏参数、输出参数),**各层之间共享权重。**其实这也好理解,因为时序序列中每一个输入输出的映射关系,应该与其在时序中所处的位置无关。所以RNN各层的权重应该共享,实际只训练了一层的参数。

  3. RNN中的梯度消失:与CNN不同,RNN梯度消失是指:被时序输入中 较近距离输入主导,易被远距离输入忽略。

2. Transformer架构

请添加图片描述图2 Transformer架构

可以看到,整个Transformer是由n个编码器和n个解码器连接而成的。其中,每个编码器的输出可以给到所有解码器作为输入。Transformer在NLP领域取得了十分卓越的成果,因此2017年谷歌提出Transformer的论文题目为:“Attention ls All you Need”,这种略显狂妄的标题。

但Transformer在NLP领域的效果确实值得狂妄,而且不仅如此,2021年还有研究者把Transformer用于CV领域(ViT, Vision Transformer),在图像分类任务中取得了很不错的效果。

2.1 Embedding(嵌入层)

Embedding可以看成是时序数据的预处理,在NLP领域可通过word2vec等方式处理。比如说一段文本:[我爱你],有3个字符,Embedding时我们把每个字符都转换成一个512维的行向量。那么这段文本就可以被转换成一个 3行512列 的矩阵,那么这个矩阵就是嵌入层输出的结果。

2.2 位置编码

下图可以很好的看明白位置编码(position coding)的工作原理。对于[我爱你]这段文本,中的[爱]字:在Embedding中不是把它变成512维行向量了嘛,那么我们对这个Embedding中的每个行向量中每个元素应用如下公式,那么就会得到一个新的3行512列的位置编码矩阵。
请添加图片描述
图3 位置编码公式

然后,把position coding和Embedding得到的两个同大小矩阵逐元素相加就能得到一个新的同大小矩阵。那么这个矩阵就是最终输入到Transformer中的数据。
请添加图片描述
图4 位置编码与Embedding相加

为什么位置编码会有效呢?是因为序列中奇偶下标的单词交替使用正弦和余弦进行编码中隐含了单词之间的相对位置信息。(可以由三角函数性质推导得来)

2.3 自注意力机制

NLP领域提出了很多注意力机制,但这种注意力机制和CV领域之前SE那种注意力机制好像没什么关系。NLP注意力机制起到的作用就是CV中的卷积。
请添加图片描述
图5 NLP领域注意力机制架构

其中有几个概念需要弄懂:

  1. 查询:仿生注意力过程中的某些 自主性提示。(比如我【想】学习了,就会注意到书本)
  2. 键:仿生注意力过程中的 非自主性提示。(比如我突然发现有个东西【与众不同】)
  3. 值:仿生注意力过程中的 感官输入。(可以理解成信息进入大脑前的中间表示)

在Transformer中使用的自注意力模块中,以上3个东西都是根据权重训练得出的中间表示。(类比于CNN中卷积层之后的输出)

基于以上的架构,我们就可以理解Transformer中使用的自注意力机制是什么了:
请添加图片描述
图6 注意力计算

图6解释了如下公式的计算过程:
A t t e n t i o n ( Q , K , V ) = [ s o f t m a x ( Q K T d k ) ] V (1-1) Attention(Q,K,V)=[softmax(\frac{QK^T}{\sqrt{d_k}})]V\tag{1-1} Attention(Q,K,V)=[softmax(dk QKT)]V(1-1)
这个式子算出的值就是图6中蓝色框的Attention Value。式中Q、K、V 3个矩阵分别代表 查询、键 和 值。这3个矩阵是由输入矩阵(Embedding+position coding)和3个权重矩阵相乘得来的,如下图所示:
请添加图片描述
图7 Q、K、V 3个矩阵的计算过程

图中,Wq、Wk、Wv是参与训练的权重矩阵。当然了,实际输入不是一个单词向量,而是一个文本矩阵。那就在上图演示的基础上升级为矩阵乘法就完事了,也容易理解。

好的,至此应该清楚注意力机制的运作过程了,但Transformer用的是**【多头自注意力机制】**。啥意思呢?实际上也很好理解,就是图7中Wq、Wk、Wv矩阵不仅只有一套,而是有多套:[[Wq1, Wk1, Wv1],[Wq2, Wk2, Wv2]...[Wqn, Wkn, Wvn]]。每一套权重矩阵分别和输入矩阵相乘得到一组K、Q、V矩阵。如此,就可以得到多组K、Q、V矩阵:[[Q1, K1, V1],[Q2, K2, V2]...[Qn, Kn, Vn]],这n组KQV矩阵经过(1-1)的计算就可以得到多组Attention Value,我们称为[z1, z2, ..., zn]

最后,多头注意力模块把这些[z1, z2, ..., zn]输出到下一环节。

2.4 残差和规范化的使用

请添加图片描述
图8 编码器中的规范化块和残差块

这张图可以很好的说明多头注意力块、规范化块、前馈神经网络(MLP)之间的逻辑关系,解码器也是类似。

可以看到,图7中的虚线就是一个残差连接,残差连接后进行 层规范化(LayerNorm),层规范化 和 批规范化的区别见我之前另一篇文章。在CV领域 批规范化 在batch_size较大时可以取得一些效果(但也不一定),不过在NLP问题中是不可以使用 批规范化 的。为啥呢?因为数据的长度可能不一样,如果批规范化的话可能会导致类似于CV中batch_size过小而使用 批规范化 的问题。

3. ViT, Vision Transformer

Vision Transformer是2021年提出的一种用于CV任务的Transformer模型,其中完全不含卷积,把图像输入看成时序输入模型。经过试验在分类问题上也取得了不错的效果:
请添加图片描述
图9 ViT应用于CV分类任务

有这样几个特点可以注意一下:

  1. 把图像拆成若干小块,以序列化的形式输入模型。
  2. 不同于NLP Transformer中的position coding,这里的位置编码是可供网络学习的参数。
  3. ViT目前只用到了编码器部分,没用到解码器。

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

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

相关文章

周四见 | 物流人的一周资讯

菜鸟618推出“小件3元发全国”服务 6月12日消息,针对美妆商家618期间轻小件的发货需求,菜鸟推出“极致小件3元发全国”服务,利用全国6大基地,100%自营的仓配供应链能力,支持订单高爆发,并提供破损包赔、时…

开源、跨平台安卓摸鱼(投屏)软件 Scrcpy 中文使用指南

废话不说,先上链接:GitHub上的Scrcpy 介绍: Scrcpy 可以将手机画面投射到电脑上,让你可以在电脑上对手机进行操控。Scrcpy 通过 USB 或 Wi-Fi 与安卓手机相连,不需要在手机上安装任何 app,也不需要取得 R…

Vue-插件(plugin)

插件(plugin) 插件是vue中特别强大并且特别简单的一个东西,它可以帮助我们增强vue 插件本质来说就是一个对象,但是这个对象必须包含install(安装)方法,由vue帮助我们调用 只要插件写的足够的好,就可以帮助我们实现很多的功能&a…

一些常用linux命令

系列文章目录 文章目录 系列文章目录一、常用linux命令1. lsof介绍2.查看进程的几种命令3.查看inode号的几种命令4.查看Linux系统负载的命令一般常用的有4种:5.iostat 主要用于输出磁盘IO 和 CPU的统计信息。 总结 一、常用linux命令 1. lsof介绍 lsof可以查看你所打开的文件…

工具篇--5 WIndow/Linux--Mysql binLog日志监听Canal安装

前言:作为一个中间件canal,可以实时的监听到mysql 中表结构及数据的变化, 项目中只需要接入canal ,不需要我们在业务中进行aop 或者接口的编写就可以及时的收到数据的变化。 1 介绍: Canal是阿里巴巴开源的一款基于M…

想要用好ChatGPT,首先得学会用提示词!

用好ChatGPT,可以辅助学习~ 期末季,一年中体验过最多地区时差的一段时期,懂的都懂😲 放下essay刷个小红薯也都是“赶due病友”…几周内5-6个essay ddl的经历相信不少同学都深有体会。 而今年的一大不同就是有了“哆啦C梦”——…

PostgreSQL行转列

管理拓展 启用拓展 -- 启用拓展 create extension tablefunc; --tablefunc扩展模块包含一系列返回记录表的函数。 create extension "uuid-ossp";--uuid扩展函数拓展启动后,可以在public空间下查看到crosstab函数 卸载函数 drop extension tablefunc…

信创办公–基于WPS的PPT最佳实践系列 (使用母版进行有效设计)

信创办公–基于WPS的PPT最佳实践系列 (使用母版进行有效设计) 目录 应用背景相关知识操作步骤1、认识母版2、在每页幻灯片底部添加logo图片3、第一张幻灯片和最后一张幻灯片出现logo图片,其他页面不出现4、除了封面封底之外,其他页…

硬件速攻-ATK1218正点原子GPS模块

效果演示(注意室内是没有数据) 模块实物图与接线方法 SPP 可不接(这个连到了模块上的灯) RXD 接单片机TXD TXD 接单片机串口RXD GND 接单片机GND VCC接单片机5V IPEX一定要接送的天线 而且天线要放到室外 再次说明提醒 精简代码与说明 如果你只想获取经纬度而已 你可用屏…

原来C语言计算的数只要低过4个字节就要整型提升!

C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换被称为整型提升。 比如: char a 3; char b 127; char c a b; printf("%d&q…

Vue中如何进行地图轨迹展示与追踪?

Vue中如何进行地图轨迹展示与追踪? 随着移动互联网技术的快速发展,位置数据的应用越来越广泛。在许多应用程序中,地图轨迹展示和追踪功能已经成为了基本功能之一。在Vue中,我们可以使用许多不同的地图API和库来实现这些功能。本文…

ATTCK v13版本战术介绍——凭证访问(三)

一、引言 在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权、防御规避战术,本期我们为大家介绍ATT&CK 14项战术中凭证访问战术第13-17种子技术,后续会介绍凭证访问其他子技术,敬请关注。 二、ATT&…

智能图像处理竟然能做出这种神奇的事

前言 大家都知道,搞论文的时候很多的时候都需要数据来做支撑,对应的我就需要在很多期刊中获取对应的Figure,但是获取很麻烦,就算拍摄出来,放在论文里面效果也不是很好,而且歪七扭八的很碍眼。在这种事情上就…

5.3图的综合应用算法(最小生成树、最短路径生成)

一.最小生成树算法 1.概念(Minimum-Spanning-Tree)MST 生成树:针对于连通图,包含全部顶点,去掉一条边后不连通,加一条边形成环 最小生成树:带权连通无向图,边的权值之和最小的生成树(MST) 2.…

关于前端跨域的结局方案

前言 跨域产生的原因 浏览期的安全策略。常见的解决跨域的方法&#xff1a; 1.JONSP 利用<script>标签的src可以发起跨域请求,大致过程&#xff1a;前端的方法名传到地址上callbackxx 缺点&#xff1a;只能get方法2.domain.iframe、domain.hash、domain.parent等 上述这…

VUE项目无法启动NODE版本与NODE-SASS、SASS-LOADER版本不兼容

系列文章目录 文章目录 系列文章目录错误分析一、版本比对二、解决方案总结 错误分析 在VUE项目开发中&#xff0c;我们经常会遇到报错&#xff1a; Node Sass version 7.0.1 is incompatible with ^4.0.0。 网上解决方案也千奇百怪&#xff0c;最终操作下来&#xff0c;也是…

首添机密计算创新成果!龙蜥首获 ACM SIGSOFT 杰出论文奖

近日&#xff0c;软件工程领域的全球旗舰级会议-软件工程大会 ICSE 在澳大利亚墨尔本市召开&#xff0c;龙蜥社区云原生机密计算 SIG 核心成员&#xff08;阿里云JVM 团队&#xff09;在 Java 机密计算方面的研究成果入选了 ICSE2023&#xff0c;并且以该会议今年唯一的 All Fi…

STM32F407之SD卡读数据介绍

1&#xff0c;SD卡基础知识 SD卡&#xff08;Secure Digital Memory Card&#xff09;即&#xff1a;安全数字存储卡&#xff0c;它是在MMC的基础上发展而来&#xff0c;作为存储器件广泛应用于电子产品中。 1.1 SD卡有SDIO和SPI两种传输方式&#xff0c;具体信号定义如下&…

DSSAT模型: 遥感数据与作物生长模型同化及在作物长势监测与估产中的应用

查看原文>>>遥感数据与作物生长模型同化及在作物长势监测与估产中的应用 基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具&#xff0c;可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系&#xff0c;为不…

华为开源自研AI框架昇思MindSpore应用案例:SSD目标检测

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 SSD&#xff0c;全称Single Shot MultiBox Detector&#xff0c;是Wei Liu在ECCV 2016上提出的一种目标检测算法。使用Nvidia Titan X在VOC 2007测试集上&#xff0c;SSD对于输入尺寸300x300的网络&#xf…