BERT模型—1.BERT模型架构
文章目录
- 引言
- 一、Bert模型总览
- 二、注意力机制
- 1.Seq2seq中的注意力操作
- 2.注意力的一般形式(三步曲)
- 3. transformer中的自注意力机制—Self.Attention
- 4. transformer的多头注意力机制
- 5. scaling
- 6. 模型优化技巧:残差连接
- 三、BERT其他结构特性
- 1.BERT模型中的位置编码
- 2. BERT中的全连接层与非线性激活函数
- 3. 层归一化—LayerNormalization
引言
本节将按照思维导图逐步了解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 ] ) \alpha_i=softmax([e_{i,1},...,e_{i,T}]) αi=softmax([ei,1,...,ei,T]) - 通过注意力打分的分布,我们对value进行加权平均,然后再经过一个线性层输出 h i ′ h_i^{'} hi′, h i ′ h_i^{'} hi′正是更新后的
it_
向量表征
h i ′ = ( ∑ α i , j v j ) W O h_i^{'}=(\sum{\alpha_{i,j}v_j})W_O hi′=(∑αi,jvj)WO
it_
为Query,句子中的其他词为key与value
注意力机制通过操作实现了句子中词语两两间的交互。当然,在实现的过程中,不可能对句子中的每一个字都重复进行上面运算,这个非常低效。实际实现的过程中,需要通过矩阵的计算来使得整个句子直接完成两两之间的注意力的计算。整个句子的一次self-attention的过程如下:
- 假设句子现有表征记为 H = [ h 1 , . . . , h T ] H=[h_1,...,h_T] H=[h1,...,hT],首先对Query、key与value均乘以一个参数矩阵
BERT模型—1.BERT模型架构相关推荐
- 谷歌AI论文BERT双向编码器表征模型:机器阅读理解NLP基准11种最优(公号回复“谷歌BERT论文”下载彩标PDF论文)
谷歌AI论文BERT双向编码器表征模型:机器阅读理解NLP基准11种最优(公号回复"谷歌BERT论文"下载彩标PDF论文) 原创: 秦陇纪 数据简化DataSimp 今天 数据简化 ...
- bert cnn知识抽取模型_BERT的神奇应用
注:本文已首发到机器之心上. 作者:Zeng Xiangji; 编辑:Hao Wang 引言:2019年5月ACM图灵大会上,朱松纯教授(加州大学洛杉矶分校)与沈向洋博士(微软全球执行副总裁)在谈到& ...
- ELECTRA 超过bert预训练NLP模型
论文:ELECTRA: Pre-training Text Encoders As Discriminators Rather Then Generators 本文目前在ICLR 2020盲审中,前几 ...
- 5 分钟入门 Google 最强NLP模型:BERT
BERT (Bidirectional Encoder Representations from Transformers) 10月11日,Google AI Language 发布了论文 BERT: ...
- 12层的bert参数量_只需一个损失函数、一个超参数即可压缩BERT,MSRA提出模型压缩新方法...
来自武汉大学.北京航空航天大学和微软亚洲研究院的这项研究为模型压缩提供了新方向. 机器之心报道,参与:魔王. 论文链接:https://arxiv.org/pdf/2002.02925.pdf 这篇论 ...
- word2vec模型评估_NLP之文本分类:「Tf-Idf、Word2Vec和BERT」三种模型比较
字幕组双语原文:NLP之文本分类:「Tf-Idf.Word2Vec和BERT」三种模型比较 英语原文:Text Classification with NLP: Tf-Idf vs Word2Vec ...
- 自然语言处理模型:bert 结构原理解析——attention+transformer(翻译自:Deconstructing BERT)
原文:Deconstructing BERT: Distilling 6 Patterns from 100 Million Parameters 关于transformer 和attention的机 ...
- JAVA训练nlp模型,完胜 BERT,谷歌最佳 NLP 预训练模型开源
雷锋网 AI 源创评论按:近日,谷歌宣布将 AI 语言模型 ELECTRA 作为 TensorFlow 之上的开源模型发布.该方法用到了一种称为替换令牌检测(RTD)的新预训练任务,使其能够在从所有输 ...
- 小白Bert系列-生成pb模型,tfserving加载,flask进行预测
bert分类模型使用tfserving部署. bert模型服务化现在已经有对应开源库部署. 例如:1.https://github.com/macanv/BERT-BiLSTM-CRF-NER 该项目 ...
最新文章
- 小猿圈linux之运维工程师面试题(答案版)
- char varchar nvarchar区别
- Android 移植到 C#
- Keepalived + LVS-DR搭建高可用Web服务器集群
- Git clone命令出现fatal repository not found错误
- 新手入门深度学习 | 4-4:保存模型的N种方法
- 云平台已经成为发生网络攻击的重灾区
- redis 附近的人_Redis GEO地理位置信息,查看附近的人
- Gradle修改缓存路径 和 Gradle修改Maven仓库地址
- qt ui指针和本类对象_您需要了解的有关UI设计的形状和对象的所有信息
- iOS 应用首次开启 出现引导页面
- 【100题】第十二题(特殊的递加)
- 变量声明提升和函数声明提升
- 机器人学基础——坐标
- 高频故障-office背景有水印的解决方案
- javaEE 深入理解 Session 与 Cookie
- 中秋节快乐ooooo
- 原型图高保真和中保真的区别_最终确定您的高保真度UX概念验证
- python 对比matlab_全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?
- mount qemu qcow2、img
热门文章
- 谷歌AI论文BERT双向编码器表征模型:机器阅读理解NLP基准11种最优(公号回复“谷歌BERT论文”下载彩标PDF论文)