注意力机制和Transformer

news2024/11/25 9:24:50

注意力机制和Transformer

机器翻译是NLP领域中最重要的问题之一,也是Google翻译等工具的基础。传统的RNN方法使用两个循环网络实现序列到序列的转换,其中一个网络(编码器)将输入序列转换为隐藏状态,而另一个网络(解码器)则将该隐藏状态解码为翻译结果。但是,这种方法存在两个问题:

  1. 编码器网络的最终状态难以记住句子开头,导致对于长句子的模型质量较差。
  2. 序列中的所有单词对结果的影响是相同的,但实际上,输入序列中特定的单词往往对顺序输出的影响大于其他单词。

注意机制

注意机制提供了一种权衡每个输入向量对RNN每个输出预测的上下文影响的方法。具体实现是在输入RNN和输出RNN之间创建快捷方式。这样,在生成输出符号yt时,我们将考虑所有输入隐藏状态hi,具有不同的权重系数αt,i。

Image showing an encoder/decoder model with an additive attention layer

Image showing a sample alignment found by RNNsearch-50, taken from Bahdanau - arviz.org

注意机制对于NLP的许多当今或即将达到的最新技术水平负有责任。添加注意机制增加了模型参数的数量,这导致了RNN的扩展问题。扩展RNN的关键限制是,模型的循环性质使批处理和并行化训练变得具有挑战性。在RNN中,序列的每个元素都需要按顺序处理,这意味着它不能轻松并行化。

Encoder Decoder with Attention

带注意机制的编码器解码器模型

引入注意机制后,结合这个约束,导致了现在我们所知道和使用的Transformer模型的创建,例如BERT到Open-GPT3。

Transformer模型

Transformer的主要思想之一是避免RNN的顺序性并创建一个可在训练期间并行化的模型。这是通过实现两个思想来实现的:位置编码和使用自注意力机制来捕获模式,而不是使用RNN(或CNN)。这就是为什么介绍transformers的论文被称为“Attention is all you need”。

位置编码/嵌入

位置编码的思想是,当使用RNN时,标记的相对位置由步数表示,因此不需要明确表示。但是,一旦我们切换到注意机制,我们需要知道序列中标记的相对位置。为了获得位置编码,我们将标记的序列与序列中的标记位置一起增强(即一系列数字0,1,…)。然后,我们将标记位置与标记嵌入向量混合。为将位置(整数)转换为向量,我们可以使用不同的方法:

  1. 可训练嵌入,类似于标记嵌入。这是我们在此考虑的方法。我们在标记和它们的位置之上应用嵌入层,得到相同尺寸的嵌入向量,然后将它们相加。
  2. 固定的位置编码函数,如原始论文中所提出的img

多头自注意力

接下来,我们需要捕获序列中的一些模式。为了做到这一点,transformers使用自注意力机制,它本质上是应用于相同的输入和输出序列的注意力机制。应用自注意力使我们能够考虑句子中的上下文,并查看哪些单词是相互关联的。例如,它使我们能够查看哪些单词被指代,以及考虑上下文:

img

在transformers中,我们使用多头自注意力来使网络能够捕获多种不同类型的依赖关系,例如长期与短期的单词关系,共指与其他关系等。

编码器解码器注意力

在transformers中,注意力应用于两个位置:

  1. 使用自注意力来捕获输入文本中的模式。
  2. 执行序列翻译时,它是位于编码器和解码器之间的注意力层。

编码器解码器注意力与RNN中描述的注意力机制非常相似。下面的动画图解释了编码器解码器注意力的作用。

Animated GIF showing how the evaluations are performed in transformer models.

由于每个输入位置都被独立地映射到每个输出位置,因此transformers可以比RNN更好地并行化,这使得更大、更具表现力的语言模型成为可能。每个注意力头可以用于学习不同的单词关系,从而提高下游的自然语言处理任务的效果。

BERT

BERT(双向编码器表示来自transformers)是一个非常大的多层变压器网络,BERT-base有12层,BERT-large有24层。该模型首先使用无监督的训练(预测句子中的掩码单词)在大量文本数据(维基百科+图书)上进行预训练。在预训练期间,模型吸收了大量的语言理解,这可以通过微调其他数据集来利用。这个过程被称为迁移学习。

picture from http://jalammar.github.io/illustrated-bert/

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

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

相关文章

【探测器】win10网卡设置巨型帧解决探测器无法成像的问题

【探测器】win10网卡设置巨型帧解决探测器无法成像的问题 1、背景2、解决办法3、补充说明 1、背景 探测器很奇怪的叫法,其实就是相机。 大家在安防领域,智慧工厂,智慧学校、智慧工地等经常会看到海康、大华的网络摄像头, 这些摄像…

软考高级架构师笔记-7信息安全

目录 1. 前言 & 考情分析2. 信息安全1. 信安基础知识2. 信息安全系统的组成框架3. 信息安全技术4. 信息安全的抗攻击技术5. 信息安全的保证体系和评估方法3. 网络安全4. 网络安全协议1. 前言 & 考情分析 前文回顾: 软考高级架构师笔记-1计算机硬件软考高级架构师笔记…

集成测试总结

集成测试 基本概念:将软件集成起来后进行测试。集成测试又叫子系统测试、组装测试、部件测试等。集成测试主要是针对软件高层设计进行测试,一般来说是以模块和子系统为单位进行测试。 集成测试包含的层次: 模块内的集成,主要是测…

【编译、链接、装载六】汇编——目标文件

