Posted sweetheart7_7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了相关的知识,希望对你有一定的参考价值。
文章目录
- Seq2seq
- Encoder
- Decoder
- Autoregressive
- Non-autoregressive
- Encoder-Decoder (Cross attention)
- Training
Seq2seq
Transformer 是一个 Sequence-to-sequence 的 Model(缩写 Seq2seq)
input 是 一个 sequence,output 是一个 sequence,但是不知道多长,由机器自己决定 output 的长度。
应用:语音辨识,机器翻译,语音翻译
一般的 Seq2seq model 可以分为两块:Encoder + Decoder
input 一个 sequence,由 Encoder 负责处理这个 sequence,再把处理好的结果丢给 Decoder,由 Decoder 决定它要输出什么样的 sequence。
Encoder
作用:给一排向量输出另外一排向量(相同长度),Transformer 的 Encoder 使用的就是 Self-attention。
Encoder 中分为很多 block,每个 block 都是输入一排向量,输出一排向量,每个 block 实际并不是 Neuron Network 的一层,每个 block 作的事情,是好几个 layer 在作的事情:Self-attention、再丢到 FC 中,output 另外一排 vector(就是 block 的输出)
在原来的 Transformer 里面更复杂:
在 self-attention 的输出后加上原来的 input 的 vector,得到新的 ouput(残差网络),然后作 normalization(layer normalization),然后作为 FC 的输入,FC 也有 Residual 的架构,即将 FC 的输出加上 FC 的输入再作 layer normalization,然后作为 Block 的输出。
Decoder
Autoregressive
Decoder 产生输出
Decoder 先将 Encoder 的输出先读进去。
Decoder 如何产生一段文字:
- 先给它一个特殊符号代表开始(BOS)一个Special的token
- Decoder吃到这个特殊的符号,每个Token都可以用One-Hot的Vector表示(其中一维是 1,其它是 0)
- Decoder输出一个vector,大小和Vocabulary的size一样(通过softmax来确定输出是哪个字),然后再将Encoder的输出、begin、 跟这个字的One-Hot的Vector作为Decoder的下一个输入,然后再得到输出,依次类推…,
Decoder 的结构:
Encoder 和 Decoder 的区别:
除了遮着的地方 和 Masked Self-attention,其它基本相似
Masked Self-attention (不考虑右边的)因为 Decoder 的输入是从左边输出产生的,没办法看到右边。
只和自己及左边的
Decoder 决定输出的长度。
需要加一个特殊的符号,表示结束。
Non-autoregressive
一次产生整个句子:
- Classifier来决定输入的Begin的数量
- 确定最长长度的begin,然后将输出在End处截断。
Encoder-Decoder (Cross attention)
Cross attention(连接 Encoder 和 Decoder 的桥梁)
有两个输入来自 Encoder,一个来自 Decoder。
Encoder 的输出是 ,begin 经过 Self-attention(Mask),产生一个向量,然后将这个向量乘一个矩阵得到向量 Query , 产生 和 句子升降调