【大模型基础_毛玉仁】2.3 基于 Encoder-only 架构的大语言模型

news2025/4/21 9:27:21

更多内容:XiaoJ的知识星球


目录

    • 2.3 基于Encoder-only 架构的大语言模型
      • 2.3.1 Encoder-only 架构
      • 2.3.2 BERT 语言模型
        • 1)BERT 模型结构
        • 2)BERT 预训练方式
        • 3)BERT 下游任务
      • 2.3.3 BERT 衍生语言模型
        • 1)RoBERTa 语言模型
        • 2)ALBERT 语言模型
        • 3)ELECTRA 语言模型


2.3 基于Encoder-only 架构的大语言模型

2.3.1 Encoder-only 架构

Encoder-only 架构的核心在于能够覆盖输入所有内容的双向编码模型(Bidirectional Encoder Model)。

在处理输入序列时,双向编码模型融合了从左往右的正向注意力以及从右往左的反向注意力,能够充分捕捉每个 Token 的上下文信息,因此也被称为具有全面的注意力机制

双向编码器为每个词生成动态的上下文嵌入(Contextual Embedding),使得模型能更精准理解词之间的依赖性和语义,有效处理词语的多义性问题。使得双向编码器在句子级别的任务上表现出色,显著超过了静态词嵌入方法的性能。

Encoder-only 架构基于双向编码模型,选用了 Transformer 架构中的编码器部分。虽然 Encoder-only 模型不直接生成文本,但其生成的上下文嵌入对于深入理解输入文本的结构和含义至关重要。

当前, BERT及其变体,如 RoBERTa、ALBERT等,都是基于 Encoder-only 架构的主流大语言模型。


2.3.2 BERT 语言模型

BERT(Bidirectional Encoder Representations from Transformers)

  • 是一种基于 Encoder-only 架构的预训练语言模型。

  • 其核心在于通过双向编码模型深入挖掘文本的上下文信息,而为下游任务提供优秀的上下文嵌入。

1)BERT 模型结构

BERT 模型的结构与 Transformer 中的编码器几乎一致,由多个编码模块堆叠,每个编码模块包含一个多头自注意力模块和一个全连接前馈模块。

根据参数量的不同,BERT 模型共有 BERT-Base 和 BERT-Large 两个版本。

2)BERT 预训练方式

BERT 使用小说数据集 BookCorpus 和英语维基百科数据集进行预训练。

在预训练任务上,BERT 开创性地提出了掩码语言建模(Masked Language Model, MLM)下文预测(Next Sentence Prediction, NSP) 两种任务来学习生成上下文嵌入。其完整的预训练流程如下。

图 2.7: BERT 预训练任务。
在这里插入图片描述

BERT 预训练任务步骤:

(1)构造样本序列:

BERT 先基于给定的原始文本构造多个样本序列,每个样本序列由原始文本中的两个句子组成,这两个句子有 50% 的概率是来自原文的连续句子,另外 50% 的概率是随机挑选的两个句子。随后,对样本序列分词, 在序列开头添加标签 [CLS],在每个句子结尾添加标签 [SEP]。

(2)判断句子连续性:

接着,BERT 利用模型判断样本序列中的两个句子是否为连续的。这一任务训练 BERT 识别和理解句子之间的关系,捕捉句子层面的语义特征。

(3)掩码预测:

最后,BERT 随机选样本序列中约 15% 的 Token 进行遮掩,将其替换为标签 [MASK] 或者随机单词。模型需要预测这些被替换的 Token 的原始内容。要求模型根据周围的上下文信息来推断缺失的 Token。预测过程使用的交叉熵损失函数驱动了 BERT 模型中参数的优化,使其能够学习到 文本的双向上下文表示。

值得注意的是,在 MLM 任务的训练过程中,BERT 仅针 对那些被随机替换的 Token 进行学习,即只计算这些 Token 的预测损失来更新模型参数。

通过这两种预训练任务的结合,使 BERT 在理解语言的深度和广度上都有显著提升。BERT 不仅能够捕捉到 Token 的细粒度特征,还能够把握长距离的依赖关系和句子间的复杂联系,为各种下游任务提供了坚实的语言理解基础。

