一文搞懂Transformer架构的三种注意力机制

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
简介: 一文搞懂Transformer架构的三种注意力机制

前言

大家对注意力机制多少都有所耳闻,毕竟在自然语言处理(NLP)和大型语言模型(LLM)领域,2017年,《Attention Is All You Need》这篇论文是里程碑式的存在;几乎所有的LLM都是基于注意力机制构建的,甚至最新的多模态或基于视觉的模型也在某种程度上都运用了它;今天,我们将深入探讨注意力机制。


1、什么是注意力

当人类的视觉机制察觉到一个物体时,通常不会从头到尾地扫视整个场景;一般会根据个人的需求集中关注特定的部分。

比如下面这张图,我们第一眼应该是看到一只动物,然后,眼睛会先注意到动物的脸,然后得出初步结论,这应该是一只狼;就像右边注意力图所示,颜色更深的部分表示一般是我们人类最先看见(注意)的。

注意力最早应用在机器视觉领域(CV,Computer Vision),后来才应用到NLP和LLM领域。

多头(2头)自注意力可视化:

如下动画所示,注意力在Transformer中,被应用于机器翻译:

2、Transformer的注意力层

在Transformer架构中,有两大组件,分别是编码器(Encoder)和解码器(Decoder),编码器主要是将输入序列映射到潜在语义空间(注意力向量,也叫上下文向量,但其实上下文向量是注意力机制内部对输入向量的叫法,本文中编码器输出向量都只叫作注意力向量,以示区分),而解码器则是将潜在语义空间(注意力向量)映射到输出序列。

在Transformer架构中,有3种不同的注意力层:

  • 解码器中的交叉注意力层(Cross attention layer)
  • 编码器中的全局自注意力层(Global self attention layer)
  • 解码器中的因果自注意力层(Casual attention layer)

如下图所示:

注意力机制基础

注意力机制的数学表示如下:

表达式中,Q,K和V分别指的是查询(Query),键(Key)以及值(Value)矩阵;这三种矩阵中,每一行都对应了输入文本中的一个分词,每一列则对应了这个分词的某一个特性(Feature)或者维度;

简单来说,查询矩阵里的数据代表了我们关注的词,键矩阵里的数据用来帮我们计算这些词之间的相似度(即注意力分数:attention score,向量点乘可以计算相似度),而值矩阵里的数据则用来根据这些相似度计算出最终的输出结果;

为了确保计算过程中的数据不会因为维度(即键的大小)太大而爆炸,或者太小而消失,注意力分数会通过键的维度的平方根来进行调整;接着,通过softmax函数把这些分数转化成权重,最后这些权重会和值矩阵相乘,得到最后的输出(注意力向量)。

注意力分数可视化为热力图后,能清晰地显示出,在序列中哪些单词,对于预测每个输出单词更重要。(下图是在机器翻译中的例子,纵轴是英语原文,横轴是对应的葡萄牙语翻译)。

以下是计算自注意力机制输出注意力向量的过程。(不包括Scale和SoftMax)。

理解Q,K,V

注意力机制中有两个输入:

  • 查询序列(Q):正在处理的序列(在底部)。
  • 上下文序列(K,V):被关注的序列(在左侧)。

输出序列的维度与查询序列相同。

这个操作常常被比作字典查找,但是,是一个模糊的,可微分的,向量化的字典查找。

举个例子,假设有一个普通的Python字典,有3个键和3个值,被传递了一个单独的查询:

d = {'color': 'blue', 'age': 22, 'type': 'pickup'}
 
result = d['color']

这里,查询(Q)是你要找的内容,键(K)表示字典里有什么样的信息,而值(V)则是对应的信息;在普通的字典查找中,字典会找到匹配的键,并返回其对应的值;如果查询找不到完全匹配的键,也许你会期望返回最接近的值,比如在上面的例子中,如果你查找“d["species"]”,你可能会期望返回“pickup”,因为它是最接近查询的匹配。

一个注意楼层就像是这样的一个模糊查找,但它不仅仅是寻找最佳键;它结合了查询(Q)和键(K)向量,来确定它们匹配的程度,也就是“注意力分数”。然后,根据“注意力分数”对所有值进行加权平均;在注意力层中,每个位置的查询(Q)序列都提供一个查询向量,而上下文序列则充当了一个字典,每个位置提供一个键和值向量;在使用这些向量之前,注意力层会用一个全连接层对输入向量进行投影。

