当前位置: 首页 > news >正文

预训练语言模型(Pre-trained Language Model, PLM)介绍

预训练语言模型(Pre-trained Language Model, PLM)

一、预训练语言模型核心定义与价值

预训练语言模型是自然语言处理(NLP)领域的里程碑技术,其核心思想是先在大规模无标注文本上进行通用语言知识学习(预训练阶段),再针对具体下游任务进行微调(微调阶段),实现“一次预训练,多任务复用”的高效开发模式。

核心价值

  1. 突破数据依赖:传统NLP方法需为每个任务标注大量数据,而预训练模型通过无标注文本学习通用语言规律,大幅降低下游任务的标注成本。
  2. 提升任务效果:预训练阶段积累的语法、语义、常识等知识,能为下游任务提供强大基础,使模型在文本分类、命名实体识别等任务中轻松达到State-of-the-Art(SOTA)水平。
  3. 统一技术框架:无论是文本生成、问答还是翻译任务,均可基于同一预训练模型进行微调,避免为每个任务单独设计模型结构,简化NLP技术栈。

二、预训练方法与传统方法对比

预训练模型的“Pre-train + Fine-tune”模式,彻底改变了传统NLP的开发流程,两者在数据利用、训练效率和泛化能力上存在显著差异:

对比维度预训练方法(Pre-train + Fine-tune)传统方法(Task-specific Training)
数据使用1. 先利用海量无标注文本完成预训练;
2. 再用少量标注数据微调下游任务
直接使用任务专属标注数据训练,无标注数据利用率极低
训练流程两阶段:通用预训练 → 任务微调,可复用预训练模型单阶段:为每个任务单独设计模型、训练参数,无复用性
泛化能力预训练学习通用语言规律,微调后可快速适配新任务模型仅适配特定任务,换任务需重新训练,泛化能力弱
标注成本下游任务仅需少量标注数据,大幅降低成本每个任务需大量标注数据,成本高、周期长
代表模型BERT、GPT、RoBERTa等传统CNN/RNN模型、SVM等机器学习模型

关键差异解析

传统方法如同“为每个任务单独造一辆车”,需从头设计结构、组装零件;而预训练方法则是“先造好通用底盘(预训练模型),再根据需求加装座椅、方向盘(微调)”,效率和复用性大幅提升。

三、核心预训练技术:以BERT为例

BERT(Bidirectional Encoder Representations from Transformers)是预训练语言模型的标杆,其预训练过程通过两个核心任务实现通用语言知识的学习,同时基于Transformer架构保障建模能力。

1. BERT预训练的两大核心任务

(1)掩码语言模型(Masked Language Model, MLM)
  • 定义:模拟“完形填空”任务,随机掩盖文本中的部分词汇,让模型预测被掩盖的原词,强制模型学习上下文双向语义关联。
  • 具体流程
    1. 从输入文本中随机选择15%的词汇作为掩码对象;
    2. 对选中的词汇,80%概率替换为特殊符号 [MASK][MASK][MASK],10%概率替换为随机词汇,10%概率保留原词(避免模型仅依赖 [MASK][MASK][MASK] 符号,提升泛化性);
    3. 模型通过上下文信息预测被掩盖位置的原词,计算预测误差并反向更新参数。
  • 示例
    • 输入序列(掩码后):The man went to [MASK] store with [MASK] dog
    • 目标序列(需预测): the、his
  • 核心作用:让模型学习双向上下文语义,解决传统自回归模型(如GPT)仅能单向建模的局限,更适合语义理解类任务。
(2)下一句预测(Next Sentence Prediction, NSP)
  • 定义:判断两个句子是否为连续的上下文(即第二句是否是第一句的下一句),让模型学习句子级别的语义关联和逻辑关系。
  • 具体流程
    1. 从语料中抽取句子对(A, B),50%概率B是A的真实下一句(标签为TrueTrueTrue),50%概率B是随机抽取的无关句子(标签为FalseFalseFalse);
    2. 在句子对前添加特殊符号[CLS][CLS][CLS](用于分类任务的聚合特征),在A和B之间添加[SEP][SEP][SEP](句子分隔符);
    3. 模型通过[CLS][CLS][CLS]位置的输出特征预测句子对的标签(TrueTrueTrue/FalseFalseFalse),学习句子间的逻辑关系。
  • 示例
    • 正例(标签TrueTrueTrue):[CLS]师徒四人历经艰险[SEP]取得真经[SEP][CLS] 师徒四人历经艰险 [SEP] 取得真经 [SEP][CLS]师徒四人历经艰险[SEP]取得真经[SEP]
    • 反例(标签FalseFalseFalse):[CLS]师徒四人历经艰险[SEP]火烧赤壁[SEP][CLS] 师徒四人历经艰险 [SEP] 火烧赤壁 [SEP][CLS]师徒四人历经艰险[SEP]火烧赤壁[SEP]
  • 核心作用:帮助模型理解句子间的连贯性,为文本匹配、问答等依赖句子关系的任务打下基础。