3)BERT 下游任务

BERT 可以应用于各种自然语言处理任务,包括但不限于:

文本分类(如情感分析)、问答系统、文本匹配(如自然语言推断)、语义相似度计算。

(1) [CLS] 标签设计

由于 BERT 的输出是输入中所有 Token 的向量表示,因此总长度不固定,无法直接应用于各类下游任务。

为解决这一问题,BERT 设计了 [CLS] 标签(即Classification Token,分类标记)来提取整个输入序列的聚合表示。[CLS] 标签汇总整个输入序列的信息,生成一个固定长度的向量表示,从而实现对所有 Token 序列信息的概括,便于处理各种下游任务。

(2)任务处理

文本分类任务中:

  • 将输出中 [CLS] 标签对应的向量提取出来,传递给一个全连接层,从而用于分类。

  • 例如判断整个句子的情绪是积极、消极或是中立的。

问答系统任务中:

  • 需要输入问题以及一段相关的文本,即“[CLS] 问题 [SEP] 文 本 [SEP]”。

  • 最终取出 [CLS] 标签的对应向量,并传递给两个全连接层,用于判断答案是否存在于相关文本中。如果存在,这两个全连接层分别用于输出答案的起始和结束位置。

  • 通过这种方式,BERT 能够从提供的段落中准确提取出问题的答案。

语义相似度任务中:

  • 过构造“[CLS] 文本 1[SEP] 文本 2[SEP]”的方式,

  • 结合一个 线性层来直接输出两个文本之间的相似度;

  • 也可以不添加额外的组件,直接提取 [CLS] 标签对应的向量,再利用额外的相似度度量方法(例如余弦相似度)来计算多段文本之间的相似度。


2.3.3 BERT 衍生语言模型

1)RoBERTa 语言模型

RoBERTa(Robustly Optimized BERT Pretraining Approach)

  • 中文解释:鲁棒优化 BERT 预训练方法。

  • 旨在解决BERT在训练程度上不充分问题,以提升预训练语言模型的性能

  • 在BERT的基础上采用:更大数据集、更长的训练时间、更细致的超参数调整

(1) RoBERTa 模型结构

RoBERTa 在结构上与BERT基本一致,基于多层堆叠的编码模块,每个编码 模块包含多头自注意力模块和全连接前馈模块。RoBERTa同样有两个版本,分别 是RoBERTa-Base和RoBERTa-Large。

RoBERTa-Base与BERT-Base对标,RoBERTa-Large 则与BERT-Large 对标。

(2) RoBERTa 预训练方式

RoBERTa 移除了 BERT 中的下文预测任务,并将 BERT 原生的静态掩码语言建模任务更改为动态掩码语言建模

具体而言,

BERT 在数据预处理期间对句子进行掩码,随后在每个训练epoch(一次完整训练过程)中,掩码位置不再变化。

而RoBERTa则将训练数据复制成10个副本,分别进行掩码。

在同样训练40个epoch 的前提下,BERT在其静态掩码后的文本上训练了40次,而RoBERTa将 10 个不同掩码后的副本分别训练了4次。从而增加模型训练的多样性,有助于模型学习到更丰富的上下文信息。

这些改进使得RoBERTa在理解上下文和处理长文本方面表现出色,尤其在捕捉细微的语义差异和上下文依赖性方面。

2)ALBERT 语言模型

ALBERT(A Lite BERT):轻量级 BERT 模型

  • 旨在通过参数共享和嵌入分解技术来减少模型的参数量和内存占用,从而提高训练和推理效率

  • 通过参数因子分解技术跨层参数共享技术显著减少了参数的数量。

(1) ALBERT 模型结构

ALBERT的结构与BERT以及RoBERTa都类似,由多层堆叠的编码模块组成。

但是ALBERT通过参数因子分解以及跨层参数共享,在相同的模型架构下,显著减少了模型的参数量。

参数因子分解:

