高铁心血来潮逼着自己把这个模型的结构看了一遍,不写下来会忘掉的
Encoder
输入是词向量。
word vector -> [(multihead) self-attention -> forward ]×n-> layer normalization
self attention 就是 qkv矩阵乘法得到 z,multihead self attention 就是进行多个矩阵乘法然后把 \(z_1\dots z_t\) concat 起来然后再用一个 \(z_0\) 和这个 concat 过的矩阵乘一下得到 不多头得到 的 z
一开始很好奇为什么 multihead 后来想了想可能因为不多头模型效果不好,多来几组 qkv 好像是挺自然的一个增强方向。
相比于 RNN 主要改变是 position embedding,可以支持对较长信息的学习。
中间有残差连接。如果 Resnet 不出世这模型没准也没有residual 什么事。
layer normalization 是每个词的所有维度进行正则化,和 batch normalization 有些区别。
Decoder
Decoder 和 Encoder 中 multihead self-attention 的部分非常相似,不过每个单词后面的词不能对这个词产生影响,或者说矩阵的下三角是 \(-\infty\)(后面会通过 softmax 把它映射到 0~1)
Decoder 最后输出向量,和词库进行匹配,哪个词的词向量和输出向量余弦相似度大就是谁。训练过程中损失函数也可以借此获得。
标签:transformer,multihead,self,attention,矩阵,笔记,简札,Decoder,向量 From: https://www.cnblogs.com/yspm/p/Transformers.html