当前位置: 首页 > news >正文

LLM:BERT or BART 之BERT

文章目录

  • 前言
  • 一、BERT
    • 1. Decoder-only
    • 2. Encoder-only
    • 3. Use of Bidirectional Context
    • 4. Masked Language Model (MLM)
    • 5. Next Sentence Prediction (NSP)
    • 6. Fine-tune
      • 1、情感分析
      • 2、句对分析
      • 3、命名实体识别(NER)
    • 7. BERT总结
  • 总结


前言

NLP选手对这两个应该很熟,最近因为多模态的发展,作为cv选手还是很有必要了解一下这两个模型。这两个模型也算是LLM的先驱了。

本文将对BERT做一个基本的介绍
paper:https://arxiv.org/pdf/1810.04805
github:https://github.com/google-research/bert


一、BERT

BERT (Bidirectional Encoder Representations from Transformers) 是一个 Encoder-only 模型,它使用了Transformer的编码器部分来处理输入的文本,并生成文本的表示。BERT主要有以下4个特征:
请添加图片描述

有必要说明一下 Encoder-only 和 decoder-only 架构的区别。OpenAI首次在2018年创造了decoder-only的GPT应用于NLG。随后Google发布了encoder-only的BERT应用于NLU。下面简单介绍一下两种模型的gap

1. Decoder-only

Goal: 根据输入序列预测一个新的输出序列

Transformer中的 decoder block 负责基于编码器提供的输入生成输出序列。decoder-only 是通过完全省略encoder并将多个解码器堆叠在一个模型中来构建的。这些模型接受prompt作为输入,并通过每次预测一个最可能的token来生成响应。因此,只有解码器的模型在NLG任务中表现出色,例如:会话聊天机器人、机器翻译和代码生成。

2. Encoder-only

Goal: 对输入序列的word进行预测

encoder block负责接受输入序列,并为每个token创建丰富的数字向量表示。encoder-only模型省略了解码器,并将多个Transformer encoder堆叠在一起以生成单个模型。模型不接受prompt,而是接受用于进行预测的输入序列(例如,预测序列中缺失的单词)。encoder-only模型缺少用于生成新词的decoder,因此不能像使用GPT那样用于聊天。相反,encoder-only模型最常用于NLU任务,例如:命名实体识别(NER)和情感分析。

(从技术上讲,使用BERT生成文本是可能的,但这不是该结构的目的,并且结果在任何方面都无法与仅解码器模型相媲美。)

请添加图片描述

3. Use of Bidirectional Context

作为一种语言模型,BERT预测了在观察到先前单词的情况下观察到某些单词的概率。所有语言模型都共享这个基本方面。然而,正是对这些概率的利用赋予了模型特定于任务的行为。例如,GPT被训练来预测序列中下一个最可能的单词。也就是说,模型预测下一个单词,前提是前面的单词已经被观察到。其他模型可能在情感分析上进行训练,使用诸如积极或消极等文本标签来预测输入序列的情感。对文本进行任何有意义的预测都需要理解周围的上下文,特别是在NLU任务中。BERT通过它的一个关键属性:bidirectionality来确保良好的理解。


bidirectionality(双向性)是BERT最核心的属性,是其在NLU任务中的高性能的关键。

双向性表示输入序列中的每个单词都可以从前面和后面的单词中获得上下文。简单来说,我们说注意机制可以关注每个单词的前后标记。BERT只对输入序列中的单词进行预测,而不像GPT那样生成新的序列。因此,当BERT在输入序列中预测一个单词时,它可以结合周围所有单词的上下文线索。这提供了两个方向的context,帮助BERT做出更明智的预测

请添加图片描述
举个具体例子:考虑一个文本序列“今天打算去公园散步,然后去游乐园。”

在单向编码中,每个词或标记的编码仅依赖于其之前的词或标记。因此,在编码“散步”这个词时,模型只会考虑在它之前的词。
在双向编码中,每个词或标记的编码都会同时考虑其前后的词或标记。因此,在编码“散步”这个词时,模型会同时考虑所有词,从而更全面地理解整个句子的语义。

4. Masked Language Model (MLM)

Masked Language Model,是BERT预训练的一个重要部分。此阶段,模型的任务是预测输入句子中被**随机遮蔽(masked)**掉的部分单词。

输入文本处理:首先,对于输入的句子,随机选择句子中15%的单词进行遮蔽。对于每个被选中的单词,有80%的概率直接用[MASK]标记替换,10%的概率用随机的一个单词替换(这有助于模型学习理解上下文的重要性,而不仅仅是依赖于[MASK]标记),剩下的10%则保持不变(这有助于模型在微调阶段更好地处理未遮蔽的单词)。
模型预测:模型的目标是根据上下文预测这些被遮蔽单词的原始值。这种机制促使BERT能够深入理解文本中的语义关系。