在BERT 中:

  • Embedding 层的输出向量维度 E 与隐藏层的向量维度H 是一致的,这意味着Embedding 层的输出直接用作后续编码模块的输入。

  • 具体来说, BERT-Base 模型对应的词表大小V 为3,0000左右,并且其隐藏层的向量维度H设置为768。因此,BERT的Embedding层需要的参数数量是V ×H,大约为2,304万。

ALBERT中:

  • 将Embedding层的矩阵先进行分解,将词表对应的独热编码向量通过一个低维的投影层下投影至维度E,再将其上投影回隐藏状态的维度H。

  • 具体来说,ALBERT选择了一个较小的Embedding层维度,例如128,并将 参数数量拆解为V ×E+E×H。按照这个设计,ALBERT的Embedding层大约 需要394万个参数

跨层参数共享:

以经典的 BERT-Base 模型为例,模型中共有 12 层相同架构的编码模块,所有 Transformer 块的参数都是独立训练的。

ALBERT 为了降低模型的参数量,提出了跨层参数共享机制,只学习第一层编码模块的参数,并将其直接共享给其他所有层。

该机制一定程度上牺牲了模型性能,但显著提升了参数存储空间的压缩比, 从而实现更高效的资源利用。

ALBERT 共提出了四个版本的模型:

  • 分别是 ALBERT-Base、ALBERT-Large、ALBERT-XLarge 以及 ALBERT-XXLarge。

  • ALBERT-Base 与 BERT-Base 对标,ALBERT Large 与 BERT-Large 对标,剩余两个更大。

(2) ALBERT 预训练方式

ALBERT 使用与 BERT 一致的数据集来进行预训练,即小说数据集 BookCorpus及英语维基百科数据集。

在预训练任务的选择上:

  • ALBERT 保留了 BERT 中的掩码语言建模任务,

  • 并将下文预测任务替换为句序预测(Sentence Order Prediction, SOP),如图所示。

图 2.8: ALBERT 句序预测任务。
在这里插入图片描述

具体而言,ALBERT 从文本中选择连续的两个句子,将这两个句子直接拼接起来,或是先将这两个句子的顺序翻转后再进行拼接,并将拼接后的内容作为输入样本,而模型需要预测该样本中 的两个句子是正序还是反序。

与 BERT 相比,ALBERT 通过创新的参数共享和参数因子分解技术,在较好 地保持原有性能的同时显著减少了模型的参数数量,这使得它在资源受限的环境 中更加实用,处理大规模数据集和复杂任务时更高效,并降低了模型部署和维护 的成本。

3)ELECTRA 语言模型

ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)

  • 中文解释:高效地学习一个能够准确分类Token替换的编码器。

  • 旨在解决大规模预训练语言模型中的效率和可扩展性问题。

  • 通过使用生成器-判别器架构,ELECTRA 能高效利用预训练数据,提高模型在下游任务中的表现。

(1) ELECTRA 预训练方式

在模型结构上,ELECTRA 在 BERT 原有的掩码语言建模基础上结合了生成对抗网络(Generative Adversarial Network, GAN)的思想,采用了一种生成器-判别器结构

  • 生成器(Generator):能进行掩码预测的模型(如BERT),负责将掩码后的文本恢复原状。

  • 判别器(Discriminator):则使用替换词检测(Replaced Token Detection, RTD)预训练任务,检测生成器输出的内容中的每个 Token 是否是原文中的内容。

其完整的流程如图所示。

图 2.9: ELECTRA 预训练任务。
在这里插入图片描述

(2) ELECTRA 模型结构

根据生成器与判别器的不同规模,ELECTRA 共提出了三个版本的模型,分别 是 ELECTRA-Small、ELECTRA-Base 以及 ELECTRA-Large。

其中,ELECTRA-Small 和 ELECTRA-Base 使用与 BERT 一致的数据集来进行预训练,而 ELECTRA-Large 则使用了更多样化的训练数据,从而帮助模型学习更广泛的语言表示。

另外,在 BERT 中,只有 15% 的固定比例 Token 被掩码,模型训练的内容也仅限于这 15% 的 Token。

但在 ELECTRA 中,判别器会判断生成器输出的所有 Token 是否被替换过,因此能更好地学习文本的上下文嵌入。


Encoder-only 架构的语言模型小结:

