diff --git a/NLP通用框架BERT项目实战/assets/1609748548046.png b/NLP通用框架BERT项目实战/assets/1609748548046.png new file mode 100644 index 0000000..f7422b2 Binary files /dev/null and b/NLP通用框架BERT项目实战/assets/1609748548046.png differ diff --git a/NLP通用框架BERT项目实战/assets/1609748796629.png b/NLP通用框架BERT项目实战/assets/1609748796629.png new file mode 100644 index 0000000..d8f1719 Binary files /dev/null and b/NLP通用框架BERT项目实战/assets/1609748796629.png differ diff --git a/NLP通用框架BERT项目实战/assets/1609748883096.png b/NLP通用框架BERT项目实战/assets/1609748883096.png new file mode 100644 index 0000000..c5f18d2 Binary files /dev/null and b/NLP通用框架BERT项目实战/assets/1609748883096.png differ diff --git a/NLP通用框架BERT项目实战/第一章——NLP通用框架BERT原理解读.md b/NLP通用框架BERT项目实战/第一章——NLP通用框架BERT原理解读.md index b7380a1..569d5e9 100644 --- a/NLP通用框架BERT项目实战/第一章——NLP通用框架BERT原理解读.md +++ b/NLP通用框架BERT项目实战/第一章——NLP通用框架BERT原理解读.md @@ -144,3 +144,49 @@ Multi-Head架构图如下 > 残差连接:X如果处理完残差变小,则使用该X,如果残差反而大了,则使用原有的X。也就是堆叠的层数中,我们保证了堆叠的过程中,结果一定不会比原来差。 + + +#### Decoder + +- Attention计算不同:只需要用Q去查encode的K,V即可 +- 加入MASK机制:遮挡部分值,不使用它,比如内积会将每个相乘相加,而在计算内积的过程不能让它知道全部信息,比如下面的I am a student,遮挡掉student,否则相当于透题。 + +![1609748548046](assets/1609748548046.png) + +最终输出结果 + +- 得到最终预测结果 +- 损失函数cross-entropy即可 + +![1609748796629](assets/1609748796629.png) + + + +#### Transformer整体架构 + +- Self-Attention +- Multi-Head +- 多层堆叠,位置编码 +- 并行加速训练 + +![1609748883096](assets/1609748883096.png) + +**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的整体结构。 +