交叉注意力层

在 Transformer 中,交叉注意力层位于字面上的中心位置;它连接了编码器和解码器,是在模型中使用注意力最直接的方式。

要实现这一点,需要将目标序列作为查询,将上下文序列作为键/值传递。

  • Q = 解码器中因果注意力层的输出向量
  • K = 编码器输出的注意力向量
  • V = 编码器输出的注意力向量

如下所示,每一列代表了对上下文序列的加权求和。

全局自注意力层

全局自注意力是Transformer编码器的一部分,它的作用是负责处理整个输入序列。

它允许每个序列元素直接访问其他所有序列元素,只需将整个序列作为Q,K,V即可,所有输出可以并行计算。

  • Q = 输入序列中的当前位置词向量
  • K = 输入序列中的所有位置词向量
  • V = 输入序列中的所有位置词向量

因果注意力层

因果注意力层对解码器中输出序列执行类似于全局自注意力层的工作;但与编码器的全局自注意力层有不同的处理方式。

Transformer是一个“自回归”模型,它逐个标记地生成文本,并将输出反馈到输入中;为了使这个过程高效,这些模型确保每个序列元素的输出只依赖于前面的序列元素;这些模型是“因果”的。

要构建一个因果自注意力层,在计算注意力分数和求和注意力值时需要使用适当的掩码,因为输出序列也是一次性输入的,但在计算前面分词的时候是不希望它后面的分词也参与计算的。

  • Q = 输出序列中的当前位置词向量
  • K = 输出序列中的所有位置词向量
  • V = 输出序列中的所有位置词向量

3、位置编码

与RNN、LSTM等按顺序逐个接收输入分词,计算天然就带有位置信息不同,Transformer是一次性处理所有输入分词,虽然这使得Transformer更快,但是会丢失与分词顺序相关的信息;然而,位置信息对于大多数信息处理是至关重要的,比如“我爱你”和“你爱我”是完全不一样的语义;为了解决这个问题,需要把位置编码加入输入序列,使得最终的注意力向量是包含位置信息的。

位置编码也可以通过多种方式实现,包括使用学习分词(在Bert中使用),正弦函数或相对位置;我们将重点介绍正弦定位编码,这也是Vaswani等人在原始论文中采用的方法。

正弦定位编码是一个将Token的位置映射到大小为d的向量的函数,其中 d 是输入和输出向量的维度。

其中pos表示token所在的位置,而 i 代表向量的维数;正弦位置编码对每一个维度使用不同频率,这样就为每一个位置创造了一个既独特又有规律的模式;与学习得到的嵌入方式相比,正弦位置编码有几个明显的优点:它是固定的、可以泛化到未见过的数据、以及易于扩展。

位置编码应与输入序列应有相同的维度,以便两个向量可以相加(本质上是将位置信息注入到输入嵌入表示中)


4、多头注意力机制

多头注意力机制是在注意力机制基础上的一个创新,它让模型能同时关注输入和输出序列的多个不同特征或维度;简单来说,它通过把查询(Q),键(K),值(V)这三个矩阵分成好几个小块,每一块称为一个“头”;每个“头”都会独立进行自注意力运算,然后把所有“头”的结果拼接在一起,再进行一次特定的变换,得到最终的输出。

数学表示如下:

与传统的单头自注意力相比,多头注意力有几大优点:比如,它能辨识出分词之间的各种关系,无论是主谓、动宾还是名形关系;同时,多头注意力还能提升模型的能力和表现力,因为模型能从序列的多种表现形式中同时学习;此外,多头注意力还能让模型在运算时更高效、更便于并行处理,因为它将每个头的维度降低了,从而可以同时处理多个头。

另外,Transformer还可以叠加多个层,进一步提升模型的能力和表现力。

5、总结

我们介绍了Transformer中的三种不同的注意力层,以及注意力的实现方法,位置编码和多头注意力机制,涵盖了大部分注意力相关的知识点,希望朋友们对它有了近一步的了解。

