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

1. Seq2seq

对于seq2seq的问题,有时我们并不知道输出的长度是多少,这时候我们需要机器自己决定输出的长度
比如把语音的英文数据直接输出为对应的中文文字(长度与格式都不一样),我猜这就是呢篇paper叫做Transformer的原因
在这里插入图片描述
在NLP领域很多问题都可以看作成Q&A的问题,这时就转化成立一个对话的seq2seq的问题,但一般会针对各个问题有针对性的进行相关处理最适合的模型。
在这里插入图片描述
我们可以对于文字的语法解析问题也强行转化成一个seq2seq的问题
在这里插入图片描述
我们对于multi-label的问题也可以转化成一个seq2seq的问题
在这里插入图片描述
对于object Detection的问题也可以用seq2seq的模型来硬解在这里插入图片描述

2. Encoder

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

2.1 Block

首先,整体的Encoder会分成很多block,最终得到输出,每一个block里面还有很多个layer
在这里插入图片描述
其中每一个Block的结构又被分为一层注意力层和全连接层,
在这里插入图片描述
在transformer,在attention层后还多了一个类似残差网络(residual)的设计,将输入加到了输出中,之后再做了一次layer Normalization(对于同一个feature不同的dimension计算平均值和标准差,进行normalization),这时得到的是全连接的输入,然后对全连接的输出在进行残差操作
在这里插入图片描述
transformer的block中,输入还加了Positional Encoding(Self-attention中有讲过,位置信息的vector),其中的Attention用的也是Multi-Head Attention,之后再过一个正向网络,Add & Norm就是残差+标准化
这个复杂的block在BERT中也有用到
在这里插入图片描述

2. Decoder

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

2.1 Autoregressive(AT)

对于Encoder给出的输入,Decoder要首先给一个BEGIN的特殊符号(用独热码表示),代表开始
然后Decoder会softmax后输出一个向量,这个向量的长度是输出语言单词或词汇种类的个数,这个向量是一个distribution,然后数值最大的值就是第一个输出,如下图就是“机”字,然后这个“机”字就成了下一个输入。
在这里插入图片描述
反复进行这个操作,就得到“机器学习”四个输出
在这里插入图片描述
在transformer中Decoder的结构如下

在这里插入图片描述
通过比较我们可以发现,Encoder和Decoder大概结构类似,只有中间部分不相同,还有Masked Attention在这里插入图片描述
Masked Self-attention相比于Self-attention,每一个输入只能考虑之前输入的咨询,即下图中每个输入左边的输入,而不是考虑全部的输入
因为decoder的步骤中,我们是一个输出成为下一个输入所以决定了这样特殊的Attention结构。

在这里插入图片描述
为了让机器自己学习什么时候结束输出,我们还确定了一个结束符号END,有时候会用跟BEGIN一样的符号表示(因为只会出现两次)

在这里插入图片描述

2.2 Non-autoregressive(NAT)

相比于AT一次一个字产生的形式m,NAT一次产生一整个句子,给多少个START就输出多少个字,这样就得确定输入多少个START标识符的数量
在这里插入图片描述
有几种确定输出数量常见的作法:

  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

在这里插入图片描述
Cross attention的具体结构如下,其中 q q q来自Decoder
在这里插入图片描述
每一次Decoder运作的过程都类似,考虑到了Encoder产生的所有输出
在这里插入图片描述
也有人尝试用Encoder中间层与Decoder中间层做一些Cross Attention等连接方式
在这里插入图片描述

4. Training

我们希望每一个输出的distribution和Ground truth的cross entropy越小越好,最后还有一个结束符的cross entropy
在这里插入图片描述
在训练的时候我们会给Decoder 正确答案作为输入,这叫做Teacher Forcing
在这里插入图片描述

4.1 Copy Mechanism

有很多时候Decoder并不需要自己产生输出,而是可以从输入的东西里复制一些东西(如聊天机器人)
在这里插入图片描述
在做摘要的时候也会需要用这样的功能
在这里插入图片描述
在这里插入图片描述

4.2 Guided Attention

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

4.3 Beam Search

在进行输出时,一般会找分数最高的作为输出叫做Greedy Decoding
但有时候我们会先选择一些较差的,但之后的结果反而比较好
所以我们用Beam Search找一些较好的路径
在这里插入图片描述
这种方法有时候好用有时候效果很差 :)
在语言辨识这种输出结果确定的情况下,Beam Search会较好用
在需要机器发挥一些创造力的情况时,Beam Search比较没有帮助
在这里插入图片描述

4.4 Cross entropy & BLEU score

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

4.5 Scheduled Sampling

如果在训练的Decoder一直看到的是完全正确的数据,那么在测试的时候如果出现一步错误,就会步步错
所以从直觉性上我们给Decoder加入一些错误的数据
在这里插入图片描述
这种方法叫做Scheduled Sampling
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值