BERT--公认的里程碑

news2024/11/20 7:32:08

前言

如果说,让我选Transformer架构的哪个模型最深入人心,我将毫不犹豫的选择BERT!

BERT 的意义在于,从大量无标记的数据集中训练得到的深度模型,可以限制提高各项自然语言处理任务的准确率。
BERT 在当时,几乎刷新了自然语言图段、问答及命名实体识别等11项自然语言处理任务上的表现,甚至在 SQuAD 问答测试中,超过了人类表现。

SQuAD(Stanford Question Answering Dataset)是一种机器阅读理解(Machine Reading Comprehension, MRC)任务,主要目标是根据给定的文本段落回答问题。

BERT 被认为是近年来优秀预训练语言模型的集大成者,参考了 ELMo 的双向编码器思想,借鉴了 GPT 使用 Transformer 做特征提取器的思想,而且采用 word2vec 使用的 CBOW 训练方法。
BERT 影响深远,在 BERT 之前,可能很多自然语言任务还是使用小数据集在小模型上训练出一个只能做一些"小事"的模式;BERT问世之后,NLP的走向使用大数据集在一个大的深度模型上训练器解决所用通用任务的模式。
也是BERT出现之后,很多的预训练语言模型如雨后春笋般不断涌现,天下英雄如过江之鲫,在不同的领域和场景体现出了更好的性能。


BERT(Bidirectional Encoder Representations from Transformers, 来自 Transformers 的双向编码器表示)强调的是双向编码器,强调的是文本理解,但也失去了文本生成能力,所以区别于对标的 GPT 系列。

GPT系列是是用 Transformer Decoder(相比于 BERT 的 Encoder 的区别是 Masked Multi-Head Attention) 作为特征提取器,即当前的语义由前序词决定,强调因果,强调文本生成,但是语义理解欠佳。

BERT 出生在 GPT 之后,他的创新点是用 Encoder 作为特征提取器,并加入双向掩码的训练方法,使得每个词利用了所有的上下文信息,而不是像单向编码器那样,只能利用前序信息,所以语义信息提取能力更强。

1. BERT 结构

BERT 是由堆叠的 Transformer Encoder 层堆叠而成的网络,并在输入侧加入词编码和位置编码。BERT 的结构如图所示
在这里插入图片描述
GPT 的 Masked Multi-Head Attention 变成 Multi-Head Attention 就是 BERT。


在模型参数上,L 表示 T transformer Block 层数,H 表示特征向量的维数,A 表示 Self- Attention 的头数,BERT 的两个版本如下在这里插入图片描述
其中,BERT_BASE 对标于初代 GPT,证明双向编码器比单向编码器在语义理解上更有优势,量化 BERT 与 GPT 的核心差异带来的影响。而BERT_LARGE 就是为了自己冲榜了。以下是 BERT 的表现
在这里插入图片描述
可以看出,

  • GPT 几乎在所有任务上都比 ELMo 好,这说明 Transformer 比 LSTM 作为特征提取器更好。
  • 而 BERT_BASE 又比 GPT 在所有任务上几乎都好,这说明双向编码的语义理解能力更强。
  • BERT_LARGE 又比 BERT_BASE 好,说明随着 BERT 参数量的增大,模型在搜有任务上的表现都有明显提升。

2.预训练任务

BERT 采用了二段式的训练方法,第一阶段使用大量的无标签的预料预训练,第二阶段根据指定任务的少量标签进行微调训练。在这里插入图片描述

2.1 MLM(Masked Language Model)

BERT 使用 Transformer 作为特征提取器的原因是,作者认为,使用 从左向右和从右向左编码的单向编码器拼接而成的双向编码器,不如直接使用深度的双向编码器强大。
BERT 借助完形填空任务和 CBOW 的思想,采用 MLM 方法训练模型。具体来说就是随机选取部分词进行掩码,让 BERT去预测这些掩码词。通过根据上下文信息预测掩码词的方式,BERT 具有了基于不同上下文提取更准确的语义信息的能力。
具体来说,在训练中,掩码词被替换为[MASK]的概率是 15%。为了缓解输入文本分布偏差,BERT 不总是总用 MASK 替换掩码词,而是按照一定比例选取替换词。选取 15% 的词作为掩码词之后,这些掩码词有三类选项。

  • 80% 的训练样本中,用 [MASK] 作为替换词
  • 10% 的训练样本中,不做任何处理。(缓解训练文本与预测文本的片擦好带来的性能损失)
  • 10% 的训练样本中,从模型此表中随机替换。(让 BERT 学会纠错能力)

