首页 > 其他分享 ><论文>Bert是什么?

<论文>Bert是什么?

时间:2024-12-15 10:59:07浏览次数:10  
标签:Bert 模型 什么 论文 Token BERT 句子 标记

一、摘要

        今天我们来看一下NLP领域划时代的模型——Bert,来自论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》。模型的架构上,Bert采用了多层的Transformer模型编码器堆叠,而作者所提出的MLM和NSP预训练任务则为这个模型提供了强大的文本表示能力。当时,Bert模型在十几项NLP任务中都实现了SOTA,着实强得离谱。

摘要译文:

        我们引入一种名为 BERT(即来自 Transformer 的双向编码器表示)的新型语言表征模型。与近期的语言表征模型不同,BERT 旨在通过在所有层中同时依据左右上下文来从未标记文本预训练深度双向表征。因此,预训练的 BERT 模型只需额外添加一个输出层进行微调,即可为众多任务(如问答和语言推理)创建最先进的模型,而无需对特定任务架构进行大量修改。BERT 概念简洁且实证效果强大。它在十一项自然语言处理任务上取得了新的最先进成果,包括将 GLUE 分数提升至 80.5%(绝对提升 7.7 个百分点)、MultiNLI 准确率提升至 86.7%(绝对提升 4.6 个百分点)、SQuAD v1.1 问答测试 F1 值提升至 93.2(绝对提升 1.5 分)以及 SQuAD v2.0 测试 F1 值提升至 83.1(绝对提升 5.1 分)。

二、模型架构

1、模型输入(面试常见知识点)

        为了使 BERT 能够处理各种下游任务,作者设计的输入embeddings能够在一个Token序列中明确表示单个句子或者一对句子(例如,[问题,答案])。这里我们拆解一下Bert输入的三种embeddings:

        首先,每个输入序列的第一个Token始终是一个特殊的分类标记([CLS]),这个标记位置最终得到的embeddings可以用来作为整个文本序列的文本表示

        其次,作者使用了具有 3万多个WordPiece的词汇表,用于为每个Token分配一个在词汇表中唯一的索引,得到当前序列的Token Embeddings。此外,为了应对超出词汇表(Out of Vocabulary,OOV)的情况,作者还提供了一个[UNK]标记(Unknown),用于表示所有未在词汇表中出现的Token。

        再次,为了区分句子对,作者同样用一个特殊标记([SEP])将句子对隔开,而序列的末尾也加上这个[SEP]标记,无论是单个句子还是句子对,SEP标记都存在,由此得到Segment Embeddings。Segment Embeddings中,属于单句或者句子对中的前一句的Token位置都为0,如果是句子对的后一句则每个Token对应位置都是1。

        最后,为了让模型能够学到序列中的顺序信息,Bert同样引入了Position Embeddings,只是这里的PE是可训练的,与Transformer模型中的实现方式不同(具体的区别可以单独写一篇长文,这里就先省略了)。

2、Masked Language Model(面试常见知识点)

        作者指出深度双向模型肯定比从左到右的模型或从左到右与从右到左模型的浅层拼接更强大。因此,为了训练深度双向表征,作者随机遮蔽(Mask)一定比例的输入Token,然后预测这些被遮蔽的Token,这就是Masked Language Model任务(MLM),简单来说就是完形填空。这也是为什么Bert是双向语言模型的原因,因为模型在预测Token的过程中可以看到下文的信息。在MLM中,作者随机遮蔽每个序列中15%的Token,且模型只预测被遮蔽的单词而非重构整个输入

        尽管这能够获得双向的预训练模型,但不利之处在于预训练和微调之间的不匹配,因为[MASK]标记在微调期间不会出现。为缓解此问题,作者设计了三种策略。对于被选中用于遮蔽的15%的Token,如果当前Token被选中,则(1)80% 的情况下用 [MASK] 标记替换这个Token;(2)10% 的情况下用随机Token替换;(3)10% 的情况下保留当前Token不变。

3、Next Sentence Prediction(面试常见知识点)

        许多重要的下游任务,比如问答(QA)和自然语言推理(NLI),都是基于对两个句子之间关系的理解,而这一点并不能通过语言建模直接获取。为了训练一个能够理解句子关系的模型,作者针对一个二值化的Next Sentence Prediction(NSP)任务进行预训练(其实就是二分类任务),该任务的训练数据可以从任何单语语料库中生成。

        具体来说,在为每个预训练样本选择句子 A 和句子 B 时,50% 的情况下,B 是 A 之后实际的下一句(标记为 “IsNext”),而另外 50% 的情况下,B 是语料库中的一个随机句子(标记为 “NotNext”)。作者在论文中也证明了NSP任务的确能够提升Bert模型的性能,不过后来有学者进行深度实验发现,NSP任务对Bert的影响远不及MLM,这也是为什么后来的一些预训练模型直接抛弃了NSP预训练任务的缘故。

