ViT (Vision Transformer) ---- Seq2Seq

对于seq2seq模型,网上很多文章直接就把抽象模型拿出来,这样对初学者很不友好,这里采用例子进行阐述,最后在通过抽象模型理解

英语翻译成德语

ViT (Vision Transformer) ---- Seq2Seq

这个网站有很多的数据集

  1. Tokenization 和创建字典

Tokenization

因为是翻译任务,因此需要构建两个input_texts和两个target_texts,即如下:

ViT (Vision Transformer) ---- Seq2Seq

对于两种语言使用两种不同的tokenizers,构建两个不同的字典,为什么构建两个字典呢?

Tokenization 可以是字符级的也可以是单词级

字符级:

这里采用字符级进行学习,理论上,翻译任务最好采用单词级

例如:

ViT (Vision Transformer) ---- Seq2Seq

这里解释为什么翻译需要构建两个基于字符级的字典

因为在字符级,每种语言有不同的字母组成或者字符组成,单个字典很难做到,因此两种语言采用两种不同的字典:

ViT (Vision Transformer) ---- Seq2Seq

创建字典

ViT (Vision Transformer) ---- Seq2Seq

ViT (Vision Transformer) ---- Seq2Seq

训练模型

ViT (Vision Transformer) ---- Seq2Seq

预测第一个字符后,继续预测下一个字符

ViT (Vision Transformer) ---- Seq2Seq

同理

ViT (Vision Transformer) ---- Seq2Seq

这个过程,一直下去,一直等到输出停止字符为止

推理很简单,在上面的基础上,去掉便签和交叉熵,prediction就是输出即可

Seq2Seq Model

ViT (Vision Transformer) ---- Seq2Seq

这里简单的说一下,为什么在编码器中只需要使用最后一个状态的输出,为什么不使用中间的状态,因为最后一个状态包含了输入的所有信息,中间的状态,包含的信息不全

接着:

ViT (Vision Transformer) ---- Seq2Seq

总结:

1.LSTM虽然比RNN效果好,但是还是无法解决长序列的依赖问题,如何解决呢?

  • 采用双向LSTM替换单向的LSTM在编码阶段,解码只能使用单向的LSTM

ViT (Vision Transformer) ---- Seq2Seq

双向的LSTM好处在于,长序列的中,正向学习的到的偏向后部分,忘记前部分,而反向学到的是前项部分,忘记的是后续部分,把他们合并可以同时获取到前后重要信息

  • Word-Level Tokenization

使用word-level替换字符级的token ,一方面英语单词平均是4.5个字符组成,那么需要长度比字符级段4.5倍,但是训练需要更大的数据集进行词向量的预训练

  • 多任务学习(Multi-Task Learning)

ViT (Vision Transformer) ---- Seq2Seq

多任务的学习更有利于编码器的训练,变相的增加了数据集,这样也可以提升性能

  • Attention机制

上一篇:1113-七言诗词收集与LSTM自动写诗


下一篇:TikZ绘图实例——LSTM元胞结构图