【BERT】深入理解BERT模型1——模型整体架构介绍

前言

BERT出自论文:《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》 2019年

近年来,在自然语言处理领域,BERT模型受到了极为广泛的关注,很多模型中都用到了BERT-base或者是BERT模型的变体,而且在模型中增加了BERT预训练模型之后,许多NLP任务的模型性能都得到了很大程度的提升,这也说明了BERT模型的有效性。

由于BERT模型内容较多,想要深入理解该模型并不容易,所以我分了大概三篇博客来介绍BERT模型,第一篇(也就是本篇博客)主要介绍BERT模型的整体架构,对模型有一个整体的认识和了解;第二篇详细介绍BERT模型中的重点内容,包括它所提出的两个任务;第三篇从代码的角度来理解BERT模型。

目前我只完成了前两篇论文,地址如下,之后完成第三篇会进行更新。

第一篇:【BERT】深入理解BERT模型1——模型整体架构介绍

第二篇:【BERT】深入BERT模型2——模型中的重点内容,两个任务

第三篇:


BERT整体架构介绍

1、BERT模型基于Transformer架构实现,是一种全新的双向编码器语言模型。与ELMo、GPT等单相语言模型不同,BERT旨在构建一个双向的语言模型来更好地捕获语句间的上下文语义,使其在更多的下游任务上具有更强的泛化能力。因此,预训练完成的BERT模型被迁移到下游任务时,只需要再添加一个额外的输出层便可以进行微调,例如问答和语言推理任务,并不需要针对具体的任务进行模型架构的修改。

2、为了使NLP模型能够充分利用海量廉价的无标注数据信息,预训练语言模型应运而生。

通过模型预训练,我们可以从海量数据集中初步获取潜在的特征规律,再将这些共性特征移植到特定的任务模型中去,将学习到的知识进行迁移。具体来说,我们需要将模型在一个通用任务上进行参数训练,得到一套初始化参数,再将该初始化模型放置到具体任务中,通过进一步的训练来完成更加特殊的任务。

预训练模型的推广,使得许多NLP任务的性能获得了显著提升,它为模型提供了更好的初始化参数,大大提高了其泛化能力。

3、当前的预训练模型主要分为基于特征和微调两大类,但它们大都基于单向的语言模型来进行语言学习表征,这使得许多句子级别的下游任务无法达到最优的训练效果。本文提出的BERT模型(双向预训练表征模型),很大程度上缓解了单向模型带来的约束。同时,引入了“完形填空”和“上下句匹配”分别作为单词级别和句子级别的两大通用任务,对BERT模型进行训练。

基于特征无监督方法主要是指单词嵌入表征学习。首先将文本级别的输入输出为特征向量的形式,再将预训练好的嵌入向量作为下游任务的输入。

基于微调无监督方法主要是在,我们在某些通用任务上预训练完成的模型架构,可以被直接复制到下游任务中,下游任务根据自身需求修改目标输出,并利用该模型进行进一步的训练。也就是说,下游任务使用了和预训练相同的模型,但是获得了一个较优的初始化参数,我们需要对这些参数进行微调,从而在特殊任务上获得最优性能。

基于有监督数据的迁移学习,是基于存在大量有监督数据集的任务来获取预训练模型,例如自然语言推理和机器翻译。

4、BERT模型创造性地将Transformer中的Encoder架构引入预训练模型中,成为第一个使用双向表征的预训练语言模型。同时,为了适应该双向架构,BERT引入了两项新的NLP任务——完形填空和上下句匹配,类捕获词语级别和句子级别的表征,并使之具有更强的泛化能力。

5、具体方法:

BERT整体框架包含Pre-training和Fine-tuning两个阶段,Pre-training阶段,模型首先在设定的通用任务上,利用无标签数据进行训练。训练好的模型获得了一套初始化参数之后,再到Fine-tuning阶段,模型被迁移到特定任务中,利用有标签数据继续调整参数,知道在特定任务上重新收敛

BERT模型采用了Transformer中的Encoder架构,通过引入多头注意力机制,将Encoder块进行堆叠,形成最终的BERT架构。为了适应不同规模的任务,BERT将其结构分为了base和large两类,较小规模的base结构含有12个Encoder单元,每个单元含有12个Attention块,词向量维度为768;较大规模的large结构含有24个Encoder单元,每个单元中含有16个Attention块,词向量维度为1024。通过使用Transformer作为模型的主要框架,BERT能够更彻底地捕获语句中的双向关系,极大地提升了预训练模型在具体任务中的性能。

BERT模型的输入由三部分组成。除了传统意义上的token词向量外,BERT还引入了位置词向量和句子词向量。位置词向量的思想与Transformer一致,但BERT并未使用其计算公式,而是随机初始化后放入模型一同训练;句子词向量实质上是一个0-1表征,目的是区分输入段落中的上下句。这三种不同意义的词向量相加,构成了最终输入模型的词向量。

Pre-training:BERT的预训练部分使用了完形填空和上下句匹配两个无监督任务。“完形填空”代表了词语级别的预训练任务,该任务对输入句子中若干随机位置的字符进行遮盖,并利用上下文语境对遮盖字符进行预测。(MLM)“上下句匹配”代表了句子级别的预训练任务,该任务给出两个句子,利用句子之间的语义连贯性判定这两个句子是否存在上下句关系。这两个预训练任务对于大量NLP任务的架构具有更好的代表性,同时也更能匹配模型本身的双向架构,对模型的泛化能力有着巨大的提升帮助。

