datawhale:Happy-LLM 打卡-Task04:3.1Encoder-onlyPLM仅编码预训练模型(NLP预训练模型、Encoder-only架构)

发布时间:2026/10/22 1:52:18

datawhale:Happy-LLM 打卡-Task04:3.1Encoder-onlyPLM仅编码预训练模型(NLP预训练模型、Encoder-only架构) 前言该部分[1]主要是对Transformer的变体路线——Encoder-only仅编码器架构的描述介绍了3种主要的Encoder-only架构模型BERT、RoBERTa、ALBERT。所以首先对“多头放缩点积自注意力机制”进行回顾然后对编码器模块进行分析再对NLP预训练模型进行一定的梳理然后以Encoder-only概念模型作为主要研究对象分析更接近于RoBERTa并梳理Encoder-only相关模型的研究。1 多头放缩点积自注意力机制首先是注意力机制然后采用放缩点积的形式进行相似度计算采用多头的形式并行最后Q与K/V来自同一序列因此是“自注意力”。为了便于称呼后续简称为“自注意力”。代入Task2博客“2 多头点积注意力”datawhaleHappy-LLM 打卡-Task02注意力机制与Transformer的Encoder-Decoder架构《Attention Is All You Need》-CSDN博客中的具体计算过程可以得到如下计算过程可以看出自注意力机制在同一个token序列上计算每个token与其它token的关系然后融合信息在整个序列上进行信息融合然后得到融合了自身信息的token新序列。2编码器模块编码器模块由N个编码器层堆叠而成。每个编码器层由一个多头自注意力层MHA层与一个前馈神经网络层FFN层构成。输入文本序列需要的输出是最后一层的向量表示作为对输入序列的精炼表示。如下图所示可以看出编码器层先在同一序列的token之间进行信息融合MHA层跨token交互然后对每个token的特征进行非线性变换的语义提炼FFN层单个token特征变换。每一个token都与前后上下文的token进行了充分的交互即双向全局上下文建模最终得到包含全局上下文信息的向量表示在语义理解上具有显著优势。3Pre-training预训练Transformer本身是用于双语机器翻译采用序列到序列Seq2Seq 的有监督学习根据源序列与 已生成目标前缀去预测下一个翻译词。2012年AlexNet采用交叉熵损失训练有监督分类预训练在标注图像上做分类预训练然后在下游的检测 / 分割等具体任务上微调也被称为“迁移学习”姑且算是视觉深度学习中监督预训练鼻祖发展为AlexNet → VGG → ResNet但是依赖昂贵人工标注无自监督。在自然语言领域2013年Word2Vec使用了静态词表征预训练2018ELMo通过双层双向 LSTM进行动态上下文词嵌入也是预训练。二者都是先学习词的表示然后用于下游具体任务。由此这种“预训练微调”也就是先大规模预训练获取能力然后具体微调进行任务适配显示出其魅力。诚如教程中所言[1]通过将预训练和微调分离 完成⼀次预训练的模型可以仅通过微调应⽤在⼏乎所有下游任务上只要微调的成本较低即使预训练成本是之前的数倍甚⾄数⼗倍模型仍然有更⼤的应⽤价值。因此可以进⼀步扩⼤模型参数和预训练数据量使⽤海量的预训练语料来让模型拟合潜在语义与底层知识从⽽让模型通过⻓时间、⼤规模的预训练获得强⼤的语⾔理解和⽣成 能⼒。而预训练需要大量是数据进行学习。图像领域最早通过人工标注形式为研究人员提供了一个大规模图像数据库用于训练和测试ImageNet[2]。而自然语言...做标注好像有点困难因此更倾向于在已有的⽂本语料上进行自监督学习。一个自然的想法就是破坏掉已有的文本序列要求预测缺失的部分。自监督学习巧妙地利用了语言自身的序列特性实现了“标注”过程的自动化促使模型在无意识中学会了语法结构、词汇语义甚至广泛的世界知识。这里的“自监督”更多指的是从海量的无标注文本中自动构造训练内容突破了人工标注的成本和规模瓶颈但还是在构造了监督数据用于损失函数计算。2018 年、2019 NLP 预训练领域发展与Encoder-only、Decoder-only、Encoder-Decoder架构分别结合诞生了三个标志性的模型1.Encoder-only的代表BERT2018年10月Google 提出了 BERTBidirectional Encoder Representations from Transformers。核心是采用掩码语言模型Masked Language ModelMLM预训练任务随机遮蔽输入句子中的部分词汇要求模型结合上下文双向信息去预测被遮蔽的词。在推理阶段要的就是高维向量表示然后根据具体任务接入输出头去微调。这种方式让模型能够深度理解文本的上下文语义在当时的文本分类、阅读理解、命名实体识别等各种自然语言理解NLU任务上取得了断崖式的提升影响力很大确立了 NLP 领域的“预训练 微调”标准范式。2.Decoder-only的代表GPT2018 年 6 月OpenAI 提出了 GPTGenerative Pre-trained Transformer。核心是采用自回归语言模型Autoregressive Language ModelAR预训练任务或者叫因果语⾔模型Casual Language ModelCLM从左到右逐词预测天生契合“生成”任务。在推理阶段就是进行下一个词的预测输出然后根据具体任务微调。也是“预训练-微调”范式发布时间比BERT早但影响力当时较弱。早期的 GPT 在理解任务上略逊于 BERT但其赋予了模型强大的文本续写和生成能力。随着模型规模的不断扩大这种自回归预训练方式最终孕育出了后来的 GPT-3 以及ChatGPT确立了“预测下一个词”在当今的统治地位。3.Encoder-Decoder的代表T52019 年 10 月Google 提出了 T5Text-to-Text Transfer Transformer。核心是采用去噪序列到序列重构Denoising Sequence-to-Sequence Reconstruction的预训练任务可归纳为三步扰动加噪、双向编码、自回归重构。首先对原始文本施加某种形式的 “破坏 / 噪声”得到被扰动的输入序列然后将被扰动的序列送入编码器由编码器进行双向上下文建模提取完整的语义表示最后用解码器以自回归的方式基于编码器的语义输出还原出目标文本。这种设计既通过编码器保留了类似 BERT 的双向语义理解能力又通过解码器训练了类似 GPT 的自回归生成能力。不同的 Encoder-Decoder 模型采用了不同的噪声构造方式例如 T5 的跨度损坏、BART 的全序列去噪重构、PEGASUS 的间隙句子生成等。在推理阶段编码器对完整输入文本进行双向语义编码得到全局语义表示解码器基于该表示自回归生成完整的目标输出文本所有任务均通过“输入文本 - 输出文本”的形式完成微调。正如T5 提出的“万物皆可 Text-to-Text”的统一框架通过添加任务前缀将翻译、分类、摘要等所有 NLP 任务统一转化为“输入文本-输出文本”的形式为多任务统一建模提供了极具影响力的范式。注1虽然“因果语⾔模型”叫因果但是还是在统计意义上的。。只保证预测时不偷看未来 token并不保证学到的是真实世界的因果关系。同时与“因果推断”不同前者底层还是进行相关性统计尽管出现了涌现现象后者强调了“相关性不等于因果性”。注2尽管T5主打的“多任务统一建模”但是GPT系列在GPT2、GPT3上也实际上实现了文本到文本的多任务并最终投入实际使用。。2024年就已经是“所有的下游任务都视作text2text任务只需要加点prompt就能顺利完成”[3]中的评论感叹。注3到2026年为止由于Decoder-only架构在训练上的优势便于扩大规模、发掘涌现能力走向“大语言模型”的核心——尺度定律Scaling laws同时大多数或者说所有任务都能通过输出序列的方式来作为text2text任务正如task01中提到的文本语言text的承载能力datawhaleHappy-LLM 打卡-Task01第一章NLP基础概念-CSDN博客成为了主流架构。4Encoder-only架构Transformer在2017年提出。2018年Google 选择了 Encoder-only路线通过将 Encoder 层进⾏堆叠发布了BERT作为代表性模型。但是BERT本身还使用了下⼀句预测Next Sentence PredictionNSP的预训练任务引入了段落嵌入导致与纯粹的“Encoder-only模型”不同。而后续的RoBERTa更接近与纯粹的“Encoder-only模型”。考虑到都已经过去快10年了因此这里以纯粹的“Encoder-only模型”进行说明。只使用编码器模块即为“Encoder-only仅编码器”架构了。根据编码器模块的特点可以看出其输出侧重于抽象的向量表示在语义理解上具有优势。对语言上的“Encoder-only仅编码器”架构给出概念定义仅由多层 Transformer 编码器堆叠构成通过掩码语言模型Masked Language ModelMLM进行自监督预训练具备完整双向上下文建模能力的预训练语言模型。核心是“掩码建模”。这里的“双向上下文建模”指的就是自注意力机制使得“每一个token都与前后上下文的token进行了充分的交互”。其特点包括架构采用Transformer 编码器堆叠每层包含多头自注意力MHA与前馈神经网络FFN两个核心子层其中的自注意力层不添加因果掩码保持双向特征并采用词嵌入token embedding与位置编码positional encoding也叫位置嵌入position embedding表示输入的内容。预训练任务采用掩码语⾔模型Masked Language ModelMLM在输入文本中随机选择一定比例的 token将其替换为特殊掩码符[MASK]、随机 token 或保持原词让模型根据被掩码位置的双向上下文预测出原始的 token让模型学会利用完整上下文理解语义而非仅靠上文预测下文从而习得双向语言表示能力形象的比喻进行“完形填空”下游适配向预训练完成的模型添加输出头分类头、序列标注头等通过微调适配各类自然语言理解NLU任务比如文本分类、情感分析、命名实体识别、语义相似度匹配等。参考Transformer编码器-解码器架构图给出“Transformer-Encoder-only仅编码器”的典型架构图如下在预训练阶段输入被掩码的序列然后要求模型对掩码位置进行预测。具体而言模型顶部有一个MLM 预测头将编码器输出的 token 表示token矩阵映射到整个词表维度通过 softmax预测被掩码位置的 token用于计算预训练的交叉熵损失。这个头部仅服务于 MLM 自监督任务和下游任务逻辑无关。再具体的说就是把“预测概率矩阵P”中掩码位置的概率分布拿出来用于计算交叉熵损失。输出头得到预测概率矩阵P即对象A的m个位置每个位置上是对下一个词的预测表现为对整个词表的概率分布p。注这里可以对比“Task03”中的“4 输出头”与“5 预测概率矩阵P的使用”。datawhaleHappy-LLM 打卡-Task032.3搭建一个Transformertokenizer分词器、Embedding 层token嵌入、位置编码、输出头-CSDN博客预训练的输入、输出如下图所示在下游任务阶段编码器主体所有 Transformer 层完全保留作为通用语义特征提取器。移除顶部的 MLM 预测头也就是只要到图中蓝色部分的“最后一层的向量表示token矩阵”那里就行了再根据下游任务类型拼接对应的输出头用任务标注数据对整个模型编码器 新输出头进行端到端微调。比如说二分类问题就是输出两个维度情感判断等多分类问题就是多个维度输出的概率分布。这个架构在理解能力上具有显著优势。应用方面一个是作为上游语言理解模型用于下游任务分类、命名实体识别NER、问答等传统自然语言理解任务给我印象深刻的是“命名实体识别模型BERT-Bi-LSTM-CRF”。另一方面就是文本嵌入与语义检索通过对比学习训练专用 embedding 模型在 RAG、搜索、推荐中作为一召回阶段bi-encoder独立编码二阶段 rerank 用 进行精排cross-encoder联合编码等等。编码器在检索中可以看这一篇了解一下[4]https://zhuanlan.zhihu.com/p/299659838555 Encoder-only相关模型变体、改进与应用非常多养活了大批研究者不是。5.1BERT“Encoder-only”架构的代表作为即为Google 团队在 2018年发布的BERTBidirectional Encoder Representations from Transformers 论⽂《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》[5]。采用掩码语⾔模型Masked Language ModelMLM与下⼀句预测Next Sentence PredictionNSP的预训练任务进行无监督预训练使模型获得强大的语义理解能力能够输出优秀的向量表示然后接具体的输出头在下游任务上进行微调以实现能力的迁移。其将预训练-微调范式发扬光大甚至可以作为预训练、Encoder-only架构的代名词。由此Encoder-only架构的模型也常常被称为“BERT类模型”毕竟都算是在这个基础上改进得到。掩码语⾔模型Masked Language ModelMLM为随机选择 15% 的输入 token其中 80% 替换为[MASK]、10% 替换为随机词、10% 保持原词模型需根据双向上下文预测被掩码位置的原始 token使用交叉熵损失训练。然后它的预训练任务还使用了下⼀句预测Next Sentence PredictionNSP即引入了特殊字符[CLS]与[SEP]以及段落嵌入Segment Embeddings要求模型判断⼀个句对的两个句⼦是否是连续的上下⽂。其输入如下图所示图源自论文原文在输入的时候于第一个位置引入特殊 token CLS 该 token 代表整句的状态作为句级的语义表征[SEP]则作为两个句子的分割符号段落嵌入用于区分当前token位置是句子A还是句子B。位置编码方面使用可学习绝对位置嵌入在输入侧与词嵌入、段嵌入相加。分词方法上使用了WordPiece词表大小30k。具体内容不进行展开了。注值得注意的是从发展历程而言BERT是第一个 Encoder-Only 预训练模型MLMNSP、Encoder-Only 预训练等都是在它提出来的。但是为了追求“共性”我们在前面抽象出了纯粹的“Encoder-only模型”历史发展中并没有或者说RoBERTa更接近但是出现的比BERT晚同时去除NSP 被公认为是改进特此说明。5.2 RoBERTa2019年在论文《RoBERTa: A Robustly Optimized BERT Pretraining Approach》[6]中提出一种用于稳健优化的 BERT 预训练方法。 具体来说RoBERTa 使用了动态掩码、没有 NSP 损失的完整句子、更⼤的预训练数据、更⻓的序列⻓度和更多的训练Epoch。更接近于纯粹的“Encoder-only模型”。动态掩码将 Mask 操作放到训练阶段从⽽让每⼀个 Epoch 的训练数据 Mask 的位置都不⼀致。预训练方法只使用MLM任务。位置编码方面使用可学习绝对位置嵌入在输入侧与词嵌入相加。分词方法上使用了 BPE词表大小50k。5.3 ALBERT重点在轻量化上个人感觉注重参数减少技术[7]。Embedding 层参数矩阵分解对 Embedding 层的参数矩阵进⾏了分解让 Embedding 层的输出维度和隐藏层维度解绑在 Embedding 层的后⾯加⼊⼀个线性矩阵进⾏维度变换使得 Embedding 层的输出维度低然后经过一个线性变换升到维度与隐藏层一致。参数共享让各个Encoder 层共享模型参数来减少模型的参数量实际只有⼀层Encoder 参数然后去反复计算。改进 NSP为 SOP 预训练任务正例同样由两个连续句⼦组成但负例是将这两个的顺序反过来增加对顺序关系的要求采用MLM SOP 预训练。5.4 ModernBERT2024年提出更“现代化”的BERT[8]系统性吸收近年 Transformer 改进RoPE、FlashAttention、GLU、交替注意力采用掩码率 30%的MLM预训练任务8192 token 上下文大小在理解类任务上实现更快、更准、更长的突破。[1]GitHub - datawhalechina/happy-llm: 从零开始构建大模型 · GitHub[2]ImageNet[3]https://zhuanlan.zhihu.com/p/88438851[4]https://zhuanlan.zhihu.com/p/29965983855[5][1810.04805] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding[6][1907.11692] RoBERTa: A Robustly Optimized BERT Pretraining Approach[7][1909.11942] ALBERT: A Lite BERT for Self-supervised Learning of Language Representations[8][2412.13663] Smarter, Better, Faster, Longer: A Modern Bidirectional Encoder for Fast, Memory Efficient, and Long Context Finetuning and Inference
延伸阅读

