BERT学习笔记

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

代码:[tensorflow],[pytorch]

来源:李沐精度BERT

0、摘要

与之前模型的区别:

  • GPT考虑的是一个单向预测,用左边的词预测右边的词;但BERT则是同时利用左边和右边的词,来预测中间的词

  • ELMO用的BiLSTM,但是它使用的是RNN结构,在应用到下游任务时它需要对模型结构做调整;但BERT使用的是transformer,在下游任务中只需要改上层的一小部分就可以了

基本效果:

  • 11个任务上取得更高的精度

  • GLUE提升7.7%,至80.5%;MultiL1提升4.6%,至86.7%;SQuAD v1.1提升1.5,至93.2;SQuAD v2提升5.1,至83.1

1、导言

句子层面的任务:情感识别

单词层面的任务:命名实体识别

下游任务使用预训练模型的两种方式:

  • Feature-based:下游任务先用训练好的预训练模型来提取训练语料的特征,这个特征可能是预训练模型encoder的输出,也可能是某个中间层的隐藏状态;然后下游任务再用这个特征对自己的模型做训练。简单来说,就是用预训练模型做一个特征提取器?

  • Fine-tuning:根据下游特定的任务,在原来的预训练模型上进行一些结构方面的修改,这些修改通常是在模型的最后一层,使得模型输出是当前任务所需要的;然后在新的语料上重新训练修改后的模型。

之前工作的局限性:从左到右,单向,不太符合人类对语言的理解

MLM:Masked Language Model,带掩码的语言模型

贡献:

(1)展示了双向信息的重要性

(2)第一个基于微调、且在各项任务上都取得优越性能的预训练模型

2、相关工作

非监督的基于特征的方法:代表作是ELMo

非监督的微调方法:代表作是GPT

在有标注的数据上做迁移学习

3、BERT

Pre-training:在无标注的数据上做训练

Fine-tuning:模型首先用预训练好的模型做参数初始化,然后用下游任务标注好的数据对所有的参数做训练

image-20240222195623044

L:transformer块的个数

H:隐藏层的大小

A:自注意力机制模块head的数量

LHATotal parameters
BERT_Base1276812110M
BERT_Large24102416340M

切词方式:WordPiece(类似于BPE,字节对编码??)

句子的第一个 token 永远是 [CLS],它代表 classification,其在最后一个隐藏层的输出就代表整个序列在句子层面的信息。

句子与句子之间用一个 [SEP] 分割,它代表 separate。

image-20240222201913130

上图即为BERT嵌入层的做法,分为三部分:

  • Token Embedding:词元的嵌入,就是正常的单词嵌入向量
  • Segment Embedding:词元属于哪一个句子的嵌入,是属于第一个句子,还是属于第二个句子(第一个[SEP]属于第一个句子)
  • Position Embedding:词元的位置嵌入,是在整个输入序列中的位置(不是在单独某一个句子中的位置)

BERT用的是transformer的编码器(没用decoder),所以它的每一个词都会跟句子中的其他词计算注意力关系。

预训练中两个比较重要的点:(1)目标函数;(2)数据。

任务一:Masked LM,预训练的数据有Mask,但是微调的数据没有Mask,这会带来一些问题(什么问题??),解决方案是:

  • 15%被选中的待预测词,有80%的概率被替换成 [Mask] 掩码符号,有10%的概率被替换成随机的词元,有10%的概率保持不变但依然去做预测。

在这里插入图片描述

任务二:Next Sentence Prediction(NSP),预测下一个句子

  • 两个句子A和B,50%的概率B是在A之后(正例),有50%的概率B就是从其他地方选取出来的、跟A无关的一个句子(负例)
image-20240222204150332

注:上面的 ## 表示后面的那个词跟前面的词是一个单词,因为 flightless 是一个不常见的单词,所以就把它分开成两个常见的单词flight和less。

BERT的Fine-Tuning:根据下游任务的形式,设计模型的输入和输出(模型本身不需要做太多改变)

  • 如果做分类,就用第一个词元 [CLS] 的输出来做分类;
  • 如果做句子预测,就对每个词元的输出再加一个输出层,做softmax做预测;