2. BERT的核心优势:动态文本表征

BERT的本质是动态文本表征模型,能根据上下文生成词汇的动态向量,这与传统静态词向量(如Word2Vec)有本质区别:

特征BERT动态表征Word2Vec静态表征
向量生成逻辑词汇向量随上下文变化(“苹果”在“吃苹果”和“苹果手机”中向量不同)每个词汇对应唯一固定向量(“苹果”在任何语境下向量相同)
语义捕捉能力能准确区分多义词、歧义句,贴合真实语言逻辑无法处理多义词,歧义句语义表征易混淆
下游任务适配性无需额外调整词向量,可直接用于各类NLP任务需针对任务额外优化词向量,适配性弱
示例“我喜欢吃苹果”→“苹果”向量偏向“水果”;“苹果和华为哪个好”→“苹果”向量偏向“品牌”无论“吃苹果”还是“苹果手机”,“苹果”向量完全相同

四、BERT的技术基石:Transformer架构

BERT的模型主体基于Transformer的Encoder层(编码器)构建,Transformer通过自注意力机制(Self-Attention)和多层神经网络,实现对文本语义的深度建模。

在这里插入图片描述

1. Transformer Encoder的核心结构

Transformer Encoder采用“多层堆叠”设计,每层包含两个关键子层:多头自注意力层(Multi-Head Self-Attention)前馈神经网络层(Feed-Forward Neural Network, FFN),且每个子层后均添加“残差连接(Residual Connection)”和“层归一化(Layer Normalization)”。

(1)输入嵌入层(Embedding Layer)

BERT的输入嵌入是三种嵌入的加和,确保模型同时捕捉词汇、句子边界和语序信息:

  • Token Embedding:词汇本身的嵌入向量,将每个词汇映射到低维稠密空间(如768维);

  • Segment Embedding:句子来源嵌入,用于区分句子对中的两个句子(如句子A用EAE_AEA,句子B用EBE_BEB);

  • Position Embedding:位置嵌入,为每个词汇添加位置信息(Transformer本身无语序感知能力,需通过位置嵌入补充)。

  • 示例(输入:[CLS]mydogiscute[SEP]helikesplaying[SEP][CLS] my dog is cute [SEP] he likes playing [SEP][CLS]mydogiscute[SEP]helikesplaying[SEP]):

    嵌入类型对应向量作用
    Token EmbeddingE[CLS]E_[CLS]E[CLS], EmyE_myEmy, EdogE_dogEdog捕捉词汇本身语义
    Segment EmbeddingEAE_AEA, EAE_AEA, EAE_AEAEBE_BEB, EBE_BEB区分句子A和句子B
    Position EmbeddingE0E_0E0, E1E_1E1, E2E_2E2E10E_10E10标记词汇在序列中的位置

    三种嵌入加和后,需经过Layer Normalization处理,得到最终的输入特征矩阵。

(2)多头自注意力层(Multi-Head Self-Attention)

自注意力机制是Transformer的核心,其作用是让模型在处理每个词汇时,自动关注序列中其他相关词汇的信息,捕捉词汇间的语义关联;“多头”则是通过多个并行的注意力头,从不同角度捕捉关联信息。

  • 单头自注意力计算流程

    1. 将输入特征矩阵 XXX 分别与三个可学习参数矩阵 WQW_QWQ(Query,查询)、WKW_KWK(Key,键)、WVW_VWV(Value,值)相乘,得到QQQKKKVVV矩阵;
    2. 计算注意力分数:Score=Q×KT/dkScore = Q × K^T / \sqrt{d_k}Score=Q×KT/dkdkd_kdkQQQ/KKK的维度,除以dk{\sqrt{d_k}}dk是为了避免分数过大导致Softmax梯度消失,这个场景出现在 “自己与自己进行计算时,相似性会很大,因此计算数值也会很大” );
    3. 对注意力分数进行Softmax归一化,得到注意力权重(权重越高,说明该位置词汇与当前词汇关联越强);
    4. 用注意力权重对VVV矩阵加权求和,得到单头自注意力输出:Attention(Q,K,V)=Softmax(Score)×VAttention(Q,K,V) = Softmax(Score) × VAttention(Q,K,V)=Softmax(Score)×V
  • 多头自注意力计算流程

    1. QQQKKKVVV分别拆分为hhh个并行的子矩阵(如h=12h=12h=12,即12个注意力头);
    2. 每个子矩阵独立计算单头自注意力,得到hhh个输出子矩阵;
    3. hhh个输出子矩阵拼接,再与参数矩阵WOW_OWO相乘,得到多头自注意力的最终输出。
  • 示例(句子“今天天气不错”的注意力分数矩阵):

    当前词
    0.120.123-1.3240.571-0.6690.982
    (注:分数越高,代表当前词与对应词的关联越强)
