LLM:BERT or BART 之BERT

server/2025/2/2 14:23:18/

文章目录

  • 前言
  • 一、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领域有着变革性的地位,为后续的研究提供了新的思路!


http://www.ppmy.cn/server/164351.html

相关文章

EigenLayer联合Cartesi:打造面向主流用户的DeFi、AI等新用例

EigenLayer 与 Cartesi 正在开展合作,致力于弥合基础设施协议与终端用户应用之间的鸿沟;鼓励核心开发人员构建人工智能代理、复杂 DeFi、游戏、社交网络等应用场景;得益于 Cartesi 基于 Linux 的协处理器,开发者可复用现有软件库和…

软件测试丨从自动化软件测试到自主测试,还差几步?

在当今万物互联、信息爆炸的时代,软件测试的角色显得越发重要。作为软件开发生命周期(SDLC)中的关键环节,测试不仅仅是保障软件质量的工具,更是推动产品迭代的助推器。随着自动化测试技术的崛起,测试开发变…

系统架构设计中的性能优化策略

引言 性能是系统架构设计中的关键非功能需求之一。一个高性能的系统不仅能够提供快速的响应时间,还能够处理大量的并发请求,确保用户在使用过程中获得流畅的体验。然而,性能优化是一个复杂的过程,涉及到多个层面的设计和调优。本文将深入探讨系统架构设计中的性能优化策略…

86.(2)攻防世界 WEB PHP2

之前做过&#xff0c;回顾一遍&#xff0c;详解见下面这篇博客 29.攻防世界PHP2-CSDN博客 既然是代码审计题目&#xff0c;打开后又不显示代码&#xff0c;肯定在文件里 <?php // 首先检查通过 GET 请求传递的名为 "id" 的参数值是否严格等于字符串 "admi…

图片导入到ppt之后再打印就糊掉了如何解决?

最近在做一个 p o s t e r poster poster的工作是用 P P T PPT PPT做的&#xff0c;结果从 v i s i o visio visio导入到 P P T PPT PPT中还是高清的&#xff0c;打印就糊掉了&#xff0c;注意如果是导出的话图片还是矢量的&#xff0c;但是由于有纸张的要求&#xff0c;所以必…

【deepseek实战】绿色好用,不断网

前言 最佳deepseek火热网络&#xff0c;我也开发一款windows的电脑端&#xff0c;接入了deepseek&#xff0c;基本是复刻了网页端&#xff0c;还加入一些特色功能。 助力国内AI&#xff0c;发出自己的热量 说一下开发过程和内容的使用吧。 目录 一、介绍 二、具体工作 1.1、引…

数据挖掘常用算法

文章目录 基于机器学习~~线性/逻辑回归~~树模型~~贝叶斯~~~~聚类~~集成算法神经网络~~支持向量机~~~~降维算法~~ 基于机器学习 线性/逻辑回归 类似单层神经网络 yk*xb 树模型 优点 可以做可视化分析速度快结果稳定 依赖前期对业务和数据的理解 贝叶斯 贝叶斯依赖先验概…

STM32调试手段:重定向printf串口

引言 C语言中经常使用printf来输出调试信息&#xff0c;打印到屏幕。由于在单片机中没有屏幕&#xff0c;但是我们可以重定向printf&#xff0c;把数据打印到串口&#xff0c;从而在电脑端接收调试信息。这是除了debug外&#xff0c;另外一个非常有效的调试手段。 一、什么是pr…