深度学习-注意力机制


前言

上一章我们为逐步了解了Transformer内部运作机理开了个头,这是大语言模型的核心技术之一,也广泛应用于现代AI热潮中的其它工具。它首次出现于2017年一篇论文《Attention is All You Need》。因此本章将深入讨论注意力机制是什么。
首先我们快速回归一下之前的知识,我们正在研究的模型,其目标是接受一段文本,预测下一个词。输入文本被切分成小块,即Token。通常是单词或单词片段。Transformer的第一步是将每个Token关联到一个称为嵌入向量的高维向量。关键的一点是,在所有可能的嵌入向量构成的高维空间中,方向可以对应语义

Transformer的目标是逐步调整这些嵌入,使它们不单单编码单个词,还能融入更丰富的上下文含义。

注意力机制要实现的目标

alt text
同一个单词mole在三个句子中表明不同的意思,但是transformer将其拆分嵌入后,获得的是同一个向量,因为初始的token嵌入,本质是没有上下文参照的查找表。要等到Transformer的下一步,周围的信息才能传递到该嵌入向量。你可以这样想象,嵌入空间中有多个方向,表明mole的不同意思
alt text
训练得好的注意力模块,能计算出需要给初始的泛型嵌入加个什么向量,才能把它移动到上下文对应的具体方向上。
注意力模块不仅精细化了一个词的含义,还允许模型相互传递这些嵌入向量所蕴含的信息。甚至可以传递的很远,而且新嵌入向量的信息,可以比单个词丰富的多。正如上一章所提到的,所有向量流经网络后,经过了许多层的注意力模块。此时预测一下个token的计算过程,完全基于序列中最后一个向量。举例来说,你输入了几乎整本推理小说,从头输入到快结尾的“因此,凶手是……“这里结束。如果模型要准确预测下一个词,该序列的最后一个向量,即“是”的嵌入向量,必须经过所有注意力模块的更新,以包含远超单个词的信息量,也就是要设法编码整个上下文窗口中,与预测下一个词有关的信息。

注意力机制的计算过程

为了好理解注意力机制的整个计算过程,我们举一个很简单的例子。假设输入的是”a fluffy blue creature roamed the verdant forest”。并且暂时假设我们只关心形容词调整对应名词的含义,这种类型的更新。
我们先来了解“单头注意力机制”,之后再介绍注意力模块中,多个注意力头如何并行运算。再次强调,每个词的初始嵌入是一个高维向量,只编码了该单词的含义,和上下文没有联系


文章作者: DoubleR
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 DoubleR !
  目录