Transformer就是一个Sequence-to-sequence的model,他的缩写,我们会写做Seq2seq,那Sequence-to-sequence的model,又是什么呢?
我们之前在讲input a sequence的,case的时候我们说input是一个sequence,那output有几种可能
●一种是input跟output的长度- 样,这个是在作业二 的时候做的
●有一个case是output指,output一 个东西,这个是在作业四的时候做的
●那接来作业五的case是,我们不知道应该要output多长,由机器自 己决定output的长度,即Seq2seq
1.举例来说,Seq2seq一个很好的应用就是语音辨识
在做语音辨识的时候,输入是声音讯号,声音讯号其实就是一串的vector ,输出是语音辨识的结果,也就是输出的这段声音讯号,所对应的文字
我们这边用圈圈来代表文字,每一个圈圈就代表,比如说中文裡面的一个方块子,今天输入跟输出的长度,当然是有一些关系,但是却没有绝对的关系,输入的声音讯号,他的长度是大T,我们并没有办法知道说根据大T输出的这个长度N一定是多少。
输出的长度由机器自己决定,由机器自己去听这段声音讯号的内容,自己决定他应该要输出几个文字,他输出的语音辨识结果,输出的句子裡面应该包含几个字,由机器自己来决定,这个是语音辨识
2.还有很多其他的例子,比如说作业五我们会做机器翻译
让机器读一个语言的句子 ,输出另外-一个语言的句子,那在做机器翻译的时候输入的文字的长度是N,输出的句子的长度是N',那N跟N'之间的关系,也要由机器自己来决定
输入机器学习这个句子,输出是machine learning,输入是有四个字,输出有两个英文的词汇,但是并不
是所有中文跟英文的关系,都是输出就是输入的二分之- -,到底输入 -段句子,输出英文的句子要多长,
由机器自己决定
3.甚至可以做更复杂的问题,比如说做语音翻译
语音翻译就是,你对机器说一句话,比如说machine learning,他输出的不是英文,他直接把他听到的英
文的声音讯号翻译成中文文字
你对他说machine learning,他输出的是机器学习
為什麼我们要做Speech Translation这样的任务為什麼我们不直接先做一个语音辨识,再做一个机
器翻译把语音辨识系统跟机器翻译系统,接起来就直接是语音翻译?
因為世界上有很多语言,他根本连文字都没有,世界上有超过七千种语言,那其实在这七千种语言,有超过半数其实是没有文字的,对这些没有文字的语言而言,你要做语音辨识,,可能根本就没有办法,因為他没有文字,所以你根本就没有办法做语音辨识,但我们有没有可能对这些语言,做语音翻译,直接把它翻译成,我们有办法阅读的文字
Seq2seq for Chatbot
Seq2seq for Syntactic Parsing(句法分析) multi-la bel classification
Seq2seq for Object Detection
Encoder-Decoder
我们现在就是要来学,怎麼做seq2seq这件事,一般的seq2seq's model,它里面会分成两块一块是Encoder,另外一块是Decoder
Encoder
seq2seq model Encoder要做的事情,就是给一排向量,输出另外一排向量
给一排向量、 输出一排向量这件事情很多模型都可以做到,可能第一个想到的是 我们刚刚讲完的self-attention,其实不只self-attention,RNN CNN其实也都能够做到input- -排向量output另外一个同样长度的向量
在transformer裡面, transformer的Encoder,用的就是self-attention,这边看起来有点复杂,我们用另外
现在的Encoder裡面,会分成很多很多的block
每一个block ,其实并不是neural network的一层.
每一个block裡面做的事情,是好几个layer在做的事情。
每一个block 又是做这样的事情
Decoder
Encoder做的事情,就是输入一个Vector Sequence,输出另外一个Vector Sequence
接下来,就轮到Decoder运作了,Decoder要做的事情就是产生输出,也就是产生语音辨识的结果,
Decoder怎么产生这个语音辨识的结果
稍微比较一下它们之间的差异那你会发现说,如果我们把Decoder中间这一块,中间这一块把它盖起来,其实Encoder跟Decoder,并没有那麼大的差别