趋近智
循环神经网络 (RNN) 虽然对较短序列有效,但处理较长序列时会遇到困难。主要问题在于将任意长的输入序列的意义压缩到一个单一的、固定大小的隐藏状态向量中。这个向量成为了信息瓶颈,使得模型难以记住序列早期部分的细节,尤其是在稍后生成输出时。想象一下尝试用一句话概括一部长篇小说 —— 重要的细节信息必然会丢失。
人类如何处理翻译或概括等复杂任务?我们不会仅仅读完整个源文本,然后完全根据一个内部总结来凭记忆写出译文。相反,我们会选择性地集中注意力。在翻译某个短语时,我们可能会回头看原文中相应的词语或短语。我们会对输入中与当前正在生成的特定输出最相关的部分给予关注。
这就是神经网络中注意力机制的核心思想。注意力机制不是强迫模型只依赖整个输入的压缩表示,而是一种让模型在生成输出的每一步都能回溯完整输入序列的方法。它能根据当前任务的相关性,动态地为输入的不同部分分配重要性分数(注意力权重)。
可以把模型想象成一次生成一个元素(例如一个词)的输出序列。对于它需要生成的每个输出元素,注意力机制让它能够:
上下文向量 – 一个输入的特殊摘要,专门针对当前的输出步骤进行调整,突出最重要的输入部分。这个过程使得模型能够根据需要选择性地将其“注意力”集中在输入序列的不同部分,从而克服了纯粹基于RNN的传统编码器-解码器模型的固定大小瓶颈。
解码器使用其当前状态生成一个“查询”。该查询与来自所有输入表示的“键”进行比较,以计算注意力分数。这些分数对相应的“值”(也来自输入)进行加权,从而创建一个上下文向量,该向量为解码器的下一步提供信息。
为了使这个过程更规范化,注意力机制通常使用从序列表示中得出的三种向量类型:
本质上,这种机制执行一次查找。查询在所有可用的键中进行查找。查询与键之间的匹配程度决定了分配给相应值的权重。然后,所有加权的值会被汇总。
这种根据相关性动态加权输入信息的能力,相比于只依赖从最终RNN状态得出的单一静态上下文向量,是一个重要的进步。它使得模型能够处理输入和输出序列中更远距离的依赖关系。
在接下来的部分中,我们将更仔细地考察这些查询、键和值向量通常是如何生成的,以及如何使用这些组成部分计算注意力分数和上下文向量。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造