4、实验

GLUE:分类任务,对第一个词元 [CLS] 的输出做softmax,然后分类。

SQuAD v1.1:Q&A任务,给模型一段话,然后提一个问题,需要在这段话中找出这个问题的答案,这个答案已经在这段话里面了,模型只需要找出答案片段的开始和结尾。

5、消融实验

BERT用作Feature-Based的效果并不好,用作Fine-Tuning更好一些。

6、结论

(1)使用非监督的预训练是很好的,这使得那些数据量很小的下游任务也能使用神经网络

(2)主要的贡献就是把前人的工作成果扩展到双向的深度结构上

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

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

相关文章

RabbitMQ 部署方式选择

部署模式 RabbitMQ支持多种部署模式,可以根据应用的需求和规模选择适合的模式。以下是一些常见的RabbitMQ部署模式: 单节点模式: 最简单的部署方式,所有的RabbitMQ组件(消息存储、交换机、队列等)都运行在…

【Java程序设计】【C00278】基于Springboot的数码论坛管理系统(有论文)

基于Springboot的数码论坛管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的数码论坛系统 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块:在系统首页可以查看首页、…

Linux Android USB gadget(从设备驱动)

Linux Android USB gadget 一:Linux usb gadget 与 Android Composite Gadget二:原生方式和Android方式如何配置函数调用逻辑内核配置原生驱动android驱动三:mass_storage配置虚拟化U盘四:遍历usb设备五:adb usb判断usb设备为adb获取adb配置信息adb设备序列号发送与接收《Linux…

maven的聚合和生命周期

什么是maven的聚合呢?就是父类直接将子类项目一起统一打包安装统一maven的生命周期 1.maven的生命周期 2.在父亲类pom文件指定需要打包的项目 实例代码: <!--maven的聚合 通过modules指定需要打包的maven项目--> <modules><module>../ithema-jopo</m…

【Java】RestClient的使用

RestClient的使用 先导入Maven坐标&#xff0c;要和elasticsearch和kibana的版本保持一致 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.12.1<…

神经网络系列---计算图基本原理

文章目录 计算图符号微分符号微分的步骤示例符号微分在计算图中的使用总结 数值微分前向差分法中心差分法数值微分的使用注意事项总结 自动微分1. 基本原理2. 主要类型3. 计算图4. 应用5. 工具和库6. 优点和缺点 计算图1. **计算图的建立**2. **前向传播**3. **反向传播**4. **…

2024最新版Python 3.12.2安装使用指南

2024最新版Python 3.12.2安装使用指南 Installation and Usage Guide to the Latest Version - Python 3.12.2 for Windows in 2024 By JacksonML 0. Python的受欢迎程度 据TechRepublic报道&#xff0c;截至2024年2月16日&#xff0c;全球最流行的编程语言之中&#xff0c…

【Java网络编程06】HTTPS原理

1. HTTPS基本概念 HTTPS&#xff1a;HTTPS也是一个应用层协议&#xff0c;它在HTTP协议的基础上引入了一个加密层——SSL协议&#xff0c;区别就在于HTTP协议是基于明文传输的&#xff08;不安全&#xff09;&#xff0c;使用HTTPS加密就能在一定程度上防止数据在传输过程中被…

如何在Pycharm中导入第三方库(以pyecharts为例子)

打开Pycharm 点击右上角文件->设置->项目->pythonProject&#xff08;Python解释器&#xff09; 点击下图号 下一步&#xff1a;在搜索栏中直接搜索第三方包pyecharts并安装即可 以上便为使用Pycharm安装第三方库的全过程。 温馨小提示&#xff0c;如果大家在Pychar…

基于粒子群优化BP神经网络的三分类代码,基于pso+bp的01编码分类识别,PSOBP三分类

目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 粒子群算法的原理及步骤 基于粒子群优化BP神经网络的三分类代码,基于pso+bp的01编码分类识别 matlab代码下载链接:基于粒子群优化BP神经…

