当前位置: 首页 > 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 的用法、区别以及在修改对象属性和修改整个对象时的不同表现,并提供完整的代码…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...