transformer、bert网络

序言

1、bert、transformer 比较传统的rnn

1、传统缺点:seq2seq使用循环网络固有的顺序特性阻碍样本训练的并行化,这在更长的序列长度上变得至关重要,因为有限的内
         存限制样本的批次大小;传统的seq2seq 处理时刻数 0-50,bert可以处理 几百个时刻长度的序列。
2、新结构:Transformer,这种模型架构避免循环并完全依赖于attention机制来绘制输入和输出之间的全局依赖关系。 Transf
         ormer允许进行更多的并行化
3、优势总结:
    ① bert、transformer 引入 位置嵌入 的思想,因此可以保证前后关系依赖的前提下实现并行化,bert网络比传统的r
      nn网络运行速度快很多
    ② 就算LSTM 引入了更新门、遗忘门,它不能完美解决 state 方向的梯度消失问题,因此LSTM处理的序列长度通常不超过
      50,bert网路可以处理更长的序列。
4、bert、transformer、传统rnn的缺点:
    虽说 他们 结构有差异,但是都属于 FC 类型的网络。

 一、transformer 网络

transformer、bert网络_第1张图片

1、self-attention

     Self-attention:有时称为intra-attention,是一种attention机制,它关联单个序列的不同位置以计算序列的表示。 Self-attention已成功用于各种任务,包括阅读理解、摘要概括、文本蕴涵和学习与任务无关的句子表征。

2、网络基本结构解析

transformer、bert网络_第2张图片

  • 注意:① transformer 输入 input 序列时与 LSTM 不同,LSTM 网络每一次只输入一个时刻的 文本,transformer 输入是 多时刻同时输入(所有时刻embeding数据)并行执行结构
  •            ② 在预测时, transformer 编码器 由于引入了 位置嵌入向量,它是一个并行结构的输入,但是解码器每一时刻输入需要参考上一时刻输出。在训练时,解码器的每个输入已知(即标签),所以可以直接 位置嵌入并行输入

transformer、bert网络_第3张图片

  • 注意 : transformer 结构 只有最后一层的 编码器 与 解码器各层之间有 attention 机制(这个attention是类似seq2
  •              seq的attention) 

3、transformer 编码器 与 解码器 结构

(1)encode 编码器基本结构

  •       每个Encoder 包含两层结 构: SelfAttention以 及feedforward NN 构成。当然还有残差结构与归一化操作。

transformer、bert网络_第4张图片

  •       加上 残差结构 与 归一化 操作的 编码器

transformer、bert网络_第5张图片transformer、bert网络_第6张图片

1、注意:
    ① 编码器的输出维度结构:
        输入多少时刻的词,输出就是多少时刻的词,它们的时刻数相同,用于 与解码器 之间的attention做准备

(2) decode 解码器基本结构

  •       解码器只是在Self-Attention和 feed-forward NN之 间增加了一个 Encoder-Decoder Attention

transformer、bert网络_第7张图片

  •      完整的结构 

transformer、bert网络_第8张图片

                            执行过程:

transformer、bert网络_第9张图片transformer、bert网络_第10张图片

4、位置嵌入 position embedding

1、模型还没有描述词之间的顺序关系,也就是如果将一个句子打乱 其中的位置,也应该获得相同的注意力,为了解决这个问题,
    论 文加入了自定义位置编码,位置编码和word embedding长度相同 的特征向量,然后和word embedding进行求和操作。
2、位置嵌入的作用
    transformer 网络编码器的输入是 多时刻 词embeding,为了使得并行执行的网络学习到词与词前后顺序,因此在词向
    量输入网络前用 位置向量 进行标记。 

           例:   我     是     中国       人

                      0       1        2          3    

                 将 位置 0,1,2,3..... 类似word2vec 的方式进行 嵌入。

 

transformer、bert网络_第11张图片

 

transformer、bert网络_第12张图片

4、muti-head-self-attention、masked 概念

1、一个head相当于提取一种特征,类似于CNN的多输出通道一样吧,muti-head可以提取文本更多的特征。

(1)self-attention 执行过程

  •       K、V、Q生成的方式

transformer、bert网络_第13张图片

  •       batch_size ==1 时 self-attention 执行的过程

transformer、bert网络_第14张图片

  •     batch_size + self-attention 执行的过程

