一、数据清洗(Data Cleaning)
在构建大语言模型(LLMs)过程中,数据清洗是最关键的步骤之一。高质量的数据直接决定了模型训练的效果与泛化能力。数据清洗的目标是提升训练语料的纯净度、代表性与合理性,包括去除噪声、检测异常、平衡语料、消除歧义与去重等多个方面。
任务 | 目的 | 效果 |
---|---|---|
数据过滤 | 提升质量,剔除无用或错误信息 | 避免模型学到偏差,提升泛化能力 |
数据去重 | 去除重复样本,提升多样性 | 降低过拟合,优化训练效率与表现 |
1)数据过滤(Data Filtering)
➤ 目的:
提升训练数据质量、增强模型泛化能力、避免生成虚假或有害内容。
清洗任务 | 技术方法 | 工具/实现建议 |
---|---|---|
噪声清除 | 正则、分类器、启发式规则 | clean-text 、FastText、regex |
异常值处理 | 长度规则、嵌入相似度、孤立森林 | sentence-transformers 、sklearn |
类别平衡 | SMOTE、back-translation、热力图分析 | NLTK、matplotlib、自编脚本 |
文本预处理 | 停用词、标准化、标点清除 | Jieba、SpaCy、NLTK |
歧义清除 | NLI模型检测、逻辑推理、语言模型评分 | GPT评分、entailment模型 |
(a)噪声清除(Removing Noise)
定义:剔除无关、错误或具有误导性的信息,以降低模型生成错误响应的风险。
方法与示例:
-
删除网页中的脚本、广告语、乱码、无意义字符;
-
删除虚假陈述、标题党内容;
-
使用
BeautifulSoup
清理 HTML,结合正则表达式排除模板类内容; -
构建文本分类器识别低质量内容,如垃圾评论、错误翻译等;
-
启发式规则过滤字符占比异常或内容密度过低的段落。
(b)异常值处理(Handling Outliers)
定义:检测并剔除偏离主流语料统计分布的极端文本,防止其对模型产生干扰。
方法示例:
-
句长规则:剔除过长或过短的样本(如 <5 或 >512 tokens);
-
嵌入法:用 Sentence-BERT 提取向量,计算离群程度;
-
频率统计:剔除重复句式或机器生成的重复片段;
-
使用孤立森林(IsolationForest)或KNN聚类辅助检测异常。
(c)类别平衡(Addressing Imbalances)
定义:确保语料在主题、语言风格、性别等维度上的分布均衡,避免模型偏见。
处理策略:
-
对低资源语言或边缘领域数据进行过采样;
-
对热门领域语料进行欠采样或语义压缩;
-
使用 SMOTE 或 back translation 扩充少量类样本;
-
可视化标签分布,辅助分析语料分布不均问题。
(d)文本预处理(Text Preprocessing)
定义:对原始文本进行标准化处理,去除无效或噪声元素,提升训练稳定性。
常见处理步骤:
-
全部转为小写;
-
删除停用词、表情、HTML标签;
-
统一符号编码,替换非标准空格(如
\xa0
); -
去除多余标点和换行符,规范 Unicode 编码。
(e)消除歧义(Dealing with Ambiguities)
定义:识别并处理语义模糊、相互矛盾的数据样本,避免模型学习到不确定或冲突的知识。
常见场景:
-
“bank” 表示银行或河岸的歧义;
-
同一实体间存在冲突描述(如“A是B的父亲” vs “B是A的父亲”);
-
Reddit、Twitter等平台的讽刺语、模因语言。
解决策略:
-
使用 NLI 模型判断句子逻辑关系(entailment / contradiction);
-
使用 LLM 模型打分,保留置信度高的表达;
-
自定义规则识别实体关系冲突。
2)数据去重(Deduplication)
➤ 定义:
数据去重是指识别并删除文本、段落或文档中完全相同或高度重复的样本,以防止模型重复学习、过拟合少量模式。
➤ 去重的重要性:
-
重复样本可能占用大量训练资源;
-
会导致模型高频记忆重复句式,形成偏倚;
-
降低语料多样性,影响泛化能力;
-
在NLP任务中,去重能提升模型处理未见数据的准确性。
➤ 去重的粒度类型:
粒度类型 | 说明 |
---|---|
句子级 | 对比句子内容是否重复 |
段落级 | 检查一段文字的结构与内容 |
文档级 | 全文级别重复检测 |
➤ 去重方法详解:
(a)哈希比对法
-
使用标准化文本生成哈希指纹(如 MD5、SimHash);
-
适用于检测完全重复文本;
-
快速高效,适合海量网页或短文本。
(b)n-gram 重叠分析(高阶特征对比)
-
将文本划分为 n-gram(如 5-gram),计算 Jaccard 相似度;
-
用于检测结构重合但不完全相同的文本;
-
适合段落级、文档级相似性检测。
(c)句嵌入向量 + 相似度计算
-
使用 Sentence-BERT 或 USE 提取句向量;
-
计算余弦相似度,识别语义重复的内容;
-
适合检测不同表达但含义相同的样本(如 paraphrase)。
(d)局部敏感哈希(LSH)
-
将嵌入向量投影到多个哈希空间,快速定位近似重复内容;
-
节省存储与计算,适合TB级数据。
➤ 推荐工具与库:
工具 | 功能说明 |
---|---|
SimHash / MinHash | 基于哈希的近似重复检测 |
Sentence-BERT | 生成语义向量 |
FAISS / Annoy | 构建向量索引,高效相似度检索 |
Datasketch | Python中常用的LSH实现 |
Spark / Dask | 适用于大规模分布式去重处理 |
二、分词方法(Tokenization)
方法 | 适用语言 | 是否支持OOV | 工具推荐 |
---|---|---|---|
BPE | 多语言 | ✅ | HuggingFace Tokenizers |
WordPiece | 英文为主 | ✅ | HuggingFace Tokenizers |
SentencePiece | 所有语言 | ✅ | Google SentencePiece |
分词是将连续文本序列拆分成更小单位(称为“token”)的过程。最简单的分词方式是基于空格切词,但现代大语言模型通常使用 子词级别的分词器(subword tokenizer),因为它们具备以下优势:
-
可以表示所有输入字符(无 OOV 问题);
-
能保持词汇量较小,同时具备强大的词形泛化能力;
-
在多语言建模中具有天然适应性。
大多数 LLM 使用的是子词分词器,其中最常见的三种是:BPE、WordPiece、SentencePiece。
1)字节对编码(Byte-Pair Encoding, BPE)
➤ 方法原理:
BPE 最早是一种数据压缩算法,后被引入 NLP 分词任务。它基于统计频率,优先保留高频词整体形态,拆分低频词为子词组合。
-
初始化词表为所有字符;
-
统计所有相邻字符对出现频率;
-
每次将频率最高的字符对合并为新token;
-
重复迭代,直到达到目标词表大小(如50,000个子词);
-
最终构建出包含高频词和可拆解低频词的分词系统。
➤ 特点:
-
控制词表规模、避免过多的UNK(未知词);
-
能较好处理常见词的词缀变化(如“play”, “playing”, “played”);
-
效率较高,已被广泛用于GPT、RoBERTa等模型中。
➤ 工具推荐:
-
HuggingFace Tokenizers:支持BPE训练、可视化词表构建过程;
-
GPT-2使用的
GPT2Tokenizer
。
2)词片编码(WordPiece Encoding)
➤ 方法原理:
WordPiece 是 Google 提出的子词分词算法,广泛应用于 BERT 和 Electra。它和 BPE 的区别在于:
-
WordPiece 在子词合并时,不仅考虑频率,还利用 语言模型最大似然估计 来评估每个子词对合并后的语言建模能力。
➤ 特点:
-
更强调语言建模性能;
-
能有效避免因低频组合而出现的UNK词;
-
支持多语言、适合精度要求更高的场景。
➤ 工具推荐:
-
HuggingFace Tokenizers:BERTTokenizer、ElectraTokenizer;
-
Google官方训练WordPiece词表工具。
3)句片编码(SentencePiece Encoding)
➤ 方法原理:
SentencePiece 是 Google 开发的 独立于语言 的分词器,旨在解决空格分隔词假设的问题。它可以直接在原始未处理文本(raw text)上训练词表,不依赖分词器或预处理规则。
-
支持 BPE 或 Unigram Language Model 两种子词模型;
-
自动处理空格、语言混杂、多音字、非标准字符等复杂情况;
-
是多语言和低资源语言分词的首选。
➤ 特点:
-
不依赖空格分词假设(适用于中文、日文、泰文等);
-
极大提升了分词器的泛化能力;
-
被 T5、mT5、LLaMA 等多语言模型采用。
➤ 工具推荐:
-
Google SentencePiece:支持训练、自定义词表大小、支持Unigram和BPE;
-
HuggingFace 中
AutoTokenizer
支持加载.model
格式词表。
三、位置编码(Positional Encoding)
方法 | 是否支持位置泛化 | 位置敏感性 | 工具/应用模型 |
---|---|---|---|
APE(绝对位置编码) | ❌(固定长度) | 弱 | 原始Transformer(sin/cos) |
RPE(相对位置编码) | ✅ | ✅✅✅ | Transformer-XL、T5 |
RoPE(旋转位置编码) | ✅ | ✅✅✅✅ | LLaMA、PaLM、NeoX等 |
Bias Encoding (ALiBi) | ✅ | ✅✅ | BLOOM、T5变体等 |
Transformer 架构由于其结构无序(不包含 RNN 的递归机制),无法感知 token 的位置信息,因此需要引入位置编码以建模序列的顺序。以下为四种主流位置编码方法。
1)绝对位置编码(Absolute Positional Embeddings, APE)
➤ 方法原理:
在原始Transformer中,位置编码是通过 正余弦函数生成的固定向量,然后与token embedding相加,作为模型的输入。
-
每个位置对应一个唯一向量;
-
可选:固定(如正余弦)或可学习的向量。
➤ 局限性:
-
对序列长度有限制(如512);
-
无法表达 token 之间的相对位置距离(“第5个词” 与 “第6个词” 的关系等);
-
模型泛化能力较弱。
➤ 应用模型:
-
Transformer (Vaswani et al., 2017)
-
BERT初代
2)相对位置编码(Relative Positional Embeddings, RPE)
➤ 方法原理:
相对位置编码考虑的是 token 两两之间的距离信息,而非token在序列中的绝对位置。
-
通常在attention机制中加入相对偏移;
-
可将序列建模为图结构(带边的节点);
-
支持序列外推(Extrapolation)。
➤ 实现方式:
-
添加偏移项到 Query-Key 的相似度分数;
-
有时也加入到 Value 中进一步影响输出。
➤ 应用模型:
-
Transformer-XL
-
DeBERTa
-
T5
3)旋转位置编码(Rotary Positional Embeddings, RoPE)
➤ 方法原理:
RoPE 使用 旋转矩阵 将绝对位置信息嵌入 attention score 中,结合了相对与绝对位置信息,能够增强模型对长文本的感知能力。
-
与正余弦嵌入类似,但支持动态位置感知;
-
支持 token 之间的相对距离编码;
-
增强位置推理能力。
➤ 特点:
-
自然支持更长序列;
-
相对距离越远,注意力权重越小;
-
对多轮对话、长文档摘要尤其有效。
➤ 应用模型:
-
GPT-NeoX-20B
-
PaLM
-
CODEGEN
-
LLaMA(全系列)
4)相对位置偏置(Relative Positional Bias)
➤ 方法原理:
不同于将位置嵌入加入 token embedding,该方法直接在 attention score 层加入位置偏置,并对距离远近赋予惩罚权重(bias),提高长序列推理能力。
-
一种经典实现:ALiBi (Attention with Linear Biases);
-
将偏置加入 Query-Key 相似度矩阵中,并与距离成反比;
-
有助于模型在测试时外推到更长序列。
➤ 应用模型:
-
T5(使用相对位置偏置)
-
BLOOM(使用ALiBi)
四、模型架构(Model Architectures)
在大语言模型(LLMs)的设计中,绝大多数模型都基于 Transformer 架构。Transformer 是目前最主流、最具扩展性和并行计算效率的深度神经网络框架,被广泛应用于自然语言处理任务中。基于 Transformer 的变体主要可以划分为三种:编码器结构(Encoder-only)、解码器结构(Decoder-only)、以及 编码器-解码器结构(Encoder-Decoder)。本节将分别介绍 Transformer 原始架构以及这三类主流模型设计。
1)Transformer 架构简介
➤ 背景与核心理念:
Transformer 架构由 Vaswani 等人在 2017 年提出,其开创性的设计是用 自注意力机制(Self-Attention) 替代传统的循环神经网络(RNN)与卷积神经网络(CNN),以实现更高效的并行计算与更强的长程依赖建模能力。
Transformer 最初用于机器翻译任务,其基本结构由以下两部分组成:
-
编码器(Encoder):N 层堆叠结构(通常为6层),每层包括:
-
多头自注意力机制(Multi-head Self-Attention)
-
前馈神经网络(Feed-Forward Network, FFN)
-
-
解码器(Decoder):也为N层堆叠结构,每层包含:
-
自回归注意力层(Masked Self-Attention)
-
编码器-解码器注意力层(Encoder-Decoder Attention)
-
前馈神经网络
-
➤ 注意力机制简要原理:
Attention 的核心思想是计算 query(查询) 与 key-value(键值)对 之间的相似性,以确定当前 token 应该“关注”输入中的哪些位置。
其核心公式为(缩放点积注意力):
➤ 位置编码(Positional Encoding):
由于 Transformer 本身不具备序列顺序建模能力,因此引入 位置编码(Positional Encoding),帮助模型理解 token 在序列中的位置信息。可采用正弦-余弦函数(固定编码)或可学习位置嵌入,或现代架构中采用 RoPE、ALiBi 等新型方法。
2)编码器结构(Encoder-Only Architecture)
➤ 架构特征:
-
所有 attention 层都可访问完整输入序列(双向建模);
-
适用于需要整体理解语义的任务。
➤ 预训练策略:
-
通常采用 掩码语言建模(MLM);
-
输入中部分 token 被遮蔽,模型需基于上下文恢复其原始内容。
➤ 典型应用任务:
-
文本分类(Text Classification)
-
命名实体识别(Named Entity Recognition, NER)
-
抽取式问答(Extractive QA)
-
信息检索 / 表征生成
➤ 代表模型:
-
BERT(Bidirectional Encoder Representations from Transformers)
-
RoBERTa
-
ALBERT
-
ELECTRA
3)解码器结构(Decoder-Only Architecture)
➤ 架构特征:
-
每个 token 的注意力层只能访问其左侧的历史 token(单向建模);
-
常被称为 自回归模型(Autoregressive Models)。
➤ 预训练策略:
-
使用 自回归语言建模(Causal LM);
-
模型预测序列中的下一个token(即 p(xt∣x1,...,xt−1)p(x_t | x_1, ..., x_{t-1})p(xt∣x1,...,xt−1))。
➤ 典型应用任务:
-
文本生成(Text Generation)
-
对话系统(Conversational Agents)
-
自动写作、故事创作、代码生成
➤ 代表模型:
-
GPT 系列(GPT-1/2/3/3.5/4)
-
LLaMA、OPT、BLOOM
-
PaLM、Claude、Gemini
4)编码器-解码器结构(Encoder-Decoder Architecture)
➤ 架构特征:
-
编码器处理输入的完整序列(双向上下文);
-
解码器则按顺序预测输出token,每个 token 仅依赖其左侧上下文;
-
同时使用 encoder-to-decoder attention 融合输入输出信息。
➤ 预训练策略:
-
结合多种目标,如:
-
文本 Span 替换与恢复(如 T5 使用的 span corruption);
-
翻译式任务(将一个输入序列转化为另一种表述)。
-
➤ 典型应用任务:
-
机器翻译(Machine Translation)
-
摘要生成(Summarization)
-
条件文本生成(Conditioned Generation)
-
回答式问答(Generative QA)
➤ 代表模型:
-
T5(Text-to-Text Transfer Transformer)
-
BART
-
mT5(多语言)
-
ProphetNet、PEGASUS
五、模型预训练策略(Pre-training Strategies)
➤ 定义
预训练是大语言模型训练流程中的第一步,旨在帮助模型掌握基本的语言理解能力与语法知识。通常在大规模(TB级)未标注文本语料上进行训练,采用自监督学习(self-supervised learning)方式完成。
通过预训练,LLMs 可以学习语言的结构、语义关系、上下文信息,这为后续的微调与任务适配(如问答、摘要、翻译等)提供了通用能力基础。
➤ 主流预训练策略
目前预训练方法主要包括三类:
方法 | 模型结构偏好 | 代表模型 | 是否自回归 | 优点 |
---|---|---|---|---|
自回归语言建模(CLM) | Decoder-only | GPT、LLaMA | ✅ | 生成能力强、自然语言输出流畅 |
掩码语言建模(MLM) | Encoder-only | BERT、RoBERTa | ❌ | 表征能力强,适合理解类任务 |
专家混合(MoE) | Encoder/Decoder | Switch Transformer、GLaM | 部分 | 同样计算预算下支持更大模型规模 |
(a)自回归语言建模(Autoregressive Language Modeling, CLM)
原理:
在给定一个长度为 n的token序列 x1,x2,...,xnx_1, x_2, ..., x_nx1,x2,...,xn 的情况下,模型以自回归方式预测下一个token xn+1x_{n+1}xn+1。
即模型的目标是最小化下式的负对数似然损失:
每次预测基于之前所有已知token,符合人类语言生成的自然规律。
特点:
-
适用于Decoder-only模型(如GPT);
-
可用于文本生成、对话系统、补全任务;
-
自然支持“流式生成”(streaming inference)。
缺点:
-
缺乏对整个上下文的双向理解(因为未来信息无法使用);
-
理解类任务(如文本分类)表现通常不如Encoder-only模型。
(b)掩码语言建模(Masked Language Modeling, MLM)
原理:
在输入句子中随机掩盖一部分token(如15%),训练模型预测这些被遮蔽的词,利用左右上下文联合建模。
记被遮蔽的token为 x~,完整输入为 x,则目标损失函数为:
此策略也被称为去噪自编码器(denoising autoencoder),如BERT即采用这种方式。
特点:
-
支持双向上下文建模;
-
表征能力强,适合分类、匹配、问答等理解任务;
-
可扩展为Span Masking(如SpanBERT)、Permuted MLM(如XLNet)等更复杂策略。
缺点:
-
不适用于生成类任务(生成token连续性不自然);
-
掩码token在真实应用中并不存在,存在预训练/推理不一致问题。
(c)专家混合模型(Mixture of Experts, MoE)
原理:
MoE是一种稀疏激活结构,在模型中引入多个“专家子网络”,每次仅激活部分专家进行计算,从而在不增加整体计算量的情况下扩展模型容量。
MoE主要由两个部分组成:
-
专家网络(Experts):
-
通常为多个独立的前馈神经网络(Feed Forward Networks, FFNs);
-
每个专家负责处理特定语义特征(如情绪、风格、领域等);
-
-
路由网络(Router/Gate):
-
用于将不同token路由到不同专家;
-
路由器本身是可学习的,和主网络一同训练;
-
支持“Top-k”策略,即每个token最多激活k个专家(如Top-2 Gating)。
-
特点:
-
显著提升参数规模(如GLaM达1.2T参数),而训练/推理开销保持可控;
-
支持模型规模横向扩展,同时保持较低计算资源;
-
支持Encoder/Decoder混合结构,广泛用于T5-MoE、Switch Transformer、GShard等模型。
关键挑战:
-
路由器选择的优化(避免负载不均、路由冲突);
-
专家分配不均问题;
-
推理时并行调度效率问题。
六、微调与指令调优(Fine-tuning and Instruction Tuning)
类型 | 是否需要标签数据 | 是否对齐指令 | 优势 | 典型模型 |
---|---|---|---|---|
SFT | ✅ | ❌ | 提高任务性能,适配领域语料 | BERT、GPT-3.5 Turbo |
Instruction Tuning | ✅ | ✅ | 增强指令跟随能力,提升泛化能力 | InstructGPT、Alpaca |
尽管预训练语言模型具有通用语言理解与生成能力,但它们往往无法直接胜任特定任务,仍需要通过微调或指令调优来适配具体任务或应用场景。本节介绍两种关键的训练范式:监督微调(Supervised Fine-tuning, SFT)与指令调优(Instruction Tuning)。
1)监督微调(Supervised Fine-tuning, SFT)
➤ 定义
监督微调指的是在具有明确标签的数据上对预训练语言模型进行有针对性的再训练,从而提升其在特定任务上的表现。
在早期模型如 BERT 中,SFT 是其成功落地的核心方式。例如,BERT 在原始论文中被微调至11个下游任务(如问答、情感分类、句子相似性判断等),取得了显著效果。
➤ 应用动机
-
适配任务语义:如文本分类、信息抽取、知识问答;
-
引入专有数据:如法律、医学、金融领域的私有语料;
-
提升性能上限:如OpenAI报告中,微调后的 GPT-3.5 Turbo 在特定任务上甚至优于未微调的 GPT-4。
➤ 方法类型
微调方式 | 描述 | 适用场景 |
---|---|---|
单任务微调 | 用单一数据集进行 SFT | 高质量领域标注数据可用时 |
多任务微调 | 同时对多个任务进行微调(multi-task SFT) | 提高模型通用性,减少 prompt 工程复杂性 |
领域微调 | 使用特定领域语料调整模型权重 | 法律、医学、金融等专属应用场景 |
➤ 常见实现技术
-
全参微调(Full-parameter fine-tuning);
-
参数高效微调(PEFT):如 LoRA、Prefix Tuning、Adapters;
-
分布式训练优化:如 DeepSpeed、FSDP、ZeRO。
2)指令调优(Instruction Tuning)
➤ 定义
指令调优是一种特定形式的微调,其目标是提升语言模型理解与执行人类自然语言指令的能力。在这种训练范式中,模型不仅学习“任务怎么做”,还要通过指令提示(prompts)来理解任务目标。
一个典型的指令样本通常包括:
-
任务描述(Task Definition)
-
正例(Positive Examples)
-
反例或反面引导(Negative Instructions or Anti-patterns)
➤ 为什么需要指令调优?
-
通用预训练模型可能无法理解复杂指令结构或任务上下文;
-
指令调优能提升零样本(zero-shot)与少样本(few-shot)任务执行能力;
-
指令调优模型显著降低 prompt 工程复杂度,提升用户体验。
➤ 典型模型对比
模型 | 原始结构 | 是否指令调优 | 性能变化 |
---|---|---|---|
GPT-3 | Decoder-only | ❌ | 通用生成能力强,但指令执行弱 |
InstructGPT | GPT-3 | ✅ | 明显优于GPT-3,在多数任务上表现更好 |
Alpaca | LLaMA | ✅ | LLaMA微调版本,具备良好指令跟随能力 |
ChatGPT | GPT-3.5 / GPT-4 | ✅ | 结合RLHF与指令调优,交互性强 |
➤ 构建与训练方式
-
数据来源:
-
真实用户任务数据(如 NaturalInstructions、SuperNI);
-
任务模板合成数据;
-
自监督生成(Self-Instruct 方法)。
-
-
训练方法:Self-Instruct 框架(Wang et al., 2022)
一种重要的无监督指令调优技术,分为三步:-
使用基础模型生成指令 + 输入 + 输出;
-
人工或规则过滤无效或重复内容;
-
利用合格数据微调原始模型。
-
七、模型对齐(Alignment)
➤ 定义与目标
人工智能对齐(AI Alignment) 是指通过技术手段让 AI 系统的行为与人类的目标、偏好和价值观保持一致。
虽然大语言模型(LLMs)通过大规模语料预训练具备强大的语言能力,但它们并没有内置的“价值判断”或伦理意识,可能出现如下风险行为:
-
生成有毒或歧视性内容
-
散播虚假或误导性信息
-
对人类指令理解不准确或误解语义
因此,需要通过 指令调优(instruction tuning)+ 对齐机制(alignment optimization) 的组合,确保模型在安全性、可靠性、可控性等方面满足人类期望。
➤ 主流对齐方法概览
方法 | 是否需要人类偏好数据 | 是否训练奖励模型 | 是否使用强化学习 | 优势 |
---|---|---|---|---|
RLHF | ✅ | ✅ | ✅ | 可学习复杂偏好,效果较成熟 |
RLAIF | ❌(AI模型提供反馈) | ✅ | ✅ | 可扩展、降低人工成本 |
DPO | ✅(偏好对) | ❌ | ❌ | 简单、稳定、无需奖励模型 |
KTO | ❌(仅需标签) | ❌ | ❌ | 数据需求低,适合真实场景部署 |
1)基于人类反馈的强化学习(RLHF)
➤ 原理:
RLHF(Reinforcement Learning from Human Feedback)是一种三阶段对齐流程:
-
训练奖励模型(Reward Model):
-
人类对同一输入的多个模型输出进行偏好打分(如更相关、更安全、更流畅);
-
使用这些打分数据训练一个奖励模型,预测哪个输出更符合人类偏好。
-
-
强化学习调优(PPO/REINFORCE):
-
将奖励模型作为强化学习环境的“回报函数”;
-
使用策略梯度方法(如PPO)微调原始语言模型。
-
-
结果提升:
-
输出内容更符合人类偏好,提升响应合理性与安全性。
-
➤ 应用代表:
-
InstructGPT(首次提出RLHF架构)
-
ChatGPT(基于GPT-3.5 + RLHF)
-
Claude(Anthropic)
➤ 优点:
-
可针对细致偏好进行精调;
-
成熟架构,支持高度可控生成。
➤ 缺点:
-
成本高:需要大量人类打分;
-
不稳定:强化学习训练难度大,超参数敏感;
-
奖励模型训练存在误差放大问题。
2)基于 AI 反馈的强化学习(RLAIF)
➤ 原理:
RLAIF(Reinforcement Learning from AI Feedback)通过使用一个已有对齐好的模型(如InstructGPT)作为奖励模型的替代者,无需人类手动打分。
-
构建步骤与RLHF类似;
-
不同点在于偏好评分由预先训练好的AI系统自动生成,大幅减少人工成本。
➤ 优点:
-
降低标注人力成本;
-
可扩展性更强,尤其适合大规模任务。
➤ 局限:
-
有可能引入原始AI模型的偏见;
-
评价系统性能受限于参考模型质量。
3)直接偏好优化(Direct Preference Optimization, DPO)
➤ 原理:
DPO 是一种 无强化学习的对齐方法,提出者 Rafailov 等人指出 RLHF 存在优化不稳定、计算复杂等问题,因此构建了一个将偏好对(Preference Pair)直接映射为分类任务的简洁方案。
关键思想:
-
视对齐为最大化人类偏好约束下的策略分布差异;
-
换言之,对给定输入 x,更希望模型输出 y_w 而不是 y_l,优化目标:
其中 β\betaβ 是温度参数,πθ\pi_\thetaπθ 是当前策略模型。
➤ 优点:
-
不需要奖励模型;
-
无需强化学习训练;
-
训练稳定,计算资源需求低;
-
实验中在情感控制、摘要生成等任务上超越 RLHF。
➤ 应用代表:
-
DPO-RoBERTa、DPO-LLaMA
-
Open-source Alignment Baselines(如 TRL库集成)
4)KTO:卡尼曼-特沃斯基优化(Kahneman-Tversky Optimization)
➤ 原理:
KTO 是由 Ethayarajh 等人提出的一种 行为经济学启发的对齐方法,灵感来自卡尼曼-特沃斯基的前景理论(Prospect Theory)。
不同于 DPO:
-
不需要偏好对(y₁优于y₂);
-
只需判断一个输出 yyy 是“好”还是“坏”即可;
-
极大降低数据采集难度,适用于大多数现实场景(如客户反馈、用户评分、点击行为等)。
➤ 示例应用:
-
电商系统中:输入(用户行为日志),输出(是否成功转化);
-
聊天机器人中:用户是否继续对话、是否点赞/点踩等。
➤ 优点:
-
不依赖稀缺的成对偏好数据;
-
可直接利用海量标签数据(成功/失败);
-
在1B~30B参数范围内,性能优于或匹配DPO模型。
八、解码策略(Decoding Strategies)
➤ 定义
解码(Decoding)是大语言模型生成文本的最后阶段。给定一个输入 prompt,模型会依次预测下一个最可能的 token,直到生成完整的句子或达到终止条件。
解码过程包括三个步骤:
-
分词器编码:将输入文本编码为 token IDs;
-
模型预测:基于已生成 token,模型输出 logits;
-
采样策略:通过 softmax 转换 logits 为概率分布,采用不同策略从中选择下一个 token。
不同的解码策略会影响文本的流畅性、连贯性、多样性和创造性。本节介绍四种主流解码方法:
1)贪婪搜索(Greedy Search)
➤ 原理
每一步仅选择概率最高的 token 作为下一个词,不考虑其他备选项或序列的全局最优性。
➤ 优点
-
速度快,计算简单;
-
适用于对生成质量要求不高的场景。
➤ 缺点
-
缺乏多样性;
-
容易陷入局部最优,生成内容重复或无趣;
-
无法纠错或回溯前文生成结果。
➤ 应用场景
-
模板化输出;
-
工业部署中对一致性要求高、速度优先的场景。
2)束搜索(Beam Search)
➤ 原理
在每一步保留概率前N大的候选token组合(称为“beam”),最终从这些序列中选择整体概率最高者。
-
对于 beam size 为 kkk,最大长度为 LLL 的输出,将维护最多 kLk^LkL 个组合;
-
通常结合长度惩罚(length penalty)来避免生成过短文本。
➤ 示例
-
Beam size = 3,最大长度 = 5;
-
模型同时跟踪3个“序列路径”,每轮更新所有路径的最可能扩展。
➤ 优点
-
综合考虑上下文组合,全局优化更好;
-
输出稳定、结构合理。
➤ 缺点
-
计算量大,内存开销显著增加;
-
多样性不足,容易输出相似序列;
-
对创意生成类任务效果一般。
➤ 应用场景
-
翻译、摘要、问答等结构明确的任务;
-
需要确定性和高精度的商业应用。
3)Top-k 采样(Top-k Sampling)
➤ 原理
-
从概率分布中选取 top-k 个概率最高的token作为候选;
-
再从这 k 个中按概率随机采样,引入一定“随机性”。
数学表达
假设有 token A~F,概率如下:
-
A: 30%, B: 20%, C~F: 各12.5%
若 k=2,系统只从 A、B 中选择,随机采样:
-
A 的最终概率为 60%
-
B 的最终概率为 40%
➤ 引入温度(Temperature)
温度参数 T∈(0,∞)T \in (0, \infty)T∈(0,∞) 控制 softmax 分布平滑度:
-
T→0T \to 0T→0:分布更尖锐(趋近于贪婪);
-
T→∞T \to \inftyT→∞:分布更平滑,增加随机性。
➤ 优点
-
引入创造性,可生成多样文本;
-
简单、高效,易调参(k+温度)。
➤ 缺点
-
若概率集中,top-k 内信息仍较单一;
-
随机性可能导致语义漂移或无意义输出。
➤ 应用场景
-
对话生成;
-
内容创作(如写作、广告语、创意文案);
-
可与 beam search 结合用于 reranking。
4)Top-p 采样(Nucleus Sampling)
➤ 原理
又称“核采样”,不是固定选择 top-k,而是动态选择满足累积概率 > p 的最小 token 集合。
-
先按概率降序排列token;
-
累加直到总概率超过 ppp(如 0.9)为止;
-
从该集合中随机采样。
➤ 举例
若前4个token的概率为 40%, 25%, 15%, 10%,当 p=0.9p = 0.9p=0.9 时,仅这4个进入采样集合,其余被截断。
➤ 优点
-
比 top-k 更自适应,动态决定采样空间;
-
在保持多样性的同时更具上下文合理性;
-
适合处理长尾分布问题。
➤ 缺点
-
更复杂的实现;
-
在某些情况下输出稳定性较低。
➤ 应用场景
-
高创意场景(AI写作、故事生成);
-
非结构化输出任务;
-
自然对话、个性化回复。
九、成本优化的训练、推理、自适应与压缩策略
(Cost-Effective Training, Inference, Adaptation & Compression)
随着大语言模型(LLMs)参数规模的迅速扩展,如何降低训练与部署成本,已成为模型工程实践中的核心挑战。本节介绍四类主流的高效训练与压缩方法:优化训练框架、低秩适应(LoRA)、知识蒸馏、模型量化。
方法 | 减少参数 | 减少显存 | 推理提速 | 模型压缩 | 可组合使用 | 应用代表 |
---|---|---|---|---|---|---|
ZeRO | ✅ | ✅ | ❌ | ❌ | 可与混合精度搭配 | DeepSpeed |
LoRA | ✅✅ | ✅✅ | ✅ | ✅✅ | ✅ | Alpaca、Baize |
蒸馏 | ✅✅ | ✅✅ | ✅✅ | ✅✅ | 可作为模型初始化 | DistilBERT、TinyBERT |
量化 | ✅✅ | ✅✅ | ✅✅ | ✅✅ | 可与蒸馏/LoRA搭配 | GPTQ、BitsAndBytes |
1)优化训练框架(Optimized Training)
➤ ZeRO:Zero Redundancy Optimizer
-
提出者:Rajbhandari 等(Microsoft DeepSpeed)
-
核心思想:将模型参数、优化器状态与梯度三部分的存储分散到多个GPU,消除冗余,从而支持更大规模的模型训练。
优势:
-
提升内存利用率;
-
支持超大模型(如GPT-3级别)的多机并行训练;
-
与混合精度(FP16/BF16)组合效果更优。
➤ RWKV:融合Transformer和RNN优点的结构
-
提出者:Peng 等,2023
-
核心理念:引入可训练权重“Receptance”,结合RNN的时间优势与Transformer的并行训练能力。
-
技术特性:
-
训练并行化(像Transformer)
-
推理阶段线性复杂度(像RNN)
-
应用价值:
-
成为首个非Transformer架构中能扩展至百亿参数规模的模型;
-
推理效率高,适用于边缘部署。
2)低秩适应(Low-Rank Adaptation, LoRA)
➤ 原理简介:
LoRA 认为:微调任务中模型权重的变化 ΔW\Delta WΔW 通常具有低秩结构,可用两个小矩阵 A,BA, BA,B 的乘积表示:
其中:
➤ LoRA 特性:
-
参数效率高:仅需更新原始参数的极小子集;
-
适配速度快:训练时间短、显存占用小;
-
模型易于共享:通常数百MB即可部署。
➤ 在 Transformer 中的应用:
-
LoRA 常用于注意力模块(Wq, Wk, Wv, Wo),而跳过MLP部分;
-
支持与全参微调/指令调优结合使用。
➤ 应用代表:
-
Alpaca、Vicuna、OpenChat、Baize 等开源模型;
-
HuggingFace PEFT库广泛集成 LoRA 接口。
3)知识蒸馏(Knowledge Distillation)
➤ 概述:
知识蒸馏是一种“教师-学生模型”范式:将大型教师模型的知识传递给结构更小的学生模型,以提升后者性能。
➤ 蒸馏方式分类:
蒸馏类型 | 描述 | 应用优势 |
---|---|---|
响应蒸馏 | 学习教师模型的最终输出(如logits或softmax分布) | 实现简单,广泛应用 |
特征蒸馏 | 同步教师模型的中间层特征表示,如注意力图或隐藏状态 | 提升表征一致性,提升模型鲁棒性 |
API蒸馏 | 使用大模型API输出作为训练数据来源,训练本地学生模型 | 无需访问教师模型参数,成本较低 |
➤ 注意事项:
-
API蒸馏面临版权/许可争议,如OpenAI禁止其API用于训练竞争性模型;
-
蒸馏出的模型可在移动设备/边缘设备部署(如DistilBERT、TinyBERT);
-
多教师模型融合蒸馏(ensemble distillation)可进一步增强学生模型性能。
4)模型量化(Quantization)
➤ 原理:
量化是将模型中浮点权重(如FP32)转化为低位整数(如INT8/INT4)的过程,从而压缩模型大小、提升推理速度。
➤ 两类主流方案
方法 | 描述 | 优点 |
---|---|---|
训练后量化(PTQ) | 训练完成后对模型权重进行动态或静态量化 | 实施方便,适用于部署阶段 |
量化感知训练(QAT) | 在训练时引入量化模拟,兼顾训练与部署性能 | 精度损失小,性能更可控 |
➤ 精度与效率权衡:
-
FP32 → FP16:约节省一半内存,精度几乎无损;
-
FP32 → INT8/INT4:模型大小显著减半至1/4甚至更小,但精度需校准。
➤ 应用代表工具:
-
GPTQ、AWQ、BitsAndBytes(INT4);
-
HuggingFace Transformers & Optimum;
-
NVIDIA TensorRT、Intel Neural Compressor。
参考文献
[1] Chang, Yupeng, et al. "A survey on evaluation of large language models." ACM transactions on intelligent systems and technology 15.3 (2024): 1-45.