2022-07-29 深度学习Python笔记

Transformer

是什么:仍是机器翻译模型,基本构成是Seq2Seq模型,但在各个方面都取得很好的效果。


传统RNN网络问题:

1. 当前X1需要用到前一个X0的隐藏特征,经过有限的1、2、3层网络得到X1的输出和隐藏特征,而X2只有得到X1的隐藏特征才能计算,所以过程是线性的,不能并行计算。

2. 在RNN中每个词是同等重要的,不能学到哪些词的重要性,需要利用Self Attension机制学习哪些词的重要性。


3. 传统词向量如Word2Vec学习完成后已经固定,就是固定场景,若场景发生变化,相同词表达不同的意思,固定的词向量已不适合。


整体架构:

1. Attension: 关注输入数据有价值的东西。

词It将上下文信息整体地加入到It的编码中,It不是考虑之前的Because而是整体都要考虑进去。从下面热力图中可以看出the animal, too相关性比较大。

2. Self Attension如何计算:

如何知道与其他词的相关程度?需要计算与当前词的权重,比如Animal权重肯定大,was权重小。

1)第一步先将每个词向量化(embedding)X1向量代表Thinking, X2代表Machines

2)构建三个权重矩阵、和,通过X矩阵分别与、、内积,得到Q、K和V矩阵:Q是包含我们得到的X1的q1、X2的q2辅助查询向量、K是包含我们得到的X1的k1、X2的k2辅助被查询向量、V是包含我们得到的X1的v1、X2的v2辅助实际特征信息。通过q1与k1内积考察q1与k1的匹配能力、通过q1与k2内积q1与k2的匹配能力。


3)通过softmax得到各个q向量与k向量内积的归一化值,因为维度相同,所以乘以V矩阵后,得到X1、X2的Self Attension值。


3. Multi-Head Attension多头注意力机制:

在上述Self Attension中只是得到X1("Thinking")的一个注意力 z1=0.88v1 + 0.12v2,那么能不能如CNN中,可以有多个卷积核,得到对应的多个特征图,从而可以得到图像的不同特征表达,Multi-Head Attension可以实现类似的功能,得到自然语言的多种特征表达:多种QKV就可以得到多种注意力 z1,z2,...。

接着拼接特征表达z1, z2,..。

最后接一个全连接层实现降维。

4. 堆叠多层:

X通过一个Multi-Head Attension得到一个向量,只有一个这样的过程是远远不够的,可以重复多次这样的过程,以此达到最好的performance。


5. 词的位置编码:每个词Self Attension关注的是整个序列的加权,所以词出现在什么位置并不会对结果产生影响,相当于放在哪里都无所谓,但是语句是有前后顺序的,可以额外加一个位置编码(例如余弦或正弦的周期信号),这样模型对位置有额外的认识。

6. Lay Normalization: BN:按照Batch维度(不同样本,特征相同),均值为0,标准差为1的Normalization; 而LN: 样本维度,让自己均值为0,标准差为1的Normalization。目的:更快更稳定。

7. Add残差连接:LN(X+Z), 做一个同等映射identity mapping, 让机器学得:F(x) =H(x)  - x,原因:堆叠多层,不能保证效果就好,两条路,加一个同等映射保证至少不比原来差


8. Decoder: 

与Encoder比较,Attension计算不同,加入了Mask.

Encoder-Decoder Attension:

Decoder不是仅仅利用自己的Self Attension机制预测下一个,还需要考虑编码器出来的信息。输入:Encoder的K, V和Decoder的Q。

9. Mask机制:

Decoder在计算Self Attension的时候,不能像Encoder一样整条句子都知道,所有词的关联度。而是需要盖住余下的词,只有之前预测过的词参与QKV矩阵相乘.

10. 最后使用softmax和cross-entropy损失函数得到输出分类结果。


你可能感兴趣的:(2022-07-29 深度学习Python笔记)