大型语言模型,第 1 部分:BERT

news2024/12/28 4:53:36

一、介绍

        2017是机器学习中具有历史意义的一年,当变形金刚模型首次出现在现场时。它在许多基准测试上都表现出色,并且适用于数据科学中的许多问题。由于其高效的架构,后来开发了许多其他基于变压器的模型,这些模型更专注于特定任务。

        其中一个模型是BERT。它主要以能够构建嵌入而闻名,这些嵌入可以非常准确地表示文本信息并存储长文本序列的语义含义。因此,BERT嵌入在机器学习中得到了广泛的应用。理解BERT如何构建文本表示至关重要,因为它为处理NLP中的大量任务打开了大门。

        在本文中,我们将参考原始的BERT论文,并查看BERT架构并了解其背后的核心机制。在第一节中,我们将对BERT进行高级概述。之后,我们将逐步深入了解其内部工作流程以及如何在整个模型中传递信息。最后,我们将学习如何微调BERT以解决NLP中的特定问题。

二、高级概述

Transformer的架构由两个主要部分组成:编码器和解码器。堆叠编码器的目标是为输入构造有意义的嵌入,以保留其主要上下文。最后一个编码器的输出将传递给所有尝试生成新信息的解码器的输入。

BERT是变压器的后继产品,继承了其堆叠式双向编码器。BERT中的大多数架构原理与原始变压器中的架构原理相同。

变压器架构

三、Bert版本

BERT有两个主要版本:基本版本和大型版本。它们的架构是完全相同的,除了它们使用不同数量的参数。总体而言,与BERT基础相比,BERT large需要调整的参数多3.09倍。

BERT基底和BERT大基的比较

四、双向表示

从BERT名称中的字母“B”开始,重要的是要记住BERT是一个双向模型,这意味着由于信息是双向传递的(从左到右和从右到左),它可以更好地捕获单词连接。显然,与单向模型相比,这会产生更多的训练资源,但同时会导致更好的预测准确性。

为了更好地理解,我们可以将BERT架构与其他流行的NLP模型进行比较。

比较来自 ogirinal 论文的 BERT、OpenAI GPT 和 ElMo 架构。作者采纳。

五、输入标记化

小说在官方论文中,作者使用术语“句子”来表示传递给输入的文本。为了指定相同的术语,在本系列文章中,我们将使用术语“序列”。这样做是为了避免混淆,因为“句子”通常意味着由一个点分隔的单个短语,并且由于在许多其他NLP研究论文中,术语“序列”在类似情况下使用。

在深入研究如何训练BERT之前,有必要了解它接受数据的格式。对于输入,BERT采用单个序列或一对序列。每个序列被拆分为令牌。此外,两个特殊令牌将传递给输入:

小说官方论文使用术语“句子”,它表示传递给BERT的输入序列,该序列实际上可以由几个句子组成。为简单起见,我们将遵循符号并在本文中使用相同的术语。

  • [CLS] — 在指示其开始的第一个序列之前传递。同时,[CLS] 还用于训练期间的分类目标(在以下部分中讨论)。
  • [SEP] — 在序列之间传递,以指示第一个序列的结束和第二个序列的开始。

传递两个序列使BERT可以处理输入包含一对序列的各种任务(例如问题和答案,假设和前提等)。

六、输入嵌入

标记化后,将为每个令牌构建一个嵌入。为了使输入嵌入更具代表性,BERT为每个令牌构造了三种类型的嵌入:

  • 令牌嵌入捕获令牌的语义含义。
  • 段嵌入具有两个可能的值之一,并指示令牌属于哪个序列。
  • 位置嵌入包含有关序列中令牌的相对位置的信息。

输入处理

对这些嵌入进行汇总,并将结果传递给BERT模型的第一个编码器。

七、输出

每个编码器将 n 个嵌入作为输入,然后输出相同数量的相同维度的已处理嵌入。最终,整个BERT输出还包含n个嵌入,每个嵌入对应于其初始令牌。