更多相关文章

2026/10/22 1:52:18

如何快速上手 liKeYun_Ylb:从零跑通微信私域引流系统的完整指南

如何快速上手 liKeYun_Ylb:从零跑通微信私域引流系统的完整指南 【免费下载链接】liKeYun_ylb 引流宝致力于为个人、团队提供基于微信私域流量的推广、引流的效率工具。可减轻人力,有效降低资源损失、流量流失的几率。引流宝完全开源,免费&am…

2026/10/22 3:02:30

Wireshark抓包实战:从TCP重传到MTU问题定位

如果要我在自己电脑上选一个必须常驻的排障工具,Wireshark一定排前三。别急着说它是网络工程师专用,这些年我用它排查过接口超时、数据库连接被重置、视频播放卡顿,甚至还有同事抱怨“邮箱发不出去”这类看起来完全不相干的问题。很多人一听抓…

2026/10/22 3:02:30

Redis进阶核心知识复习:持久化、高可用与缓存一致性

我自己一般在笔记里分两条线走:第一条线是把知识点串成体系,第二条线是挖那些“面试常问、实战常踩”的细节。单纯把书的目录抄一遍没用,得能回答“为什么”。这篇复习笔记我按自己的理解整理,尽量把每个知识点背后的取舍也讲清楚…

