大语言模型系列-BERT

文章目录

  • 前言
  • 一、BERT的网络结构和流程
    • 1.网络结构
    • 2.输入
    • 3.输出
    • 4.预训练
      • Masked Language Model
      • Next Sentence Prediction
      • loss
  • 二、BERT创新点
  • 总结


前言

前文提到的GPT-1开创性的将Transformer Decoder架构引入NLP任务,并明确了预训练(学习 text 表征)+微调这种半监督训练方法,但Transformer Decoder的Masked attention部分,屏蔽了来自未来的信息,因此GPT是单向的模型,只能考虑语境上文,无法考虑语境的下文。

因此,BERT转而使用了Transformer Encoder架构,核心其实就是注意力层的区别。

和GPT-1一样,BERT既可以用于特征抽取,将新的embedding应用到下游任务,也可以直接基于BERT进行微调,对于特定任务进行一个整体的训练。


提示:以下是本篇文章正文内容,下面内容可供参考

一、BERT的网络结构和流程

1.网络结构

下图很好的展示了BERT的网络结构
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
下图很好的展示了ELMo、GPT1和BERT的区别
在这里插入图片描述

2.输入

BERT的输入embeddings由三部分组成:分词对应的token,可学习的分割embeddings([SEP])和位置 embeddings,其中分割embeddings是用于分割不同的句子。
在这里插入图片描述

3.输出

输出的数量和输入是一致的,如下图所示:
在这里插入图片描述
C为分类token([CLS])对应的输出, T i T_i Ti代表其他token对应的输出。

  • 对于一些token级别的任务(如序列标注和问答任务),就把 T i T_i Ti输入到额外的输出层中进行预测。
  • 对于一些句子级别的任务(如自然语言推断和情感分类任务),就把C输入到额外的输出层中。

这里也就解释了为什么要在每一个token序列前都要插入特定的分类token。

4.预训练

在总述中提到了,BERT主要用于自然语言理解,这是由于它的预训练机制导致的。

BERT基于两种任务进行了预训练:Masked Language Model和Next Sentence Prediction。

Masked Language Model

Masked LM是BERT能够不受单向语言模型所限制的重要原因。

简单来说就是以15%的概率用mask token ([MASK])随机地对每一个训练序列中的token进行替换,然后预测出[MASK]位置原有的单词。(通俗理解,让模型做完形填空)
在这里插入图片描述
但由于[MASK]并不会出现在下游任务的微调(fine-tuning)阶段,因此预训练阶段和微调阶段之间产生了不匹配(这里很好解释,就是预训练的目标会令产生的语言表征对[MASK]敏感,但是却对其他token不敏感)

因此BERT采用了以下策略来解决这个问题:

首先在每一个训练序列中以15%的概率随机地选中某个token位置用于预测,假如是第i个token被选中,则会被替换成以下三个token之一:

  • 1)80%的时候是[MASK]。如,my dog is hairy——>my dog is [MASK]

  • 2)10%的时候是随机的其他token。如,my dog is hairy——>my dog is apple

  • 3)10%的时候是原来的token。如,my dog is hairy——>my dog is hairy

再用该位置对应 T i T_i Ti的去预测出原来的token(输入到全连接,然后用softmax输出每个token的概率,最后用交叉熵计算loss)。

该策略令到BERT不再只对[MASK]敏感,而是对所有的token都敏感,以致能抽取出任何token的表征信息。

Next Sentence Prediction

一些如问答、自然语言推断等任务需要理解两个句子之间的关系,而MLM任务倾向于抽取token层次的表征,因此不能直接获取句子层次的表征。为了使模型能够有能力理解句子间的关系,BERT使用了NSP任务来预训练,简单来说就是预测两个句子是否连在一起。具体的做法是:对于每一个训练样例,在语料库中挑选出句子A和句子B来组成,50%的时候句子B就是句子A的下一句(标注为IsNext),剩下50%的时候句子B是语料库中的随机句子(标注为NotNext)。接下来把训练样例输入到BERT模型中,用[CLS]对应的C信息去进行二分类的预测。

loss

总结一下训练样例:

Input1=[CLS] the man went to [MASK] store [SEP] he bought a gallon [MASK] milk [SEP]Label1=IsNextInput2=[CLS] the man [MASK] to the store [SEP] penguin [MASK] are flight ##less birds [SEP]Label2=NotNext

把每一个训练样例输入到BERT中可以相应获得两个任务对应的loss,再把这两个loss加在一起就是整体的预训练loss(也就是两个任务同时进行训练)。

