[预训练]Encoder-only架构的预训练任务核心机制

news2025/6/3 1:35:48

原创文章
1FFN前馈网络与激活函数技术解析:Transformer模型中的关键模块
2Transformer掩码技术全解析:分类、原理与应用场景
3【大模型技术】Attention注意力机制详解一
4Transformer核心技术解析LCPO方法:精准控制推理长度的新突破
5Transformer模型中位置编码(Positional Embedding)技术全解析(二)
6Transformer模型中位置编码(Positional Embedding)技术全解析(一)
7自然语言处理核心技术词嵌入(Word Embedding),从基础原理到大模型应用
8DeepSeek-v3:基于MLA的高效kv缓存压缩与位置编码优化技术
9

【Tokenization第二章】分词算法深度解析:BPE、WordPiece与Unigram的原理、实现与优化

10Tokenization自然语言处理中分词技术:从传统规则到现代子词粒度方法

Encoder-only 预训练任务

BERT引入了深度双向注意力机制Masking思想,我们主要围绕BERT两大核心训练任务:

Masked Language Modeling(MLM)与Next Sentence Prediction(NSP)

BERT预训练

传统的语言模型中,网络只能从左到右或从右到左进行单向建模,导致无法充分利用上下文信息。BERT 提出了一种 “遮蔽(Masking)” 的策略,通过将部分词隐藏,让模型在训练时同时关注被遮住单词左右两侧的上下文,从而获得真双向的上下文表示。此外,BERT 还引入了句子级别的 NSP 任务,使模型在理解单句语义的同时也能学习到句子之间的衔接与语义关系。

BERT的两个主要预训练任务:

  1. MLM:通过遮蔽部分Token,打上[MASK],让模型必须根据上下文推理出被遮蔽的token.

  2. NSP:随机抽取句子对,判断第二句是否是第一句的后续(从同一文档中顺序提取),提升句子层次的理解能力

传统的语言模型中,网络只能从左到右或从右到左进行单向建模,导致无法充分利用上下文信息。BERT 提出了一种 “遮蔽(Masking)” 的策略,通过将部分词隐藏,让模型在训练时同时关注被遮住单词左右两侧的上下文,从而获得真双向的上下文表示。此外,BERT 还引入了句子级别的 NSP 任务,使模型在理解单句语义的同时也能学习到句子之间的衔接与语义关系。

BERT进行下游任务(如文本分类、问答等)时,只需在base模型上加一个或少量额外层的微调

传统BERT预训练任务

MLM

BERT 会随机选择句子中 15% 的单词进行处理,其中

  1. 80%概率tokens会被替换为[MASK]

  2. 10%概率,tokens会称替换为随机的token,这正是解决一词多义的最重要特性

  3. 10%概率,tokens会保持不变但需要被预测

模型如何 “忽略原词”,仅通过上下文预测?

1. 输入层:隐藏原词的真实身份
虽然原词未被替换为[MASK]或随机词,但在模型的输入表示中,它与其他词一样被编码为词向量、位置向量和段向量的叠加。
关键:模型在输入阶段无法 “知道” 哪个词是 “被强制预测的原词”,只能通过后续的编码层从上下文中提取信息。
2. 编码层:通过自注意力机制剥离原词依赖
Transformer 编码器的自注意力机制会让每个词的表示融合整个句子的上下文信息。
即使某个位置是原词,其最终的上下文表示(即编码器输出)也会被周围词的语义 “稀释”,不再单纯依赖自身的原始词义。
例如:句子 “苹果 [原词] 是红色的” 中,“苹果” 未被 mask,但模型需要通过 “是红色的” 来预测 “苹果”,而不是直接利用 “苹果” 本身的词义。
此时,模型的任务等价于:“根据‘[X] 是红色的’,预测 [X] 是什么?”,其中 [X] 的输入是 “苹果” 的词向量,但模型必须忽略这一信息,仅通过 “是红色的” 推断。
3. 预测层:强制基于上下文生成概率分布
编码器输出的向量会输入到一个全连接层(分类器),该层通过与词表的嵌入矩阵相乘,生成每个词的预测概率(不依赖输入词本身)。
即使输入的是原词,模型也会计算 “在上下文中,该位置最可能的词是什么”,而不是直接返回原词。
例如:输入 “苹果” 未被 mask,但模型需要根据 “是红色的” 预测该位置为 “苹果” 的概率,这要求模型必须证明 “苹果” 是上下文中最合理的词,而非直接记忆。
MLM训练目标
  • 给定sequence $X$, 令$\tilde{X}$表示经过Mask后的序列。网络经过输出词向量$h_i$并经过全连接层+softmax,预测每个被Mask位置所对应的真实词
  • 损失函数:$L_{MLM}=-\sum_{i\in Maskset}\log P(x_i|\tilde{X})$

