来自Transformers的双向编码器表示(BERT) 通俗解释

来自Transformers的双向编码器表示(BERT)

目录

      • 1. 从上下文无关到上下文敏感
      • 2. 从特定于任务到不可知任务
      • 3. BERT:把两个最好的结合起来
      • 4. BERT的输入表示
      • 5. 掩蔽语言模型(Masked Language Modeling)
      • 6. 下一句预测(Next Sentence Prediction, NSP)

1. 从上下文无关到上下文敏感

早期的词嵌入模型,如word2vec和GloVe,会将同一个词在不同上下文中的表示设定为相同。这就导致了一个问题:当同一个词在不同的句子中有不同的意思时,这些模型无法区分。例如,“crane”在“a crane is flying”(一只鹤在飞)和“a crane driver came”(一名吊车司机来了)中的意思是完全不同的。

为了克服这个问题,出现了“上下文敏感”词嵌入模型。这些模型会根据词的上下文来调整词的表示,使得相同的词在不同句子中的表示可以有所不同。比如ELMo模型会根据句子的整体结构来调整每个词的表示,使其更加贴合具体的语境。

2. 从特定于任务到不可知任务

ELMo虽然改进了词嵌入,使其上下文敏感,但它仍然需要为每个具体的自然语言处理任务设计一个特定的模型架构。这就意味着在解决不同的任务时,仍然需要大量的定制化工作。

为了简化这一过程,GPT(生成式预训练模型)被提出。GPT使用了通用的模型架构,可以应用于各种自然语言处理任务,而不需要为每个任务设计一个特定的模型。这种模型在预训练阶段学习了大量的语言知识,在应用于具体任务时只需要做少量的调整即可。

然而,GPT有一个缺点,它只能从左到右进行语言建模,无法同时考虑词的左右上下文。

3. BERT:把两个最好的结合起来

BERT模型结合了ELMo和GPT的优点,既能够进行上下文敏感的双向编码,又不需要为每个任务设计特定的模型架构。BERT使用了Transformer编码器,可以同时考虑词的左右上下文,从而获得更准确的词表示。在应用于具体任务时,BERT模型只需要做少量的架构调整,并且可以微调所有的参数,以适应不同的任务需求。

BERT的出现大大简化了自然语言处理任务的模型设计过程,并且在多个任务上都取得了显著的性能提升。

BERT的贡献与任务分类
BERT提升了自然语言处理中的11种任务水平,这些任务可以归类为四大类:

  1. 单文本分类:例如情感分析,就是判断一段文本是正面的还是负面的。
  2. 文本对分类:例如自然语言推断,就是判断两段文本之间的关系。
  3. 问答:例如从一段文本中找出问题的答案。
  4. 文本标记:例如命名实体识别,就是识别文本中的人名、地名等特定信息。

BERT与ELMo和GPT一样,都是2018年提出的。这些模型通过预训练一种强大的语言表示方式,彻底改变了自然语言处理的解决方案。它们的概念虽然简单,但在实际应用中效果非常强大。

4. BERT的输入表示

在自然语言处理中,有的任务(如情感分析)只需要输入一段文本,而有的任务(如自然语言推断)需要输入两段文本。BERT对这两种输入方式进行了明确的表示:

  • 单文本输入:BERT输入序列包含一个特殊标记<cls>,然后是文本序列的标记,最后是一个特殊分隔标记<sep>。例如,对于“Hello, world!”输入序列为:<cls> Hello , world ! <sep>

  • 文本对输入:BERT输入序列包含一个特殊标记<cls>,然后是第一个文本序列的标记,接着是一个分隔标记<sep>,再接着是第二个文本序列的标记,最后再加一个分隔标记<sep>。例如,对于“Hello, world!”和“How are you?”,输入序列为:<cls> Hello , world ! <sep> How are you ? <sep>

为了区分文本对,BERT使用了片段嵌入。对于第一个文本序列,使用片段嵌入\mathbf{e}_A;对于第二个文本序列,使用片段嵌入\mathbf{e}_B。如果只有一个文本输入,就只使用\mathbf{e}_A。

