Attention和Transformer灵魂七问

news2024/9/27 5:55:40

1. 引言

最近,ChatGPT和其他聊天机器人将大语言模型LLMs推到了风口浪尖。这就导致了很多不是学MLNLP领域的人关注并学习attentionTransformer模型。在本文中,我们将针对Transformer模型结构提出几个问题,并深入探讨其背后的技术理论。这篇文章针对的听众是已经研读过Transformer论文并大概了解attention如何工作的同学。

闲话少说,我们直接开始吧!

2. 为什么非Attention不可?

首先我们来将机器翻译作为例子进行讲解。在Attention机制出现之前,大多数机器翻译都是通过encoder-decoder网络结构来实现的。其中,编码器encoder的作用是通过一个RNN的网络来将输入句子(比如“I love you”)编码为一个特征向量;同时,解码器decoder的作用是接收上述特征向量并将其解码为其他语言(比如“我爱你”)。
在这里插入图片描述

通过上述方法,编码器必须将整个输入压缩到一个固定大小的向量中,然后将该向量传递给解码器——我们期望这个向量必须包含输入句子的所有信息!显然这导致了信息瓶颈。有了注意力机制,我们不再需要将输入句子编码到单个向量中。相反,我们让解码器在生成输出的每个单词中,关注输入句子中的不同部分。

此外,以前的循环神经网络模型在输入和输出单词之间有很长的路径。如果我们有一个长度为50个单词构成的句子,解码器必须从50步前的第一个单词回忆起信息(并且最终这些数据必须压缩成一个向量)。因此,循环神经模网络型很难处理长文本依赖关系。注意力机制通过让解码器的每一步都能看到整个输入句子并决定需要关注什么词。这减少了路径长度,并使其在解码器的所有步骤中保持一致。

最后,先前的语言模型都严重依赖于RNN的方法,我们对句子进行编码时,我们从第一个单词(x1)开始并对其进行处理以获得第一个隐藏状态(h1); 然后我们输入第二个单词(x2)和之前的隐藏状态(h1)导出下一个隐藏状态(h2)。不幸的是,这个过程是按顺序执行的,这阻止了并行化。注意力通过一次性读入整个句子,并且并行地计算句子中每个单词的特征表示。

3. 什么是Query Key和Value?

我们先来举个栗子吧!假设我们在图书馆中,我们有一个具体的问题(Query), 书架上有很多图书,每个图书都有对用的书名(Key)表明书的内容。我们需要将问题(Query)与这些书名(Key)进行比较,以确定针对特定的(Query)每本书的相关性,对于每本书应该给多少关注(attention)。接着我们从相关书籍中得到信息(value)来回答上述问题。

在这里插入图片描述

在翻译任务中,Query指代我们需要计算attention的单词。在encoder的例子中,query一般指代当前上下文中当前输入的单词。举个栗子,假设上下文语境中输入句子的第一个单词,我们将会有一个query向量,我们将其命名为q1

同时,Keys在翻译任务中,指代整个输入句子中的全部单词。第一个单词对应的Key的向量为k1, 第二个单词对应的key的向量为k2,其他单词类似。向量key用来帮助模型理解输入中每个单词和当前Query的相关性。在上述栗子中,我们计算所有keyq1的相似性。
在这里插入图片描述

Attention一般定义为我们的查询单词query word(上例中的q1)应该给句子中的每个单词(k1,k2等)多少关注度attention。这个计算过程一般通过计算查询向量query vector和所有的key vectors的点积实现。点积一般用来评估两个向量间的相似性。如果某项query - key对应的点积较高,那就说明我们需要特别关注这一项。一般来说,上述点积计算完后还需要进一个函数softmax来执行归一化操作。

每个单词也可以被对应的value来表示,value一般特指用来表征该单词含义的向量。所有value vector被上述计算出来的attention score进行加权求和。结果看起来就是,每个contex word也就是我们的query都被attention-based weight对句子中的所有输入单词进行加权,其中和query最相近的单词含有较高的权重。

4.编码器和解码器的作用是什么?

编码器encoder接受文本作为输入,比如待翻译的句子,输出为一些嵌入embeddings。这些输出的embeddings可以被用来做分类,翻译,语义相似性计算等任务。自注意力机制确保encoder可以权衡输入中每个单词的重要程度,并解决了RNN中长文本语义依赖问题。

相反,解码器接受编码器的输出作为输入,比如句子开始标识start tokenencoder的输出embeddings, 并返回预测下一个可能输出单词的概率。自注意力机制可以确保decoder关注目前生成的输出的不同部分;交叉注意力机制可以帮助解码器关注编码器的输出。

5. 解码器如何预测单词?

解码器输出下一个单词的概率(即每个可能的单词都有相关的概率)。因此,我们可以通过贪婪地选择概率最高的单词来作为下一个要生成的单词。或者,我们可以使用beam search算法,保持top n个预测,为每个top n 的预测生成下一个单词的n个预测,并选择误差较小的组合。