八、训练

        BERT培训包括两个阶段:

  1. 预培训。BERT在两个预测任务中对未标记的序列对进行训练:掩蔽语言建模(MLM)自然语言推理(NLI)。对于每对序列,模型对这两个任务进行预测,并根据损失值执行反向传播以更新权重。
  2. 微调。BERT使用预先训练的权重进行初始化,然后针对标记数据上的特定问题进行优化。

九、预培训

        与微调相比,预训练通常需要相当大比例的时间,因为模型是在大量数据语料库上进行训练的。这就是为什么存在许多预先训练模型的在线存储库,然后可以相对较快地对其进行微调以解决特定任务。

我们将详细研究BERT在预训练期间解决的两个问题。

9.1 遮罩语言建模

        作者建议通过在初始文本中屏蔽一定数量的标记并预测它们来训练BERT。这使BERT能够构建弹性嵌入,该嵌入可以使用周围的上下文来猜测某个单词,这也导致为遗漏的单词构建适当的嵌入。此过程的工作方式如下:

  1. 标记化后,随机选择15%的令牌进行屏蔽。然后,所选令牌将在迭代结束时进行预测。
  2. 所选令牌以以下三种方式之一替换:
    - 80% 的令牌由 [MASK] 令牌替换。
    示例:我买了一本书→买了一个[MASK]
    - 10%的代币被随机代币取代。
    示例:他正在吃一个水果→他正在抽一个水果
    - 10%的代币保持不变。
    示例:房子在我附近 → 房子在我附近
  3. 所有令牌都传递给BERT模型,该模型为其作为输入接收的每个令牌输出嵌入。

4. 与步骤 2 中处理的令牌对应的输出嵌入独立用于预测屏蔽的令牌。每个预测的结果是词汇表中所有标记的概率分布。

5. 交叉熵损失是通过将概率分布与真实掩蔽令牌进行比较来计算的。

6. 使用反向传播更新模型权重。

9.2 自然语言推理

对于此分类任务,BERT尝试预测第二个序列是否遵循第一个序列。整个预测是通过仅使用 [CLS] 令牌的最终隐藏状态的嵌入来进行的,该令牌应该包含来自两个序列的聚合信息。

与MLM类似,构造的概率分布(在本例中为二进制)用于计算模型的损失并通过反向传播更新模型的权重。

对于NLI,作者建议选择50%的序列对,这些序列在语料库中相互跟随(对)和50%的序列对,其中序列是从语料库中随机获取的(负对)。

伯特预培训

9.3 培训详情

根据该论文,BERT在BooksCorpus(800亿字)和英语维基百科(2,500M字)上进行了预训练。为了提取较长的连续文本,作者从维基百科中只阅读了忽略表格,标题和列表的段落。

BERT在256万个批次上训练,大小等于40个序列,相当于3亿个单词的3个epoch。每个序列最多包含 128(90% 的时间)或 512(10% 的时间)令牌。

根据原论文,训练参数如下:

  • 优化器:亚当(学习率 l = 1e-4,权重衰减 L₂ = 0.01,β₁ = 0.9,β₂ = 0.999,ε = 1e-6)。
  • 学习率预热在前 10 步内执行,然后线性降低。
  • 所有图层都使用压差 (α = 0.1) 图层。
  • 激活功能:格鲁。
  • 训练损失是平均MLM和平均下一句预测可能性的总和。

9.4 微调

一旦预训练完成,BERT就可以从字面上理解单词的语义含义,并构建几乎可以完全表示其含义的嵌入。微调的目标是逐步修改BERT权重以解决特定的下游任务。

十、数据格式

由于自我注意机制的稳健性,BERT可以很容易地针对特定的下游任务进行微调。BERT的另一个优点是能够构建双向文本表示。这提供了在处理对时发现两个序列之间正确关系的更高机会。以前的方法包括独立编码两个序列,然后对它们应用双向交叉注意力。BERT统一了这两个阶段。

根据某个问题,BERT接受多种输入格式。使用BERT解决所有下游任务的框架是相同的:通过将文本序列作为输入,BERT输出一组令牌嵌入,然后将其馈送到模型。大多数情况下,并非所有输出嵌入都使用。

