一、多头注意力机制
(1)将q、k、v加入Linear层
(2)多头,就是同时处理多组,这里使用了一个将多组q、多组k、多组v压缩的技术
也就是下面的那张图片显示的,通过将维度扩展一维:用四维张量保存多个三维张量。
(3)集体送入attention函数处理
(4)解压缩,将四维张量从新还原成多个三维张量
(5)并对其进行拼接
二、前馈网络
就是一个mllp,就是线性层加上激活层再加上线性层。这里传入的是三维张量,dense也就是Linear接受的是二维,会把前两维当做样本,第三维当做特征。
三、残差和归一化层
残差就是:x经过计算之后得到y,y再加上x作为最后的输出。
四、encoder块
(1)self-attention就是QKV都是用同一个张量x进行赋值
(2)在编码器阶段,没有一层会改变其维度
(3)黄色荧光部分里面参数只是看着复杂,最后都是随便赋统一的初始值。(对精度无影响)
五、建立encoder
(1)预处理:embedding以及进行positionalEncoding也就是线性层加上激活处理
(2)根据有几个encoder块建立
(1)将词向量放大,然后传入前馈网络处理一下
(2)建立权重列表
(3)对每层进行处理丢入encoder块得到权重参数
(4)返回encoder的输出
六、decoder块
就如attention is all you need decoder图片所示各个self层
这里的state保存着:encoder的输出、有效长度、之前的信息
这里的第一个selfattention是对encoder的输入状态做的,这里要对其前面保留的所有信息的状态进行注意力分析的到x2,将x2进行addnorm之后传入进行下一次的selfattention
七、decoder
和encoder构造一样(只是块内部不一样)