(3)前馈神经网络层(FFN)

多头自注意力层输出的特征矩阵,需经过前馈神经网络进一步处理,增强模型的非线性拟合能力。其结构为:

  • 第一层:线性变换 + ReLU激活函数,公式:FFN1(x)=ReLU(x×W1+b1)FFN1(x) = ReLU(x × W_1 + b_1)FFN1(x)=ReLU(x×W1+b1)
  • 第二层:线性变换,公式:FFN2(x)=x×W2+b2FFN2(x) = x × W_2 + b_2FFN2(x)=x×W2+b2
  • (注:每个位置的词汇特征独立处理,无序列依赖)。
(4)残差连接与层归一化

为解决深层网络训练中的梯度消失问题,Transformer在每个子层(自注意力层、FFN层)后添加:

  • 残差连接:将子层输入与子层输出直接相加(Output=Input+SubLayer(Input)Output = Input + SubLayer(Input)Output=Input+SubLayer(Input)),确保梯度能直接反向传播;
  • 层归一化:对残差连接后的特征进行归一化(LayerNorm(Output)LayerNorm(Output)LayerNorm(Output)),使特征分布更稳定,加速训练。

2. Transformer Encoder的整体流程

输入序列 → 嵌入层(Token+Segment+Position)→ Layer Normalization → 多头自注意力层 → 残差连接+Layer Normalization → FFN层 → 残差连接+Layer Normalization → 输出特征矩阵(用于下游任务)。

五、BERT在下游任务中的应用

BERT通过微调(Fine-tune)可适配几乎所有NLP任务,根据任务类型的不同,微调方式主要分为三类:

1. 文本分类任务(如情感分析、MNLI)

  • 任务目标:判断文本属于哪个类别(如“正面”/“负面”、“支持”/“反对”);
  • 微调方式
    1. 将文本输入BERT,得到[CLS][CLS][CLS]位置的输出特征(该特征聚合了整个文本的语义信息);
    2. [CLS][CLS][CLS]特征后添加一个分类器(如线性层+Softmax);
    3. 使用标注的分类数据训练分类器,同时微调BERT部分参数;
  • 示例:判断“这部电影太精彩了”的情感类别为“正面”。

2. 序列标注任务(如命名实体识别NER、词性标注)

  • 任务目标:为文本中的每个词汇标注类别(如“人名”、“地名”、“动词”);
  • 微调方式
    1. 将文本输入BERT,得到每个词汇(Token)的输出特征;
    2. 为每个Token的特征添加一个分类器;
    3. 使用标注的序列数据训练分类器,学习每个Token的类别映射;
  • 示例:对“北京是中国的首都”标注:“北京(地名)”、“中国(地名)”。

3. 文本匹配任务(如问答SQuAD、文本相似度)

  • 任务目标:判断两个文本的关系(如“问答匹配”、“文本是否相似”);
  • 微调方式(以SQuAD问答为例):
    1. 将问题(Question)和段落(Paragraph)拼接为[CLS]问题[SEP]段落[SEP][CLS] 问题 [SEP] 段落 [SEP][CLS]问题[SEP]段落[SEP],输入BERT;
    2. 在BERT输出层后添加两个线性层,分别预测答案在段落中的“起始位置”和“结束位置”;
    3. 使用标注的问答数据(问题+段落+答案位置)训练位置预测器;
  • 示例:问题“中国的首都是哪里?”,段落“北京是中国的首都…”,预测答案起始位置为“北”,结束位置为“京”。

六、BERT的优势与局限性

