【BERT】深入BERT模型2——模型中的重点内容,两个任务

news2025/1/20 3:36:17

前言

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

近年来,在自然语言处理领域,BERT模型受到了极为广泛的关注,很多模型中都用到了BERT-base或者是BERT模型的变体,而且在模型中增加了BERT预训练模型之后,许多NLP任务的模型性能都得到了很大程度的提升,这也说明了BERT模型的有效性。

由于BERT模型内容较多,想要深入理解该模型并不容易,所以我分了大概三篇博客来介绍BERT模型,第一篇主要介绍BERT模型的整体架构,对模型有一个整体的认识和了解;第二篇(也就是本篇博客)详细介绍BERT模型中的重点内容,包括它所提出的两个任务;第三篇从代码的角度来理解BERT模型。

目前我只完成了前两篇论文,地址如下,之后完成第三篇会进行更新。

第一篇:【BERT】深入理解BERT模型1——模型整体架构介绍

第二篇:【BERT】深入BERT模型2——模型中的重点内容,两个任务

第三篇:


模型重点内容介绍

首先先解释以下上一篇博客中经常提到的模型的单向和双向:

        单向:是指生成句子中某个单词的编码表示时,只结合句子中该单词位置之前的语境,而不考虑之后的语境;双向:是指生成句子中某个单词的编码表示时,同时考虑句子中该单词位置之前和之后的语境。

        由此可知,Transformer的编码器(主要是多头注意力机制)天然就是双向的,因为它的输入是完整的句子,也就是说,指定某个单词,BERT已经读入了它两个方向上的所有单词。


7、BERT的标准配置有两种:BERT-base和BERT-large。

