BERT模型—1.BERT模型架构

本文详细介绍了BERT模型的架构,包括基于Transformer的Encoder叠加,重点关注注意力机制,如Seq2seq中的注意力操作、多头自注意力机制、残差连接等。此外,还讨论了BERT模型的其他特性,如位置编码、全连接层与非线性激活函数以及层归一化的作用。
摘要由CSDN通过智能技术生成

引言

  本节将按照思维导图逐步了解BERT模型。
在这里插入图片描述
  2018年谷歌在Github上开源了Bert模型之后,后续人们开发Bert模型变体以及对Bert模型进行优化,各种NLP比赛榜单都是Bert及其变体占据,开启了NLP的新时代!这个时代有两个特性:

  • 模型的架构是趋同的,所有的模型基本上是基于transformer的
  • 所有的模型基本上都是基于预训练的
    在这里插入图片描述

一、Bert模型总览

  BERT网络结构是多层transformer Encoder叠加。
在这里插入图片描述
  Transformer block的具体架构为:
在这里插入图片描述
Transformer层的网络核心要素如下:

  • Multi-head attention (多头注意力)
  • FFN(全连接层)
  • LayerNorm(层归一化)
  • 残差连接

二、注意力机制

  人类在接收到所有信号时,并不会将注意力平分到每一个信号中,而是会重点观察某些部分,战略性忽略某些部分。
在这里插入图片描述
NLP中核心的注意力机制与人类的注意力机制在直观上是一致的。

1.Seq2seq中的注意力操作

  我们现在从attention的起源来了解attention的功能。在没有attention机制以前,机器翻译模型通常是使用序列到序列的架构(Seq2seq)。
在这里插入图片描述
左边的编码器(Encoder)将原文直接表示成向量,这个向量用于目标语言句子的预测中,在解码器(Decoder)生成目标语言句子。这个模型架构逻辑上是非常合理的,但是会涉及到信息瓶颈的问题—即输入的句子不管有多丰富,但是面对解码器,最终只会生成一个向量。在预测目标语言句子的不同字时,所拥有的输入信息(原句输入信息)是相同的(输入句子全部局限于向量表示中)。不过,我们在预测目标语言句子的不同字时,需要关注输入的不同部分。

例如:翻译句子的前面几个字,大概率是基于句子靠前部分来翻译;翻译句子的后面几个字,大概率是基于句子靠后部分来翻译的。

在这里插入图片描述
  为了解决“信息瓶颈”的问题,引入了attention机制,打开了NLP架构的新格局。
  在预测目标语言句子的下一个词时,利用attention接受到更多的信息。

  • 首先,利用 s 1 s_1 s1向量与原句的每一个字的向量表示进行点积,相当于得到了一些打分。
    在这里插入图片描述
    Attention store:
    在这里插入图片描述
  • 我们将上一步得到的打分通过求softmax形成一个分布。经过变换后,这些打分总和为1,而且,其全部非负,可以看成概率分布。
    在这里插入图片描述
    Attention distribution:
    在这里插入图片描述
  • 我们将原句的注意力向量表示用注意力打分进行加权平均就得到注意力输出向量Attention output。
    在这里插入图片描述
    注意力打分加权平均表征:
    在这里插入图片描述
  • 最后,Attention output能够帮助我们更好的预测下一个词,即将注意力输出与 s t s_t st拼接经过解码得到下一个字。
    在这里插入图片描述
    注意力输出与 s t s_t st拼接帮助解码:
    在这里插入图片描述
2.注意力的一般形式(三步曲)

  注意力的一般定义:给定一组向量(key, value)键值对,以及一个向量query,注意力机制就是一种根据query与keys来计算values的加权平均的模块。
在这里插入图片描述
  上面介绍的机器翻译模型中的attention机制打分是基于点积的。下面介绍attention机制的其他写法。常用的注意力打分方法有3种:

  • 点积注意力(dot-product attention) :
    在这里插入图片描述
  • 乘法注意力(multiplicative attention):
    在这里插入图片描述
    引入可学习的 W W W元素,使得attention机制更加匹配下游任务。
  • 加法注意力(additive attention):
    在这里插入图片描述
    把query与key都引入到全连接层,通过引入一个额外的向量进行点积,最后形成一个attention打分。
3. transformer中的自注意力机制—Self.Attention

  下面我们考虑一个问题:注意力机制是否可以得到一个句子的向量表征?这里就引出自注意力机制,通过自己注意自己,来更新句子每个词的向量表征。
  自注意力机制建模句子表征的过程为:从单个字角度:e.g:it_的向量表征与句子中的所有词之间计算注意力,由此更新其向量表征。过程如下:

  • 首先对Query、key与value均乘以一个参数矩阵
    q i = h i W Q k i = h i W K v i = h i W V q_i=h_iW_Q\\k_i=h_iW_K\\v_i=h_iW_V qi=hiWQki=hiWKvi=hiWV
  • 假设it_在句子的第 i i i个位置,那么它在第 j j j个位置的注意力打分为:
    e i , j = q i T k j e_{i,j}=q_i^Tk_j ei,j=qiTkj
  • 通过softmax归一化成概率分布
    α i = s o f t m a x ( [ e i , 1 , . . . , e i , T
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值