举个例子:I love you
1)80%的时候是[MASK]。如,I love [MASK]
2)10%的时候是随机的其他token。如,I love her
3)10%的时候是原来的token。

5. Next Sentence Prediction (NSP)

Next Sentence Prediction,即下一句预测,是BERT预训练的另一个重要部分,旨在提高模型对句子间关系的理解能力。

句子对生成:在预训练时,模型不仅接收单个句子作为输入,还接收句子对。这些句子对可能是连续的(即真实的下一句),也可能是随机组合的(即非连续的)。
模型预测:对于每个句子对,模型需要预测第二个句子是否是第一个句子的真实下一句。这是一个简单的二分类任务,输出是一个[0, 1]范围内的值,表示第二个句子是第一个句子真实下一句的概率。

PS:在BERT的后续版本中,Next Sentence Prediction(NSP)任务被废弃了。因为研究人员发现这个任务对下游任务的性能提升有限。

6. Fine-tune

预训练完成后,BERT 模型可以通过微调(Fine-Tuning)应用于各种下游任务,如文本分类、命名实体识别、问答等。微调过程中,模型的权重会被更新以适应特定任务。 下面举几个例子:

1、情感分析

分类一句话是正面情感或负面情感

输入
[CLS] 这部电影非常精彩!

2、句对分析

判别两句话的关系

输入是一个固定长度的序列,由两部分组成:
CLS 标记:句子开头的特殊标记,用于句子级任务(如文本分类)。
SEP 标记:用于分隔两个句子,或者标记句子结束。 例如:
输入句子:“我喜欢看电影。” 和 “最近上映的电影真不错。”
转化为:
[CLS] 我 喜欢 看 电影 。 [SEP] 最近 上映 的 电影 真 不错 。 [SEP]

3、命名实体识别(NER)

简单来说就是对句子中的每个词或子词进行标注。(这个任务还是一个蛮大的领域,感兴趣可以查查)

请添加图片描述
请添加图片描述

7. BERT总结

BERT是一个encoder-only模型,为NLU任务开发,作为预训练模型可应用于多种语义理解任务上。我觉得其预训练方式绝对是里程碑式的操作,甚至CV后面的MAE也是借鉴它的想法


总结

本文对不熟悉BERT的人做个简单介绍,想了解BERT的代码实现和更多应用可以参考原文和开源代码。BERT在NLP领域有着变革性的地位,为后续的研究提供了新的思路!

相关文章:

LLM:BERT or BART 之BERT

文章目录 前言一、BERT1. Decoder-only2. Encoder-only3. Use of Bidirectional Context4. Masked Language Model (MLM)5. Next Sentence Prediction (NSP)6. Fine-tune1、情感分析2、句对分析3、命名实体识别(NER) 7. BERT总结 总结 前言 NLP选手对这…...

EtherCAT主站IGH-- 18 -- IGH之fsm_mbox_gateway.h/c文件解析