Fine-tuning:训练具体任务时,我们只需将具体任务中的输入输出传入预训练完成的BERT模型,继续调整参数直至模型再次收敛。该过程成为微调(Fine-tuning)。相比于预训练来说,微调的代价是极小的。在大部分NLP任务中,我们只需要在GPU上对模型进行几个小时的微调,便可使模型在具体任务上收敛,完成训练。

6、实验结果及结论

结果表明,即使是在有标签数据量较小的数据集上,随着模型规模的提高,任务的准确度都获得了显著的提升。进一步可得出结论:如果模型已经经过过滤充分的预训练,那么当将模型缩放到一个极限的规模尺寸时,仍然能够在小规模的微调任务上产生较大的改进。

预训练模型的迁移学习,逐渐成为语言理解系统中不可或缺的一部分,它甚至能够使得一些低资源的任务从深度单向架构中受益。


以上就是对BERT模型理论知识的整体理解,看完之后应该能有个整体的认识吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/309454.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Winform RDLC报表(数据库连接、报表函数使用、动态表头)

文章目录 NuGet安装库数据库连接报表设计报表引用添加报表 数据集设计方法一手动添加方法二——连接数据库添加 关联报表与数据集表格数据与数据集数据设计表格格式、字体设计报表数据字段绑定 Winform 使用报表控件数据库填充数据集从数据库获取与数据源相同字段的数据 动态表…

从0开始界面设计师 Qt Designer

QT程序界面的 一个个窗口、控件,就是像上面那样用相应的代码创建出来的。 但是,把你的脑海里的界面,用代码直接写出来,是有些困难的。 很多时候,运行时呈现的样子,不是我们要的。我们经常还要修改代码调整界…

【java爬虫】获取个股详细数据并用echarts展示

前言 前面一篇文章介绍了获取个股数据的方法,本文将会对获取的接口进行一些优化,并且添加查询数据的接口,并且基于后端返回数据编写一个前端页面对数据进行展示。 具体的获取个股数据的接口可以看上一篇文章 【java爬虫】基于springbootjd…

PAM的认证机制

PAM 首先要想了解什么是PAM机制,那么就要知道API API(AWS PrivateLink) 他可以使用户通过专用网络访问资源的技术。Apl接口是通过子啊vpc中创建节点来实现的。 PAM(Pluggable Authentication Modules) 是管理用户的…

【SD】tile 模型 - 固定衣服 生成人物 ☑

原理1:tile re 生成固定衣服的人物 tile1-1 re1-1 原理2:tile re 生成随机衣服的人物 tile0.5-1 re0.5-1 原理3:更改动作 必须使用衣服LORA 才可以进行穿衣服 测试大模型:###最爱的模型\meinamix_meinaV11.safe…

程序的编译、链接

目录 前言: 前置知识回顾 宏 宏定义常量 宏定义语句 宏定义函数 条件编译 应用场景 编译过程概览 预编译阶段 编译阶段 汇编阶段 链接阶段 前言: 在ANSI C的任何一种实现中,存在两种不同的环境,第1种是翻译环境&#x…

软件工程导论——(为什么要学习软件工程?软件工程能学到什么?如何学习软件工程?)

导论(引言): 1.为什么要学习软件工程? 软件工程知识并不只是项目管理可以用,同样适用于开发岗。比如开发也要做需求分析和架构设计,也要做计划。学习软件工程后也可以帮助开发人员更好的理解软件项目的整个…

pnpm : 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。

一、问题描述 在VS Code中运行Terminal中运行pnpm install(npm或yarn也类似)报错: S D:\workspace\xxx\xxx> pnpm install pnpm : 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息…

DES加密算法优缺点大揭秘:为何它逐渐被取代?

一、引言 DES(Data Encryption Standard)加密算法作为一种历史悠久的对称加密算法,自1972年由美国国家标准局(NBS)发布以来,广泛应用于各种数据安全场景。本文将从算法原理、优缺点及替代方案等方面&#…

eve环境虚拟机和电脑如何传送文件

一.桥接 (实现电脑和虚拟机在同一网段) 虚拟机上网盘设置 二.属性---文件共享设置 1打开属性,点击共享 2.添加共享人为全部人,并修改权限为读写模式 3.点击高级共享,选定此文件夹 4.点击网络和共享中心,划…

Mixtral 8*7B + Excel + Python 超强组合玩转数据分析

Mixtral 8*7B Excel Python 超强组合玩转数据分析 0. 背景1. 使用 Mixtral 8*7B pandas 实现数据导入和导出1.1 使用 Mixtral 8*7B pandas 导入 Excel 文件中的数据1.2 使用 Mixtral 8*7B pandas 导出 Excel 文件中的数据 2. 使用 Mixtral 8*7B pandas 实现单个文件数据的…

Nginx快速入门:nginx实现正向代理|反向代理和正向代理的区别(八)

0. 引言 我们之前讲解的一直是nginx的反向代理配置,关于正向代理的实现一直没有涉及,但在实际生产中正向代理也有非常广泛的应用场景,因此,今天我们将针对正向代理来深入学习。 1. 相关概念 1.1 什么是反向代理 所谓反向代理&…