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网路可以处理更长的序列。
    ③ 传统的word2vec训练完词向量以后,RNN网络不会考虑相同的词在不同语境之间的含义不同,而bert网络 会将同一个词的上下语境
      加入词当中。

    ④ 打破了传统seq2seq解码器的输出 太过于依赖 编码器attention向量。
    
4、bert、transformer、传统rnn的缺点:
    虽说 他们 结构有差异,但是都属于 FC 类型的网络。

一、transformer 网络

1、self-attention

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

1、self-attention的理解:
    顾名思义,就是自己对自己的attention,它主要是为了 找出 当前时刻的词 对于当前整个序列其他时刻的词之间的位置关系
    和依赖的权重关系,self-attention 编码器输出该时刻的结果 就不单单是该时刻该单词的信息,而是融合了整个序列 其他词与该
    词权重依赖关系与位置关系的融合信息。 它的表现结果如下:

 

2、网络基本结构解析

(1)transformer 大致结构

  • 注意:① transformer 编码器、解码器输入 input 序列时与 LSTM 不同,LSTM 网络每一次只输入一个时刻的
  •                文本,transformer 输入是多时刻同时输入(所有时刻embeding数据)并行执行结构
  •            ② transformer 解码器 虽然也是并行输入,但是无论 训练还是测试 过程,每次只能输出一个时刻。

(2)transformer 训练过程 (用label作为decode输入,并行结构)

1、transformer 在训练时,解码器的每个输入已知(即标签),所以可以直接 位置嵌入并行输入,进行self-attention 提取特
   征后 用 改训练时刻的位置的 向量 进行 linear + softmax,而下一个刻训练则用下一时刻对应位置的 解码器输出向量 进
   行linear + softmax训练。

(3)transformer 测试过程 (需要进行masked,并行结构)

1、在预测过程中,transformer解码器也是一个并行输入,一次只能预测一个词语,但是每一时刻输入需要参考前面时刻输出,但
    是要记得的是需要参考前面所有已知预测的时刻进行self-attention,而当前时刻词语后面的时刻词语 则用 masked 的方式
    将其掩盖掉进行linear+ argmax测试。最后,和 训练过程一样,每次预测都要选取对应位置的解码器输出的向量进行 
    linear + argmax 预测。

 

(4)encode到decode 的 attention 工作过程

1、encode 中的 Value Key 矩阵 构建方式 与 self-attention 中 key value 相同

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

(1)encode 编码器基本结构

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

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

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

(2) decode 解码器基本结构

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

  •      完整的结构 

                            执行过程:

4、位置嵌入 position embedding

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

 

           例:   我     是     中国       人

                      0       1        2          3    

                 将 位置 0,1,2,3..... 余弦信号 的方式进行 嵌入。

 

 

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

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

(1)self-attention 执行过程

  •       K、V、Q生成的方式

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

 

  •     batch_size + self-attention 执行的过程

 

  •       self-attention最终表现结果

           

(2)muti-head-self-attention 

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

(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层目的:
    将 self-attention 提取的特征向量 做 FC 特征转换,增加的模型的可表达能力。

(2)残差结构 Residuals

残差结构的作用:
    类似 resnet 的思想,随着模型的层数递增,防止模型学习效果反而变差,提供模型方向BP一种额外的道路,至少让模
    型的效果不会比原来差。
  •  
  •     图解 

(3)layer normal 归一化

1、作用:
    ① 无量纲化,使得数据 zero-center,防止zigzag现象,加快模型的收敛速度。
    ② 一定程度上缓解过拟合
    详情: 
        目的类似于 BN 层的三个作用,具体看         
        https://blog.csdn.net/qq_16555103/article/details/89914946
  •    两种 normaliztion 的方式: batch normaliztion、layer normaliztion  

transformer 结构用的是 layer normaliztion

 

6、Final Linear and Softmax Layer

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

 

二、transformer 文献名词

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

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

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

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

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

1、bert是一个语言模型,其目的就像是利用transformer encoder 的部分,它是transformer结构训练过程 encode 的一个产
    物,对序列的   每一个词都加入了 上下文的权重信息(self-attention),最终获得一个包含 全文各处不同 权重的 向量。 
    至于后续对该向量做什么操作就不是bert的范畴了(实际上任务常常融入bert模型,两者同时训练)。
2、bert 训练词向量与 word2vec 有何不同?
    word2vec 词向量一旦预训练完成,后续相同的词在不同语境的含义不会发生变化。   
    bert 训练的词向量会考虑到相同的词在不同语境中含义不同,词向量训练过程会参考上下文语境的权重关系 进行 融合输出。

  •     注意:一个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:令牌,相当于输入端口

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

(3)bert 网络 四种问题

 

3、BERT 训练过程

 (1)“完形填空”:Maked LM

1、用 bert masked 的位置所抽取的词向量 做一个 简单的 linear + softmax 分类,如果 分类成功找到 被masked的词,
   这表明 bert 模型 训练成功。

(2)用两个句子连贯性 二分类 训练

 

4、 怎么使用 BERT

        思考:用bert 做任务(情感分析等分类任务)需要用bert先训练好 词向量表达,然后用这个向量做分类模型训练吗?

        答案: 任务 会融入 bert 中,词向量表达与分类模型是同时训练的

       

  •   bert 网络 四种类型的任务:

(1)single 序列的分类问题:

(2)single 序列 每一个词的分类问题:

(3)double 序列 分类问题: 判断 回答/推论 是对还是错还是unknow

(4)double 序列 阅读理解:QA

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值