经典大语言模型解读(1):BERT——基于双向Transformer的预训练语言模型

news2024/9/21 0:46:49

论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

前言

BERT(Bidirectional Encoder Representation from Transformer)是Google于2019年提出的预训练语言模型。与寻常的Transformer架构不同,该模型由双向Transformer编码器组成,双向编码使得BERT能够从左到右和从右到左编码上下文。BERT通过无标签语料数据,在精心设计的预训练任务**掩码语言模型(Masked LM)下一句预测(Next Sentence Prediction, NSP)**的指导下进行预训练,所得到的模型具备出色的泛化能力。在此基础上,仅需为特定的下游任务定制输出层,经过简单的微调,即可获得优异的效果。

下文将重点介绍BERT的模型架构以及相应的预训练及微调过程。

BERT架构

正如前言中所介绍的那样,BERT基于双向Transformer编码器构成,关于Transformer若有不熟悉的可以去阅读一下博主之前的一篇文章《大模型背后的“英雄”——Transformer》。BERT使用的Transformer层使用了双向自注意力机制

L L L表示层数, H H H表示隐藏层维度大小, A A A表示多头自注意力机制的head数,作者提出了两个版本的BERT模型:

  • BERT BASE \textbf{BERT}_{\textbf{BASE}} BERTBASE L = 12 L=12 L=12 H = 768 H=768 H=768 A = 12 A=12 A=12,总参数量 110 M 110\text{M} 110M
  • BERT LARGE \textbf{BERT}_{\textbf{LARGE}} BERTLARGE L = 24 L=24 L=24 H = 1024 H=1024 H=1024 A = 16 A=16 A=16,总参数量 340 M 340\text{M} 340M

输入表示

为了使BERT可以处理各种下游任务,BERT的输入可以是单个句子或句子对(<Question, Answer>)组成的序列(sequence)。

序列通常以[CLS]开头,当序列中包含多个句子时,使用[SEP]作为分隔,并为每个标记中添加一个学习到的嵌入,以指示它属于句子A还是句子B。序列的最终编码还需要加上类似Transformer的位置编码。下图便展示了Transformer的输入表示,该图中 E A E_A EA E B E_B EB便是用来指示是句子A还是句子B的嵌入。

BERT-Input-Representation

BERT的预训练与微调

BERT模型的学习过程可以下图所示的两个过程,预训练与微调。

BERT-Architecture

预训练

BERT定义了两个无监督任务来进行预训练:Masked LMNext Sentence Prediction

Masked LM

深层双向模型严格地比从左到右或从右到左的浅层模型表达能力更强,但双向将会使得每个词间接的看到自己。为此,BERT中采用了随机掩去(mask)输入中一定比例词,然后预测这些被mask的词。该任务也被称之为完形填空(cloze task)

MLM也存在一个缺陷,在预训练的时候被mask的词被[MASK]替代,但是在微调的时候是不存在[MASK]的,即预训练与微调存在不一致性。为此,在mask词的过程中,作者并没有都用[MASK]来替代。具体来说,假定序列中第 i i i个词被选择,那么它有:

  • 80 % 80\% 80%的概率被[MASK]替代。
  • 10 % 10\% 10%的概率被随机的词替代。
  • 10 % 10\% 10%的概率保持不变。

Next Sentence Prediction

在许多下游任务如问答(Question Answering, QA)和自然语言推断(Natural Language Inference, NLI)中,句子之间的关系很重要。为了理解句子之间的关系,BERT预先训练了一个二值化的下一个句子预测任务。具体来说每个训练样本选择A和B时,有 50 % 50\% 50%的概率B是A的下一个句子(标记为IsNext),有 50 % 50\% 50%的概率是语料中随机挑选的句子(标记为NotNext)。

微调

在该过程中,只需将特定于任务的输入和输出插入到BERT中,并对所有参数进行端到端的微调。

整个微调过程的学习代价特别小。

结语

以上便是本文的全部内容,若是觉得不错可以点个攒或关注一下,你们的支持是博主更新的不竭动力。若是有任何问题也敬请批评指正。

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

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

相关文章

eval和长度限制

目录 源码 解决方案 方法一 方法二 方法三 源码 <?php $param $_REQUEST[param]; if(strlen($param)<17 && stripos($param,eval) false && stripos($param,assert) false) {eval($param); } ?> 限制条件&#xff1a; 传入的参数长度不能…

Go语言+Vue3开发前后端后台管理系统实战 用户管理的前端界面和表结构分析

首页&#xff1a; 用户管理界面&#xff1a; 到这一步以后来看一下后端代码的表结构是如何设计的&#xff1a; 后端代码中&#xff0c;使用的操作MySQL的技术是gorm&#xff1a; gorm.io/gorm v1.25.5其中&#xff0c;用户表的定义位置如下&#xff1a; 此时的完整代码如…

C++虚函数习题

#include <iostream>using namespace std;class Animal { public:Animal() {}virtual void perform()0; };class Lion:public Animal { public:Lion() {}void perform(){cout << "狮子会吃小朋友&#xff01;&#xff01;&#xff01;快跑&#xff01;&#x…

设计模式(1)创建型模式和结构型模式

1、目标 本文的主要目标是学习创建型模式和结构型模式&#xff0c;并分别代码实现每种设计模式 2、创建型模式 2.1 单例模式&#xff08;singleton&#xff09; 单例模式是创建一个对象保证只有这个类的唯一实例&#xff0c;单例模式分为饿汉式和懒汉式&#xff0c;饿汉式是…

IP问题总结

