P37 · 注意力与 Transformer
自注意力机制(下)
1这节解决什么问题
上一节的自注意力只学一种「相关」,而且完全不知道词的先后。这两个问题怎么补?它和卷积、循环网络又是什么关系?
2一句话讲清
多头让「相关」有多种定义,位置信息把先后加回来;自注意力和卷积是同一族的两端,和循环网络则是「并行」换「长距离」。
3通俗解释
- 多头:把查询、线索、内容各自再变出几套,每套独立算一次注意力,最后把结果接起来再过一层。每套有自己的参数,不是把同一份结果复制几份。分成几套的好处是:指代、搭配、段落关系性质不同,全塞进一套比重里会互相抢位置。
- 位置信息:给每个位置配一个向量,直接加到输入上。可以人工设计,也可以让模型自己学。加上之后,同一个词在不同位置就有不同表示,先后才进得来。
- 和卷积:卷积相当于「只在一个固定的小窗口里做注意力,而且权重不随内容变」,所以可以说卷积是受限的自注意力;反过来说,自注意力是「看哪里可以学」的卷积。数据少时卷积的先验更划算,数据多时让模型自己学更好。
- 和循环网络:自注意力一次算完所有位置,任意两个位置一步可达;循环网络必须按顺序算,远距离信息要一路传过来。代价是自注意力的比较次数随长度增长得快。
4一个例子
讲义例子
讲义有一个很直观的检验:不给位置信息时,把输入的四个位置打乱,输出只是按同样顺序重排,数值一模一样。也就是说,「我打你」和「你打我」在它眼里完全一样。把位置向量加到输入上,这个对称就被打破了。
5常见误区
- 以为多头是把单头算多次再平均。是各自独立算、各自归一化,接起来后再过一层;参数不共享,也不做平均。
- 以为自注意力天生知道词序。上面那个打乱实验就是反例:没有位置信息时,它把输入当成一堆没有顺序的东西。
- 以为注意力一定优于卷积。讲义引用的经验是:数据少时卷积更好,数据多时自注意力更好。这是先验与数据量的交换,不是谁碾压谁。
6和相邻几节的关系
P36 给了单头与整体流程;P47 的编码器就是「多头自注意力 + 残差 + 归一化 + 前馈」;P48 的解码器再加遮罩与交叉参考;P38 的循环网络是对照方案。
730 秒回顾
多头是多套独立参数、各看一类关系再拼接;位置信息加到输入上,不是遮罩;卷积是受限的自注意力;循环网络串行,自注意力并行但比较次数涨得快。
8小自测
先自己答,再点开对答案。
1. 多头注意力和「一个头算好几遍再取平均」差在哪?
每个头有自己的参数、自己的一套比重,看的是不同关系;结果接起来再过一层,不是平均。平均会把不同关系混掉。
2. 没有位置信息时,把整句往右挪一个位置,输出会怎样?
输出也整体往右挪一位,数值不变。模型分不清「挪了」和「没挪」,因为它此时只按「有哪些词」在算。