BERT-base:包含12个编码器层。每个编码器使用12个注意头,编码其中的全连接网络包含768个隐藏单元。因此,从该模型中得到的向量大小也是768。(每个单词向量表示的大小=每个编码器层的大小。

若编码器层数记为L,注意力投书记为A,隐藏单元数记为H,则BERT-base模型:L=12,A=12,H=768,该模型的总参数大小为110M。该模型如下图所示:

BERT-large:包含24个编码器层,每个编码器使用16个注意头,编码器中的全连接网络包含1024个隐藏单元。因此,从该模型中得到的向量大小也是1024。因此,BERT-large模型:L=24,A=16,H=1024,该模型的总参数大小为340M。该模型如下图所示:

8、预训练BERT模型:

预训练的意思是,假设我们有一个模型m,首先我们为某种任务使用大规模的语料库训练模型m。现在来了一个新任务,并有一个新模型,我们使用已经训练过的模型(预训练的模型)m的参数来初始化新的模型,而不是使用随机参数来初始化新模型,然后根据新任务调整(微调)新模型的参数。这是一种迁移学习。

BERT模型在大规模语料库中通过两个任务来预训练,分别是屏蔽语言建模和下一句预测。

9、语言建模:

在语言建模任务中,我们训练模型给定一系列单词来预测下一个单词。可以把语言模型分为两类:自回归语言建模、自编码语言建模。

(1)自回归语言建模

我们可以将自回归语言建模归类为:前向预测(左到右)、反向预测(右到左)。

因此,自回归模型天然就是单向的,意味着它们只会以一个方向阅读输入序列。

(2)自编码语言建模

自编码语言建模任务同时利用了前向和反向预测的优势,即:它们在预测时同时读入两个方向的序列。因此,我们可以说自编码语言模型天生就是双向的。

因此,双向的模型能获得更好的结果。

BERT是一个自编码语言模型,即:预测时同时从两个方向阅读序列。

10、屏蔽语言建模

屏蔽语言建模任务:对于给定的输入序列,我们随机屏蔽15%的单词,然后训练模型去预测这些屏蔽的单词。

以这种方式屏蔽标记会在预训练和微调之间产生差异。即,我们训练BERT通过预测[MASK]标记,训练完之后,我们可以为下游任务微调预训练的BERT模型,比如情感分析任务,但在微调期间,我们的输入不会有任何的[MASK]标记,因此,它会导致BERT的预训练方式与微调方式不匹配。

为了解决以上问题,我们应用80-10-10%的规则。我们指导我们会随即屏蔽句子中15%的标记。现在对这15%的标记,80%的概率用[MASK]标记替换该标记,10%的概率用过一个随即标记(单词)替换该标记,剩下10%的概率我们不做任何替换。

为了预测屏蔽的标记,我们将BERT返回的屏蔽的单词表示R[MASK]喂给一个带有softmax激活函数的前馈神经网络,然后该网络输出此表中每个单词属于该屏蔽的单词的概率。

在全词屏蔽模型中,如果子词被屏蔽了,然后我们屏蔽与该子词对应单词的所有子词。注意,我们也需要保持屏蔽概率为15%。所以当屏蔽子词对应的所有单词后,如果超过了15%的屏蔽率,我们可以取消屏蔽其他单词。

11、下一句预测

为了进行分类,我们简单地将[CLS]标记的嵌入表示喂给一个带有softmax函数的全连接网络,该网络会返回我们输入的句子对属于isNext和notNext的概率。因为[CLS]标记保存了所有标记的聚合表示,也就得到了整个输入的信息,所以我们可以直接拿该标记对应的嵌入表示来进行预测。

不太理解嵌入表示经过带有softmax的前馈网络怎么就得到了概率?解释:softmax的输出就是各类别的概率值,且这些概率值的和为1。(全连接层和前馈网络是一回事儿)

12、预训练过程中的热身步:

在训练的初始阶段,我们可以设置一个很大的学习率,但是我们应该在后面的迭代中设置一个较小的学习率。因为在初始的迭代时,我们远没有收敛,所以设置较大的学习率带来更大的步长是可以的,但在后面的迭代中,我们已经快要收敛了,如果学习率(导致步长)较大,可能会错过收敛位置(极小值)。在初始迭代期设置较大的学习率而在之后的迭代期减少学习率的做法被称为学习率scheduling。

热身步就是用于学习率scheduling的。假设我们的学习率是1e-4,然后热身步为10000个迭代,这意味着我们在初始的10000个迭代中,将学习率从0增大到1e-4。在10000个迭代后,我们线性地减少学习率,因为我们接近收敛位置了。

13、激活函数

BERT使用的激活函数叫作GELU(Gaussian Error Linear Unit,高斯误差线性单元)。GELU函数为:

其中,是标准的高斯累积分布函数(Gaussian cumulative distribution function)。

GLEU的近似计算数学公式为:

其函数图像如下所示:

与Relu函数的比较:

Relu将小于0的数据映射到0,将大于0的数据映射到本身,虽然性能比Sigmoid函数好,但是缺乏数据的统计特性,而Gelu则在Relu的基础上加入了统计特性。论文中提到在好几个深度学习任务中Gelu的效果都优于Relu。

14、子词Tokenization:用来处理未登录词(即词表中没有出现过的词,OOV),效果很好。

将未登录词拆分成子词,检查子词是否存在于词表中,不必为拆分后的第一个子词增加##,而是要在除第一个子词之外的子词前增加##。并将词表中不存在的子词添加到词表中。


以上就是对BERT模型重点内容的介绍,希望对大家有所帮助。

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

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

相关文章

Spring AOP<一>简介与基础使用

spring AOP 基础定义 含义使用切面组织多个Advice,Advice放在切面中定义。也就是说是定义通知的自定义类。自定义的AOP类Aspect连接点方法调用,异常抛出可以增强的点JoinPoint :也就是**被增强的方法的总称,可以获取具体方法的信息&#xff…

结构体:枚举

#include<iostream> using namespace std; int main() {enum weekday { mon, tus, wed, thu, fri, sat,sun }; //声明枚举类型 enum weekday day; //定义枚举变量 int a, b, c, d, e, f, g, loop; //定义整型变量 char ch A; //定义字符变量 f thu; //按照题意&a…

华为服务器安装银河麒麟V10操作系统(IBMC安装)

iBMC是华为面向服务器全生命周期的服务器嵌入式管理系统。提供硬件状态监控、部署、节能、安全等系列管理工具&#xff0c;标准化接口构建服务器管理更加完善的生态系统。 服务器BMC IP&#xff1a;192.168.2.100 一、准备工作 1、确保本机和服务器BMC管理口在同一网络 2、银…

如何使用ArcGIS Pro将Excel表转换为SHP文件

有的时候我们得到的数据是一张张的Excel表格&#xff0c;如果想要在ArcGIS Pro中进行分析或者制图则需要先转换为SHP格式&#xff0c;这里为大家介绍一下转换方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的POI数据&#xff0c;除了P…

荔枝派nano(f1c100s)基于I2C子系统的BME280驱动

硬件环境&#xff1a; 1、荔枝派nano&#xff08;f1c100s&#xff09; 2、使用f1c100s的i2c0&#xff0c;PE11和PE12引脚 软件环境&#xff1a; 1、Linux 4.15 2、BME280使用介绍 文章目录 一、I2C子系统1、应用层访问i2c设备2、驱动层访问i2c设备2.1、i2c总线设备驱动模型2.2、…

MySQL MVCC精讲

版本链 我们前面说过&#xff0c;对于使用InnoDB存储引擎的表来说&#xff0c;它的聚簇索引记录中都包含两个必要的隐藏列&#xff08;row_id并不是必要的&#xff0c;我们创建的表中有主键或者非NULL的UNIQUE键时都不会包含row_id列&#xff09;&#xff1a; trx_id&#xff…

《纳瓦尔宝典》围观纳瓦尔的财富+幸福指南

缘分碎碎念 之前一直有书友推荐《纳瓦尔宝典》&#xff0c;一直没机会看。到2023年底了&#xff0c;想要给辛苦一年的自己一个新年礼物&#xff08;哈哈哈&#xff09;&#xff0c;就买了一个电纸书用来看书&#xff08;保护眼睛&#xff09;&#xff0c;里面刚好有《纳瓦尔宝…

相对于一般的统计学,计量经济学的特色是什么?谈Stata与计量经济学

Stata作为一种数据分析软件&#xff0c;高度适用于依托计量经济学的研究领域&#xff0c;如宏观经济学、财政学等&#xff0c;当然在医学等学科应用也较为广泛&#xff0c;在处理面板数据方面也深具特色。计量经济学是指运用概率统计方法对经济变量之间的因果关系进行定量分析的…

【实用工具】Gradio快速部署深度学习应用1:图像分类

前言 在AI快速发展的今天&#xff0c;我们作为算法开发人员&#xff0c;也应该有一些趁手的工具帮助我们快速开发并验证自己的想法&#xff0c;Gradio可以实现快速搭建和共享的功能&#xff0c;能够展示出一个前端界面&#xff0c;把我们的算法包裹起来&#xff0c;快速验证算…

python+django超市进销存仓库管理系统s5264

本次设计任务是要设计一个超市进销存系统&#xff0c;通过这个系统能够满足超市进销存系统的管理及员工的超市进销存管理功能。系统的主要功能包括&#xff1a;首页、个人中心、员工管理、客户管理、供应商管理、承运商管理、仓库信息管理、商品类别管理、由管理员和员工&#…

程序的编译、链接

目录 前言&#xff1a; 前置知识回顾 宏 宏定义常量 宏定义语句 宏定义函数 条件编译 应用场景 编译过程概览 预编译阶段 编译阶段 汇编阶段 链接阶段 前言&#xff1a; 在ANSI C的任何一种实现中&#xff0c;存在两种不同的环境&#xff0c;第1种是翻译环境&#x…

2023年03月09日_谷歌视觉语言模型PaLM-E的介绍

自从最近微软凭借OpenAI 和ChatGPT火了一把之后呢 老对手Google就总想着扳回一局 之前发布了硬刚ChatGPT的Bard 但是没想到翻车了 弄巧成拙 所以呢Google这一周又发了个大招 发布了史上最大的视觉语言模型PaLM-E 这个模型有多夸张呢 参数量高达5,620亿 是ChatGTP-3的三…

【Matlab】CNN卷积神经网络时序预测算法

资源下载&#xff1a; https://download.csdn.net/download/vvoennvv/88681558 一&#xff0c;概述 CNN&#xff08;Convolutional Neural Network&#xff0c;卷积神经网络&#xff09;是一种前馈神经网络&#xff0c;主要用于处理具有类似网格结构的数据&#xff0c;例如图像…

HTML---JavaScript基础

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 本章目标 掌握JavaScript的组成掌握JavaScript的基本语法会定义和使用函数会使用工具进行代码调试 一.JavaScript基础 概述 JavaScript是一种基于对象和事件驱动的脚本语言&#xff0c;用于在…

DotNet 命令行开发

DotNet 命令行开发 下载安装下载 SDK安装 SDK绿色版下载绿化脚本 常用命令创建 dotnet new运行 dotnet run发布应用 dotnet publish更多命令 VSCode 调试所需插件调试 CS 配置项目.csproj排除依赖关系 launch.jsontasks.json 参考资料 下载安装 下载 SDK 我们就下最新的好&am…

linux实用技巧:ubuntu18.04安装samba服务器实现局域网文件共享

Ubuntu安装配置Samba服务与Win10共享文件 Chapter1 Ubuntu18.04安装配置Samba服务与Win10共享文件一、什么是Samba二、安装Samba1、查看是否有安装samba2、安装samba 三、配置Samba服务1、创建共享目录&#xff08;以samba_workspaces为例&#xff09;2、为samba设置登录用户3、…

集群部署篇--Redis 主从模式

文章目录 前言Redis 主从部署&#xff1a;1.1 主从架构 介绍&#xff1a;1.2 主从架构 实现&#xff1a;1.2.1 redis 安装&#xff1a; 1.3 主从架构优缺点&#xff1a;1.4 故障转移&#xff1a; 总结 前言 显然在线上环境中 Redis 服务不能以单机的方式运行&#xff0c;必须有…

JAVA基础入门自学篇

JAVA基础入门 环境准备 win10/ideJava环境 零开始搭建项目 1. 创建空项目 依次点击&#xff1a;File—>New—>Project选择&#xff1a;Empty Project&#xff0c; 输入项目名&#xff0c;如图所示 2. 创建Module 依次点击&#xff1a;File—>New—>Module 选…

【零基础入门VUE】VueJS - 实例

✍面向读者&#xff1a;所有人 ✍所属专栏&#xff1a;零基础入门VUE专栏https://blog.csdn.net/arthas777/category_12537076.html 目录 句法 vue_instance.js 输出 例子 输出 实施例1 实施例2 例子 例子 要开始使用 VueJS&#xff0c;我们需要创建 Vue 实例&#xf…

前言-ERP管理平台各个模块角色登录账号及各模块逻辑说明

全国职业院校技能大赛-高职组”软件测试"赛项竞赛训练ERP管理平台角色登录账号如下: “ERP 管理平台”内置一定数量 Bug,该系统可支持基于 Web 端 的功能测试、自动化测试、性能测试、接口测试、白盒测试、单元测 试等。系统主要模块包括:采购入库、采购退货、库存分…