注意力机制和Transformer

注意力机制和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.hqwc.cn/news/220.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《kafka 核心技术与实战》课程学习笔记(六)

生产者消息分区机制原理剖析 为什么分区? Kafka 有主题(Topic)的概念,它是承载真实数据的逻辑容器,而在主题之下还分为若干个分区,也就是说 Kafka 的消息组织方式实际上是三级结构:主题 - 分区…

kafka入门,生产者自定义分区(六)

1、实现Partitioner接口 package com.longer.producer;import org.apache.kafka.clients.producer.Partitioner; import org.apache.kafka.common.Cluster;import java.util.Map;/*** 实现接口Partitioner* 实现3个方法:partition,close,configure* 编写…

和Git相关的一些问题

1. Git拉取项目的两种方式以及区别 方式 Http:通过http方式的clone项目,不需要在git上手动绑定ssh,只需要在clone的时候输入账号,密码即可;SSH:通过ssh方式clone项目,需要手动绑定ssh密钥 区别 …

前端安全问题及解决方案

随着互联网的高速发展,信息安全问题已经成为行业最为关注的焦点之一。总的来说安全是很复杂的一个领域,在移动互联网时代,前端人员除了传统的 XSS、CSRF 等安全问题之外,还时常遭遇网络劫持、非法调用 Hybrid API 等新型安全问题。…

new Vue后整个的流程

文章目录 new Vue后整个的流程Vue.js 创建应用程序流程概述使用 new Vue() 创建Vue 实例流程概述 new Vue后整个的流程 new Vue({el: #app,render: h > h(App),data() {return {message: hello vue}} }).$mount(#app)Vue.js 创建应用程序流程概述 在使用 Vue.js 创建一个应…

大佬总结入职阿里,软件测试常见基础题绝不能忘

什么是软件测试? 正向思维:验证程序是否正常运行,以及是否达到了用户预期的需求。 逆向思维:通过执行测试用例发现程序的错误和缺陷。 关键字:正常运行、用户需求、发现错误。 软件测试的目的是什么? 找出软…

windows电脑hbuilderx打包iOS app及上架app store教程

ios应用,无法像安卓应用一样,上传到自己的服务器让互联网用户下载进行安装,所以需要将生成的app上传到app store,然后用户到app store安装app。 由于官网的教程是使用mac电脑生成证书和上架的,但是很多使用hbuilderx打…

笔记本安装双系统ubuntu时踩的坑——戴尔

如果你遇到以下的这些问题,不要直接装了,无解!!! 建议看我另一篇教程,把硬盘取出来在另外的电脑上装好系统再放回去,这样嘎嘎快。 移动硬盘中安装Ubuntu 20.04系统——立省99%的问题_放风筝的…

【产品应用】一体化步进电机在全自动纸张分切机的应用

全自动纸张分切机是现代印刷业中的重要设备之一,它能够将大的纸张切割成相同大小的小纸张,并具有高精度、高速度和高效率等优点。一体化步进电机作为全自动纸张分切机的重要部件,其应用对于提高设备的性能和稳定性具有重要意义。 01.设备简介…

HTML转EXE工具(HTML App Build)永久免费版

HTML转EXE工具(HTM2EXE)在CSDN上发布时间轴: 序号时间链接12022-08-17HTML转EXE工具(HTML App Build)初始版22023-02-18HTML转EXE工具(HTML App Build)最新版32023-06-23(实际未发布…

【Linux 驱动篇(一)】字符设备驱动开发

文章目录 一、字符设备驱动简介二、字符设备驱动开发步骤1. 驱动模块的加载和卸载2. 字符设备注册与注销3. 实现设备的具体操作函数3.1 能够对 chrtest 进行打开和关闭操作3.2 对 chrtest 进行读写操作 4. 添加 LICENSE 和作者信息 三、Linux 设备号1. 设备号的组成2. 设备号的…

多媒体库SDL以及实时音视频库WebRTC中的多线程问题实战详解

目录 1、概述 2、开源跨平台多媒体库SDL介绍 3、开源音视频实时通信库WebRTC介绍 4、在国产化Linux桌面系统中遇到的SDL多线程问题 5、在给WebRTC新增外部音频插件库时遇到的多线程问题 6、最后 VC常用功能开发汇总(专栏文章列表,欢迎订阅&#xf…