|
|
@ -144,3 +144,49 @@ Multi-Head架构图如下
|
|
|
|
|
|
|
|
|
|
|
|
> 残差连接:X如果处理完残差变小,则使用该X,如果残差反而大了,则使用原有的X。也就是堆叠的层数中,我们保证了堆叠的过程中,结果一定不会比原来差。
|
|
|
|
> 残差连接:X如果处理完残差变小,则使用该X,如果残差反而大了,则使用原有的X。也就是堆叠的层数中,我们保证了堆叠的过程中,结果一定不会比原来差。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Decoder
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Attention计算不同:只需要用Q去查encode的K,V即可
|
|
|
|
|
|
|
|
- 加入MASK机制:遮挡部分值,不使用它,比如内积会将每个相乘相加,而在计算内积的过程不能让它知道全部信息,比如下面的I am a student,遮挡掉student,否则相当于透题。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
最终输出结果
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 得到最终预测结果
|
|
|
|
|
|
|
|
- 损失函数cross-entropy即可
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Transformer整体架构
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Self-Attention
|
|
|
|
|
|
|
|
- Multi-Head
|
|
|
|
|
|
|
|
- 多层堆叠,位置编码
|
|
|
|
|
|
|
|
- 并行加速训练
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Encode端**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- input:输入X1、X2、...、Xn;
|
|
|
|
|
|
|
|
- 初始化:初始化词编码,先随机出词的编码再进行调整,但现在一般使用预训练好的模型,也就是没有了这个步骤;
|
|
|
|
|
|
|
|
- Positional Encoding:加入位置编码;
|
|
|
|
|
|
|
|
- Nx:N层堆叠Self-Attention;
|
|
|
|
|
|
|
|
- Multi-Head:多头Self-Attention;
|
|
|
|
|
|
|
|
- 残差连接:随着堆叠层数,可能结果会变差,残差连接则能保证学习至少不比原来差;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Decode端**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- MASK机制:遮挡掉部分,不使用后面的结果;
|
|
|
|
|
|
|
|
- 获取K,V的结果;
|
|
|
|
|
|
|
|
- Nx:N层堆叠;
|
|
|
|
|
|
|
|
- Linear:得到所有的编码,Linear成向量;
|
|
|
|
|
|
|
|
- Softmax:将向量进行分类;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这就是Transformer的整体结构。
|
|
|
|
|
|
|
|
|
|
|
|