Self attention / Multi-head Self-attention

一、Self-attention

二、Multi-head Self-attention

那multi-head attention 是怎么实现的呢。 在执行self-attention 之前 Q, K, V 都会先乘以一个矩阵 做linear project, 把他投影到维度num_head*(d_q, d_k, d_v)。 这个地方举个例子就比较容易说明了, 比如以前的head 维度是 64, 我需要8 个head, 那我就用线性转换, 把我的输入变成的维度变成 512, 再reshape 一下。

首先embedding做h次linear projection,每个linear projection的参数不一样,然后做h次attention,最后把h次attention的结果拼接做为最后的输出。

多个attention便于模型学习不同子空间位置的特征表示,然后最终组合起来这些特征,而单头attention直接把这些特征平均,就减少了一些特征的表示可能。

三、参考

李宏毅的深度学习课程