一、进阶!多头注意力
自注意力有一个进阶的版本——多头自注意力(multi-head self-attention)。多头自注意力的使用是非常广泛的,在翻译、语音识别,用比较多的头可以得到比较好的结果。至于需要用多少的头,这个又是另外一个超参数(需要我们自己设置与调节)
在使用自注意力计算相关性的时候,就是用 q 去找相关的 k。相关有很多种不同的形式,所以可以有多个 q,不同的 q 负责不同种类的相关性,这就是多头注意力。
如图所示,先把 a 乘上一个矩阵得到 q,接下来再把 q 乘上另外两个矩阵,分别得到q1、q2。用两个上标,qi,1 跟 qi,2 代表有两个头,i 代表的是位置,1 跟 2 代表是这个位置的第几个 q,这个问题里面有两种不同的相关性,所以需要产生两种不同的头来找两种不同的相关性。
既然 q 有两个,k ,v 也就要有两个。怎么从 q 得到 q1、q2,其实就是把 q、k、v 分别乘上两个矩阵,得到不同的头。对另外一个位置也做一样的事情,另外一个位置在输入 a j以后,它也会得到两个 q、两个 k、两个 v。
做自注意力的方法跟之前讲的操作是一模一样的,只是现在 1 那一类的一起做,2 那一类的一起做。就是 q1 在算这个注意力的分数的时候,它就只管 k1 就好。qi,1 分别与 ki,1、kj,1