李宏毅机器学习笔记第13周_Transformer


一、Sequence-to-sequence

1. 输入一个sequence,输出一个长度由机器决定的sequence,下面举例说明。
2. 语音辨识,输入是声音讯号,输出是语音辨识的结果。输入和输出的长度不是绝对关系,输出内容的长度由机器决定。
在这里插入图片描述
3. 机器翻译,输入是一种语音的句子,输出是另一种语音的句子。
在这里插入图片描述
4. 语音翻译,输入是一段话,输出是这段话的中文文字。做语音翻译的原因是全世界很多语言没有文字,于是我们就把它翻译成我们能够阅读的文字。
在这里插入图片描述

二、Seq2seq for chatbot

如下图所示,训练聊天机器人。输入是一段话,输出是回复问题的一段话。因此要训练聊天机器人,我们需要收集大量的聊天资料,让机器人的输出与训练的结果越接近越好。
在这里插入图片描述

三、Seq2seq for Syntactic Parsing

如下图所示,举例说明句法分析的例子。Syntactic Parsing就是给机器一段文字,机器产生一颗句法分析树,图中的deep+learning是名词片语,very+powerful是形容词片语,再加上is是动词片语,然后动词片语+名词片语是一个句子。因此,句法分析的输入是一个句子,输出是一个树状结构(也可以看作是一个sequence)。
在这里插入图片描述

四、Seq2seq for Multi-label Classification

比较Multi-class Classification与Multi-label Classification,Multi-class Classification是指我们有多个class,机器要从多个class中选择出某一个class出来,Multi-label Classification是指同一个东西可以属于多个class。如下图所示,Multi-label Classification使用seq2seq时,输入是一篇文章,输出是它属于哪几个class。
在这里插入图片描述

五、Seq2seq的组成

Seq2seq分成两部分,一部分是Encoder,另一部分是Decoder。整个过程是输入一个sequence,然后交给Encoder处理后,由Decoder决定要输出哪一个sequence。
在这里插入图片描述

六、Encoder

1. Encoder做的事情是输入一排向量,输出一排向量。与之类似的操作,RNN与CNN也能够做到。如下图所示,Transformer的Encoder用的是Self-attention。
在这里插入图片描述
2. 如下图所示,Encoder分成了很多Block,Block都是输入一排向量,输出一排向量,直到最后的Block输出最终的vector sequence。Block中做的事情是先做Self-attention,然后把输出的vector放入Fully-connected里面,然后输出一排vector,这也就是Block的输出。
在这里插入图片描述
3. 如下图所示,在原来的Transformer里面,它的过程更加复杂。在Transformer中,会把Self-attention输出的vector加上之前输入的vector当作新的输出(residual connection),然后做一次Layer norm作为Fully-connected的输入,这里也用到了residual的架构得到新的输出,再做一次Layer norm得到最终的输出。
在这里插入图片描述
4. 如下图所示,右边那个图是把Block更换顺序后的Transformer,它比左边那个图的表现更好。
在这里插入图片描述

七、Decoder-Autoregressive

1. 举例语音辨识的例子说明Autoregressive Decoder,如下图所示。Decoder的运作是先把Encoder的输出读入作为输入,同时输入一个special token为START(假设要处理的是NLP问题, 每一个token都用one-hot的vector表示 ),代表开始工作,然后Decoder通过这两个输入,输出一个经过softmax处理后的长度为vocabulary size的输出向量,向量中的每一个中文字会对应一个分数,分数最大的中文字就为最终输出的中文字。
在这里插入图片描述
2. 输出“机”后,接下来会把“机”作为Decoder新的输入,根据BEGIN和“机”然后输出新的输出“器”,上述操作会被反复进行下去。如下图所示,我们会发现Decoder会把自己的输出当作接下来的输入。
在这里插入图片描述
3. 如下图所示,对比Encoder和Decoder的结构,我们可以发现Decoder就比Encoder多了中间的Multi-Head Attention,并且使用了Masked Multi-Head Attention。
在这里插入图片描述
4. 对比Self-attention,Masked Self-attention不考虑右边的输入。
在这里插入图片描述
5. 如下图所示,具体说明Masked Self-attention。加入Masked的原因是因为Decoder的输出是一个一个产生,因此Decoder只考虑前面的输出,不考虑后面的输出,Masked Multi-Head attention的计算顺序和Decoder的串行计算顺序是相对应的。
在这里插入图片描述
6. Decoder自己决定输出sequence的长度,会添加一个Stop Token(END),在输出里面出现,代表结束工作。
在这里插入图片描述

八、Decoder-Non-autoregressive

NAT Decoder的输入是一排的BEGIN(4个),就会输出一排中文字(4个)并结束。对于NAT Decoder的输出长度,我们可以先输出一个很长的sequence,然后在某个位置输出END后,忽略掉后面的输出。NAT Decoder的优势是平行化,并且可以控制Decoder输出的长度,但是NAT Decoder的表现不如AT Decoder(原因是Multi-modality)。
在这里插入图片描述

九、Encoder-Decoder

1. 如下图所示,Decoder中间那一个块是Cross attention,里面两个输入来自Encoder,一个输入来自Decoder。
在这里插入图片描述
2. 如下图所示,Cross attention的具体运作过程。
在这里插入图片描述
3. 如下图所示,有很多人尝试不同Cross Attention的方式。
在这里插入图片描述

十、Training

1. 训练首先要收集大量的训练资料,如下图所示。第一个输出要跟Ground truth“机”越接近越好,因为“机”被表示成one-hot vector,并且只有“机”的维度是1,其它是0。Decoder的是一个distribution(机率分布),因此我们会去与计算输出与Ground truth的cross entropy,并且希望这个值越小越好(跟分类问题相似)。
在这里插入图片描述
2. 如下图所示,实际的训练情况。在这个训练过程中,有“END”来结束工作,并且这里会用到Teacher Forcing,会把正确答案当作输入。
在这里插入图片描述

十一、Tips

1. Copy Mechanism
1) 从输入中复制得到输出的内容。
在这里插入图片描述
2) 训练一个model,从文章中提取出摘要。
2. Guided Attention
Guided Attention要求机器去领导attention的过程,并且有固定的方式。
3. Beam Search
如下图所示,Greedy Decoding是把每一次最高分数作为输出的中文字,但它不一定是最好的方法,在图中green path明显是更好的。现在要找到green path的方法可以把所以路径搜索一遍,但实际操作不可行,于是用Beam Search有效地找到green path。
在这里插入图片描述

十二、Optimizing Evaluation Metrics?

我们将Decoder的输出与正确答案做比较,然后计算出BLUE score。我们可以把BLUE score当作训练最大化的目标,但是BLUE score很复杂、不能微分,因此采用cross entropy,而且把每一个中文字分开计算。
在这里插入图片描述
遇到Optimizing不能解决的问题,用Reinforcement Learning硬train一发。

十三、Scheduled Sampling

在训练过程中,我们会得到完全正确的结果,而在实际测试中,会出现错误情况导致一步错步步错,这种情况时exposure bias。因此我们需要在训练中,加入错误情况,会得到更好的情况。
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值