在BERT的预训练中,有两个主要任务:掩蔽语言模型(Masked Language Modeling,MLM)和下一句预测(Next Sentence Prediction)。我们先来详细解释掩蔽语言模型任务。

5. 掩蔽语言模型(Masked Language Modeling)

基本概念

语言模型通常使用前面的词(左侧上下文)来预测下一个词元。BERT的掩蔽语言模型任务的目标是为了实现双向编码(同时利用左侧和右侧的上下文)来预测每个词元。为此,BERT会随机选择一些词元进行掩蔽,并尝试通过双向上下文来预测这些掩蔽的词元。

掩蔽策略

在BERT的预训练过程中,15%的词元会被随机选择进行掩蔽。为了确保模型在微调时能够适应真实情况,BERT在预训练中采用了三种不同的方法来处理这些被掩蔽的词元:

  1. 80%的时间,用特殊的“”词元替换。例如,句子“this movie is great”会变成“this movie is ”。
  2. 10%的时间,用随机词元替换。例如,句子“this movie is great”会变成“this movie is drink”。
  3. 10%的时间,词元保持不变。例如,句子“this movie is great”依然是“this movie is great”。

这种处理方式有两个好处:

  • 减少偏差:模型不会仅仅依赖掩蔽词元来进行训练,因为并不是所有的掩蔽词元都用“”替换。
  • 增强鲁棒性:在训练中引入噪声(例如用随机词元替换),可以使模型在实际应用中更加稳健。

预测掩蔽词元

为了预测被掩蔽的词元,BERT使用了一个单隐藏层的多层感知机(MLP)。这个MLP接收BERT编码器的输出和需要预测的词元位置,并输出这些位置上的预测结果。具体来说:

  • 输入:来自BERT编码器的表示和掩蔽词元的位置。
  • 输出:这些位置上预测的词元。

计算损失

通过预测的结果(即每个掩蔽位置上的预测词元)和真实标签,我们可以计算交叉熵损失。交叉熵损失衡量了预测值与实际标签之间的差距,是训练语言模型时常用的损失函数。

掩蔽语言模型任务通过随机掩蔽部分词元,并利用双向上下文来预测这些掩蔽的词元,从而使BERT模型能够更好地理解和生成自然语言。通过多种掩蔽策略,模型在训练中引入了一定的噪声,增强了模型的泛化能力,使其在处理实际任务时更加稳健。

6. 下一句预测(Next Sentence Prediction, NSP)

尽管掩蔽语言建模(Masked Language Modeling, MLM)可以帮助模型理解每个单词的上下文,但它不能直接帮助模型理解两个句子之间的逻辑关系。为了解决这个问题,BERT在预训练过程中还引入了一个二分类任务——下一句预测(NSP)。

NSP 任务的原理

在NSP任务中,模型需要判断两个给定的句子是否是连续的。具体来说:

  1. 标签为“真”的句子对:有一半的句子对确实是连续的,即第二个句子是第一个句子的直接后续。
  2. 标签为“假”的句子对:另一半的句子对是随机生成的,第二个句子是从语料库中随机抽取的,与第一个句子没有直接关系。

NSP 类的实现

为了实现NSP任务,BERT使用了一个简单的多层感知机(MLP)来进行二分类。NSP类的核心部分是一个线性层,它接受输入并输出两个值,分别表示两个句子是连续的(标签为“真”)和不是连续的(标签为“假”)。

特殊词元 <cls> 的作用

在BERT模型中,特殊词元<cls>被用于总结两个输入句子的整体信息。通过自注意力机制,<cls>词元的表示已经编码了输入的两个句子的所有信息。因此,我们可以直接使用编码后的<cls>词元的表示作为输入,来进行下一句预测。

计算二分类交叉熵损失

为了评估NSP任务的表现,我们使用二分类交叉熵损失函数来计算预测结果与真实标签之间的差距。这种损失函数会计算每个预测结果与对应真实标签之间的误差,然后对这些误差进行平均,以获得整体的损失值。

