趋近智
循环神经网络(RNN)及其变体,如LSTM和GRU,通过维护一个隐藏状态来处理序列。尽管这些模型对许多序列任务有效,但一个主要限制源于其核心机制:无论输入序列长度如何,都将其所有信息压缩成一个固定大小的隐藏状态向量(或在编码-解码器设置中的上下文向量)。
以标准序列到序列(seq2seq)模型为例,它常用于机器翻译等任务。编码器逐步处理输入序列,并在每一步更新其隐藏状态。编码器的最终隐藏状态,通常称为上下文向量,旨在总结整个输入序列。这个单一向量随后被传递给解码器,解码器将其用作初始状态来生成输出序列。
传统编码器-解码器架构的简化视图。编码器输出一个固定大小的上下文向量
C,它表示整个输入,并成为解码器获取输入信息的唯一来源。
这个固定大小的上下文向量代表着一个固有的信息瓶颈。想象一下,尝试将冗长的段落或文档总结成一个简短的句子;细节必然会丢失。同样,随着序列长度的增加,迫使模型将长输入序列(例如,翻译中的复杂句子)的所有细节编码到一个向量中,变得越来越困难。解码器的性能根本上受到这个单一总结向量的质量和完整性的制约。在编码器的序列处理过程中,来自输入序列早期部分的信息可能会被后续输入“覆盖”或稀释。
这个瓶颈使得解码器在生成输出的不同部分时,难以访问输入中特定且相关的信息片段。例如,在翻译句子时,特定输出词的选择可能严重依赖于输入句子开头附近的一个特定词语或短语。仅仅依赖最终压缩的上下文向量,使得访问这种特定且远距离的信息变得不可靠。
为了克服这一限制,我们需要一种机制,它允许模型(特别是解码器)在输出生成过程的每一步“回看”编码器隐藏状态的整个序列(或输入的表示)。模型不应仅仅依赖一个单一的静态总结,而应能够根据它当时试图预测的内容,动态地为输入序列的不同部分分配不同程度的重要性。
这就是注意力机制背后的主要原因。它提供了一种方法,可以创建针对每个输出步骤专门定制的动态的、依赖于上下文的输入序列总结。与其将所有内容压缩到一个固定向量中,注意力机制允许模型选择性地关注最相关的输入元素,从而有效地绕过固定上下文瓶颈。
接下来各部分将详细说明这种注意力机制的实现方式,从查询(Queries)、键(Keys)和值(Values)的基本抽象开始,最终形成在Transformer架构中被普遍使用的缩放点积注意力公式。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造