让我们看一下常见问题以及通过微调BERT解决它们的方法。

句子对分类

句子对分类的目标是了解给定序列对之间的关系。大多数常见的任务类型是:

  • 自然语言推理:确定第二个序列是否遵循第一个序列。
  • 相似性分析:查找序列之间的相似程度。

Sentence pair classification

为了进行微调,两个序列都传递给BERT。根据经验,[CLS] 令牌的输出嵌入随后将用于分类任务。根据研究人员的说法,[CLS]令牌应该包含有关句子关系的主要信息。

当然,也可以使用其他输出嵌入,但在实践中通常会省略它们。

问答任务

问答的目的是在与特定问题对应的文本段落中找到答案。大多数时候,答案以两个数字的形式给出:通道的开始和结束令牌位置。

问答任务

对于输入,BERT接受问题和段落,并为它们输出一组嵌入。由于答案包含在段落中,因此我们只对与段落标记对应的输出嵌入感兴趣。

为了查找段落中开始答案标记的位置,计算每个输出嵌入与特殊可训练向量 Tstₐrt 之间的标量积。对于大多数情况下,当模型和向量 Tstₐrt 经过相应训练时,标量积应与相应令牌实际上是起始答案令牌的可能性成正比。为了规范化标量积,然后将它们传递给softmax函数,并且可以将其视为概率。与最高概率对应的令牌嵌入被预测为开始答案令牌。基于真实概率分布,计算损失值并执行反向传播。使用向量 Tₑnd 执行类似的过程来预测结束标记。

单句分类

与以前的下游任务相比,不同之处在于这里只传递了一个句子 BERT。此配置解决的典型问题如下:

  • 情感分析:了解一个句子是积极的态度还是消极的态度。
  • 主题分类:根据句子的内容将句子分类为几个类别之一。

单句分类

预测工作流与句子对分类相同:[CLS] 标记的输出嵌入用作分类模型的输入。

单句标记

命名实体识别(NER)是一个机器学习问题,旨在将序列的每个标记映射到相应的实体之一。

单句标记

为此,像往常一样计算输入句子标记的嵌入。然后,每个嵌入([CLS] 和 [SEP] 除外)都独立地传递给一个模型,该模型将它们中的每一个映射到给定的 NER 类(或者不是,如果不能)。

十一、特征提取

获取最后一个BERT层并将其用作嵌入并不是从输入文本中提取特征的唯一方法。事实上,研究人员完成了几个以不同方式聚合嵌入的实验,以解决CoNLL-2003数据集上的NER任务。为了进行实验,他们在应用分类层之前使用提取的嵌入作为随机初始化的双层 768 维 BiLSTM 的输入。

下图演示了嵌入(从BERT基中提取)的方式。如图所示,性能最高的方法是连接最后四个BERT隐藏层。

基于进行的实验,重要的是要记住,隐藏层的聚合是改善嵌入表示的潜在方法,以便在各种NLP任务上获得更好的结果。

左图显示了带有隐藏层的扩展BERT结构。右表说明了嵌入的构造方式以及通过应用相应策略获得的相应分数。

十二、将BERT与其他功能相结合

例如,有时我们不仅处理文本,还处理数字特征。构建可以合并来自文本和其他非文本特征的信息的嵌入是自然可取的。以下是建议的应用策略:

  • 文本与非文本功能的串联。例如,如果我们以文本形式处理有关人员的个人资料描述,并且还有其他单独的功能,例如他们的姓名或年龄,则可以以以下形式获得新的文本描述:“我的名字是<姓名>。<个人资料描述>。我<>”。最后,这样的文本描述可以输入到BERT模型中。
  • 嵌入与特征的串联。如上所述,可以构建BERT嵌入,然后将它们与其他功能连接起来。配置中唯一更改的是下游任务的分类模型现在必须接受更高维度的输入向量。

    维亚切斯拉夫·叶菲莫夫

    十三、结论

        在本文中,我们深入探讨了BERT训练和微调的过程。事实上,这些知识足以解决NLP中的大多数任务,值得庆幸的是,BERT允许几乎完全将文本数据合并到嵌入中。

        最近,出现了其他类似BERT的模型(SBERT,RoBERTa等)。甚至还有一个名为“BERTology”的特殊研究领域,它深入分析BERT功能,以推导出新的高性能模型。这些事实强化了这样一个事实,即BERT指定了机器学习的一场革命,并使NLP的显着进步成为可能

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

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

