李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

文章目录

*
1. Seq2seq
2. Encoder

+ 2.1 Block
2. Decoder

+ 2.1 Autoregressive(AT)
+ 2.2 Non-autoregressive(NAT)
+ 2.3 Cross attention
4. Training

+ 4.1 Copy Mechanism
+ 4.2 Guided Attention
+ 4.3 Beam Search
+ 4.4 Cross entropy & BLEU score
+ 4.5 Scheduled Sampling

1. Seq2seq

对于seq2seq的问题,有时我们并不知道输出的长度是多少,这时候我们需要机器自己决定 输出的长度
比如把语音的英文数据直接输出为对应的中文文字(长度与格式都不一样),我猜这就是呢篇paper叫做Transformer的原因

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
在NLP领域很多问题都可以看作成Q&A的问题,这时就转化成立一个 对话的seq2seq的问题,但一般会针对各个问题有针对性的进行相关处理最适合的模型。
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
我们可以对于文字的语法解析问题也强行转化成一个seq2seq的问题
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
我们对于multi-label的问题也可以转化成一个seq2seq的问题
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

; 2. Encoder

一般seq2seq的问题都由Encoder和Decoder组成,Encoder处理输入序列,结果给Decoder决定输出
Encoder做的事情就是对输入的一组向量,输出一组相同长度的向量,这点很多模型都可以做到(比如RNN或CNN),在Transformer中就使用了Self-attention。

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

2.1 Block

首先,整体的Encoder会分成很多block,最终得到输出,每一个block里面还有很多个layer

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
其中每一个Block的结构又被分为一层注意力层和全连接层,
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
在transformer,在attention层后还多了一个类似残差网络(residual)的设计,将输入加到了输出中,之后再做了一次layer Normalization(对于同一个feature不同的dimension计算平均值和标准差,进行normalization),这时得到的是全连接的输入,然后对全连接的输出在进行残差操作
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
transformer的block中,输入还加了 Positional Encoding(Self-attention中有讲过,位置信息的vector),其中的Attention用的也是 Multi-Head Attention,之后再过一个正向网络, Add & Norm就是残差+标准化
这个复杂的block在BERT中也有用到
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

; 2. Decoder

Decoder有两种,比较常见的是 Autoregressive(AT),这里用语音辨识作为例子

2.1 Autoregressive(AT)

对于Encoder给出的输入,Decoder要首先给一个 BEGIN的特殊符号(用独热码表示),代表开始
然后Decoder会softmax后输出一个向量,这个向量的长度是输出语言单词或词汇种类的个数,这个向量是一个distribution,然后数值最大的值就是第一个输出,如下图就是”机”字,然后这个”机”字就成了下一个输入。

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
反复进行这个操作,就得到”机器学习”四个输出
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
在transformer中Decoder的结构如下

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
Masked Self-attention相比于Self-attention,每一个输入只能考虑 之前输入的咨询,即下图中每个输入左边的输入,而不是考虑全部的输入
因为decoder的步骤中,我们是 一个输出成为下一个输入所以决定了这样特殊的Attention结构。

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
为了让机器自己学习什么时候结束输出,我们还确定了一个结束符号END,有时候会用跟BEGIN一样的符号表示(因为只会出现两次)

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

; 2.2 Non-autoregressive(NAT)

相比于AT一次一个字产生的形式m,NAT一次产生一整个句子,给多少个START就输出多少个字,这样就得确定输入多少个START标识符的数量

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
有几种确定 输出数量常见的作法:
  1. 训练一个Classifier,它的输入是Encoder的输出,输出是应该所求的输出数量
  2. 给N个START,假定输出不会超过一个N值,看什么地方输出END,END右边的舍弃

优点

  1. NAT一次就产生整个句子,比AT的速度快
  2. 能够控制输出的长度,比如语音合成时,将Classifer的输出除2,那么讲话速度就会变两倍快,反之亦然

但是NAT的效果一般不如AT,因为会遇到Multi-modality的问题等等,所以现在很多研究在试图提升NAT的效果。

2.3 Cross attention

连接Encoder和Decoder之间的桥梁叫做Cross attention

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
Cross attention的具体结构如下,其中q q q来自Decoder
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
每一次Decoder运作的过程都类似,考虑到了Encoder产生的所有输出
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
也有人尝试用Encoder中间层与Decoder中间层做一些Cross Attention等连接方式
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

; 4. Training

我们希望每一个输出的distribution和Ground truth的cross entropy越小越好,最后还有一个结束符的cross entropy

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
在训练的时候我们会给Decoder 正确答案作为输入,这叫做 Teacher Forcing
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

4.1 Copy Mechanism

有很多时候Decoder并不需要自己产生输出,而是可以从输入的东西里复制一些东西(如聊天机器人)

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
在做摘要的时候也会需要用这样的功能
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

; 4.2 Guided Attention

在语音辨识和语音合成中会使用,要求机器在做attention时有 固定的模式,比如固定从左到右进行attention

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

4.3 Beam Search

在进行输出时,一般会找分数最高的作为输出叫做Greedy Decoding
但有时候我们会先选择一些较差的,但之后的结果反而比较好
所以我们用Beam Search找一些较好的路径

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
这种方法有时候好用有时候效果很差 :)
在语言辨识这种输出结果确定的情况下,Beam Search会较好用
在需要机器发挥一些创造力的情况时,Beam Search比较没有帮助
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

; 4.4 Cross entropy & BLEU score

训练用的是Cross entropy但最后测试的是BLEU score,所以之间存在差距
当不知道怎么优化时,用reinforcement learning(RL)硬做!

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

4.5 Scheduled Sampling

如果在训练的Decoder一直看到的是完全正确的数据,那么在测试的时候如果出现一步错误,就会步步错
所以从直觉性上我们给Decoder加入一些错误的数据

李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer
这种方法叫做Scheduled Sampling
李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

Original: https://blog.csdn.net/An_dy_code/article/details/121893059
Author: Andy in boots
Title: 李宏毅2021春季机器学习课程笔记7: Seq2seq & Transformer

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/531394/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球