[2022]李宏毅深度学习与机器学习第五讲(必修)-Transformer
做笔记的目的
1、监督自己把50多个小时的视频看下去,所以每看一部分内容做一下笔记,我认为这是比较有意义的一件事情。
2、路漫漫其修远兮,学习是不断重复和积累的过程。怕自己看完视频不及时做笔记,学习效果不好,因此想着做笔记,提高学习效果。
3、因为刚刚入门深度学习,听课的过程中,理解难免有偏差,也希望各位大佬指正。
Transformer
Sequence-to-Sequence模型可以解决非常多的问题,并且很多自然语言处理问题都可以堪称QA模型。
Multi-label Classification问题也是可以用Sequence-to-Sequence模型来解决。
Encodr
Encoder可以在放大成下图
在下图中运用了残差连接
当然这个Encoder得模型不一定是最好的,也有人对其进行了改进,如下图中的b,就取得了不错的效果。
Decoder
在做Decoder得时候要先输入一个Begin同时也要定义end来决定什么时候Decoder结束,在Decoder里面涉及到了 Masked Self-attention,做法如下图:
其实当你计算
a
2
a^2
a2的时候并没有
a
3
a^3
a3、
a
4
a^4
a4,所以只能考虑左边的东西。
Autoregressive和not Autoregressive
虽然在NAT里面我们不知道什么时候End,但是有方法可以克服这一点:
- learn一个模型来告诉我们有多长
- 假设输出很长,只考虑End之前的
NAT的优点: - Decoder比较能控制输出的长度
- 平行计算所以比较快
但是NAT的结果并不是很好,所以有待进一步研究。
从Encoder到Decoder,有两个输出来自Encoder,cross attention。在论文里面是最后一个Eecoder输入到Decoder,但是也不一定非要这么做,有很多种做法如下图,结果是好是坏就不知道了,可能不同任务不一样把。
Decoder损失函数是交叉熵,类似于分类,同时可以看到在训练的时候,会给他正确答案,这个技术是Teacher Forcing。
训练的技巧
在做很多任务的时候,输出是从输入里抄的,比如聊天机器人、自动摘要,所以复制的能力是有必要的,这里可以用pointer network来实现。
Guided Attention
guided attention在语音合成和语音辨识比较重要,让attention从左到右,可以避免一些错误。
Beam Search
Greedy Decoding并不一定是最好的结果,同时最好的路也不一定符合人的尝试。beam search可以找到green这条路,但是green这条路不一定很好,所以Beam search有的时候有用有的时候不行。所以需要看任务本身的特性,对于确定的任务beam search可能有用比如语言识别。但是在需要创造的任务的时,beam search比较不行,比如自动写诗、自动补全文章等等,需要随机性。对于TTS任务也是Beam search并不管用。
Scheduled Sampling
给输入一些错误的输出,但是这一个技巧可能会影响Transform平行化,但是也有方法解决: