深入理解深度学习——BERT(Bidirectional Encoder Representations from Transformers):BERT的结构

news2024/11/17 7:34:36

分类目录:《深入理解深度学习》总目录
相关文章:
· BERT(Bidirectional Encoder Representations from Transformers):基础知识
· BERT(Bidirectional Encoder Representations from Transformers):BERT的结构
· BERT(Bidirectional Encoder Representations from Transformers):MLM(Masked Language Model)
· BERT(Bidirectional Encoder Representations from Transformers):NSP(Next Sentence Prediction)任务
· BERT(Bidirectional Encoder Representations from Transformers):输入表示
· BERT(Bidirectional Encoder Representations from Transformers):微调训练-[句对分类]
· BERT(Bidirectional Encoder Representations from Transformers):微调训练-[单句分类]
· BERT(Bidirectional Encoder Representations from Transformers):微调训练-[文本问答]
· BERT(Bidirectional Encoder Representations from Transformers):微调训练-[单句标注]
· BERT(Bidirectional Encoder Representations from Transformers):模型总结与注意事项


BERT是由堆叠的Transformer Encoder层组成核心网络,辅以词编码和位置编码而成的。BERT的网络形态与GPT非常相似。简化版本的ELMo、GPT和BERT的网络结构如下图所示。图中的“Trm”表示Transformer Block,即基于Transformer的特征提取器。
简化版本的ELMo、GPT和BERT的网络结构对比

  • ELMo使用自左向右编码和自右向左编码的两个LSTM网络,分别以 P ( w i ∣ w 1 , w 2 , ⋯   , w i − 1 ) P(w_i|w_1, w_2, \cdots, w_{i-1}) P(wiw1,w2,,wi1) P ( w i ∣ w i + 1 , w i + 2 , ⋯   , w n ) P(w_i|w_{i+1}, w_{i+2}, \cdots, w_n) P(wiwi+1,wi+2,,wn)为目标函数独立训练,将训练得到的特征向量以拼接的形式实现双向编码。
  • GPT使用Transformer Decoder作为Transformer Block,以 P ( w i ∣ w 1 , w 2 , ⋯   , w i − 1 ) P(w_i|w_1, w_2, \cdots, w_{i-1}) P(wiw1,w2,,wi1)为目标函数进行训练,用Transformer Block取代LSTM作为特征提取器,实现了单向编码,是一个标准的预训练语言模型。
  • BERT与ELMo的区别在于使用Transformer Block作为特征提取器,加强了语义特征提取的能力;与GPT的区别在于使用Transformer Encoder作为Transformer Block,将GPT的单向编码改为双向编码。BERT舍弃了文本生成能力,换来了更强的语义理解能力。

将GPT结构中的Masked Multi-Head Attention层(参考文章《深入理解深度学习——注意力机制(Attention Mechanism):带掩码的多头注意力(Masked Multi-head Attention)》)替换成Multi-Head Attention层,即可得到BERT的模型结构,如下图所示。
在这里插入图片描述
在模型参数选择上,有两套大小不一致的模型。 L L L代表Transformer Block的层数, H H H代表特征向量的维数(此处默认Feed Forward层中的中间隐层的维数为 4 H 4H 4H), A A A表示Self-Attention的头数,参数的具体含义可以参考《深入理解深度学习——Transformer》系列文章,使用这三个核心参数基本可以定义BERT的量级:

  • BERT BASE : L = 12 , H = 768 , A = 12 \text{BERT}_{\text{BASE}}: L=12, H=768, A=12 BERTBASE:L=12,H=768,A=12:总参数量为1.1亿
  • BERT LARGE : L = 24 , H = 1024 , A = 16 \text{BERT}_{\text{LARGE}}: L=24, H=1024, A=16 BERTLARGE:L=24,H=1024,A=16:总参数量为3.4亿