transformer、bert网络_第15张图片

  •       self-attention最终表现结果

transformer、bert网络_第16张图片

          transformer、bert网络_第17张图片 

(2)muti-head-self-attention 

transformer、bert网络_第18张图片

  •       cancat 合并 后 进行  linear转化为 原来输入时的维度

transformer、bert网络_第19张图片

(3)解码器中 masked 概念

Mask:遮挡掩盖的意思,比如:把需要预测的词给挡住。出现出 现在OpenAI GPT和Bert中。 
Q:我|困|了 A:早点|休息    随机干扰句:你|该|吃饭|了
Input = [CLS] 我 [MASK] 了 [SEP] 早点 [MASK]  [SEP]
Label = IsNext
Input = [CLS]  [MASK] 困了 [SEP] 你该 [MASK] 饭了 [SEP]
Label =  NotNext

5、transformer 结构结构中 FFN 层、残差结构、normal 归一化操作

(1)Feed Forward 层 (FNN层,两层FC结构)

                   -------- FNN 层计算方式

1、FFN层目的:
    

(2)残差结构 Residuals

残差结构的作用:
    类似 resnet 的思想,防止导链断掉(某部分出现梯度消失)。

transformer、bert网络_第20张图片

 

(3)normal 归一化

1、作用:
    目的类似于 BN 层的三个作用,具体看 https://blog.csdn.net/qq_16555103/article/details/89914946

6、Final Linear and Softmax Layer

transformer、bert网络_第21张图片

  •          映射词汇表 负采样 构建 softmax 损失函数 

 transformer、bert网络_第22张图片

二、transformer 文献名词

1、放缩点积attention(scaled dot-Product attention)

1、放缩点积attention:
    self-attention 权重α计算方式
  •    常见的 query 与 key 计算 权重α的公式

transformer、bert网络_第23张图片

transformer、bert网络_第24张图片

2、多头注意力(Multi-headed attention)机制 

        多头attention的Query,Key,Value首先进过一个线性变换,然后输入到放缩点积attention,注 意这里要做h次,其实也就是所谓的多头,每一次算一个头。而且每次Q,K,V进行线性变换的参 数W是不一样的。然后将h次的放缩点积attention结果进行拼接,再进行一次线性变换得到的值作 为多头attention的结果。

transformer、bert网络_第25张图片

三、BERT网络  ------ 语言模型

transformer、bert网络_第26张图片

  •     注意:一个transformer 输入一个时刻的词embeding(每一层的transformer是并行执行),因此上述bert网络中有
  •                两层结构,一共有2N个transformer结构;他相当与一个 双向的全连接。

1、bert网络的优势 

1、BERT语言模型优势
    ① BERT 使用 Masked(掩码) 语言模型(也称为 “完形填空” 任务)来实现预训练好的深度双向表征。
    ② BERT 使用的是一个双向的全连接结构,从图中可以看出是在所有的网络层中都受到左右文本的共同作用。
    ③ BERT 使用的是 transformer 结构,因此它是一个并行执行的结构,它的运行速度较快
    ④ BERT 是一种 12/24 ... 层transformer 结构(muti-head-attention),提取的文本信息特征比较丰富

 2、bert 网络 结构

CLS:每个序列的第一个 token 始终是特殊分类嵌入(special classification embedding),即 CLS。对应于该 token 
    的最终隐藏状态(即,Transformer的输出)被用于分类任务的聚合序列表示。如果没有分类任务的话,这个向量是被忽略的。
SEP:用于分隔一对句子的特殊符号。有两种方法用于分隔句子:第一种是使用特殊符号 SEP;第二种是添加学习句子 A 嵌入到
    第一个句子的每个 token 中,句子 B 嵌入到第二个句子的每个 token 中。如果是单个输入的话,就只使用句子 A 。

(1)bert 网络输入

            token:令牌,相当于输入端口

transformer、bert网络_第27张图片

transformer、bert网络_第28张图片

(2)bert Masked Language Model(掩盖语言模型)

transformer、bert网络_第29张图片

transformer、bert网络_第30张图片

(3)bert 网络 四种问题

 

transformer、bert网络_第31张图片

 

你可能感兴趣的:(AI_NLP)