而且这些比例不是作者随意规定的,而是经过实验得出的
在这里插入图片描述

2.2 NSP

很多下游任务,如问答和自然语言推断,都基于两个句子做逻辑推理,而语言模型不具备直接捕捉句子间语义联系的能力。为了学会捕捉句子间的语义联系,BERT 采用 NSP 作为无监督预训练的一部分。
具体而言,BERT的输入有两个句子组成,其中 50% 概率将语义连贯的两个句子作为训练样本,另外 50% 使用完全随机的两个句子作为训练文本。
BERT 需要根据输入的两个句子,判断他们是否为真实的连续句对。
在这里插入图片描述
其中[SEP]是分隔符,用于区分句子,[CLS]对应的输出向量为句子整体的语义表示,用于类别预测,若结果为1,表示是连续句子,结果为0,表示非连贯。

2.3 输入表示

真实训练中,以上两种方法是混合在一起使用的,。
Self-Attention 不会考虑词的位置信息,因此 Transformer需要两套 embedding 操作,一套是 One-hot 词表映射编码(Token Embedding),另一套是位置编码(Position Embedding)。同时,由于 MLM 训练过程中,存在单句输入和双句输入的情,因此 BERT 还需要一套区分输入语句的分割编码(Segment Embedding)
在这里插入图片描述
BERT的样例数据的原始输入要经过 5 步才能得到最终的 BERT 输入表示

  1. 获得原始的输入句对"我的狗很可爱"和“他喜欢玩”
  2. 对输入句子使用 WordPiece 分词,变成 "我 的 狗 很 可爱"和“他 喜欢 玩”
  3. 将句对拼接并加上用于分类的特殊标签符和分类符,得到"[CLS] 我 的 狗 很 可爱 [SEP] 他 喜欢 玩 [SEP]"
  4. 计算每个词的 Position Embeddings, Segment Embeddings 和 Token Embeddings
  5. 将桑哥 Embedding 表示相加,得到最终的 BERT 输入表示。

Transformer 中位置编码是正余弦位置编码,而 BERT 使用的位置编码和分割编码均为预训练中学习得到的编码,所以表示位置信息的能力更强

3. 微调训练:适应下游任务

3.1 句对分类

在这里插入图片描述

给定两个句子,判断他们的关系,统称为句对分类。
针对句对分类任务,BERT 在预训练过程中就做好了充分准备,使用NSP训练方法获得了直接捕获句对语义关系的能力。
针对二分类任务,BERT不需要对输入数据和输出数据做任何改动,直接使用NSP训练方法一样的输入和输出结构即可。

  • 具体来说,句对用 [SEP] 拼接成输入文本序列,在句首加入label [CLS],将句首标签所对应的输出值作为分类标签,计算预测分类标签与真实分类标签的交叉上,将其作为优化目标,在任务数据上进行微调训练。

针对多分类任务,需要在句首标签[CLS]的输出特征向量后拼接一个全连接层与Softmax层,保证输出维数与类别数目一致,即可通过 argmax 操作得到对应的类别结果。

3.2 单句分类

在这里插入图片描述

给定一个句子,判断句子类别,统称为单句分类。
针对单据分类任务,虽然BERT 没有在预训练过程中专门优化,但是NSP训练方法让BERT学会累用分类标签[CLS]捕获句对关系,也学会了提取并整合单句语义信息的能力。
对单句二分类任务,无须对BERT的输入数据和输出数据的结构进行改动,依旧用句首标签[CLS]的输出特征作为分类标签,计算分类标签与真实标签的交叉熵作为优化目标。
针对多分类任务,需要在句首的[CLS]的输出特征向量后加一个全连接层和Softmax层,保证输出维数与类别数目一致。