可以明显地看出,这两个任务所需的数据其实都可以从无标签的文本数据中构建(自监督性质),大大减少了工作量(无需人工标注)。

二、BERT创新点

  1. 换为Encoder only架构,从而能够考虑语境上下文
  2. 提出了行之有效的双向语言模型训练机制:MLM和NSP

总结

尽管BERT能够看到上下文信息,并提出了行之有效的训练方式,但是这种训练模式不具有自回归特性,因此BERT这类模型更适合于自然语言理解式任务(NLU),如文本分类、情感分析,命名实体识别。对于生成式任务则存在不足。

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

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

相关文章

vim 编辑器如何同时注释多行以及将多行进行空格

一、场景 YAML文件对空格的要求非常严格,因此在修改YAML时,我们可能需要批量添加空格。 二、操作步骤 请注意:您的所有操作都将以第一行为基准。也就是说,第一行有多少个空格,下面的行就会模仿添加相同数量的空格。…

Spring WebSocket实现实时通信的详细教程

简介 WebSocket 是基于TCP/IP协议,独立于HTTP协议的通信协议。WebSocket 连接允许客户端和服务器之间的全双工通信,以便任何一方都可以通过已建立的连接将数据推送到另一方。 我们常用的HTTP是客户端通过「请求-响应」的方式与服务器建立通信的&#x…

Ubuntu 22.04.1 LTS VirtualBox7.0 解决虚拟机窗口失去焦点一段时间后,虚拟机显示不刷新问题

故障描述: virtualbox安装在ubuntu系统上,虚拟机内安装了windows操作系统。使用中发现,当linux系统窗口被激活,如firefox浏览器,虚拟机的显示一段时间后会暂停刷新,鼠标划入虚拟机窗口后,才会立…

mysql数据迁移报错Specified key was too long; max key length is 767 bytes

目录 场景: 说明: 疑问: 解决: 验证: 场景: 线上项目支持的过程中遇到mysql库表结构和数据由A库迁移到B库上提示Specified key was too long; max key length is 767 bytes报错,第一次遇到特此…

Rust之旅 - Rust概念、Windows安装、环境配置

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项目…

生成式对抗网络GAN

Generative Adversarial Nets由伊恩古德费洛(Ian J.Goodfellow)等人于2014年发表在Conference on Neural Information Processing Systems (NeurIPS)上。NeurIPS是机器学习和计算神经科学领域的顶级国际学术会议之一。 1. GAN在哪些领域大放异彩 图像生…

目标检测--02(Two Stage目标检测算法1)

Two Stage目标检测算法 R-CNN R-CNN有哪些创新点? 使用CNN(ConvNet)对 region proposals 计算 feature vectors。从经验驱动特征(SIFT、HOG)到数据驱动特征(CNN feature map),提高特…

【计算机网络】(1)OSI七层模型、协议、交换技术、路由器技术

文章目录 计算机网络功能与分类计算机网络的定义计算机网络的功能计算机网络的指标计算机网络的性能指标计算机网络的非性能指标 计算机网络的分布范围以及拓扑结构划分图计算机网络分类总线型拓扑星型拓扑环形图拓扑树型拓扑分布式拓扑 通信技术信道物理信道逻辑信道 发信机OS…

基于Java网上鲜花商城系统设计与实现(源码+部署文档)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

全开源多城市同城信息小程序源码(Laravel 框架),同城分类信息发布便民小程序系统【非DZ】

同城生活分类信息小程序,人才招聘、房产二手 多城市地区同城分类信息发布,商家入驻等功能 小程序前后端代码开源无加密,可进行二次开发 【源码运行要求】 1、需要已认证的微信小程序 2、已备案的域名及服务器空间 推荐使用宝塔面板LinuxPHP…

C#用Convert.ToString(Int32, Int32)和Convert.Tolnt64(String, Int32)进行数值转换

目录 一、Convert.ToString(Int32, Int32) 方法 1.定义 2. 示例 二、Convert.ToInt64(String, Int32) 1.定义 2.实例 三、用Convert.ToString(Int32, Int32)和Convert.Tolnt64(String, Int32)进行数值转换 1.Main() 2.类库 3.生成效果 使用Convert.ToString(Int32…

python数字图像处理基础(八)——harris角点检测、图像尺度空间、SIFT算法

目录 harris角点检测原理函数 图像尺度空间概念局部不变性局部不变特征SIFT算法 harris角点检测 原理 Harris 角点检测是一种用于在图像中检测角点的算法。角点是图像中局部区域的交叉点或者突出的特征点。Harris 角点检测算法旨在寻找图像中对于平移、旋转和尺度变化具有不变…