BERT BASE \text{BERT}_{\text{BASE}} BERTBASE是为了与第一代GPT做对比而专门设计的,其参数量与GPT相当,此举的目的在于通过对比 BERT BASE \text{BERT}_{\text{BASE}} BERTBASE与第一代GPT在各项任务上的性能,证明双向编码比单向编码在语义理解方面更有优势,即量化BERT与GPT的核心差异所带来的影响。下图是BERT在GLUE测试任务中的测试结果,横向对比了ELMo与GPT的最优结果。
BERT在GLUE测试任务中的测试结果
可以看出,与ELMo相比,GPT在所有任务上的效果都有显著提升,这是使用Transformer Block取代LSTM作为特征提取器的结果。值得关注的是,相比GPT, BERT BASE \text{BERT}_{\text{BASE}} BERTBASE在所有任务上的效果都有显著提升(准确率平均提升了4.5%~7.0%),证明了与单向编码相比,双向编码在语义理解上具有极大的优势。不仅如此,与 BERT BASE \text{BERT}_{\text{BASE}} BERTBASE相比, BERT LARGE \text{BERT}_{\text{LARGE}} BERTLARGE在所有任务上的效果还有明显提升,在训练集资源受限的任务上尤为明显。有关模型大小与模型能力的对比,BERT的作者在三个任务上测试了不同参数量设置情况下BERT的性能表现,下图所示为不同规模的BERT在不同任务上的性能表现,随着BERT参数量的增大,模型在所有任务上的表现都有明显进步。
在这里插入图片描述
近年来,受限于可用于监督训练的带标签数据的规模,部分学者认为采用更大的模型无法得到更高的收益,而BERT的出现证明了预训练语言模型采用无监督训练和特定数据集微调训练的模式可以突破这一限制,即更大规模的预训练语言模型总是可以通过模型参数随机初始化和领域数据微调获得更好的性能。这也符合近年来预训练语言模型的参数规模爆发式增长的趋势,文章《深入理解深度学习——GPT(Generative Pre-Trained Transformer):GPT-3与Few-shot Learning》提到的具有1750亿参数的GPT-3便在这条路上走到了当时的极致,也确实取得了出乎意料的效果。而BERT是否能在未来以更大规模的模型颠覆自己创造的记录,也未可知。

参考文献:
[1] Lecun Y, Bengio Y, Hinton G. Deep learning[J]. Nature, 2015
[2] Aston Zhang, Zack C. Lipton, Mu Li, Alex J. Smola. Dive Into Deep Learning[J]. arXiv preprint arXiv:2106.11342, 2021.
[3] 车万翔, 崔一鸣, 郭江. 自然语言处理:基于预训练模型的方法[M]. 电子工业出版社, 2021.
[4] 邵浩, 刘一烽. 预训练语言模型[M]. 电子工业出版社, 2021.
[5] 何晗. 自然语言处理入门[M]. 人民邮电出版社, 2019
[6] Sudharsan Ravichandiran. BERT基础教程:Transformer大模型实战[M]. 人民邮电出版社, 2023
[7] 吴茂贵, 王红星. 深入浅出Embedding:原理解析与应用实战[M]. 机械工业出版社, 2021.

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

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

相关文章

软件架构模式—分层架构

这是软件架构模式博客系列第 2 章,我们将讨论分层架构模式。 分层架构模式是一种n层模式,其中组件按照水平层次进行组织。这是设计大多数软件的传统方法,旨在实现自我独立。这意味着所有组件之间相互连接,但彼此之间不相互依赖。…

测试体系与测试方案设计

如果我们想要测试一个系统,我们得先需要了解被测系统架构 业务架构:业务模型分析技术架构:技术组件、通讯协议分析数据架构:数据模型、数据存储引擎分析 电子商城 Mall 开源项目技术架构 经典技术架构 网关产品 Nginx Apache HttpdWeb 应用开发 Vue.js React移动应…

福州大学学报退稿率【爬虫+数据处理】

目录 一、爬虫 二、数据处理 2.1 历年投稿总数: 2.2 各稿件状态比例: 2.3 历年退稿率 三、总结(福州大学学报退稿率) 一、爬虫 从福州大学学报微信公众号可以发现稿件状态的查询接口, 根据测试可知稿件号由年份与当…

Linux共享内存

博客内容:共享内存 文章目录 一、认识共享内存结构二、如何创建共享内存?1.创建共享内存2.关联进程,取消进程3.释放共享内存 三、代码示例总结 一、认识共享内存结构 共享内存 共享内存指 (shared memory)在多处理器的计算机系统中&#xff…

新手速成!如何使用ChatGPT成为你的导师

1. 写在前面 最近我发现咱们的团队现在是人手ChatGPT,不光是我们团队,我整个行业的人都在用它解决生活跟工作中遇到的问题。可以看到的是大家也都是对它赞赏度很高 本文我将为大家介绍如何更加高效的使用ChatGPT提高工作效率,面向ChatGPT编程…

JavaScript高级学习总结

函数作用域 函数内部声明的变量,在函数外部无法被访问函数的参数也是函数内部的局部变量不同函数内部声明的变量无法互相访问函数执行完毕之后,函数内部的变量实际被清空了 块作用域 let声明的变量会产生块作用域,var不会产生块作用域cons…

QT +OpenSSL配置

