什么是注意力机制?

2024 年 12 月 4 日

作者

Dave Bergmann

Senior Writer, AI Models

IBM

Cole Stryker

Editorial Lead, AI Models

Gather

什么是注意力机制?

注意力机制是一种机器学习技术,可指示深度学习模型优先考虑(或关注)输入数据中最相关的部分。注意力机制的创新使转换器架构得以产生 ChatGPT 等支持流行应用程序的现代大型语言模型 (LLM)

顾名思义,注意力机制的灵感来自于人类(和其他动物)有选择地更多地关注突出细节,忽略当下不太重要的细节的能力。可以访问所有信息,但仅关注最相关的信息,有助于确保不会丢失任何有意义的细节,同时能够有效地利用有限的内存和时间。

从数学角度讲,注意力机制计算的注意力权重反映了输入序列中每个部分对当前任务的相对重要性。然后,它应用这些注意力权重,根据输入每个部分各自的重要性来增加(或减少)输入每个部分的影响力。注意力模型(即采用注意力机制的人工智能模型)经过训练,可以通过对大型示例数据集进行监督学习自监督学习来分配准确的注意力权重。

注意力机制最初由 Bahdanau 等人作为一种技术于 2014 年提出,以解决当时用于机器翻译的最先进的循环神经网络 (RNN) 模型的缺点。随后的研究将注意力机制整合到卷积神经网络 (CNN) 中,用于图像字幕和视觉问答等任务。

2017 年,开创性的论文《Attention is All You Need》引入了转换器模型,该模型完全避免循环和卷积,而仅使用注意力层和标准前馈层。此后,转换器架构已成为尖端模型的支柱,为持续的 AI 时代提供动力。

虽然注意力机制主要与用于自然语言处理 (NLP) 任务(如摘要、问答、文本生成情感分析)的 LLM 相关联,但基于注意力的模型也广泛用于其他领域。用于图像生成的主要扩散模型通常采用注意机制。在计算机视觉领域,视觉转换器 (ViT) 在对象检测1图像分割2 和视觉问答3 等任务上取得了优异的结果。

小球在轨道上滚动的三维设计

最新的 AI 新闻 + 洞察分析

在每周的 Think 时事通讯中,发现专家精选的有关 AI、云等的洞察分析和新闻。 

为什么注意力机制很重要?

转换器模型和为其提供支持的注意力机制几乎在深度学习的每个子领域都取得了最先进的成果。与卷积神经网络 (CNN) 中使用的卷积机制和循环神经网络 (RNN) 中使用的循环回路相比,注意力机制的性质使其具有显著优势。

  • 随时间推移的灵活性:RNN 处理顺序数据的方式本质上是序列化的,这意味着它们以特定的顺序单独处理序列中的每个时间步长。这就使得 RNN 难以辨别它们之间存在许多步骤的相关性(数据科学术语称之为依赖性)。相反,注意力机制可以同时检查整个序列,并决定关注特定步骤的顺序。

  • 空间灵活性:CNN 本质上是本地的,使用卷积一次处理较小的输入数据子集。这使得 CNN 很难辨别相隔较远的依赖关系,例如彼此不相邻的单词(文本中)或像素(图像中)之间的相关性。注意力机制则没有这个限制,因为它们以完全不同的方式处理数据。

  • 并行化:注意力机制的性质要求许多计算步骤同时进行,而不是以序列化的方式进行。这反过来又实现了高度的并行计算,充分利用了 GPU 提供的强大功能和速度。

要了解深度学习中的注意力机制是如何工作的,以及它们为何有助于引发生成式 AI 的一场革命,首先要了解注意力首次引入的原因:改进用于机器翻译的基于 RNN 的 Seq2Seq 模型。
 

Seq2Seq 如何在没有注意力机制的情况下工作

RNN 是具有循环回路的神经网络,可提供“记忆”等效物,使它们能够处理顺序数据。RNN 获取有序的输入向量序列并按时间步长对其进行处理。在每个时间步长之后,生成的网络状态(称为隐藏状态)会连同下一个输入向量一起反馈给循环回路。

RNN 在训练中很快就会遭遇梯度消失或梯度爆炸的情况。这使得 RNN 在许多 NLP 任务中都不实用,因为它极大地限制了可处理的输入句子的长度。4一种称为长短期记忆网络 (LSTM) 的改进 RNN 架构在一定程度上减少了这些限制,它添加了门控机制来保存“长期”记忆。