IP基础知识 IP 在 TCP/IP 参考模型中处于第三层&#xff0c;也就是⽹络层。 ⽹络层的主要作⽤是&#xff1a;实现主机与主机之间的通信&#xff0c;也叫点对点&#xff08;end to end&#xff09;通信。 1.⽹络层与数据链路层有什么关系呢&#xff1f; 其实很容易区分&#…

eNSP 华为浮动路由

R1&#xff1a; <Huawei>system-view [Huawei]sysname R1 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 172.16.1.1 24 [R1-GigabitEthernet0/0/0]int g0/0/1 [R1-GigabitEthernet0/0/1]ip add 10.10.1.1 24 [R1-GigabitEthernet0/0/1]quit [R1]vlan 10 //e口是…

使用docker搭建aria2-pro+ariang并在alist中配置

一、安装aria2-pro 1.创建映射目录 # 配置目录 mkdir -p /usr/local/docker/aria2/config # 下载目录 mkdir -p /share_root/download-aria22.创建容器 docker run -d \--name aria2-pro \--restart unless-stopped \--log-opt max-size1m \--network host \-e PUID$UID \-e …

【秋招笔试】8.12-4399秋招(第一套)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

全网最详细HAProxy入门小知识

目录 一. 负载均衡 负载均衡的意义&#xff1a; 负载均衡的类型&#xff1a; 二. HAProxy 简介 HAProxy 的特点&#xff1a; 社区版和企业版&#xff1a; 三. HAProxy 的安装和服务信息 1、实验环境 1&#xff09;安装并配置 Nginx 2&#xff09;在客户端测试 2、安装…

【项目实战】C++视频共享点播系统

目录 一、项目介绍 1.1 对视频共享点播系统的认识 1.2服务端程序负责功能 1.3 服务端功能模块划分 1.4 项目界面演示 1.5预备知识 二.环境搭建 2.1 安装 Jsoncpp 库 2.1.1 使用jsoncpp 2.2 引入httplib库 2.2.1 安装Git&#xff08;如果你的系统尚未安装Git&#xf…

基于Hadoop的共享单车分布式存储与计算

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍研究背景研究目的和意义国内外研究现状总体研究思路数据可视化每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 共享单车的普及带…

Elasticsearch:使用 ES|QL 进行地理空间搜索

作者&#xff1a;来自 Elastic Craig Taverner 多年来&#xff0c;Elasticsearch 一直具有强大的地理空间搜索和分析功能&#xff0c;但其 API 与典型的 GIS 用户习惯的 API 截然不同。在过去的一年中&#xff0c;我们添加了 ES|QL 查询语言&#xff0c;这是一种管道查询语言&a…

React原理之React整体渲染流程

前置知识&#xff1a;深度优先搜索(DFS)、Fiber 节点 在上一篇 React原理篇之 React 整体架构解读中&#xff0c;提到了 Fiber 架构中的几个核心概念&#xff1a; Scheduler&#xff08;调度器&#xff09;&#xff1a;根据任务的优先级安排任务执行顺序。Reconciler&#xff…

CUDA-MODE 第一课课后实战(下)

我的课程笔记&#xff0c;欢迎关注&#xff1a;https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode CUDA-MODE 第一课课后实战&#xff08;下&#xff09; Nsight Compute Profile结果分析 继续对Nsight Compute的Profile结果进行分析&#xff0…

PyQT 串口改动每次点开时更新串口信息

class MainWindow(QWidget, Ui_Form):def __init__(self):super().__init__(parentNone)self.setupUi(self)self.comboBox.installEventFilter(self) # 加载事件过滤器self.comboBox.addItems(get_ports())def eventFilter(self, obj, event): # 定义事件过滤器if isinstance(o…

前端容器化部署:解决重启容器时的静态资源丢失问题

文章目录 什么是前端容器化&#xff1f;重启容器时静态资源丢失的问题解决静态资源丢失的方案1. 使用持久化卷创建和挂载卷使用Docker Compose定义卷 2. 使用对象存储将静态资源上传到对象存储 3. 使用构建时持久化使用CI/CD管道 4. 使用动态加载和缓存使用浏览器缓存使用服务端…

Java 8日期时间API革新:从Date到LocalDate、LocalTime与LocalDateTime的转型与优势解析

文章目录 前言一、基础介绍1.Date2.LocalDate3.LocalTime4.LocalDateTime 二、区别三、推荐场景四、推荐原因总结 前言 在Java的发展历程中&#xff0c;日期和时间的处理一直是开发者们关注的焦点。从早期的java.util.Date类到java.util.Calendar接口&#xff0c;虽然为日期时间…

Linux从0到1——进程池

Linux从0到1——进程池 1. 进程池的概念2. 进程池实现思路3. 进程池的代码实现3.1 创建管道&#xff0c;创建子进程3.2 封装任务3.3 Work接口3.4 发送任务3.5 回收资源&#xff0c;关闭管道&#xff08;重点&#xff09;3.6 改造CreatChannels接口 4. 完整代码 1. 进程池的概念…

数据结构面试-核心概念-问题理解

目录 1.数据结构及其分类 2.时间复杂度与空间复杂度及大O表示法 3.循环队列及其判断队空和队满的方法 4.栈与队列在计算机系统中的应用 5.串的模式匹配算法 6.线索二叉树、二叉搜索树、平衡二叉树 7.哈夫曼树与哈夫曼编码 8.DFS与BFS 9.最小生成树及其构建算法 10.最短…

谭晓生解读:AI如何重塑网络安全的未来?

导语 | 当前&#xff0c;对网络安全而言&#xff0c;每一次新的信息技术浪潮都蕴含着巨大机会&#xff0c;同时也意味着巨大的挑战。大模型的发展&#xff0c;是带来了更大的AI安全风险&#xff0c;还是将赋能提升网络安全呢&#xff1f;网络安全正在迎来一场重大范式转移&…