5.3 文本问答

在这里插入图片描述

给定一个问句和一个蕴含答案的句子,找出答案在后者中的位置,称为文本问答。
文本问答任务和之前的任务有较大差别,无论是在优化目标还是输入数据和输出数据的形式上。
为了标注答案的起始位置和终止位置,BERT 引入了两个辅助向量——s 和 e,其中向量 s(start) 用于判断答案的起始位置,向量 e(end) 用于判断答案的终止位置。BERT 判断句子 B 中答案位置的做法是:将句子 B 中的每一个词得到的最终特征向量经过全连接层后,分别与向量 s 和 e 做内积,对所有的内积分别进行 Softmax 操作,得到词 Tok m 作为答案起始位置和终止位置的概率。最后,取概率最大的片段为最终的答案。
文本问答任务的微调训练用到了两个技巧:先用全连接层将 BERT 提取后的深层特征向量转化为用于判断答案位置的特征向量,在微调训练中,该全连接层的变化最显著;其次,引入辅助向量 s 和 e 作为答案的起始位置和终止位置的基准向量,明确优化目标的方向和度量方法。

3.4 单句标注

在这里插入图片描述

给定一个句子,标注每个词的label,称为单句标注。常见任务为 CoNLL 2003,给定一个句子,标注句子的人名、地名和机构名。
单句标注任务和 BERT 预训练任务有较大的差异,但与文本问答任务较为相似。
在进行单句标注任务时,需要在每个词的最终语义特征向量之后添加全连接层,将语义特征转化为序列标注任务所需特征。与文本问答不同的是,单句标注任务需要对每个词都做标注,无须横向对比,即不需要引入辅助向量。直接对讲过全连接层后的结果做 Softmax 操作,即可得到各类标签的概率分布。
在这里插入图片描述


参考:

  1. 《预训练语言模型》邵浩 刘一烽
  2. https://arxiv.org/abs/1810.04805

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

<项目代码>YOLOv8 瞳孔识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

每日OJ题_牛客_天使果冻_递推_C++_Java

目录 牛客_天使果冻_递推 题目解析 C代码 Java代码 牛客_天使果冻_递推 天使果冻 描述: 有 n 个果冻排成一排。第 i 个果冻的美味度是 ai。 天使非常喜欢吃果冻,但她想把最好吃的果冻留到最后收藏。天使想知道前 x个果冻中,美味…

果韵 2.0.1| 听歌神器,双端支持,支持下载歌曲和歌词

果韵是一款支持Windows和安卓双端的音乐播放器,支持自定义音源,界面简洁。用户可以通过缓存下载歌曲和歌词。为了使用这些功能,需要先进行音源导入。通过设置中的存储设置,将缓存文件夹移动到download目录下,之后缓存的…

Allegro从.brd文件中导出器件ball map

Step 1(可选):设置网络颜色 Step2:File->Export->Symbol Spreadsheet\ Step3:Primary text选择Net Name Step 4:在.brd所有文件夹下生成一个ball map文件,其中网络颜色与Step 1一致。ba…

Docker入门之Windows安装Docker初体验

在之前我们认识了docker的容器,了解了docker的相关概念:镜像,容器,仓库:面试官让你介绍一下docker,别再说不知道了 之后又带大家动手体验了一下docker从零开始玩转 Docker:一站式入门指南&#…

家庭网络常识:猫与路由器

这张图大家应该不陌生——以前家庭网络的连接方式。 图1 家庭网络连接示意图 来说说猫/光猫: 先看看两者的图片。 图2 猫 图3 光猫 这个东西因为英文叫“modem”,类似中文的“猫”,所以简称“猫”。 猫和光猫的区别就是,一…

三种复制只有阅读权限的飞书网络文档的方法

大家都知道,飞书是一款功能强大的在线协作工具,可以帮助团队更高效地协作和沟通。越来越多的资料都在使用飞书文档,在使用飞书的过程中,发现很多文档没有复制权限,如果想要摘抄笔记,只能一个字一个字地敲出…

elasticsearch的倒排索引是什么?

