大语言模型核心概念:预训练、微调与上下文学习
大语言模型主要通过预训练、微调和上下文学习三种方式构建能力。预训练利用大规模无标注数据学习通用语言表示;微调基于特定任务有标签数据调整模型参数以适应下游场景;上下文学习则通过提示词引导模型在推理阶段完成任务而无需更新参数。三者结合使模型具备强大的理解与生成能力。

大语言模型主要通过预训练、微调和上下文学习三种方式构建能力。预训练利用大规模无标注数据学习通用语言表示;微调基于特定任务有标签数据调整模型参数以适应下游场景;上下文学习则通过提示词引导模型在推理阶段完成任务而无需更新参数。三者结合使模型具备强大的理解与生成能力。

近年来,大语言模型(Large Language Models, LLM)在自然语言理解、生成及多模态任务上取得了显著进展。这些模型主要通过预训练、微调和上下文学习三种方式的组合来构建能力。本文将详细介绍这三种主要方法,分析它们之间的差异,并探讨它们如何协同工作以优化语言模型的学习过程。
**预训练(Pre-training)**是语言模型学习的初始阶段。在此阶段,模型会接触到海量的未标记文本数据,例如书籍、文章、代码库和网页内容。
预训练的目标是捕获文本语料库中存在的底层模式、结构和语义知识。通过无监督学习,模型学习输入数据的内部表示,从而获取通用的语言特征。
以下是一个使用 Hugging Face transformers 库加载预训练模型的 Python 示例:
from transformers import AutoTokenizer, AutoModel
# 加载预训练的分词器和模型
model_name = "bert-base-chinese"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name)
# 编码输入文本
text = "大语言模型正在改变世界"
inputs = tokenizer(text, return_tensors="pt")
# 获取隐藏层状态
outputs = model(**inputs)
print(outputs.last_hidden_state.shape)
预训练模型为后续的具体任务提供了良好的初始参数和特征表示。常见的下游任务包括文本生成、机器翻译、情感分析和命名实体识别等。
**微调(Fine-Tuning)**是在特定任务或领域上进一步训练大型语言模型的过程。它利用预训练模型作为起点,在特定任务的有标签数据集上进行训练,调整模型权重以更好地拟合数据。
使用 LoRA (Low-Rank Adaptation) 进行参数高效微调的示例:
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
# 加载基座模型
base_model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf")
# 配置 LoRA
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.1,
bias="none",
task_type="CAUSAL_LM"
)
# 应用 LoRA 适配器
model = get_peft_model(base_model, lora_config)
model.print_trainable_parameters()
微调使模型能够适应垂直领域,如医疗咨询、法律文档分析、客服问答系统等。相比从头训练,微调能大幅降低计算成本并提高收敛速度。
**上下文学习(In-Context Learning, ICL)**是一种新兴的方法,它结合了预训练和微调的优势。模型在推理过程中,通过提供特定的指令或提示(Prompt),学会根据给定的上下文生成响应,而无需更新模型参数。
ICL 的关键在于'类比学习'。模型通过观察提示中包含的示例(Demonstration),推断出任务的模式并进行预测。这被称为 Few-Shot Learning(少样本学习)或 Zero-Shot Learning(零样本学习)。
构造一个 Few-Shot Prompt 进行文本分类:
prompt = """
请判断以下评论的情感是正面还是负面:
评论:这部电影太精彩了,剧情扣人心弦。
情感:正面
评论:这个软件经常崩溃,体验很差。
情感:负面
评论:{}
情感:
""".format("今天的天气真不错,适合出门散步")
# 调用 API 或本地模型推理
response = model.generate(prompt)
print(response)
| 特性 | 预训练 (Pre-training) | 微调 (Fine-tuning) | 上下文学习 (ICL) |
|---|---|---|---|
| 数据需求 | 海量无标签数据 | 少量有标签数据 | 少量示例提示 |
| 参数更新 | 全部更新 | 部分或全部更新 | 不更新 |
| 训练成本 | 极高 | 中等/低 | 无训练成本 |
| 适用场景 | 构建基座模型 | 垂直领域适配 | 快速原型/推理 |
| 灵活性 | 低 | 中 | 高 |
预训练、微调和上下文学习构成了现代大语言模型能力的基石。预训练赋予了模型通用的语言理解能力;微调使其能够精准服务于特定业务场景;而上下文学习则提供了无需重训即可应对多样化任务的灵活性。在实际工程中,通常会根据资源约束和业务需求,灵活组合这三种策略,以实现最佳的性能与效率平衡。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online