6. 为什么需要多头注意力机制?

多个头(head)可以让模型同时考虑多个单词。因为我们在注意力中使用了softmax函数,所以它在放大最高值的同时排挤了相对较低的值。因此,每个head都倾向于关注单个输入元素。

我们来看个栗子,假设我们的输入句子为:The chicken crossed the road carelessly。一般来说,以下词语与crossed相关,模型应该给予更多的关注:

  • chicken指当前执行crossed 动作的目标
  • road指被crossed的对象
  • carelessly指执行crossing动作的程度修饰词

如果我们只有一个attention head,我们可能只会关注上述中的单个单词,也就是chicken, road或者carelessly。而多头注意力就可以关注多个单词。而且模型本身还提供了冗余,即使单个head失败,我们还有其他的attention heads来进行补充。

7. 为什么需要多个注意力层?

多个注意力层attention layers的设计就是为了构建冗余。假设我们只有一个注意力层,那么这个注意力层就必须做到完美无瑕–这种假设一般都很脆弱,往往容易得到次优的结果。此时,我们可以使用多个注意力层attention layers来解决这个问题,每个注意力层都使用前一层的输出并带有和输入直接相连的skip connection结构。这样设计的目的就是为了如果每个注意力层出现问题,skip connection和下游的注意力层可以缓解这个问题。

此外,多个注意力层的叠加也可以扩展模型的感受野。第一个注意力层通过注意输入句子中成对单词之间的注意力得分来生成上下文向量。然后,第二层基于成对的上下文向量生成更深层次的上下文向量,依次类推。有了多层注意力层,Transformer可以拥有更广泛的感受野,可以关注输入句子中的不同级别的语义交互。

8. 为什么需要skip connections?

因为注意力起着过滤器的作用,它阻止了大多数信息的传递。因此,如果注意力的得分很小或为零,对注意力层输入的微小改变很可能不会影响输出。这可能导致模型取得局部最优。

skip connections 有助于减轻过滤不良注意力的影响。即使输入的注意力权重为零且输入被阻止,skip connections 也可以将该输入的副本直接添加到输出中。这样可以确保即使对输入进行很小的更改也会对输出产生明显的影响。此外,skip connections保留了输入的语句:在Transformer中如果没有skip connections结构,不能保证上下文单词会在Transformer中处理自己。skip connections结构通过获取上下文单词向量并将其添加到输出中来确保这一点。

最后,让我们看看大佬Andrej KarpathyTransformer结构的总结:
在这里插入图片描述

9. 参考

本文相关参考如下:

【1】Attention is All You Need:链接
【2】The ilustrated Transformer: 链接
【3】Transformers From Scratch:链接
【4】Understanding the Attention Mechanism in Sequence Models:链接
【5】Some Intuition on Attention and the Transformer:链接

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

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

相关文章

实验2 组合逻辑电路与时序逻辑电路设计

实验目的: 1.构建基于verilog语言的组合逻辑电路和时序逻辑电路; 2.掌握verilog语言的电路设计技巧。 3.完成如下功能:加法器、译码器、多路选择器、计数器、移位寄存器等。 实验内容及步骤: 一、实验原理 原理图文件《数字系统设计_sch.pdf》,找到如下两个部分: 图…

Vim编辑器的安装及使用教程

文章目录 1:Ubuntu安装Vim1.1:图形界面安装1.2:命令行安装vim1.3:判断vim是否安装成功 2:vim简介3:vim的三种模式4:vim常用按键说明4.1 命令模式4.2 搜索和替换4.3 复制、粘贴和删除4.4 一般模式…

网络工程师---第十天

ARP表: 提起ARP表必然先想起ARP(address resolution protocol)协议,地址解析协议。 在实际应用中,我们经常遇到这样的问题:已知一个机器的IP地址,但在实际网络的链路上传送数据帧时,…

20240331-1-基于深度学习的模型

基于深度学习的模型 知识体系 主要包括深度学习相关的特征抽取模型,包括卷积网络、循环网络、注意力机制、预训练模型等。 CNN TextCNN 是 CNN 的 NLP 版本,来自 Kim 的 [1408.5882] Convolutional Neural Networks for Sentence Classification 结…

[ICCV2023]DIR-用于从单个RGB图像重建交互手部的解耦迭代细化框架

这篇论文的标题是《Decoupled Iterative Refinement Framework for Interacting Hands Reconstruction from a Single RGB Image》,作者是Pengfei Ren, Chao Wen, Xiaozheng Zheng, Zhou Xue, Haifeng Sun, Qi Qi, Jingyu Wang, Jianxin Liao。他们来自北京邮电大学…

Nodejs安装与配置--基于Linux系统--RedHat7.9

nodejs安装从未这么简单 1、nodejs版本设置? curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash - 其他版本如下: * https://rpm.nodesource.com/setup_16.x — Node.js 16 "Gallium" (deprecated) * https://rpm.nodesource.co…