EtherCAT主站IGH-- 18 -- IGH之fsm_mbox_gateway.h/c文件解析 0 预览一 该文件功能`fsm_mbox_gateway.c` 文件功能函数预览二 函数功能介绍`fsm_mbox_gateway.c` 中主要函数的作用1. `ec_fsm_mbg_init`2. `ec_fsm_mbg_clear`3. `ec_fsm_mbg_transfer`4. `ec_fsm_mbg_exec`5. `e…...

深入探讨防抖函数中的 this 上下文

深入剖析防抖函数中的 this 上下文 最近我在研究防抖函数实现的时候,发现一个耗费脑子的问题,出现了令我困惑的问题。接下来,我将通过代码示例,深入探究这些现象背后的原理。 示例代码 function debounce(fn, delay) {let time…...

【AI论文】魔鬼在细节:关于在训练专用混合专家模型时实现负载均衡损失

摘要:本文重新审视了在训练混合专家(Mixture-of-Experts, MoEs)模型时负载均衡损失(Load-Balancing Loss, LBL)的实现。具体来说,MoEs的LBL定义为N_E乘以从1到N_E的所有专家i的频率f_i与门控得分平均值p_i的…...

Gurobi基础语法之addVar 和 addVars

addVar 和 addVars作为 Gurobi模型对象中的方法,常常用来生成变量,本文介绍了Python中的这两个接口的使用 addVar addVar(lb0.0, ubfloat(inf), obj0.0, vtypeGRB.CONTINUOUS, name, columnNone) lb 和 ub让变量在生成的时候就有下界和上届&#xff0c…...

C语言学习阶段性总结(五)---函数

函数构成五要素: 1、返回值类型 2、函数名 3、参数列表(输入) 4、函数体 (算法) 5、返回值 (输出) 返回值类型 函数名 (参数列表) { 函数体; return 返回值; } void 类型…...

K8S 快速实战

K8S 核心架构原理: 我们已经知道了 K8S 的核心功能:自动化运维管理多个容器化程序。那么 K8S 怎么做到的呢?这里,我们从宏观架构上来学习 K8S 的设计思想。首先看下图: K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责核心的调度、管理和运维,Slave…...

java后端之事务管理

Transactional注解:作用于业务层的方法、类、接口上,将当前方法交给spring进行事务管理,执行前开启事务,成功执行则提交事务,执行异常回滚事务 spring事务管理日志: 默认情况下,只有出现Runti…...

【Redis】缓存+分布式锁

目录 缓存 Redis最主要的使用场景就是作为缓存 缓存的更新策略: 1.定期生成 2.实时生成 面试重点: 缓存预热(Cache preheating): 缓存穿透(Cache penetration) 缓存雪崩 (Cache avalan…...

二分查找题目:寻找两个正序数组的中位数

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:寻找两个正序数组的中位数 出处:4. 寻找两个正序数组的中位数 难度 8 级 题目描述 要求 给定两个大…...

网络安全 | F5-Attack Signatures详解

关注:CodingTechWork 关于攻击签名 攻击签名是用于识别 Web 应用程序及其组件上攻击或攻击类型的规则或模式。安全策略将攻击签名中的模式与请求和响应的内容进行比较,以查找潜在的攻击。有些签名旨在保护特定的操作系统、Web 服务器、数据库、框架或应…...

Redis --- 分布式锁的使用

我们在上篇博客高并发处理 --- 超卖问题一人一单解决方案讲述了两种锁解决业务的使用方法,但是这样不能让锁跨JVM也就是跨进程去使用,只能适用在单体项目中如下图: 为了解决这种场景,我们就需要用一个锁监视器对全部集群进行监视…...

LeetCode100之全排列(46)--Java

1.问题描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案 示例1 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例2 输入:nums [0,1] 输出&#xf…...

goframe 博客分类文章模型文档 主要解决关联

goframe 博客文章模型文档 模型结构 (BlogArticleInfoRes) BlogArticleInfoRes 结构体代表系统中的一篇博客文章,包含完整的元数据和内容管理功能。 type BlogArticleInfoRes struct {Id uint orm:"id,primary" json:"id" …...

【JavaWeb06】Tomcat基础入门:架构理解与基本配置指南

文章目录 🌍一. WEB 开发❄️1. 介绍 ❄️2. BS 与 CS 开发介绍 ❄️3. JavaWeb 服务软件 🌍二. Tomcat❄️1. Tomcat 下载和安装 ❄️2. Tomcat 启动 ❄️3. Tomcat 启动故障排除 ❄️4. Tomcat 服务中部署 WEB 应用 ❄️5. 浏览器访问 Web 服务过程详…...

安卓日常问题杂谈(一)

背景 关于安卓开发中,有很多奇奇怪怪的问题,有时候这个控件闪一下,有时候这个页面移动一下,这些对于快速开发中,去查询,都是很耗费时间的,因此,本系列文章,旨在记录安卓…...

Kitchen Racks 2

Kitchen Racks 2 吸盘置物架 Kitchen Racks-CSDN博客...

嵌入式学习笔记-杂七杂八

文章目录 连续波光纤耦合激光器工作原理主要特点应用领域设计考虑因素 数值孔径(Numerical Aperture,简称NA)数值孔径的定义数值孔径的意义数值孔径的计算示例数值孔径与光纤 四象限探测器检测目标方法四象限划分检测目标的步骤1. 数据采集2.…...

14-7C++STL的stack容器

(一)stack容器的入栈与出栈 (1)stack容器的简介 stack堆栈容器,“先进后出”的容器,且stack没有迭代器 (2)stack对象的默认构造 stack采用模板类实现,stack对象的默认…...

Vue 3 中的响应式系统:ref 与 reactive 的对比与应用

Vue 3 的响应式系统是其核心特性之一,它允许开发者以声明式的方式构建用户界面。Vue 3 引入了两种主要的响应式 API:ref 和 reactive。本文将详细介绍这两种 API 的用法、区别以及在修改对象属性和修改整个对象时的不同表现,并提供完整的代码…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...