想象成一个超级复杂的线性层组合体,包含了许多组子线性层,每个子线性层包含数量极为庞大的w和b参数。当输入张量 x 进入多头自注意力机制处理中就是对x进行一系列复杂计算,最终变为 x',保持了和输入时候一致的尺寸,也就是说整个过程是对x的特征变换。
1.整体结构
观察Transformer 模型,有3部分橙色标记的“多头自注意力”,它们之间的结构和实现完全相同。
这个时候的 x 输入来自于Positional Encoding处理后的张量,分成了三个分支,QKV。
在 Transformer 的多头注意力子层中,残差连接(Residual Connection) 和 层归一化(Layer Normalization) 是两个非常关键的步骤。它们的主要作用如下
多头自注意力的内部细节
内部结构
通过多个自注意力机制进行特征提取,图中不同的深浅就代表了多头,每个头都包含了Q-net,K-net,V-net三组线性层,分别对输入数据进行QKV线性变换。完成线性变换会进行Scaled Dot-Product Attention 计算。
得到不同头的Attention输出,在进行线性融合后输出。
计算过程。
注意:QKV矩阵的shape是 假设每个单词对其设定的维度是3。
上面矩阵中每一行和每一列对应了一个单词,画红框表示q中第三个单词和k中第二和单词的相互关系。
通过缩放scale可以调节点积计算的尺度,公式softmax得到概率分布。
概率矩阵表示的是词之间的相关的程度。例如,are 和 ok 对应概率系数是0.4,可评估的结果是它们相互作用和语义联系是最强的。
矩阵V的作用是为每个单词赋予上下文的重要性。
这就能清新的表示 每个单词之间的语义联系和上下文的相关程度!!