【编译和链接六】汇编——目标文件 一、目标文件_存储格式1、生成目标文件2、目标文件存储格式3、file查看文件格式 二、查看目标文件的内部结构——objdump三、代码段四、 数据段和只读数据段五、 ELF文件结构描述1、头文件2、段表2.1、重定位表2.2、字符串表2.3、查看重定位表…

信号完整性:反射 初步认识

反射是怎么形成的 信号的反射和互连线的阻抗密切相关。反射的最直接原因是互连线的阻抗发生了突然变化,只要互连线的阻抗不连续的点,该处就会发生反射。 信号是以电磁波的形式在走线中传播的,如果从传统的电路理论角度去看,是无…

ZipList(压缩链表)

基本概述 ZipList 是一种特殊的“双端链表” ,由一系列特殊编码的连续内存块组成。可以在任意一端进行压入/弹出操作, 并且该操作的时间复杂度为 O(1)。 基本结构: 各部分所占字节、基本介绍: entry,节点占用字节不固定&#xff0…

计算机图形学与opengl C++版 学习笔记 第9章 天空和背景

目录 9.1 天空盒9.2 天空穹顶9.3 实现天空盒9.3.1 从头开始构建天空盒9.3.2 使用OpenGL立方体贴图 9.4 环境贴图补充说明 对于室外3D场景,通常可以通过在地平线上创造一些逼真的效果,来增强其真实感。当我们极目远眺,目光越过附近的建筑和森林…

【认知提升思维篇】之 心智模式--人类的行为纪元

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:普本…

国产FPGA:替代ATLERAEP4CE10E22的AG10KL144

背景 AG10K用于PIN TO PIN替代ATLERA EP4CE10E22、EP3C10E144的FPGA,其资源介绍如下: 引脚对应如下: 一般Quartus II开发方式 新建工程 FPGA使用Quartus II开发,开发的整体流程如下: 新建工程时选用Cyclone II…

Liunx系统重修二【常用指令】

LIunx主要做服务器端的操作系统,不会做PC端操作系统的原因是因为: 第一图形化不好,第二软件生态不强! 在Liunx系统中都是使用命令来操作! Liunx系统中常用的指令并不多!一天就可以学完! 6&…

chatgpt赋能python:Python如何将图片文件上传至服务器

Python如何将图片文件上传至服务器 在现代网站设计中,图片的使用非常重要,因此将图片文件上传至服务器是一个很常见的操作。Python是一种广泛使用的编程语言,其拥有强大的图像处理能力,并提供了丰富的库来实现文件的上传和下载。…

【SCADA】KingSCADA实现小车移动控制

哈喽,大家好,我是雷工! 在做SCADA项目时,时常会涉及到控制小车运动的情况,今天通过样例演示在KingSCADA中实现小车移动控制。 一、界面设计及效果演示 1、主画面 以下为测试样例的简单界面。 2、效果展示 当点击…

【Red Hat 7.9---详细安装Oracle 11g---图形化界面方式】

【Red Hat 7.9---详细安装Oracle 11g---图形化界面方式】 🔻 一、安装前规划🔻 二、安装前准备一(系统参数修改)⛳ 2.1 内核版本、系统版本查看⛳ 2.2 修改主机名-重启生效⛳ 2.3 关闭selinux⛳ 2.4 防火墙设置1521端口开放⛳ 2.5…

安全测试工具OWASP ZAP下载

下载 owasp作为一个开源免费的安全测试工具,集成了各种工具的渗透测试框架,还是非常不错滴,安装步骤就放在这啦 1.下载地址: https://www.zaproxy.org/download/ 2.进入后根据自己电脑系统自行下载 3.下载完成后,解压…

【OpenMMLab AI实战营二期笔记】第八天 语义分割与MMSegmentation

1.什么是语义分割 1.1 任务: 将图像按照物体的类别分割成不同的区域,相当于对每个像素进行分类。 1.2 应用: 无人驾驶汽车 人像分割 实时替换视频背景 智能遥感 分辨地表物体的类别,通过右侧分割之后的图像可以看到&#x…

高性能服务器-I/O多路复用(epoll)

系列文章目录 第一章 高性能服务器技术栈 (select) 第二章 高性能服务器技术栈 (epool/poll) 文章目录 系列文章目录前言一、epoll 接口二、epoll 原理三、epoll 触发方式四、设置阻塞方式代码 实例总结参考 前言 在网络中实现IO多路复用的技术,最常用的就是(sele…

linux(线程概念)

目录: 1.概念 2.linux线程与接口的关系 3.代码验证(线程是进程模拟的) ------------------------------------------------------------------------------------------------------------------------------- 1.概念 一般教材:…

STM32驱动Realtek RTL8189ES WiFi模块读取MAC地址并下载固件

单片机:STM32F103RE 接口:SDIO Keil 5工程下载链接:https://pan.baidu.com/s/1yIgUJUZcwWOL7xnwA9Rw2Q?pwdftxd Wi-Fi模块电源引脚的连接方法: 【RTL8189ES读取片内MAC地址的代码】 /* 显示WiFi模块参数信息 */ void WiFi_ShowI…

【力扣刷题 | 第八天】

前言: 本章将利用栈与队列来尝试解决实际问题。 20. 有效的括号 - 力扣(LeetCode) 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足&…

chatgpt赋能python:Python批量删除:简化SEO优化的过程

Python批量删除:简化SEO优化的过程 SEO(Search Engine Optimization)优化是网站运营中不可忽视的一项任务。其中涉及到对内容和网站结构的优化,而这些工作也离不开对数据的处理。其中一个常见问题是需要删除一批旧的或者无用的页…