先验知识:Self-attention (SA)
通过阅读先验知识,我们知道实际上在单头自注意力(普通的 SA)中,
- 假设输入的特征 维度是 (可以通过变换改变维度至 的维度,但是输入的维度这里就暂时这样表示)
- 输出的特征 维度一般和 value 的维度是一样的,我们用 来表示
对于多头自注意力,上述维度的表示依然相同。
假设有 个头,每个头都要对 进行一次单头 SA 操作,设每个 head 的输出维度是 ,如果 ,那么皆大欢喜,我们直接将所有 head 的输出进行拼接即可。但是应用中很可能两者并不严格等于,此时我们应该额外添建一个 FC 层 () 用来对齐维度,使得最终的输出为 ,公式表示如下
[! Attention]
- 实际应用中,我们常常指定 , 然后计算
- 每个 head 直接接受 作为输入,而不会对 做 Split (分成 份)