相关文章

Nginx详解 五:反向代理

文章目录 1. 正向代理和反向代理1.1 正向代理概述1.1.1 什么是正向代理1.1.2 正向代理的作用1.1.3 正向代理的基本格式 1.2 反向代理概述1.2.1 什么是反向代理1.2.2 反向代理可实现的功能1.2.3 反向代理的可用模块 2. 配置反向代理2.1 反向代理配置参数2.1.1 proxy_pass2.1.2 其…

(其他) 剑指 Offer 65. 不用加减乘除做加法 ——【Leetcode每日一题】

❓ 剑指 Offer 65. 不用加减乘除做加法 难度&#xff1a;简单 写一个函数&#xff0c;求两个整数之和&#xff0c;要求在函数体内不得使用 “”、“-”、“*”、“/” 四则运算符号。 示例: 输入: a 1, b 1 输出: 2 提示&#xff1a; a, b 均可能是负数或 0结果不会溢出 …

在 Windows 上远程对 Linux 进行抓包

文章目录 名词解释事先准备下载安装 Wireshark下载运行 libpcap设置 libpcap 环境变量在 Wireshark 中远程连接 libpcap 笔者的运行环境&#xff1a;&#xff08;成功&#xff09; 本地客户端&#xff1a; Windows&#xff1a; Windows 10 教育版&#xff08;本文&#xff09; …

基于STM32设计的生理监测装置

一、项目功能要求 设计并制作一个生理监测装置&#xff0c;能够实时监测人体的心电图、呼吸和温度&#xff0c;并在LCD液晶显示屏上显示相关数据。 随着现代生活节奏的加快和环境的变化&#xff0c;人们对身体健康的关注程度越来越高。为了及时掌握自身的生理状况&#xff0c…

Hololens2部署很慢可能是unity工程选择不对

这样就很快&#xff0c;几分钟就完成了。&#xff08;虽然又遇到新问题了&#xff09; 第一次使用时如下&#xff0c;直接运行了一个多小时还没有完

虚拟专用网络——VPN

VPN的英文全称是"Virtual Private Network"&#xff0c;意为"虚拟专用网络"。它的本质是一种特殊的加密通讯协议&#xff0c;可以在不同地点的企业内部网之间建立一条专用的通讯线路&#xff0c;就像真正铺设了一条专线一样&#xff0c;但无需真正的物理线…

【图卷积神经网络】1-入门篇:为什么使用图神经网络

在本节中,将涵盖以下主要内容: 为什么使用图?为什么学习图?为什么使用图神经网络?为什么使用图? 首先需要回答的问题是:为什么对图感兴趣?图论是对图进行数学研究的学科,它已经成为理解复杂系统和关系的基本工具。图是一种将节点(也称为顶点)和连接这些节点的边的集…

go语言的高级特性

go语言调用C语言 go tool cgo main.go

MySQL误删数据 回滚

前言 生产环境数据库不允许删除表&#xff0c;可以将表修改成 XXX_to_delete 如果误删简单数据&#xff0c;可以考虑使用binlog恢复 一、查看命令 1.查看binlog是否开启 show variables like log_bin;切换到MySQL安装目录,查看mysqlbinlog日志文件 2.查看所有 binlog 日志…

网络技术学习十二:子网划分

子网划分 A类地址 ⑴ A类地址第1字节为网络地址&#xff0c;其它3个字节为主机地址。另外第1个字节的最高位固定为0。 ⑵ A类地址范围&#xff1a;1.0.0.1到126.255.255.254。 ⑶ A类地址中的私有地址和保留地址&#xff1a; ①10.0.0.0到10.255.255.255是私有地址&#xff0…

