1. Seq2seq model

1.1 Seq2seq model 的应用场景

  1. 语音辨识, 中文音频到中文 文字, 音频到文字
  2. 语言翻译, 中文文字到英文, 文字 到文字;
  3. 语音翻译, 中文音频 到 英文 文字, 结合上述两个;
    世界上7000 多种语言,还有 很多语言,还没有文字 ,
  4. 文本 到语音: 输入文本,输出音频;
  5. 基于transformer的文本生成python_编译过程

  6. 用于文法解析(用于编译过程中, 编译),seqseq for syntactic Parsing, “ Grammar as Foreign Language ” 14 年;
  7. for Muli label calssifiction: 即 同一个目标对象 它同时属于多个标签;
    区别于Mutil class, 多个类别中 分类出一个类别;
  8. for Object Detectiono;

2. Seq2seq model 组成模块

主成分两块:

  1. Encoder
  2. Decoder 部分;

2. Encoder 编码器

多个输入向量 编码后 得到多个输出向量

基于transformer的文本生成python_编译过程_02

3. Transformer 中的 Encoder

  1. Transformer 中的Encodr 编码器可以看做是多个Block 组成
  2. 每个Block 在 self attention 的基础上 增加了残差连接 + Layer Norm + FC;
  3. 注意,这里每一个Block 是模型中多个 Layer 所做的事情;

基于transformer的文本生成python_编码器_03

3.1 单个Block 中的内容

  1. 每个Block中包含了:
    自注意力机制 + 残差链接 + LayerNorm + FC + 残差链接 + layer Norm, 此时的输出 = 一个 Block 的输出;

基于transformer的文本生成python_编译过程_04

3.2 单个Block 中的具体实现步骤

  1. 原始的输入向量基于transformer的文本生成python_编码器_05 与 输出向量基于transformer的文本生成python_编译过程_06 残差相加 得到 向量 基于transformer的文本生成python_编译过程_07
    注意, 基于transformer的文本生成python_编码器_05 是原始的输入向量,下图中输出向量基于transformer的文本生成python_编译过程_06

基于transformer的文本生成python_Transformer的编码器_10

Layer Normation:   不需要考虑batch;
  同一个样本, 同一个 feature ,  不同的 dimeation 中 去计算 mean 和 方差;
  Batch Normalization: 
 不同的样本, 不同的特征,但是 同一个 dimeation 去计算  mean ,和方差;
  1. 将向量 基于transformer的文本生成python_编译过程_07 通过 Layer Normation 得到 向量基于transformer的文本生成python_方差_12;

图中左侧部分:

基于transformer的文本生成python_方差_13


图中右侧部分:

  1. 将向量基于transformer的文本生成python_方差_14 通过 FC layer 得到 向量基于transformer的文本生成python_编译过程_15
  2. 向量基于transformer的文本生成python_方差_14 与向量基于transformer的文本生成python_编译过程_15 残差相加 ,得到向量基于transformer的文本生成python_编码器_18
  3. 向量基于transformer的文本生成python_编码器_18 通过 Layer Norm 输出 向量基于transformer的文本生成python_方差_20
  4. 此时得到的输出向量基于transformer的文本生成python_方差_20

3.3 上述步骤的等价

上述步骤,便是原始论文Transformer 中,Encoder 的设计;

注意到, 这里的Multi Head Attention 多头注意力, 是 self attention 的 基础上增加了 基于transformer的文本生成python_编码器_22, 基于transformer的文本生成python_编码器_23 , 基于transformer的文本生成python_方差_24 的数量, 从而称作是多头;

基于transformer的文本生成python_方差_25

3.4 网络的优化

  1. 更改LayerNorm 的 位置顺序;
  2. 更换层, layerNorm --> PowerNorm;

基于transformer的文本生成python_编译过程_26