Transformer利用注意力机制做出了更好的预测,从ChatGPT的成功,已经得到了验证;尽管循环神经网络RNN也试图实现类似的功能,但由于它们受到短期记忆的限制,因此在处理长序列时,特别是在编码或生成长序列时,Transformer更为出色;由于Transformer架构,自然语言处理(NLP)行业取得了前所未有的成果。

参考:AlwithGary

目录
相关文章
|
2月前
|
运维 负载均衡 微服务
|
4月前
|
人工智能 自然语言处理 开发工具
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
本文介绍统一多模态 Transformer(UMT)在跨模态表示学习中的应用与优化,涵盖模型架构、实现细节与实验效果,探讨其在图文检索、图像生成等任务中的卓越性能。
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
Transformer架构:重塑现代AI的核心引擎
Transformer架构:重塑现代AI的核心引擎
449 98
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
编码器-解码器架构详解:Transformer如何在PyTorch中工作
本文深入解析Transformer架构,结合论文与PyTorch源码,详解编码器、解码器、位置编码及多头注意力机制的设计原理与实现细节,助你掌握大模型核心基础。建议点赞收藏,干货满满。
863 3
|
2月前
|
机器学习/深度学习 存储 资源调度
Transformer架构的简要解析
Transformer架构自2017年提出以来,彻底革新了人工智能领域,广泛应用于自然语言处理、语音识别等任务。其核心创新在于自注意力机制,通过计算序列中任意两个位置的相关性,打破了传统循环神经网络的序列依赖限制,实现了高效并行化与长距离依赖建模。该架构由编码器和解码器组成,结合多头注意力、位置编码、前馈网络等模块,大幅提升了模型表达能力与训练效率。从BERT到GPT系列,几乎所有现代大语言模型均基于Transformer构建,成为深度学习时代的关键技术突破之一。
562 7
|
2月前
|
机器学习/深度学习 人工智能 vr&ar
H4H:面向AR/VR应用的NPU-CIM异构系统混合卷积-Transformer架构搜索——论文阅读
H4H是一种面向AR/VR应用的混合卷积-Transformer架构,基于NPU-CIM异构系统,通过神经架构搜索实现高效模型设计。该架构结合卷积神经网络(CNN)的局部特征提取与视觉Transformer(ViT)的全局信息处理能力,提升模型性能与效率。通过两阶段增量训练策略,缓解混合模型训练中的梯度冲突问题,并利用异构计算资源优化推理延迟与能耗。实验表明,H4H在相同准确率下显著降低延迟和功耗,为AR/VR设备上的边缘AI推理提供了高效解决方案。
411 0
|
1月前
|
机器学习/深度学习 存储 缓存
115_LLM基础模型架构设计:从Transformer到稀疏注意力
大型语言模型(LLM)的架构设计是其性能的核心决定因素。从2017年Transformer架构的提出,到如今的稀疏注意力和混合专家模型,LLM架构经历了快速的演进。本文将全面探讨LLM基础架构的设计原理,深入分析Transformer的核心机制,详细介绍稀疏注意力、MoE等创新架构,并展望未来架构发展方向。通过数学推导和实践案例,为构建高效、强大的LLM提供全面指导。
|
1月前
|
机器学习/深度学习 自然语言处理 监控
23_Transformer架构详解:从原理到PyTorch实现
Transformer架构自2017年Google发表的论文《Attention Is All You Need》中提出以来,彻底改变了深度学习特别是自然语言处理领域的格局。在短短几年内,Transformer已成为几乎所有现代大型语言模型(LLM)的基础架构,包括BERT、GPT系列、T5等革命性模型。与传统的RNN和LSTM相比,Transformer通过自注意力机制实现了并行化训练,极大提高了模型的训练效率和性能。
|
4月前
|
存储 机器学习/深度学习 缓存
Google DeepMind发布MoR架构:50%参数超越传统Transformer,推理速度提升2倍
递归混合架构(MoR)通过自适应令牌级计算机制,在降低参数与计算开销的同时超越传统Transformer性能,显著提升推理效率与内存管理,为大模型发展提供新方向。
307 0
Google DeepMind发布MoR架构:50%参数超越传统Transformer,推理速度提升2倍

热门文章

最新文章