注意:本文引用自专业人工智能社区Venus AI
更多AI知识请参考原站(【http://www.aideeplearning.cn】)
Transformer模型中最关键部分就是自注意力(Self-Attention)机制,正如 Transformer 的论文的标题是“Attention Is All You Need”!以文本问题为例来讲解这个机制。在处理文本问题时,自注意力机制会告诉模型:在处理句子中的每个单词时,特别关注某些重要的单词,并或多或少地忽略其它单词。简单来说,就是给句子中不同单词分配不同的权重。这是符合常理的,因为一句话中的每个单词重要程度是不一样的,从语法角度说,主谓宾语比其它句子成分更重要,self-attention机制就是模型尝试学习句子成分重要程度的方法。
self-attention可以通过学习句子成分重要程度更好的理解语言的上下文,而上下文对于语言模型来说是至关重要的。例如,看一下机器人第二定律:
机器人第二定律机器人必须服从人类发出的命令,除非这些命令与第一定律相冲突。
当模型处理这句话时,它必须能够知道:
- 它指的是机器人
- 这种命令指的是法律的前半部分,即“人类发出的命令”
- 第一定律指的是整个第一定律
如果不结合它们所指的上下文,就无法理解或处理这些单词。这就是自注意力的作用。它加深了模型对相关和关联词的理解,这些词在处理某个词(将其通过神经网络传递)之前解释了该词的上下文。它通过为片段中每个单词的相关程度分配分数,并将它们的向量表示相加来实现这一点。
例如,顶部块中的自注意力层在处理“it”一词时正在关注“a robots”。它将传递给神经网络的向量是三个单词中每个单词的向量乘以它们的权重分数的总和(这里忽略了那些权重分数低的不重要的单词)。
自注意力过程(self-attention)
自注意力机制重要组成部分是三个向量:
- query:在注意力机制中,查询表示当前正在处理的单词或token的表示方式。它用于评估与其他单词之间的相关性。简而言之,查询是我们要关注的中心对象。
- key:键向量是对文本中所有单词的标签或描述。它类似于我们用来在搜索相关单词时进行匹配的内容。在注意力机制中,我们会使用查询和键之间的关系来确定不同单词之间的相关性。
- value:值向量是实际的单词表示方式,通常是通过神经网络学习得到的。一旦我们使用查询和键来评估不同单词之间的相关性,我们将使用这些值向量来计算当前单词的最终表示。值向量会被加权组合,以代表当前单词的含义或重要性。
这三个向量的创建过程在模型实现时非常简单,通过神经网络层的映射即可得到。具体来说,输入数据为token本身(假设64维),而映射后的输入向量可以是192维,此时第0-63维作为q向量,64-127维作为k向量,而128-192维作为v向量。请注意,查询向量、键向量和值向量是为计算和思考注意力机制而抽象出的概念,或者说是我们对模型的学习期望。因为这三个新向量在刚创建时是随机初始化的,没有特殊含义,是经过模型训练分别得到了类似查询、回复、存值等向量功能,一个词向量可以通过它们与其它词向量进行互动来建模词与词之间的相关性。在读者阅读完接下来的全部计算过程之后,就会明白