预训练语料库

BERT的预训练是在两个大规模的语料库上进行的:

  1. 图书语料库:包含大约8亿个单词。
  2. 英文维基百科:包含大约25亿个单词。

这些庞大的语料库为BERT模型提供了丰富的训练数据,使得模型在处理各种自然语言处理任务时具备强大的理解能力。

通过结合MLM和NSP两个预训练任务,BERT模型能够同时理解单词的上下文信息和句子之间的逻辑关系。这种双重训练方式使得BERT在许多自然语言处理任务中表现出色。MLM任务帮助模型更好地理解单词的含义,而NSP任务则帮助模型理解句子之间的关系。这两种任务的结合,使得BERT在语言理解方面达到了前所未有的高度。

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

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

相关文章

Sui主网升级至V1.28.4版本

Sui主网现已升级至V1.28.4版本&#xff0c;同时Sui协议升级至51版本。其他升级要点如下所示&#xff1a; #18536 将所有可能的connect_lazy错误推迟到请求时间处理。 #18206 明确将每轮领导者人数设置为1&#xff0c;以支持Mysticeti提交。 #17868 引入新功能标志和协议配…

html 特效 学习 日志 2024/7/21 23:58

一.女友相册 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>女友相册html代码</title><s…

MyBatis:高级标签使用技巧的详细指南

请关注微信公众号&#xff1a;拾荒的小海螺 博客地址&#xff1a;http://lsk-ww.cn/ 1、简述 MyBatis 是一个优秀的持久层框架&#xff0c;提供了简单和灵活的 SQL 映射功能。除了基础的查询、插入、更新和删除操作外&#xff0c;MyBatis 还提供了一些高级标签&#xff0c;帮…

SQL 简单查询

目录 一、投影查询 1、指定特定列查询 2、修改返回列名查询 3、计算值查询 二、选择查询 1、使用关系表达式 2、使用逻辑表达式 3、使用 BETWEEN关键字 4、使用 IN关键字 5、使用 LIKE关键字 6、使用 IS NULL/ NOT NULL关键字 7、符合条件查询 三、聚合函数查询 一…

Docker_一刀流_好用、好玩还方便_(持续更新)

Docker 简介一、镜像和容器的概念镜像&#xff08;Image&#xff09;容器&#xff08;Container&#xff09;镜像和容器的关系 宿主机二、Dockerfile2.1 什么是Dockerfile2.2 Dockerfile中的常见指令2.3Dockerfile实例2.4 详细扩展 三、镜像3.1 镜像的创建3.2对于镜像的一些常用…

知识表示 | 利用 Protégé 软件构建小型本体

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在利用 Protg 软件构建小型本体&#xff0c;探索本体建模的实际应用&#xff0c;特别是应用本体与上层本体之间的关系继承与映射。我们将重点理解应用本体如何继承上层本体的关系&#xff0c;以及如何通过推理机制揭示实…

一起搭WPF界面之MVVM架构的简单搭建

一起搭WPF界面之MVVM架构的简单搭建 1 前言2 创建项目2.1新建项目2.2WPF2.3创建完成 3 MVVM划分3.1 划分逻辑3.2文件夹创建3.3文件创建3.3.1 Views——可在主界面的基础上&#xff0c;划分多个用户控件模块3.3.2 ViewModels——创建数据结构存放的cs文件3.3.3 Models——创建处…

ANY、ALL 和 SOME关键字的用法

前言 SOME、ANY、ALL是一种逻辑运算符&#xff0c;作用是将子查询返回的单列值的集合与查询的单个值作比较。SOME、ANY、ALL前面需跟比较运算符&#xff08;>&#xff0c;<&#xff0c;>&#xff0c;<&#xff0c;&#xff0c;<>&#xff09;。这里只有当子查…

网络安全入门教程(非常详细)从零基础入门到精通_网路安全 教程

前言 1.入行网络安全这是一条坚持的道路&#xff0c;三分钟的热情可以放弃往下看了。2.多练多想&#xff0c;不要离开了教程什么都不会了&#xff0c;最好看完教程自己独立完成技术方面的开发。3.有时多百度&#xff0c;我们往往都遇不到好心的大神&#xff0c;谁会无聊天天给…