上述基于 Encoder-only 架构的大语言模型在文本分类、情感分析等多个自然语言处理任务中取得了良好效果。表2.1从模型参数量及预训练语料等方面对上述模型进行总结。

表 2.1: Encoder-only 架构代表模型参数和语料大小表。

模型发布时间参数量(亿)语料规模预训练任务
BERT2018.101.1, 3.4约 15GBMLM+NSP
RoBERTa2019.071.2, 3.5160GBDynamic MLM
ALBERT2019.090.12, 0.18, 0.6, 2.2约 15GBMLM+SOP
ELECTRA2020.030.28, 2.2, 6.6约 20-200GBRTD

可以看出这些经典模型参数大小止步于 6.6 亿,预训练任务也主要服务于自然语言理解。这些模型没有继续寻求参数量上的突破,并且通常只专注于判别任务,难以应对生成式任务,因此在当前愈发热门的生成式人工智能领域中可以发挥的作用相对有限。


声明:资源可能存在第三方来源,若有侵权请联系删除!

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

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

相关文章

链表所有节点值的和

class Node:# 节点类,每个节点包含数据(data)和指向下一个节点的引用(next)def __init__(self, data):self.data data # 存储节点的数据self.next None # 指向下一个节点,默认值为None,表示没有下一个节点class LinkedList:# 链表类&…

STM32 F407ZGT6开发板

#ifndef _tftlcd_H #define _tftlcd_H #include "system.h" //定义LCD彩屏的驱动类型 可根据自己手上的彩屏背面型号来选择打开哪种驱动 //#def…

c# txt文档的实时显示,用来查看发送接收指令