在引入注意力之前,Seq2Seq 模型是机器翻译领域最先进的模型。Seq2Seq 在编码器-解码器架构中使用两个 LSTM。

  • 第一个 LSTM,即编码器,逐步处理源句子,然后输出最终时间步长的隐藏状态。此输出(上下文向量)将整个句子编码为一个向量嵌入。为了使 Seq2Seq 能够灵活处理具有不同单词数量的句子,上下文向量的长度始终相同。
  • 第二个 LSTM,即解码器,它将编码器的向量嵌入输出作为其初始输入,并将其逐字解码为第二语言。

以固定维数对输入序列进行编码,使 Seq2Seq 能够处理不同长度的序列,但也带来了重要的缺陷:

  • 它以与较短、较简单的句子相同的细节水平表示长序列或复杂序列。这会给较长序列造成信息瓶颈,并为较短序列浪费资源。
  • 该向量仅表示编码器网络的最终隐藏状态。理论上,每个后续隐藏状态都应包含前一个隐藏状态提供的信息,而前一个隐藏状态又包含前一个时间步长的信息,依此类推到第一步。实际上,上下文向量不可避免地会“遗忘”早期时间步长的信息,从而影响模型在较长序列上的性能。
     

注意力机制如何改善 Seq2Seq

Bahdanau 等人在 2014 年的论文《Neural Machine Translation by Jointly Learning to Align and Translate》中提出了一种注意力机制,以改善编码器和解码器之间的通信,消除信息瓶颈。

他们的模型不是仅将编码器的最终隐藏状态(上下文向量)传递给解码器,而是将每个编码器隐藏状态传递给解码器。注意力机制本身用于确定在解码器执行的每个翻译步骤中,哪种隐藏状态(即原始句子中的哪个单词)最相关。

该论文解释说:“这使模型不必将整个源句子编码为固定长度的向量,同时也让模型仅关注与下一个目标单词的生成相关的信息。”“这对神经机器翻译系统在处理较长句子时产生良好结果的能力产生了重大的积极影响。”5

随后的 NLP 研究主要集中于提高性能和扩展循环模型中注意力机制的用例。2017 年,仅靠注意力驱动的转换器模型的发明,最终使 RNN 在 NLP 中几乎被淘汰。

AI 学院

成为 AI 专家

获取相关知识,以确定 AI 投资的优先级,从而推动业务增长。立即开始观看我们的免费 AI 学院视频,引领 AI 在组织中的未来应用。

注意力机制是如何运作的?

注意力机制的主要目的是确定输入序列中不同部分的相对重要性,然后促使模型关注重要部分,忽略不重要部分。

尽管注意力机制有许多变体和类别,每种都适合不同的用例和优先事项,但所有注意力机制都有三个核心过程:

  1.  “读取”原始数据序列并将其转换为向量嵌入的过程,其中序列内的每个元素都由各自的特征向量表示。

  2. 准确确定每个向量之间的相似性、相关性和其他依赖关系(或缺乏这些依赖关系)的过程,量化为对齐分数(或注意力分数),以反映它们的对齐(或不对齐)程度然后,使用 softmax 函数以对齐分数来计算注意力权重,该函数将所有值归一化为 0-1 之间的值,并使之总和为 1。因此,例如,为一个元素分配注意力权重为 0 意味着应该忽略该元素。注意权重为 1 表示该元素应获得 100% 的关注,因为所有其他元素的注意力权重均为 0(因为所有权重的总和必须等于 1)。本质上,softmax 函数的输出是概率分布。

  3. 利用这些注意力权重来强调或淡化特定输入元素对模型预测方式的影响。换句话说,这是一种利用注意力权重来帮助模型关注或忽略信息的方法。

查询、键和值

开创性的论文《Attention is All You Need》使用关系数据库的术语阐明了其注意力机制:查询。关系数据库旨在简化相关数据的存储和检索:它们为每条数据分配一个唯一标识符(“键”),每个都与相应的相关联。在 NLP 中,模型的“数据库”是从训练数据集中学习到的词元词汇表。

《Attention is All You Need》论文的巨大影响导致即使是以前的注意力机制也经常被追溯地用这些术语来描述。一般而言,这种注意力概念需要序列中每个词元的三种向量表示形式之间的相互作用。

  • 查询向量表示给定词元正在寻找的信息。
  • 键向量代表每个词元包含的信息。查询和键之间的对齐用于计算注意力权重。
  • (或值向量)应用来自关键向量的注意力加权信息。与查询高度对齐的键的贡献权重较高;与查询无关的键的贡献权重接近零。