1. 核心优势

  • 双向语义建模:MLM任务让模型同时利用上下文信息,语义理解更准确;
  • 海量数据利用:预训练阶段可使用TB级无标注文本,学习更全面的语言知识;
  • 任务适配性强:微调方式简单,无需大幅修改模型结构即可适配多任务;
  • 效果显著:在11个NLP任务中刷新SOTA,成为后续预训练模型的设计基准。

2. 主要局限性

  • 训练成本高:预训练需消耗大量计算资源(如BERT-Base需在TPU上训练数天),普通开发者难以复现;
  • 生成式任务弱:BERT是Encoder-only结构,无生成能力,无法直接用于文本生成、机器翻译等任务;
  • 参数量大:BERT-Base参数量约110M,BERT-Large约340M,部署时对硬件要求较高;
  • 依赖微调数据:若下游任务无标注数据,BERT的效果会大幅下降(需结合零样本/少样本学习优化)。

七、预训练技术的发展趋势

BERT之后,预训练技术不断迭代,主要发展方向包括:

1. 模型结构优化

  • Decoder-only结构:如GPT系列,专注于文本生成任务,通过自回归预训练实现流畅的长文本生成;
  • Encoder-Decoder结构:如T5、BART,结合Encoder的语义理解能力和Decoder的生成能力,适配翻译、摘要等生成式任务。

2. 预训练任务改进

  • 取消NSP任务:如RoBERTa,研究发现NSP任务对模型效果提升有限,取消后通过增加预训练数据量和批次大小,进一步提升性能;
  • 更精细的掩码策略:如SpanBERT,对连续的词汇片段进行掩码,而非单个词汇,增强模型对短语语义的理解。

3. 效率优化

  • 模型压缩:通过蒸馏(Distillation,如DistilBERT)、量化(Quantization)等技术,在保证效果的前提下减少参数量,降低部署成本;
  • 快速预训练:如ALBERT,通过参数共享、因式分解嵌入矩阵等方式,大幅减少参数量,加速预训练过程。

4. 多模态融合

  • 预训练模型从纯文本扩展到“文本+图像”(如CLIP、ViBERT)、“文本+语音”等多模态领域,实现跨模态的语义理解和生成。

八、总结

预训练语言模型(以BERT为代表)通过“Pre-train + Fine-tune”模式,彻底革新了NLP领域的技术范式。其核心价值在于利用海量无标注数据学习通用语言知识,为下游任务提供强大基础;而Transformer架构的自注意力机制,則保障了模型对语义关联的深度捕捉能力。

尽管BERT存在训练成本高、生成能力弱等局限,但它奠定了现代预训练技术的基础,后续的GPT、T5、CLIP等模型均在其思想上不断优化。未来,预训练技术将朝着“更高效、多模态、通用化”的方向发展,持续推动NLP乃至人工智能领域的进步。

http://www.dtcms.com/a/613893.html

相关文章:

  • 免费域名注册网站怎么登录网站运营一个月多少钱
  • 抚顺市营商环境建设局网站公众号后台登录
  • Vue2 学习记录--路由
  • Spring Boot 热部署
  • 非易失性存储器·W25Q64使用手册解读
  • 网站统计关键词重庆市建设局网站
  • 分布式缓存技术选型指南
  • mysql主从复制配置
  • html网站模板建站手机建网站推广
  • Vue 项目实战《尚医通》,预约挂号的路由与静态搭建,笔记36
  • 网站建设 风险防控网站首页的head标签内
  • 多用户跨学科交流系统(3):评论模块与 Spring Boot 全局异常处理
  • 前后端分离部署学之思在线考试系统
  • 在树莓派4B上部署ONNX格式的YOLOv8-Pose
  • websocket和传统socket有何差别?是属于一个子集还是完全不同?
  • 双指针问题2(c++)
  • 龙岩市城乡规划建设局网站三只松鼠的网络营销方式
  • Docker容器使用手册——入门篇(上)
  • C语言编译器网页版 | 轻松编写与调试C语言程序
  • QT注册自定义类相关的两个用法
  • 进程间关系(linux)
  • WordPress外贸成品网站的免费获取渠道
  • 经典算法题之汉明距离(二)
  • 公司注册网站模板上杭网站设计
  • 基于Spring AI的RAG和智能体应用实践
  • Flutter:跨平台开发终极指南
  • Python-将身份证正反面图片-生成PDF
  • 建单页网站搜网站的关键词
  • 数据科学每日总结--Day20--区块链
  • 自建网站平台有哪些建立个人网站能干