Linux-基础命令(黑马学习笔记)

Linux的目录结构 Linux的目录结构 Linux的目录结构是一个树形结构 Windows系统可以拥有多个盘符&#xff0c;如C盘、D盘、E盘 Linux没有盘符这个概念&#xff0c;只有一个根目录 /&#xff0c;所有文件都在它下面 Linux路径的描述方式 ● 在Linux系统中&#xff0c;路径之…

[rust] 11 所有权

文章目录 一 背景二 Stack 和 Heap2.1 Stack2.2 Heap2.3 性能区别2.4 所有权和堆栈 三 所有权原则3.1 变量作用域3.2 String 类型示例 四 变量绑定背后的数据交互4.1 所有权转移4.1.1 基本类型: 拷贝, 不转移所有权4.1.2 分配在 Heap 的类型: 转移所有权 4.2 Clone(深拷贝)4.3 …

普中51单片机学习(定时器和计数器)

定时器和计数器 51单片机有两组定时器/计数器&#xff0c;因为既可以定时&#xff0c;又可以计数&#xff0c;故称之为定时器/计数器。定时器/计数器和单片机的CPU是相互独立的。定时器/计数器工作的过程是自动完成的&#xff0c;不需要CPU的参与。51单片机中的定时器/计数器是…

模型 HBG(品牌增长)

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_总纲目录。品牌增长法。 1 HBG(品牌增长)模型的应用 1.1 江小白使用HBG模型提高品牌知名度和销售额 选择受众市场&#xff1a;江小白的目标客户是年轻人&#xff0c;他们喜欢简单、时尚的产品。因此&#xff0c;江…

Vue3自定义组件v-model双向绑定

无能吐槽一下&#xff0c;虽然用了很多遍v-model&#xff0c;但是还是不得要领&#xff0c;每次看官网都感觉说的不是很清晰&#xff0c;在写的时候还是要查看文档&#xff0c;可能就是不理解原理&#xff0c;这次特意好好写一篇文章&#xff0c;让自己好好理解一下。 自定义一…

python程序设计基础:字符串与正则表达式

第四章&#xff1a;字符串与正则表达式 4.1字符串 最早的字符串编码是美国标准信息交换码ASCII&#xff0c;仅对10个数字、26个大写英文字母、26个小写英文字母及一些其他符号进行了编码。ASCII码采用1个字节来对字符进行编码&#xff0c;最多只能表示256个符号。 随着信息技…

【k8s核心概念与专业术语】

k8s架构 1、服务的分类 服务分类按如下图根据数据服务支撑&#xff0c;分为无状态和有状态 无状态引用如下所示&#xff0c;如果一个nginx服务&#xff0c;删除后重新部署有可以访问&#xff0c;这个属于无状态&#xff0c;不涉及到数据存储。 有状态服务&#xff0c;如redis&a…

备战蓝桥杯之并查集刷题之删除

题目比较模板&#xff0c;但是也扩展了许多以前不知道的知识点&#xff0c;记录一下比较有启发性的题。 目录 1.并查集之删除操作---创点转移&#xff1a; 2.并查集之删除操作---逆向思考&#xff1a; 1.并查集之删除操作---创点转移&#xff1a; 1和3都是并查集的基础操作&…

STM32F103x 的时钟源

AHB (Advanced High-performance Bus) 高速总线&#xff0c;用来接高速外设的。 APB (Advanced Peripheral Bus) 低速总线&#xff0c;用来接低速外设的&#xff0c;包含APB1 和 APB2。 APB1&#xff1a;上面连接的是低速外设&#xff0c;包括电源接口、备份接口、 CAN 、 US…

域名 SSL 证书信息解析 API 数据接口

域名 SSL 证书信息解析 API 数据接口 网络工具&#xff0c;提供域名 SSL 证书信息解析&#xff0c;多信息查询&#xff0c;毫秒级响应。 1. 产品功能 提供域名 SSL 证书信息解析&#xff1b;最完整 SSL 属性信息解析&#xff1b;支持多种元素信息抽取&#xff0c;包括主题的可…