用神经网络求解微分方程

微分方程是物理科学的主角之一&#xff0c;在工程、生物、经济甚至社会科学中都有广泛的应用。粗略地说&#xff0c;它们告诉我们一个量如何随时间变化&#xff08;或其他参数&#xff0c;但通常我们对时间变化感兴趣&#xff09;。我们可以了解人口、股票价格&#xff0c;甚至…

黑龙江等级保护测评深度解析

一、黑龙江等级保护测评概述 黑龙江等级保护测评&#xff08;以下简称“等保测评”&#xff09;是一项针对信息系统安全等级保护的综合性评估活动&#xff0c;旨在确保信息系统符合国家网络安全等级保护制度的要求&#xff0c;保障信息系统的安全稳定运行。 二、等保测评的重…

艺术成分很高的完全自定义的UITabBar(很简单)

引言 在iOS应用开发中&#xff0c;UITabBar是一个非常场景且重要的UI组件。系统为我们提供的UITabBar虽然功能强大&#xff0c;但是在某些情况下&#xff0c;它的标准样式并不能满足我们特定的设计需求&#xff0c;它的灵活性也有一些局限。为了打造更具个性化好的用户友好的交…

显卡驱动程序下载失败的原因及对策

在数字时代&#xff0c;显卡作为电脑的心脏部件之一&#xff0c;其驱动程序的正常运行是保证图形处理性能的关键。然而&#xff0c;不少用户在尝试下载显卡驱动程序时遭遇失败&#xff0c;这不仅影响了日常使用体验&#xff0c;还可能埋下系统不稳定的风险。本文将深入探讨显卡…

黑龙江网络安全等级保护测评策略概述

一、简介 黑龙江省网络安全等级保护测评策略是为了保障信息系统安全稳定运行&#xff0c;根据《网络安全法》和相关国家标准制定的综合性安全评估和加固过程。该策略不仅要求企业和机构明确自身信息系统的安全等级&#xff0c;还指导其实施相应的技术防护与管理措施&#xff0…

算法学习4——动态规划

动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;是一种用于解决具有重叠子问题和最优子结构性质的问题的算法设计技术。它通过将复杂问题分解为更小的子问题&#xff0c;并保存子问题的解来避免重复计算&#xff0c;从而提高算法的效率。 基本思想 动…

Mamba中的Mamba:在标记化Mamba模型中的集中式Mamba跨扫描高光谱图像分类

摘要 https://arxiv.org/pdf/2405.12003 高光谱图像&#xff08;HSI&#xff09;分类在遥感&#xff08;RS&#xff09;领域至关重要&#xff0c;尤其是随着深度学习技术的不断进步。顺序模型&#xff0c;如循环神经网络&#xff08;RNNs&#xff09;和Transformer&#xff0…

接近50个实用编程相关学习资源网站

Date: 2024.07.17 09:45:10 author: lijianzhan 编程语言以及编程相关工具等实用性官方文档网站 C语言文档&#xff1a;https://learn.microsoft.com/zh-cn/cpp/c-languageMicrosoft C、C和汇编程序文档&#xff1a;https://learn.microsoft.com/zh-cn/cppJAVA官方文档&#…

java题目之数字加密以及如何解密

public class Main6 {public static void main(String[] args) {// 某系统的数字密码&#xff08;大于0&#xff09;&#xff0c;比如1983&#xff0c;采用加密方式进行传输//定义了一个静态数组int []arr{1,9,8,3};//1.加密//先给每位数加上5for (int i 0; i <arr.length …

随机变量的数学期望

目录 简介 基本概念 数学期望的定义 数学期望的性质 数学期望的应用 计算实例 数学期望在解决哪些具体问题时最为有效&#xff1f; 如何计算两个或多个随机变量的组合概率及其期望值&#xff1f; 1. 计算组合概率 2. 计算期望值 当涉及到两个或多个随机变量的组合时&…