vue-project-tree vue3 树形结构展示组件

GitHub:vue-project-tree by one-ccs Gitee:vue-project-tree by one-ccs 遵循 MIT 开源协议 文章目录 vue-project-tree一、使用二、API1、属性2、事件3、方法4、插槽 vue-project-tree 使用 Vue3 TS 实现的树形结构展示组件,有拖拽、排序…

数字化革新:可视化墨水屏引领基板工艺MSAP贴膜阶段迈向无纸化高端制造应用背景

随着科技的飞速发展和环境保护意识的日益增强,制造印刷电路板(PCB)行业正面临着提升生产效率、降低资源消耗和推动绿色制造的迫切需求。 问题: PCB生产过程对洁净度要求高,传统打印的纸张会有粉尘,纸屑&am…

cookie与session区别和联系

在Web应用中,HTTP协议是无状态的,每次请求都是独立的,服务器无法直接识别一个用户的不同请求之间的关联。这就导致了如果我们希望在一个会话中保持一些数据的状态,比如用户的身份认证信息、购物车内容等,就需要借助Coo…

网络靶场实战-Qiling Fuzz实例分析

背景 在上一小节中,介绍了qiling框架的背景和基础使用,并以相关的CTF和qilinglab实例进行练习加深对qiling框架的使用,后续并简单介绍了qiling fuzz的功能。 在这一小节,我们将对qiling fuzz iot设备进行测试以及以实例的方式对…

【LLM】LLM API 开发

文章目录 LLM API 开发LLM入门基本概念LLM API使用实名认证创建应用使用API Prompt Engineering思考总结 参考文章 什么是提示工程(Prompt Engineering)? ChatGPT Prompt 最佳指南一 LLM API 开发 LLM入门基本概念 Prompt Prompt 最初是 NL…

EelasticSearch的介绍和基于docker安装

1.概述 Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎和分析引擎。它专为云计算环境设计,提供了一个分布式的、高可用的实时分析和搜索平台。Elasticsearch 可以处理大量数据,并且具备横向扩展能力,能够通过增加更多的硬…

AR爆发的前夜,Rokid站在了门口

文|刘俊宏 摆脱6寸的手机屏幕,栖居在300寸大屏的智慧生活是什么样子? 4月20日,Rokid在新品AR Lite空间计算套装的发布会上,“硬刚”了苹果的Vision Pro。 Rokid AR Lite空间计算套装 Rokid AR Lite与苹果Vision Pro…

必应搜索广告与谷歌搜索广告对比那个更好?

搜索引擎广告作为企业获取潜在客户的重要渠道之一,其效果直接关系到营销策略的成功与否。两大搜索引擎巨头——谷歌(Google)和必应(Bing)各自提供了广告平台,即谷歌广告(Google Ads)…

eNSP-路由引入与过滤简单配置

目录 实验要求 IP配置 配置动态路由协议 RIP OSPF 查看建邻情况 双向重发布 路由过滤 地址前缀列表 静默接口 实验要求 1、按照图示配置 IP 地址,R1,R3,R4 上使用 loopback 口模拟业务网段 2、R1 和R2 运行 RIPv2,R2&am…

Mendix是谁?作为致力于企业低代码服务平台的领头羊,它解决了哪些问题?

一、Mendix 成立的背景 Mendix的成立是为了解决软件开发中最大的问题:业务和IT之间的脱节。这一挑战在各个行业和地区都很普遍,很简单:业务需求通常被描述为IT无法正确解释并转化为软件。业务和IT之间缺乏协作的原因是传统的代码将开发过程限…

前端开发攻略---拖动归类,将元素拖拽到相应位置

1、演示 2、代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevice-…

001-谷粒商城-微服务剖析

1、架构图 还是很强的&#xff0c;该有的都有 2、微服务模块 SpringCloudAlibaba组件包括 SentinelNacosRocketMQSeata 搭配SpringCloudAlibaba组件 OpenFeignGateWayRibbn gateway使用了SpringWebFlux&#xff0c;前几天研究到&#xff0c;为什么springboot不直接使用Spri…

私人密码管理储存库!Bitwarden 部署安装教程

日常生活中我们每个人都会拥有大量网站或社交平台帐号&#xff0c;时间久远了密码很容易忘记。因此&#xff0c;像 1Password 等密码管理 同步 一键登录的工具成为了很多人的首选。 然而 1Password 毕竟要付费&#xff0c;也有人会担心这类工具有隐私泄露的风险。其实&#…

【昇腾产品应用】英码科技EA500I基于昇腾Mind SDK实现实时人体关键点检测

在教育、体育、安防、交通、医疗等领域中&#xff0c;实时人体关键点检测应用发挥着至关重要的作用&#xff0c;比如在体育训练时&#xff0c;实时人体关键点检测可以精确、实时地捕捉运动员的动作&#xff0c;从而进行动作分析和优化&#xff1b;在安防应用场景中&#xff0c;…