AIGC - 生成模型及其应用

AIGC - 生成模型及其应用 0. 前言1. 生成模型2. 生成模型与判别模型的区别2.1 模型对比2.2 条件生成模型2.3 生成模型的发展2.4 生成模型与人工智能 3. 生成模型示例3.1 简单示例3.2 生成模型框架 4. 表示学习5. 生成模型与概率论6. 生成模型分类小结 0. 前言 生成式人工智能 …

知识大杂烩(uniapp)

首先声明&#xff1a;不敢保证都管用&#xff0c;这是我自己实践得来的。 box-shadow: 这段 CSS 样式代码用于创建一个阴影效果&#xff0c;它是通过 box-shadow 属性来实现的。让我解释一下这段代码的含义&#xff1a; - box-shadow: 这是 CSS 的属性&#xff0c;用于添加阴影…

vue.js+nodejs家庭个人理财收支管理系统5x6nf

本收支管理系统以vue.js作为框架&#xff0c;nodejs语言&#xff0c;B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块&#xff1a;用户管理、收入分类、支出分类、每日收入、每日支出等模块。 本文的组织结构如下&#xff1a; 1、绪论。综述了本文的研究背景…

Python之线性数据结构

Python之线性数据结构 线性数据结构 线性表 线性表(简称表)&#xff0c;是一种抽象的数学概念&#xff0c;是一组元素的序列的抽象&#xff0c;它由有穷个元素组成(0 个或任意个)顺序表:使用一大块连续的内存顺序存储表中的元素&#xff0c;这样实现的表称为顺序表&#xff…

优惠来袭,工业树莓派特惠季火爆进行中

为回馈各位新老用户一直以来的支持和信任&#xff0c;虹科工业树莓派特惠季强势来袭&#xff01;9月1日至12月31日期间&#xff0c;订购虹科工业树莓派RevPi Core S或RevPi Connect S型号产品&#xff0c;满足活动条件即可享超值优惠折扣&#xff01;详细活动可扫描海报下方二维…

CSS 的 Float

文档流 将窗体自上而下分成一行一行&#xff0c;并在每行中按从左至右的挨次排放元素&#xff0c;即为文档流。 文档流是 HTML 页面的底层结构&#xff0c;HTML 页面创建的元素默认都在文档流中。 块级元素 块级元素在文档流中自上向下排列&#xff08;垂直方向排列&#xf…

2023年非证券类投资银行业发展报告

第一章 行业概况 非证券投资银行业是一个专门为公司、政府和高净值个人提供金融服务的行业&#xff0c;与传统的证券投资银行不同&#xff0c;其主要业务不涉及证券交易&#xff0c;而是注重为客户提供咨询服务、融资和投资管理等服务。 非证券投资银行通常涉及的业务领域包括…

电脑同时连接有线和无线网络怎么设置网络的优先级

电脑同时连接有线和无线网络怎么设置网络的优先级&#xff1a; 我们知道在 笔记本电脑系统 中&#xff0c;可以通过有线或无线网络进行联网。如果电脑在有线网络和无线网络同时存在的情况&#xff0c;应该怎么设置有线网络优先连接呢?对此我们提供下面的方法可以让电脑在有Wi…

【ES】笔记-Class类剖析

Class Class介绍与初体验ES5 通过构造函数实例化对象ES6 通过Class中的constructor实列化对象 Class 静态成员实例对象与函数对象的属性不相通实例对象与函数对象原型上的属性是相通的Class中对于static 标注的对象和方法不属于实列对象&#xff0c;属于类。 ES5构造函数继承Cl…

力扣373. 查找和最小的 K 对数字 优先队列法

题目 给定两个以 非递减顺序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。 定义一对值 (u,v)&#xff0c;其中第一个元素来自 nums1&#xff0c;第二个元素来自 nums2 。 请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (uk,vk) 。 示例 1: 输入: nums1 [1,7,11], …