三、总结

        基于多层双向 Transformer 编码器的 BERT 模型克服了传统单向语言模型的局限。通过MLM和NSP任务预训练,模型能够在进行文本表示的过程中保留更多的语义信息,这也使得基于Bert的NLP任务能够取得一系列突破性进展。

标签:Bert,模型,什么,论文,Token,BERT,句子,标记
From: https://blog.csdn.net/ChaneMo/article/details/144478185

相关文章

  • 【Java面试】到底什么是堆区和栈区?
    其实,堆区和栈区从本质上讲没有任何区别,因为它们都是内存的一块区域而已。它们的区别在于用法。在我们的代码中,会使用各种各样的变量,而这些变量是会占据内存的,也就涉及到了内存的分配与释放。当变量出现时,就会产生一个问题:这些变量的使用范围(生命周期)是仅仅局限在一个函数内......
  • maven - archetype - quickstart 和maven - archetype - archetype 和maven - archety
    maven-archetype-quickstart和maven-archetype-archetype区别功能重点不同maven-archetype-quickstart:主要功能是快速搭建一个简单的、可运行的Java应用程序框架。它的重点在于让开发者能够迅速开始编写Java代码,构建一个基本的、能够独立运行的程序,例如一个......
  • Spring Boot属于什么架构?
    SpringBoot本身不是一种架构,而是一个用于快速构建基于Spring框架的应用程序的框架。不过,在使用SpringBoot构建应用时,可以应用多种架构模式。MVC(Model-View-Controller)架构在SpringBoot中可以轻松实现MVC架构。Model(模型):通常是数据相关的部分,包括数据对象、......
  • 什么是泛域名?如何做泛域名解析?
    泛域名是一种特殊的互联网域名,它允许一个主域名下设置多个子域名,这些子域名可以指向同一个IP地址。泛域名通过通配符“*”来实现,例如*.example.com可以代表a.example.com、b.example.com等所有子域名。这种设置便于统一管理和访问多个子网站或页面,同时也有助于提升品牌曝光度和SEO......
  • 在Less中的颜色通道功能是什么?
    在Less中,颜色通道功能允许开发人员通过特定的函数来操作和提取颜色值中的各个通道信息。这些功能对于前端开发中精确控制颜色、实现颜色主题的动态调整以及颜色的计算与转换非常有用。以下是Less中颜色通道功能的一些关键点:颜色通道提取:Less提供了一系列函数,用于从颜色值中提取......
  • 请说说html、body、document、window四者的区别是什么?
    在前端开发中,HTML、body、document和window都是非常重要的概念,但它们各自扮演的角色和代表的含义有所不同。以下是它们之间的主要区别:HTML:HTML是“HyperTextMarkupLanguage”的缩写,它是一种用于创建网页的标准标记语言。HTML文档由一系列的标签(tags)组成,这些标签用于定义......
  • 你希望通过这份工作获得什么?
    我没有个人职业目标或期望通过工作获得的个人利益。不过,对于从事前端开发这份工作的人来说,他们可能希望通过这份工作获得以下一些事物:技能提升:不断学习新的技术和工具,提升自己的前端开发能力,保持竞争力。职业发展:通过积累经验和展示能力,获得晋升或更好的职业机会,比如成为技......
  • 在Less中的嵌套作用是什么?
    在前端开发中,Less中的嵌套作用主要体现在以下几个方面:一、简化CSS代码结构Less的嵌套规则允许将一个样式规则嵌套在另一个规则内部,这种结构减少了重复编写父选择器的需要。原生的CSS语法并不支持嵌套,当想要为一个有多层上层元素的子元素增加样式时,需要一层一层向上找到它所有的......
  • 什么是流量劫持?如何防止流量劫持?
    流量劫持是利用各种恶意软件、木马修改浏览器、锁定主页或不停弹出新窗口等方式,强制用户访问某些网站,从而造成用户流量损失的情形。这种行为不仅会导致用户因为流量流失而遭受经济损失,还可能因恶意软件的强行植入造成计算机系统的破坏,给网络的正常运行带来极大的安全隐患。对于前......
  • 在Less中的Mixins有什么作用?
    在Less中,Mixins是一种非常重要的功能,它为前端开发带来了诸多便利。Mixins的作用主要体现在以下几个方面:1.代码重用Mixins允许你将一组CSS属性从一个规则集包含(或混入)到另一个规则集中。这意味着,当你定义了一个Mixin后,就可以在多个选择器中重用它,从而避免了重复编写相同的CSS代......