1. Seq2seq model
1.1 Seq2seq model 的应用场景
-
语音辨识, 中文音频到中文 文字, 音频到文字
-
语言翻译, 中文文字到英文, 文字 到文字;
-
语音翻译, 中文音频 到 英文 文字, 结合上述两个;
世界上7000 多种语言,还有 很多语言,还没有文字 , -
文本 到语音: 输入文本,输出音频;
-
用于文法解析(用于编译过程中, 编译),seqseq for syntactic Parsing, “ Grammar as Foreign Language ” 14 年;
-
for Muli label calssifiction: 即 同一个目标对象 它同时属于多个标签;
区别于Mutil class, 多个类别中 分类出一个类别; -
for Object Detectiono;
2. Seq2seq model 组成模块
主成分两块:
- Encoder
- Decoder 部分;
2. Encoder 编码器
多个输入向量 编码后 得到多个输出向量
3. Transformer 中的 Encoder
-
Transformer 中的Encodr 编码器可以看做是多个Block 组成。
-
每个Block 在 self attention 的基础上 增加了残差连接 + Layer Norm + FC;
-
注意,这里每一个Block 是模型中多个 Layer 所做的事情;
3.1 单个Block 中的内容
- 每个Block中包含了:
自注意力机制 + 残差链接 + LayerNorm + FC + 残差链接 + layer Norm, 此时的输出 = 一个 Block 的输出;
3.2 单个Block 中的具体实现步骤
- 原始的输入向量
b
b
b 与 输出向量
a
a
a 残差相加 得到 向量
a
+
b
a + b
a+b;
注意, b b b 是原始的输入向量,下图中输出向量 a a a 是考虑整个序列的输入向量得到的结果;
Layer Normation: 不需要考虑batch;
同一个样本, 同一个 feature , 不同的 dimeation 中 去计算 mean 和 方差;
Batch Normalization:
不同的样本, 不同的特征,但是 同一个 dimeation 去计算 mean ,和方差;
- 将向量 a + b a + b a+b 通过 Layer Normation 得到 向量 c c c;
图中左侧部分:
图中右侧部分:
-
将向量 c c c 通过 FC layer 得到 向量 d d d ;
-
向量 c c c 与向量 d d d 残差相加 ,得到向量 e e e ;
-
向量 e e e 通过 Layer Norm 输出 向量 f f f,
-
此时得到的输出向量 f f f 才是 Encoder中 单个Block中的一个输出向量;
3.3 上述步骤的等价
上述步骤,便是原始论文Transformer 中,Encoder 的设计;
注意到, 这里的Multi Head Attention 多头注意力, 是 self attention 的 基础上增加了
q
q
q,
k
k
k ,
v
v
v 的数量, 从而称作是多头;
3.4 网络的优化
- 更改LayerNorm 的 位置顺序;
- 更换层, layerNorm --> PowerNorm;