其中,“Maskset”表示被遮蔽的token索引集合

NSP

让模型在看到“句子对(A,B)”时,判断“B是否真的是A的后续句子”。这样可以帮助模型学习到跨句子的衔接关系

  1. 从训练语料,随机抽取成对的句子(A,B)

    • 50% 的情况,B 是 A 在文档中的下一个句子
    • 50% 的情况,B 来自语料库中随机的其他文档或不相关位置
  2. 模型输入:

    • 拼接[CLS]+A+[SEP]+B+[SEP],中间用[SEP]分割句子
    • [CLS]放在开头,起到分类标志的作用,其对应的向量h_{[CLS]}会用于NSP的二分类
  3. 模型通过自注意力机制后,在[CLS]位置上输出一个向量,通过全连接+softmax,预测是否为后续句子

NSP训练目标
  • 二分类NSP任务中,用交叉熵损失表示为:

$L_{NSP}=-\sum_{(A,B)\in D}[y_{(A,B)}\log P(IsNext|A,B)+(1-y_{(A,B)})\log P(NotNext|A,B)]$

其中,y_{(A,B)}=1表示B是A的后续,否则为0

Sentence-Bert的额外训练任务

怎么提取sentence-level的特征用于下游任务,一种直观的想法是使用bert提取句子级别的embedding,那么我们有几种选择:

  • CLS Token embedding

Sentence-BERT 说CLS不好,CLS 更关注 句子间的逻辑关系,而非单句的语义表征,原因就是bert原生的CLS是用于NSP分类任务的,对句子表征效果不好

  • Pooling Context embedding(平均池化+归一化)

Sentence-BERT 认为这个特征比CLS好,并且在此基础上可以做fine-tune达到更好的表征效果

但是存在各向异性(Anisotropic)的问题,导致词余弦相似与pretrain词频相关

在 BERT 的原生向量空间中,高频词(如 “的”“是”“在”)的向量范数通常较小,分布在空间中心附近;

低频词(如专业术语、罕见词)的向量范数较大,分布在空间边缘。

因此,两个高频词的向量可能因靠近中心而 “虚假相似”,而低频词可能因范数差异大而 “虚假不相似”,与实际语义无关。

如何缓解各向异性

向量归一化:对池化后的句向量进行 L2 归一化,强制向量范数为 1,消除范数差异对余弦相似度的影响。公式:\hat{v} = \frac{v}{\|v\|},此时余弦相似度仅取决于向量方向,与范数无关。层归一化(Layer Normalization):在预训练或微调阶段对 Transformer 层的输出进行归一化,稳定向量分布。

  • EOS Token embedding

这是CLIP方法中文本编码器的特征提取方式,其实类似于Pooling Context Embedding,但是注意clip的文本编码器是从随机初始化开始训练的

MLM+NSP模型变体

下表简要列出各个变体与 BERT 的主要特征对比,按提出时间顺序排列。

模型时间主要改进点是否保留NSPMask策略结构典型应用
BERT2018MLM (15%) + NSP
双向Transformer Encoder
Yes静态Mask,15% 单词被随机选中Encoder-only (12/24层)各类NLP理解任务
RoBERTa20191)更大数据/更长训练
2)移除NSP
3)动态Mask
4)GPT-2 BPE
No动态Mask (同MLM)Encoder-only同BERT,效果更佳
ALBERT20191)Embedding因式分解
2)跨层权重共享
3)NSP → SOP
SOP同MLM (静态Mask)Encoder-only减少参数,大模型部署
SpanBERT20191)Span-level Masking
2)SBO目标
3)移除NSP
NoSpan Mask (块状)Encoder-only (改进BERT实现)核心指代、抽取式QA等
XLNet20191)Permutation LM融合AR/AE
2)Two-stream Attention
3)融合Transformer-XL长依赖
-无[Mask]标记,用Permutation+AttentionMask来双向建模类Transformer Encoder问答、语言建模,多项SOTA
DeBERTa20201)Disentangled Attention (内容/位置分离)
2)Enhanced Mask Decoder
3)更优性能
-同MLM (类似RoBERTa)Encoder-onlyGLUE/SQuAD SOTA,微软大规模应用