大家好,我是锋哥。今天分享关于【elasticsearch的倒排索引是什么?】面试题。希望对大家有帮助; elasticsearch的倒排索引是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 倒排索引(Inverted Index&a…

基于Java Springboot甘肃旅游管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

uniApp项目运行到鸿蒙手机,应用图标一直是H,应用名一直是HBuilder问题

项目运行到鸿蒙手机,应用图标一直是H,应用名一直是HBuilder问题 应用运行到鸿蒙手机和鸿蒙模拟器,应用图标一直是H,应用名一直是HBuilder,在自动生成的harmony-configs文件夹下也没有配置的文件, 这时候需要你将DevEco Studio 下…

Python3.11.9+selenium,获取图片验证码以及输入验证码数字

Python3.11.9+selenium,获取图片验证码以及输入验证码数字 1、遇到问题:登录或修改密码需要验证码 2、解决办法: 2.1、安装ddddocr pip install ddddocr 2.2、解析验证码函数 import ddddocr def get_capcha_text():#获取验证码图片ele_pic = driver.find_element(By.XPAT…

中伟视界:AI智能分析算法如何针对非煤矿山的特定需求,提供定制化的安全生产解决方案

非煤矿山智能化改造,除了政策文件,上级监管单位需要安装的AI智能分析算法功能之外的,矿方真正关心的,能解决矿方安全生产隐患的AI智能分析算法功能有哪些呢? 经过与矿方的现场交流沟通,收集第一现场人员对安…

【论文速读】| 迈向自动化渗透测试:引入大语言模型基准、分析与改进

基本信息 原文标题:Towards Automated Penetration Testing: Introducing LLM Benchmark, Analysis, and Improvements 原文作者:Isamu Isozaki, Manil Shrestha, Rick Console, Edward Kim 作者单位:Drexel University, Independent 关键…

【Visual Studio系列教程】如何在 VS 上编程?

上一篇博客中,我们介绍了《什么是 Visual Studio?》。本文,我们来看第2篇《如何在 VS 上编程?》。阅读本文大约10 分钟。我们会向文件中添加代码,了解 Visual Studio 编写、导航和了解代码的简便方法。 本文假定&…

项目进度计划表:详细的甘特图的制作步骤

甘特图(Gantt chart),又称为横道图、条状图(Bar chart),是一种用于管理时间和任务活动的工具。 甘特图由亨利劳伦斯甘特(Henry Laurence Gantt)发明,是一种通过条状图来…

完整http服务器

目录 背景目标描述技术特点开发环境WWW客户端浏览发展史服务端http发展史http分层概览 背景 http协议被广泛使用,从移动端,pc浏览器,http无疑是打开互联网应用窗口的重要协议,http在网络应用层中的地位不可撼动,是能…

Vim 命令、操作、文件操作示例

1.常用命令 编辑 以下命令在命令模式执行 i,a,r:在光标的前,后,上方插入字符命令(iinsert,aappend,rreplace) O,o:在当前行前面,后面插入一空行 cw,dw:改…

学习笔记022——Ubuntu 安装 MySQL8.0版本踩坑记录

目录 1、查看可安装 MySQL 版本 2、Ubuntu安装 MySQL8.0 3、MySQL8.0 区分大小写问题 4、MySQL8.0 设置sql_mode 5、MySQL8.0 改端口33060(个人遇到问题) 1、查看可安装 MySQL 版本 ## 列出可用的MySQL版本(列出所有可用的MySQL版本以…

【WRF-Urban】URBPARM.TBL参数解释及内容

【WRF-Urban】URBPARM.TBL参数解释及内容 URBPARM.TBL参数解释URBPARM.TBL参考 参考WRF-Urban教程-Urban Canopy Model URBPARM.TBL参数解释 各个城市相应的城市参数差异很大(例如,有些城市的道路可能很宽但建筑物很矮,而其他城市的道路可…

ASP.NET MVC宠物商城系统

该系统采用B/S架构,使用C#编程语言进行开发,以ASP.NET MVC框架为基础,以Visual Studio 2019为开发工具,数据库采用SQL Server进行保存数据。系统主要功能包括登录注册、宠物展示、个人中心、我的订单、购物车、用户管理、宠物类别…