QT OpenSSL配置 1 查看自己QT支持的OPenSSL版本号1.1 查看版本号1.2 是否配置了OPenSSL 2 安装OPenSSL2.1 下载已经编译好的库2.2 自己编译代码2.2.1 下载perl2.2.1 下载OPenSSL源码 1 查看自己QT支持的OPenSSL版本号 1.1 查看版本号 新建项目testOpenSSLpro文件中加入QT ne…

(贪心) 649. Dota2 参议院 ——【Leetcode每日一题】

❓ 649. Dota2 参议院 难度:中等 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过…

Debian11 dhclient 不自动执行问题

这两天用U盘安装Debian11,在”安装软件“一直提示失败,但可以跳过这一步继续往下安装,好在基本系统及grub能正常安装,最后系统也能正常起来了,但发现系统起来后没有ip地址,需要手动执行 dhclient 来获取ip。…

Java的第十二篇文章——集合

目录 第十二章 集合 学习目标 1. 集合框架的由来 2. 集合框架的继承体系 3. Collection接口 3.1 Collection接口的常用方法 4. Iterator接口 4.1 Iterator接口的抽象方法 4.2 获取迭代器接口实现类 4.3 迭代器的实现原理 4.4 并发修改异常 4.5 集合存储自定义对象并…

【Git常用命令及在IDEA中的使用】

Git常用命令及在IDEA中的使用 Git常用命令及在IDEA中的使用1 Git 概述1.1 Git 简介1.2 Git 下载与安装 2 Git 代码托管服务2.1 常用的Git 代码托管服务2.2 使用码云代码托管服务 3 Git 常用命令3.1 Git 全局设置3.2 获取 Git 仓库3.3 工作区、暂存区、版本库 概念3.4 Git工作区…

MyBatis面试题总结

1.概念/使用方法向的问题 1.1 什么是Mybatis? (1)Mybatis是一个半ORM框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。 (2&a…

​​​​SpringBoot 监控神器——Actuator 保姆级教程

pom.xml info beans conditions heapdump shutdown mappings threaddump loggers 端点 metrics 端点 自定义Endpoint 自定义监控端点常用注解 使用Filter对访问actuator做限制 Spring Boot Monitor做监控页面 SpringBoot自带监控功能Actuator,可以帮助…

Kubernetes学习笔记-kubernetes应用扩展(2)-使用kubernetes服务目录扩展kubernetes20230623

一、服务目录介绍 服务目录就是列出所有的服务的目录。用户可以浏览目录并自行设置目录中列出的服务实例,无须处理服务运行所需的pod、service、configmap和其他资源。这听起来和自定义网站资源很类似。 服务目录并不会为每种服务类型的api服务器添加自定义资源&a…

全栈开发实战那些事

文章目录 一个网站是怎么来的? Git篇隔离项目和原有Git工程联系Git冲突的原因通常有以下几种: IDEA篇IDEA常用操作Git可视化操作(提交代码前先pull更新merge最新版本一下再push,保证提交的最终项目是最新) IDEA中Git冲…

Jenkins 发送文件到远程服务器:Publish Over SSH 插件

Jenkins 发送文件到远程服务器:Publish Over SSH 插件 文章目录 Jenkins 发送文件到远程服务器:Publish Over SSH 插件一、Publish Over SSH 插件1、概述2、主要功能和特点3、插件主页4、安装 Publish Over SSH 插件5、配置远程主机 二、发送文件到远程主…

Python基础篇(七):面向对象的编程思想

面向对象 前言1. 面向对象编程思想1.1 面向对象的相关概念1.2 面向对象的三大特性 2. 类的定义2.1 使用class关键字定义类2.2 创建类对象并调用属性和方法 3.面向对象思想示例3.1 详细示例:图形类的设计3.2 基类 Shape3.3 子类 Circle3.4 子类 Rectangle3.5 使用图形…

【Java-SpringBoot+Vue+MySql】Day5-前端进阶

目录 一、Axios网络请求 中文文档: 安装: 导入: 使用方法: 基本语法: 生命周期函数: 二、前端路由VueRouter 视频:12.前端路由VueRouter_哔哩哔哩_bilibili 参考文档: 三、状态管理VueX …

Linux设备驱动程序(三)——字符驱动

文章目录 前言一、scull 的设计二、主设备号和次设备号1、设备编号的内部表达2、分配和释放设备编号3、主编号的动态分配 三、一些重要的数据结构1、文件操作(file_operation)2、文件结构(struct file)3、inode 结构 四、字符设备…

【软件设计师暴击考点】黄金五题套路拿

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:软件…