2026/10/22 3:02:30

基于Spring Boot+Vue3+Android的旅游导航系统开发实战

1. 需求分析与技术选型:为什么这套方案值得参考经常在技术社区里看到有人发类似的选题——"springbootvue3基于Android的旅游导航系统"——尤其是毕设季和接私活的时候,这类题目几乎成了标配。说实话,这个题目的确适合用来练手&…

2026/10/22 3:02:30

Tesseract-OCR模型包完全指南:选型、安装、调优与自定义训练

做 OCR 识别绕不开 Tesseract-OCR,这几乎是开源社区里被提到最多的引擎。很多人在第一台 Linux 服务器上装好 tesseract,拿一张带文字的图片跑命令行,结果发现:引擎还是那个引擎,识别英文凑合,识别中文经常…

2026/10/22 3:02:30

ComfyUI节点式AI绘画工作流搭建:从节点理解到稳定出图

ComfyUI 工作流搭建实战:从节点理解到稳定出图如果你玩过一阵子 AI 绘画,大概率会听到两种声音:一边是“原教旨”玩家坚持传统 WebUI 就够用,另一边是越来越多的人开始谈论 ComfyUI 如何“把控制权还给你”。我属于后者&#xff0…

2026/10/22 2:57:29

LSTM+注意力机制实现多输入单输出时间序列预测实战

做多特征输入、单变量输出的预测,最让人头疼的一点就是:特征塞了一大堆,模型却总是抓不住真正起作用的那些时刻。这个问题我前前后后折腾了小半年,试过纯LSTM、CNN堆叠、甚至把Transformer搬过来强行改,最后真正稳定落…

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目,目标很直白:把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事,逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间,我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依,按理说这类业务代码模式非常固定,应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块,它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