如果您认为博文还不错,请帮忙点赞、收藏、关注。您的反馈是我的原动力

原创文章
1FFN前馈网络与激活函数技术解析:Transformer模型中的关键模块
2Transformer掩码技术全解析:分类、原理与应用场景
3【大模型技术】Attention注意力机制详解一
4Transformer核心技术解析LCPO方法:精准控制推理长度的新突破
5Transformer模型中位置编码(Positional Embedding)技术全解析(二)
6Transformer模型中位置编码(Positional Embedding)技术全解析(一)
7自然语言处理核心技术词嵌入(Word Embedding),从基础原理到大模型应用
8DeepSeek-v3:基于MLA的高效kv缓存压缩与位置编码优化技术
9

【Tokenization第二章】分词算法深度解析:BPE、WordPiece与Unigram的原理、实现与优化

10Tokenization自然语言处理中分词技术:从传统规则到现代子词粒度方法

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

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

相关文章

07-后端Web实战(部门管理)

5. 修改部门 对于任何业务的修改功能来说,一般都会分为两步进行:查询回显、修改数据。 5.1 查询回显 5.1.1 需求 当我们点击 "编辑" 的时候,需要根据ID查询部门数据,然后用于页面回显展示。 5.1.2 接口描述 参照参照…

mysql ACID 原理

序言:ACID 是一组数据库设计原则,他是业务数据和关键业务程序的可靠性保障。 1、atomicity(原子性) 依赖如下能力 autocommit commit rollback2、一致性 2.1 double write buffer 1、定义:double write buffer 是…

[Rust_1] 环境配置 | vs golang | 程序运行 | 包管理

目录 Rust 环境安装 GoLang和Rust 关于Go 关于Rust Rust vs. Go,优缺点 GoLang的优点 GoLang的缺点 Rust的优点 Rust的缺点 数据告诉我们什么? Rust和Go的主要区别 (1) 性能 (2) 并发性 (3) 内存安全性 (4) 开发速度 (5) 开发者体验 Ru…

二十五、面向对象底层逻辑-SpringMVC九大组件之HandlerMapping接口设计

一、引言:MVC架构的交通枢纽 在Spring MVC框架中,HandlerMapping接口扮演着"请求导航仪"的关键角色,它决定了HTTP请求如何被路由到对应的Controller处理器。作为MVC模式的核心组件之一,HandlerMapping在请求处理的生命…

HUAWEI交换机配置镜像口验证(eNSP)

