李宏毅《Deep Learning》学习笔记 - seq2seq

Seq2Seq

视频:https://www.youtube.com/watch?v=ZjfjPzXw6og

回顾RNN

下面的x1x^1, x2x^2, x3x^3等input vector都是一组向量,RNN模块是同一个网络,只是在不同时间的使用。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在Naive RNN中,计算h和y的通用方法。
在这里插入图片描述
对比Naive RNN,LSTM可以视为将原先的h拆分为两个输入:c和h,其中,c的变化比较小,h的变化比较大
在这里插入图片描述
在LSTM中,使用h和x合并作为输入,计算出z,zi,zf,zoz,z^i,z^f,z^o,作为不同的gate。下面的粗箭头,都是一种transform。
在这里插入图片描述
也可以将c与h,x一起作为input,那么,在设计Weights的时候,最后的部分,用diagonal来计算,便于减少参数。
在这里插入图片描述
LSTM block内部的实现方式,就是像下面的描述。
在这里插入图片描述
两个LSTM block串联在一起的样子,如下所示。
在这里插入图片描述
除了LSTM,另一种常用的是GRU。
GRU只有三个transform,相较于LSTM而言,少了一个。
在这里插入图片描述

Sequence Generation

seq2seq model的使用过程

在这里插入图片描述
在这里插入图片描述
BOS(begin of sentence),EOS(end of sentence)

seq2seq model的训练过程

和一般的RNN training过程差不多
在这里插入图片描述

应用

产生文章,产生图像,都可以。。。

Conditional Generation

在这里插入图片描述

应用1 - Image Caption Generation

在这里插入图片描述
使用CNN对图像抽取vector,然后,将vector作为每一次input的一部分,喂给RNN。

应用2 - chat bot

在这里插入图片描述
在encoder的RNN中,memory中的vector就是一种representation。

应用3 - 语音合成

Dynamic Conditional Generation

对于最后的representation无法表示所有encoder input的情况,Dynamic Conditional Generation是希望在decoder的输入,每一次都喂入不同的vector,具体喂入什么,由模型自己决定。
在这里插入图片描述

应用1-机器翻译

下面以机器翻译为例,介绍attention-based model的方法。下面省去RNN模型的部分,所有的输入都是经过RNN。
match的过程就是attention,match的分数也称为attention score。
在这里插入图片描述
z0z^0对每一个hnh^n都做attention,输出a0na_0^n,然后,再做softmax,变成a^0n\hat{a}_0^n,然后,再去加权求和,得到c0c^0
c0c^0z0z^0一起作为decoder的input,产生z1z^1

注意:z0z^0也是被训练出来的。
在这里插入图片描述
后续的操作与前面的一样,重复直至结束。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

应用2-语音识别

在这里插入图片描述

应用3-Image Caption Generation

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
论文的效果,正确的答案
在这里插入图片描述
不正确,但是合理的答案
在这里插入图片描述
下面是对video caption generation的效果。
在这里插入图片描述

Tips

Bad Attention

attention的分布可能不平均,比较集中在某一个地方。可以对attention做reguization。
在这里插入图片描述

训练和预测不一致

训练阶段使用的是正确答案,而预测时,使用的是模型预测的答案。
在这里插入图片描述
在这里插入图片描述
这个问题叫做“Exposure Bias”
在这里插入图片描述
那么,怎么解决呢?
在训练过程中,使用预测结果,很难训练出来。
在这里插入图片描述
可以将预测结果和真实结果,通过掷色子的方式,选取出来。当然,前期从真实结果中选取的机率要大一些,后面随着模型越来越稳定,就可以增加从预测结果中选取的机率。
在这里插入图片描述
在这里插入图片描述
另一种方式是使用beam search
原始的方式其实是一种greed search,使用beam search以后,就可以保留前N个较大的结果。
在这里插入图片描述
在这里插入图片描述
那么,能不能使用平均值呢?
可能会有问题,下面是一个例子。
在这里插入图片描述

评估标准的选择

对于生成句子的情况,如果使用单个字或词来判断,效果可能还不如对完整句子的判断。
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章