慢慢来,会更好!
接下里,我们接着transformer part1,来继续学习Decoder
Decoder有两种,我们会花很多时间来学习AT
Decoder要做的事情就是把Encoder的输出读进去,至于怎么读进去,等一下见分晓
Decoder如何产生一段文字呢?
首先,要有一个特殊的符号BEGIN,是一个special Token,多加一个特殊的字,代表了开始这个事情
(每一个 Token,都可以把它用一个 One-Hot 的 Vector 来表示,
One-Hot Vector 其中一维是 1,其他都是 0,所以 BEGIN 也是用 One-Hot Vector 来表示)
其次,Decoder会吐出一个向量,这个vector和Vocabulary Size(比如中文词汇量) 是一样的
最后,分数最高的一个中文字,就是最终的输出
第一次的话只有BEGIN作为Decoder的输出
现在我们把第一次产生的output 机也当做一个输入
循环往复,产生output
在这个过程中,可能会因为一个output error而引发一系列错误呢?
我们先看一下Decoder的内部结构,不要惊讶哦!
我们现在把Encoder和Decoder放在一起,稍微比较他们之间的差距
你就会发现
如果我们把 Decoder 中间这一块,中间这一块盖起来
其实 Encoder 跟 Decoder,并没有那么大的差别
仔细观察的时候,就会发现
Encoder:Multi-Head Attention
Decoder:Masked Multi-Head Attention
让我们一起来看看下图,来理解masked的特点