自注意力机制(Self-attention)

2022-09-13 15:07:24 浏览数 (1)

自注意力机制(Self-attention)

背景

最近,学了好多东西,今天看了一下李飞飞老师讲解的自注意力机制,因此在这记录一下,以供日后复习,同时自己学习消化知识也好。

综述

一般来说,模型的输入输出有三种:

  • N个输入,经过模型计算后,输出N个结果,也就是对输入向量进行计算,从而得到每个向量对应的输出值。
  • N个输入,送入模型进行计算,最终得到一个结果。这就是平时常见的比如,文本分类、情感分析等。
  • 任意个输入,输出任意个输出。这种在生活中也较为常见,比如机器翻译,对于一句话,不同的语言会包含不同个词。

此文先讲讲第一种,也就是说N个输入,得出N个结果,这种模型一般形式如下图所示。

在图中可以看到,a表示对输入数据进行处理之后,作为self-attention的输入,从而得到b。其中,在得到每个b的过程中,都会考虑到输入的每个元素,包括a1, a2, a3, a4。这样对于输出的结果更合理。

对于中间那一块深色的模块,就是自注意力机制的核心。在注意力机制中,首先需要计算注意力得分,比如:在进行计算第一元素时,需要考虑其他三个元素的情况,在计算第一个元素时,分别考虑其他每个元素的权重,给每个元素打分,重要性越大则分数越高。

其计算得分的流程如图下所示。

在上图中可以得到,自注意力机制在计算第一个元素时流程为:

  1. 首先,给输入向量每个元素,分别乘以两个举证Wq和Wk,从而计算出q1和ki。
  2. 然后,将q1和ki分别相乘,得到每个元素的分数。
  3. 为了得到更好的结果,对每个分数进行一次soft-max。

最后,将每个分数按图上公式进行计算,得到输出在计算每个元素时,对应考虑其他元素的注意力分数。

在得到分数之后,可以通过以下图得到b,具体如下图所示。

在上图中,结合计算注意力得分的图,可以看出,在得出注意力分数之后,在将分数和vi进行相乘之后,再进行加权求和,即可得到b1。用同样的分数可以的b2,b3,b4。

矩阵形式

为了方便计算,一般会通过矩阵形式来计算,如图所示。

在上图中可以清楚的看到,在进行自注意力中用矩阵形式进行计算过程。

其中I为输入向量进行拼接后的举证,Q、K、V矩阵为每个输入向量对应的q、k、v进行拼接后的矩阵。

0 人点赞