具体的注意力机制变体主要通过向量的编码方式、对齐分数的计算方式以及为向模型提供相关信息而应用的注意力权重来区分。

加性注意力

Badhanau 的注意力机制是专为机器翻译设计的。它使用双向 RNN 对每个输入词元进行编码,正向和反向处理输入序列并将结果串联在一起。例如,当原始语言和翻译语言对名词和形容词有不同的排序约定时,这种方法特别有用。

在这里,译句每个时间步长的解码器隐藏状态相当于一个查询向量,源句每个时间步长的编码器隐藏状态相当于一个键向量

然后,对齐分数由一个简单的前馈神经网络(注意力层)确定,该网络与模型的其余部分共同训练。该注意力层最多包括可学习模型权重的三个子集:隐藏解码器状态的查询权重(“Wq”),隐藏编码器状态的键权重(“Wk”)以及用于扩展最终输出的值权重(“wv”)。这些权重是模型的“知识”:通过在训练期间调整这些权重的特定值以最小化损失函数,模型学会进行准确的翻译。

在每个步骤中,加性注意力的工作原理如下:

  • 查询向量(乘以 Wq)与键向量(乘以 Wk相加。如果它们是对齐的,则将它们相加会产生一个很大的值。如果它们彼此无关,则将它们相加将产生一个小值或负值。
  • 由此产生的数字将被输入到t一个nh激活函数,将所有输入映射为 -1 到 1 之间的数字。
  • 函数 t一个nh的输出乘以权重值 wv这样就得出了查询向量与键向量之间的对齐分数
  • 然后将对齐分数输入到 softmax 函数,该函数将得出该键向量的注意力权重。
     

解码器用于生成译句的上下文向量是根据每个键向量的注意力加权和计算得出的。加性注意力的一个优点是,它不要求查询向量和键向量的长度相同。

点积注意力

2015 年,Luong 等人引入了几种新方法来简化和增强 Badhanau 的机器翻译注意力机制。也许他们最显著的贡献是使用乘法而不是加法的新对齐分数函数。它还摒弃了t一个nh函数,使用隐藏状态向量的点积计算彼此的相似性。因此,它通常被称为点积注意力乘法注意力

使用点积比较查询向量背后的直觉既是数学的,也是实用的:

  • 如果 Q 和 K 向量是对齐的,也就是说,如果查询和键的含义相似,则将它们相乘将产生一个较大的值。经过 softmax 处理之后,这个大值会导致该键的注意力权重较大。如果它们没有很好地对齐,它们的点积就会很小或为负,随后的 softmax 函数处理将导致较小的注意力权重。
  • 实际上,对于神经网络而言,乘法运算要比加法运算快得多,计算效率也高得多,因为使用矩阵乘法运算6 的步骤更少。

使用点积注意力的一个结果是,点积计算要求两个向量具有相同的维数 dK .

加性注意力继续将上下文向量计算为键向量的加权,而点积注意力则将上下文向量计算为键向量的加权平均值
 

缩放点积注意力

《Attention is All You Need》一文的作者指出,虽然点积注意力比加性注意力更快,计算效率更高,但对于较长的向量来说,加性注意力优于传统的点积注意力。

他们推测,当 dK非常大,得出的点积也非常大。当 softmax 函数将所有这些非常大的值压缩到 0-1 之间时,反向传播会产生难以优化的极小的梯度。实验表明,将两个长度为 dK的向量的点积乘以1dK进行缩放后再执行 softmax 归一化会得到更大的梯度,从而实现更平滑的训练。

转换器模型中使用的缩放点积注意力函数的写法是 Attention(Q,K,V)=softm一个X(QKTdK)V .

 

自注意力

最早的注意力机制类型都执行现在被归类为交叉注意力的功能。在交叉注意力中,查询和键来自不同的数据源。例如,在机器翻译任务中,键来自一种语言的文本语料库,查询来自另一种语言;在语音识别任务中,查询是音频数据,键是用于转录该音频的文本数据。

自注意力中,查询、键和值都来自同一来源。虽然 Bahdanau 和 Luong 的注意力机制都是明确为机器翻译设计的,但 Cheng 等人提出了自注意力(他们称之为“内部注意力”)作为一种总体上改善机器阅读的方法。他们在 2016 年的一篇论文 中概述了他们的注意力机制,该机制深入探讨的不是输入元素如何对整体序列做出贡献,而是不同的输入词元如何相互关联

考虑一种语言模型,它可以解读英语文本
“on Friday, the judge issued a sentence”。

  • 前面的单词the 表明judge 充当名词(如主持法律审判的人),而不是动词,即评价或形成意见
  • 单词(及上下文)judge 表明sentence 可能指的是法律处罚,而不是语法上的“句子”。
  • 单词issued 进一步暗示 sentence 指的是法律概念,而不是语法概念。
  • 因此,在解释这个词sentence 时,模型应该密切关注judge 和issued 。此外,还应注意单词the 。它可以或多或少地忽略其他单词。训练有素的自注意力机制会据此计算注意力权重。

Cheng 等人的论文只关注自注意力阅读和理解文本的能力,但很快表示建模序列内关系也可能是编写文本的强大工具。自注意力机制的进一步发展,以及它所支持的转换器模型,直接导致了现代生成式 AI 和可以生成原始文本的自回归 LLM 的出现。
 

自注意力和机器翻译

自回归 LLM 也可以使用自注意力进行机器翻译,但必须以不同的方式完成任务。交叉注意力将原文句子和译文句子视为两个不同的序列,而自注意力则将原文和译文视为同一个序列。

为了使自回归、基于自注意力的 LLM 能够翻译文本,模型在训练中遇到的所有单词(涵盖每种语言)都将作为一个大型多语言词元词汇表的一部分来学习。该模型简单地意识到,当序列包含“将 [语言 1 中的单词] 翻译成语言 2”之类的指令时,序列中的下一个单词应该是语言 2 中的词元。

从本质上讲,自回归 LLM 本身不一定理解存在不同的语言。相反,它只是了解某些词元(本例中是指与同一语言的单词相对应的词元)组合是如何相互关联的。通过指令调整等技术,这种情境理解得到了进一步强化。

 

转换器模型中的注意力

Viswani 等人撰写的《Attention is All You Need》论文从自注意力中获得了灵感,引入了一种新的神经网络架构:转换器。他们的转换器模型完全避开了卷积和循环,而是只使用注意层和标准线性前馈层。

作者自己的模型遵循编码器-解码器结构,类似于基于 RNN 的前代模型。后来,基于转换器的模型脱离了编码器-解码器框架。BERT(转换器双向编码器表示的缩写)是转换器论文发布后首批具有里程碑意义的模型之一,它是一个仅编码器模型。彻底改变文本生成的自回归 LLM,例如 GPT(生成式预训练转换器)模型,为仅解码器模型。

《Attention is All You Need》提出了对注意力机制的几项创新(其中之一是缩放点积注意力),可提高性能并使注意力适应全新的模型结构。

位置编码

单词的相对顺序和位置会对其含义产生重要影响。RNN 本质上通过逐个单词连续计算隐藏状态来保留有关每个词元位置的信息,而转换器模型必须明确编码位置信息。

使用位置编码时,模型会在词元进入注意力机制之前,根据每个词元的相对位置为其嵌入添加一个值向量。这种位置向量的维数通常比词元嵌入本身的维数要少得多,因此只有一小部分词元嵌入会接收到位置信息。虽然计算有些复杂,但逻辑很简单:

  • 两个词元越接近,它们的位置向量就越相似。
  • 它们各自的位置向量越相似,在添加这些位置向量后,它们各自的词元嵌入之间的相似性就越高。
  • 它们位置更新的嵌入越相似,它们的对齐分数就越大,从而导致这两个词元之间的注意力权重越大。因此,模型学会了更加关注附近的词元。

Viswani 等人设计了一种简单的算法,对偶数位置的词元使用正弦函数,对奇数位置的词元使用余弦函数。后来的算法,例如旋转位置编码 (RoPE),提高了对非常长的序列的位置信息进行有效编码的能力 - 这进而有助于实现具有更大上下文窗口的 LLM。
 

转换器模型的自注意力机制

一旦每个词元嵌入都更新了位置信息,就会通过第一个注意力层之前的三个并行线性(前馈)神经网络层中的每一层传递原始词元,从而使用各词元生成三个新向量。每个并行层都有一个独特的权重矩阵,其具体值是通过在海量文本数据集上进行自监督预训练获得的。

  • 嵌入值乘以权重矩阵 WQ得出查询向量 (Q),其为 dK
  • 嵌入值乘以权重矩阵 WK得出键向量 (K),维度也是 dK 
  • 嵌入值乘以权重矩阵 WV得出值向量 (V),维度为dv

注意力机制的主要功能是衡量每个词元之间的查询-键配对的重要性。对于输入序列中的每个词元 x,转换器模型按如下方式计算(然后应用)注意力权重:

  1. 词元 x 的查询向量 QX 乘以其他词元的键向量 K。对于高度相关的词元,得到的点积就会很大;而与不相关的词元的点积就会很小或为负。
  2. 每个点积将缩放,即乘以 1dK。结果是词元 x 和每个其他词元之间的对齐分数
  3. 这些对齐分数被输入到 softmax 函数中,该函数将每个分数归一化为 0-1 之间的值,使得它们加起来为 1。这些是词元 x 和每个其他词元之间的注意力权重。现在您可以将每个词元视为具有一个相应的注意力权重向量,向量中的每个元素都表示其他词元对它的影响程度。
  4. 现在,每个其他词元的值向量都要乘以其各自的注意力权重。
  5. 这些注意力加权值向量均为平均值。得出的向量表示每个键向量的所有注意力加权贡献的平均值。
  6. 最后,将每个词元的变化向量添加到词元 x 的原始向量嵌入中。本质上,词元 x 的向量嵌入已更新,以更好地反映序列中其他词元提供的上下文。

多头注意力

平均来自其他词元的注意力加权贡献,而不是单独计算每个注意力加权贡献,这在数学上是有效的,但会导致细节丢失。转换器架构通过实现多头注意力来解决这个问题。

为了在享受平均效率的同时仍然考虑词元之间的多方面关系,转换器模型在网络中的每个注意力层多次并行计算自注意力运算。每个原始输入词元嵌入被拆分为 h 个大小均匀的子集。每一个嵌入片段都被输入到 h 个由 Q、KV 权重组成的并行矩阵之一,每个矩阵分别被称为查询头、键头值头。然后,每个并行的查询头、键头和值头三元组输出的向量都会被输入到相应的注意力头中。

在每个注意力块的最后层中,这 h 个并行回路的输出最终重新连接在一起。在实践中,模型训练导致每个回路学习不同的权重,这些权重捕获语义含义的不同方面。这进而让模型能够处理来自其他单词的上下文影响单词含义的不同方式。例如,一个注意力头可能专门研究时态变化,而另一个注意力头专门研究附近的单词如何影响语气。

这里演示了标准转换器的注意力块中的矩阵乘法的整个回路。值得注意的是,转换器注意力机制后来的发展,如多查询关注和分组查询关注,简化或合并了流程中的某些元素,以降低计算需求。

生成输出

在转换器模型的最后几层中,通常对注意力头进行训练,以做出具体的预测。例如,LLM 的最后一层的一个注意力头可能专注于命名实体识别,而另一个注意力头专注于情绪分析,等等。

在自回归 LLM 中,倒数第二层是一个线性层,它接收完全转换后的向量,并将其投影到与模型为其词汇表中的每个词元所学习的向量嵌入相匹配的大小。这允许计算分数,表示生成的向量与该词汇表中的每个词元的匹配程度。最后一层是 softmax 层,它将这些分数转换成概率(满分为 1),并根据前面的单词,利用这些概率输出它认为最有可能出现的下一个单词。

脚注

1. "Leaderboard: Object Detection on COCO test-dev," Papers With Code, accessed 18 November 2024
2. "Leaderboards: Image Segmentation" Papers With Code, accessed 18 November 2024
3. "Leaderboard: Visual Question Answering (VQA) on VQA v2 test-dev," Papers With Code, accessed 18 November 2024
4. "Learning long-term dependencies with gradient descent is difficult," IEE Transactions on Neural Networks 5(2): 157-66, February 1994
5. "Neural Machine Translation by Jointly Learning to Align and Translate," arXiv, 1 September 2014
6. "Multiplicative Attention," Papers With Code

相关解决方案
IBM watsonx.ai

使用面向 AI 构建器的新一代企业级开发平台 IBM watsonx.ai,可以训练、验证、调整和部署生成式 AI、基础模型和机器学习功能。使用一小部分数据,即可在很短的时间内构建 AI 应用程序。

了解 watsonx.ai
人工智能 (AI) 解决方案

借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。

深入了解 AI 解决方案
人工智能服务

通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。

深入了解人工智能服务
采取后续步骤

一站式访问跨越 AI 开发生命周期的功能。利用用户友好型界面、工作流并访问行业标准 API 和 SDK,生成功能强大的 AI 解决方案。

深入了解 watsonx.ai 预约实时演示