技术术语: 流量观察口:就是我们常说的镜像口,被观察的流量的引流目的端口 流量源端口:企业生产端口,作为观察口观察对象。 命令介绍: [核心交换机]observe-port [观察端口ID或编号(数字&am…

前端vue3实现图片懒加载

场景和指令用法 场景:电商网站的首页通常会很长,用户不一定能访问到页面靠下面的图片,这类图片通过懒加载优化手段可以做到只有进入视口区域才发送图片请求 核心原理:图片进入视口才发送资源请求 首先:我们需要定义一个全局的指令&#x…

计算机网络-MPLS VPN应用场景与组网

上一篇文章我们通过一个基础实验实现了企业分支间的MPLS VPN互联,如果还不理解的可以多看几遍前面的文章或者多敲下实验。今天来学习几种常见的MPLS VPN应用场景与这些场景下MPLS VPN的部署方法。 一、MPLS VPN典型应用 目前,MPLS VPN的主要应用包括企…

Linux 的编辑器--vim

1.Linux编辑器-vim使⽤ vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,⽽且还有⼀些新的特性在⾥⾯。例如语法加亮,可视化操作不仅可以在终端运⾏,也可以…

[Protobuf] 快速上手:安全高效的序列化指南

标题:[Protobuf] (1)快速上手 水墨不写bug 文章目录 一、什么是protobuf?二、protobuf的特点三、使用protobuf的过程?1、定义消息格式(.proto文件)(1)指定语法版本(2)package 声明符 2、使用protoc编译器生成代码&…

如何将通话记录从Android传输到Android

“如何将通话记录从 Android 转移到 Android?我换了一部新的 Android 手机,想要将通话记录复制到其中。”您需要将通话记录从 Android 传输到 Android 是一种常见的情况,因为通话记录是手机上最重要的数据之一。幸运的是,如果您从…

数据结构第4章 栈、队列和数组 (竟成)

目录 第 4 章 栈、队列和数组 4.1 栈 4.1.1 栈的基本概念 4.1.2 栈的基本操作 4.1.3 栈的实现 1.顺序栈 2.链式栈 3.共享栈 4.1.4 顺序栈的基本操作实现 1.初始化栈 2.判空 3.判满 4.元素进栈 5.元素出栈 6.获取栈顶元素 4.1.5 链栈的基本操作实现 1.元素进栈 2.元素出栈 4.1.6…

2025年渗透测试面试题总结-匿名[校招]安全研究员(SAST方向)(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]安全研究员(SAST方向) 一面问题回答框架 1. 自我介绍 2. 简历深挖(漏洞挖掘&#x…

Unity 游戏优化(持续更新中...)

垃圾回收 是什么? 垃圾回收(Garbage Collection)GC 工作机制 1、Unity 为用户生成的代码和脚本采用了自动内存管理。 2、小块数据(如值类型的局部变量)分配在栈上。大块数据和长期存储分配在托管堆上。 3、垃圾收集…

20250529-C#知识:索引器

C#知识:索引器 索引器给对象添加了索引访问的功能,实际访问的是对象的成员,感觉不太常用。 1、主要内容及代码示例 索引器中类似属性,也包含get和set方法索引器能够使像访问数组一样访问对象一般当类中有数组类型的成员变量时&am…

【笔记】suna部署之获取 Tavily API key

#工作记录 Tavily 注册 Tavily 账号5: 打开浏览器,访问 Tavily 官网Tavily AI。点击页面上的 “注册” 按钮,按照提示填写注册信息,如邮箱地址、设置密码等,完成注册流程。也可以选择使用 Google 或 GitHub 账号授权登…

06-Web后端基础(java操作数据库)

1. 前言 在前面我们学习MySQL数据库时,都是利用图形化客户端工具(如:idea、datagrip),来操作数据库的。 我们做为后端程序开发人员,通常会使用Java程序来完成对数据库的操作。Java程序操作数据库的技术呢,有很多啊&a…

什么是单片机?

众所周知,人类行为受大脑调控,正如视觉、听觉、味觉、嗅觉、触觉及运动功能等感官与肢体活动均受其指挥;换言之,大脑作为人体的中枢神经系统,负责管理所有可控制的生理功能。 在电子设备领域,单片机…

Ubuntu的shell脚本

关于shell脚本 • shell脚本是文本的一种。 • shell脚本是可以运行的文本。 • shell脚本的内容是由说辑和数据组成。 • shell 脚本是解释型语言。 shell脚本存在的意义 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具 Linux/UNIX系统…

从抄表到节能,电费管理系统如何重构公寓运营场景——仙盟创梦IDE

租房公寓电费管理系统是集智能计量、自动化计费、线上缴费、数据管理于一体的综合性解决方案,旨在解决传统电费管理中人工抄表误差大、收费效率低、纠纷频发等痛点。系统通过部署智能电表实时采集用电数据,结合云计算与大数据分析技术,实现电…

记一次前端逻辑绕过登录到内网挖掘

前言 在测试一个学校网站的时候,发现一个未授权访问内网系统,但是这个未授权并不是接口啥的,而是对前端 js 的审计和调试发现的漏洞,这里给大家分享一下这次的漏洞的过程。 进入内网的过程 可以看到是一个图书馆的网站&#xff…