通讯历史按钮 private void uiButton1_Click(object sender, EventArgs e){try{logf new logF();logf.Show();}catch (Exception){throw;} }主页面关闭函数(点击保存就为true true就不删除) private void page1_FormClosed(object sender, FormClos…

Excel 数据转换为SQL语句

文章目录 一、制作公式二、示例图 一、制作公式 1、找一列空白的,选中一个单元格,输入"",在双引号中写入INSERT语句脚本,然后回车。 // 数字代表行数 “INSERT INTO PayList (product, rmb) VALUES (”&A10&“…

SpringMVC (一)基础

目录 SpringMVC 一 简单使用 1 新建模块选择指定参数 2 创建实现类 3 将项目启动 4 运行结果:在浏览器当中响应执行 二 RequestMapping 三 请求限定 SpringMVC SpringMVC是Spring的web模块,用来开发Web应用,SpringMVC应用最终作为B/…

windows第十二章 MFC控件常用消息

文章目录 控件反射消息机制文本框控件EN_CHANGE消息EN_UPDATE消息EN_SETFOCUS消息EN_KILLFOCUS消息EN_MAXTEXT消息EN_ERRSPACE消息EN_HSCROLL消息 按钮控件BN_CLICKED消息BN_DOUBLECLICKED消息BN_SETFOCUS消息BN_KILLFOCUS消息 单选按钮BN_CLICKED 消息 复选框BN_CLICKEDBN_DOU…

基于C语言的简单HTTP Web服务器实现

1. 概述 本案例使用C语言实现了一个简单的HTTP服务器,能够处理客户端的GET请求,并返回静态文件(如HTML、图片等)。在此案例中案例,我们主要使用的知识点有: Socket编程:基于TCP协议的Socket通信…

ZYNQ初识13(zynq_7020)hdmi和串口板载功能的验证

(1)另:首先需要确认供电模块,电压转换模块没有问题,测量后上电防止出现短路。通过vivado下载bit流文件检测JTAG下载口是否正常,如可正常检测,才可进行下一步验证。 (2)以…

ollama下载的DeepSeek的模型(Model)文件在哪里?(C盘下)

目录 一、下载大模型(DeepSeek) 2. 安装 Ollama 3. 检查安装是否成功 二、拉取大模型(DeepSeek) 1. 打开命令行 2. 下载模型 3. 测试下载 4. 等待下载完成 三.模型存放路径 这个位置!! 在人工智能…

docker的anythingllm和open-webui压缩包分享(国内镜像拉取,百度云压缩包分享)

文章目录 前言第一部分:镜像获取🚀 方式一:切换国内下载镜像✅1. 下载anythingllm✅ 2. 下载open-webui 🚀方式二:下载我分享的百度云✅ anythingllm压缩包百度云链接❎ open-webui压缩包 第二部分:下载之后…

父组件中循环生成多个子组件时,有且只有最后一个子组件的watch对象生效问题及解决办法

提示:父组件中循环生成多个子组件时,有且只有最后一个子组件的watch对象生效问题及解决办法 文章目录 [TOC](文章目录) 前言一、问题二、解决方法——使用function函数代替箭头函数()>{}总结 前言 ‌‌‌‌‌问题:子组件用that解决watch无…

求递增子序列LIS的两种方法

文章目录 前言一、普通动态规划(DP)求解LIS1.DP思路2.DP的状态定义与转移方程3.DP的时间与空间复杂度4.DP代码实现5.DP的图文示例 二、贪心 二分查找求解LIS1.思路分析2.贪心 二分的时间与空间复杂度 三. 模板题讲解1.洛谷B3637 最长上升子序列1.dp写法…

【Linux篇】进程状态(僵尸进程,孤儿进程),优先级与调度机制

📌 个人主页: 孙同学_ 🔧 文章专栏:Liunx 💡 关注我,分享经验,助你少走弯路! 文章目录 1. 前文铺垫理解内核链表 2. 进程状态2.1 进程状态查看2.2 僵尸进程2.3 僵尸进程危害2.4 孤儿…

AI应用加速落地丨MaxKB正在被政府、公共事业、教育和医疗行业用户广泛采纳

2025年2月至3月上旬,伴随着各个行业接入并使用DeepSeek,MaxKB开源知识库问答系统正在被越来越多的行业用户所采纳,是人工智能行业落地的强应用。目前,MaxKB在政府、公共事业、教育和医疗四大行业已经拥有了众多典型案例&#xff0…

2024年第十五届蓝桥杯软件C/C++大学A组——五子棋对弈

蓝桥杯原题: 题目描述: “在五子棋的对弈中,友谊的小船说翻就翻? ” 不!对小蓝和小桥来说,五子棋不仅是棋盘上的较量,更是心与心之间的沟通。这两位挚友秉承着 “ 友谊第一,比赛第二…

复试难度解析,西电先进材料与纳米科技学院学院考研录取情况

01、先进材料与纳米科技学院各个方向 02、24先进材料与纳米科技学院近三年复试分数线对比 PS:材料院24年院线学硕方向降低10分,专硕上涨15分;材料院在分数线相对于其他211、985院校对比来看,依然分数偏低,推荐大家关注…

Deepseek Chatgpt Kimi 推荐的深度学习书单

朋友让推荐一些深度学习的书,让 Deepseek、Chatgpt、Kimi 分别生成了一份书单并做了对比,记录一下以备以后用到。 Chatgpt 推荐的深度学习书 1. chatgpt 推荐的书目截图 1.2 Chatgpt 推荐的深度学习书目文字版 如果你想学习 Deep Learning&#xff0…

高频面试题(含笔试高频算法整理)基本总结回顾25

干货分享,感谢您的阅读! (暂存篇---后续会删除,完整版高频面试题基本总结回顾(含笔试高频算法整理)) 备注:引用请标注出处,同时存在的问题请在相关博客留言&#xff0c…

mac安装mysql之后报错zsh: command not found: mysql !

在Mac上安装MySQL后,如果终端中找不到mysql命令,通常是 因为MySQL的命令行工具(如mysql客户端)没有被正确地添加到你的环境变量中。 检查 MySQL 是否已安装 ps -ef|grep mysql查看到路径在 /usr/local/mysql/bin 查看 .bash_pro…

蓝桥杯备考:set容器用法(lower_bound)---营业额统计

如图所示,这道题的暴力解法就是枚举每天的营业额,让该营业额和前面的天的营业额依次相减取最小值这样的话我们的时间复杂度就是N平方,我们是很有可能超时的 所以我们选择用set容器的二分查找功能 我们每次遍历到一个数的时候,前…