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.mzph.cn/news/697285.shtml

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

相关文章

公司中常用的系统有哪些--制造业篇

摘要 本系列博客主要介绍不同行业中使用的常见系统,本文介绍在制造业或是智能制造方向的常见系统。 智能制造发展史 1973年美国约瑟夫哈林顿(Joseph Harrington)博士在《Computer Integrated Manufacturing》一书中首次提出 CIM&#xff08…

培养纳税筹划思维方式,企业税务筹划实务操作

一、教程描述 本套税务筹划教程,大小447.87M,共有6个文件。 二、教程目录 前言.mp4 培养纳税筹划思维方式.mp4 增值税的税务筹划.mp4 企业所得税的税务筹划.mp4 个人所得税的税务筹划.mp4 企业税务筹划实务操作(课件).pdf…

MDST150-16-ASEMI三相可控整流模块MDST150-16

编辑:ll MDST150-16-ASEMI三相可控整流模块MDST150-16 型号:MDST150-16 品牌:ASEMI 正向电流(Id):150A 反向耐压(VRRM):1600V 正向浪涌电流:1200A 正…

大数据揭秘:Hadoop短视频流量分析实战

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

基于springboot+vue的车辆管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

C语言翻译环境:预编译+编译+汇编+链接详解

目录 翻译环境和运行环境 翻译环境 预处理(预编译) 编译 词法分析 语法分析 语义分析 汇编 链接 运行环境 ⭐翻译环境和运行环境 在ANSI C的任何⼀种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被…

H桥逆变方式介绍(单极性)

H桥逆变电路实现的就是一个从DC——AC的过程 这个电路有两个时序,Q6Q4是一个导通时序,Q5Q7是一个导通时序 左边两个是高频20KHZ的、互补的sPWM波,右边是低频的50HZ的PWM波 三角波一般叫载波,正弦波叫调制波(单片机内…

Vi/Vim 使用小窍门,如何消除搜索后的关键字高亮

Vim/Vi 基本上是 *nix 世界最受欢迎的编辑器了,不知道为什么,一直以来觉得和 Emacs 比起来,Vim 更加有亲和力。用起来很舒服。 今天就记录一个困扰了我很久的问题。 大家应该都知道,在 Vi 里面如果要搜索某个关键字,…

Python-pdfplumber读取PDF内容

文章目录 前言一、pdfplumber模块1.1 pdfplumber的特点1.2 pdfplumber.PDF类1.3pdfplumber.Page类 二 pdfplumber的使用2.1 加载PDF2.2 pdfplumber.PDF 类2.3 pdfplumber.Page 类2.4 读取PDF2.5 读取PDF文档信息2.6 查看总页数2.7 查看总页数读取第一页的宽度,页高等…

VsCode编译wxWidgets的HelloWorld

wxWidgets 环境搭建 在wxWidgets 官网下载页面点击Download Windows Binaries选择TDM-GCC 10.3和MinGW-w64 8.1下的头文件和开发包进行下载。这儿我们会用两种 gcc 编译器进行对比,所以下载 2 个种编译器对应的库文件。正常只需根据自己安装的编译器下载对应的 1 种…

[每周一更]-(第88期):Nginx 之 proxy_pass使用详解

proxy_pass 指令用于指定后端服务器的地址,可以采用以下不同的格式: 直接指定地址和端口: location / {proxy_pass http://backend_server:8080; }这将请求代理到 http://backend_server:8080。 使用变量: location / {set $ba…

petalinux_zynq7 驱动DAC以及ADC模块之五:nodejs+vue3实现web网页波形显示

前文: petalinux_zynq7 C语言驱动DAC以及ADC模块之一:建立IPhttps://blog.csdn.net/qq_27158179/article/details/136234296petalinux_zynq7 C语言驱动DAC以及ADC模块之二:petalinuxhttps://blog.csdn.net/qq_27158179/article/details/1362…

flutter开发实战-手势Gesture与ListView滚动竞技场的可滑动关闭组件

flutter开发实战-手势Gesture与ListView滚动竞技场的可滑动关闭组件 最近看到了一个插件,实现一个可滑动关闭组件。滑动关闭组件即手指向下滑动,组件随手指移动,当移动一定位置时候,手指抬起后组件滑出屏幕。 一、GestureDetect…

大保司保费贵,是否物有所值?

《大保司保费贵,是否物有所值》 这是罗师兄的原创文章 预计8-9分钟读完 作者:罗师兄 微信号:luoyun515 当我们想要买一份重疾险、储蓄险等长期险时, 我们会发现,同样的保障责任和保额, 不同保险公司的…

基于AdaBoost算法的情感分析研究-微博情感分析-文本分类

基于AdaBoost算法的情感分析研究 摘 要 随着互联网的快速发展,各类社交媒体平台如微信、QQ等也与日俱增,而微博更是集成了传统网站、论坛、博客等的优点,并加上了人与人之间的互动性、关系亲密程度等多种智能算法,并以简练的形式…

python安装与配置2024最新版

对python不熟悉的可以去看看这篇文章python介绍 pytho安装 来到Python官网:https://www.python.org/ 然后 选着download列表下的windows , 然后加进入python各个版本的下载界面 可以看到截止2024年2月22日,最新版是3.12.2 但是我们一般下载稳定版 如下,点击连接进…

解决两个MySQL5.7报错

目录 1.启动不了MySQL,报错缺少MSVCR120.dll去官网下载vcredist_x64.exe运行安装进入管理员CMD 2.本地计算机 上的 mysql 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止,Fatal error: Can‘t open and lock privilege tables: Table ‘…

实习日志28

1.医院账套系统换新,卡片数据转移 1.1.修改旧导出的Excel 1.2.尝试导入新系统 1.3.修改导入数据再次导入即可 这个系统做的限制条件比较多,代码健壮性不错。 先在Excel表格里改好批量的,再导入检查,改一些细节的比较快捷。 2.…

ChatGPT回答模式

你发现了吗,ChatGPT的回答总是遵循这些类型方式。 目录 1.解释模式 2.类比模式 3.列举模式 4.限制模式 5.转换模式 6.增改模式 7.对比模式 8.翻译模式 9.模拟模式 10.推理模式 1.解释模式 ChatGPT 在回答问题或提供信息时,不仅仅给出…

【Linux取经路】文件系统之缓冲区

文章目录 一、先看现象二、用户缓冲区的引入三、用户缓冲区的刷新策略四、为什么要有用户缓冲区五、现象解释六、结语 一、先看现象 #include <stdio.h> #include <string.h> #include <unistd.h>int main() {const char* fstr "Hello fwrite\n"…