大语言模型入门:原理、架构与应用

什么是大语言模型

大语言模型(Large Language Model,LLM)是一类基于深度学习技术、能够理解和生成人类语言的AI系统。它们通过在大规模文本数据上进行预训练,学习语言的模式、知识和推理能力。

GPT、BERT、Claude、LLaMA 等都是大语言模型的代表。

LLM 的发展历程

年份 模型 里程碑
2017 Transformer Google 提出注意力机制
2018 BERT 刷新 NLP 各项基准
2019 GPT-2 生成能力大幅提升
2020 GPT-3 涌现出上下文学习能力
2022 ChatGPT 对话式 AI 破圈
2023 GPT-4 多模态能力、更强推理
2023 Claude/LLaMA 开源模型崛起
2024 GPT-4o/Claude 3.5 原生多模态、端到端

Transformer 架构

现代 LLM 的核心是 Transformer 架构,它解决了传统 RNN 的长距离依赖问题。

注意力机制(Attention)

注意力机制让模型能够”关注”输入序列中与当前任务最相关的部分:

1
2
3
4
5
6
7
8
9
# 注意力机制的核心思想
def attention(query, key, value):
# 计算 Query 和 Key 的相似度
scores = softmax(query @ key.T / sqrt(d_k))

# 用相似度加权 Value
output = scores @ value

return output

Transformer 结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
输入 Tokens


┌─────────────────┐
│ Embedding 层 │
└────────┬────────┘


┌─────────────────┐
│ 位置编码 │
│ (Positional) │
└────────┬────────┘


┌─────────────────┐
│ N 层 Encoder │ ← BERT 系列
│ 或 Decoder │ ← GPT 系列
└────────┬────────┘


┌─────────────────┐
│ 输出层 │
│ (Language │
│ Model Head) │
└────────┬────────┘


输出 Token 概率

Encoder vs Decoder

类型 代表模型 特点 适用场景
Encoder only BERT 双向理解 分类、NER、抽取
Decoder only GPT 系列 自回归生成 对话、写作、代码
Encoder-Decoder T5、BART 序列到序列 翻译、摘要、问答

LLM 的训练过程

1. 预训练(Pretraining)

在大规模无标注语料上学习语言知识:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 下一个 Token 预测任务
def pretraining_loss(model, tokenizer, corpus):
total_loss = 0

for text in corpus:
# 将文本分词
tokens = tokenizer.encode(text)

# 预测下一个 Token
for i in range(len(tokens) - 1):
input_ids = tokens[:i+1]
labels = tokens[i+1]

logits = model(input_ids)
loss = cross_entropy(logits[-1], labels)
total_loss += loss

return total_loss / len(corpus)

训练数据规模:

模型 参数量 训练 Token
GPT-3 175B 300B
GPT-4 ~1.8T (推测) 数万亿
LLaMA 2 70B 2T
Claude 3 未公开 数万亿

2. 指令微调(SFT - Supervised Fine-Tuning)

在人工标注的指令数据上微调:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 指令微调示例
instruction_data = [
{
"instruction": "将以下句子翻译成英文",
"input": "今天天气真好",
"output": "The weather is nice today."
},
{
"instruction": "写一首关于春天的诗",
"input": "",
"output": "春风拂面柳丝长,\n桃红李白竞芬芳..."
}
]

3. 人类反馈强化学习(RLHF)

用人类偏好数据训练奖励模型,再用强化学习优化:

1
2
3
4
5
6
7
8
┌─────────────┐     人类评分     ┌─────────────┐
│ 初始模型 │ ───────────→ │ 奖励模型 │
│ (SFT) │ ←─── 反馈 ───── │ (RM) │
└──────┬──────┘ └──────┬──────┘
│ │
│ 强化学习优化 │
└─────────────←───────────────┘
PPO 算法

4. 直接偏好优化(DPO)

DPO 简化了 RLHF,不需要单独的奖励模型:

1
2
3
4
5
6
7
8
9
10
# DPO 损失函数
def dpo_loss(policy_logps, reference_logps, chosen_logps, rejected_logps):
# 计算偏好差距
chosen_rewards = chosen_logps - reference_chosen_logps
rejected_rewards = rejected_logps - reference_rejected_logps

# 最大化被选中样本的相对奖励
loss = -log_sigmoid(chosen_rewards - rejected_rewards)

return loss

主流 LLM 模型

GPT 系列(OpenAI)

模型 特点 适用场景
GPT-4o 原生多模态,低延迟 实时对话
GPT-4 强推理,代码能力强 复杂任务
GPT-4-turbo 更快、更便宜 生产环境
GPT-3.5-turbo 轻量级,快速响应 简单任务

Claude 系列(Anthropic)

模型 特点 适用场景
Claude 3.5 Sonnet 编码能力强,长上下文 编程、分析
Claude 3 Opus 最强推理能力 复杂推理
Claude 3 Haiku 轻量、快速 简单任务

开源模型

模型 参数量 特点
LLaMA 3 8B/70B Meta 开源,支持中文
Mistral 7B/34B 欧洲团队,效果出色
Qwen 7B/14B/72B 阿里开源,中文优化
DeepSeek 7B/67B 国产开源,代码能力强
Yi 6B/34B 零一万物,中英双语

LLM 的核心能力

1. 上下文学习(In-Context Learning)

无需额外训练,通过提示中的示例学习新任务:

1
2
3
4
5
6
7
8
9
10
11
用户:请判断情感是正面还是负面

示例:
文本:"这个产品太棒了,非常满意!"
情感:正面

文本:"质量很差,不推荐购买"
情感:负面

文本:"一般般,没什么特别的"
情感:

2. 思维链(Chain of Thought, CoT)

通过逐步推理提升复杂问题的准确率:

1
2
3
4
5
6
7
8
问题:小明有10个苹果,送给小红3个,又买了5个,现在有多少个?

思考:让我一步步分析
1. 小明开始有10个苹果
2. 送给小红3个,10 - 3 = 7个
3. 又买了5个,7 + 5 = 12个

答案:12个

3. 代码能力(Coding)

LLM 在代码相关任务上表现出色:

1
2
3
4
5
6
7
# LLM 可以帮助:
# 1. 代码补全
# 2. Bug 修复
# 3. 代码解释
# 4. 测试生成
# 5. 代码重构
# 6. 技术文档撰写

4. 多模态能力

现代 LLM 能够处理图像、音频、视频:

1
2
3
4
5
6
7
8
9
10
11
# 多模态输入示例
response = openai.ChatCompletion.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "这张图里有什么?"},
{"type": "image_url", "url": "data:image/..."}
]
}]
)

LLM 的局限性

1. 幻觉(Hallucination)

LLM 可能生成看似合理但实际错误的内容:

1
2
3
4
5
6
7
用户:北京的人口是多少?
LLM:北京的人口约为2200万人。(可能不准确)

解决思路:
✅ 提供具体上下文让模型参考
✅ 使用 RAG 检索最新数据
✅ 要求模型说明不确定性

2. 上下文长度限制

模型有固定的上下文窗口:

模型 上下文长度
GPT-3.5 16K
GPT-4 128K
Claude 3 200K
Gemini 1.5 1M/10M

3. 推理成本

大模型的推理需要大量计算:

  • 延迟问题:复杂任务响应慢
  • 成本问题:大规模使用费用高
  • 能耗问题:训练和推理耗电大

4. 安全与对齐

确保模型行为符合人类意图:

  • 避免生成有害内容
  • 尊重隐私和版权
  • 保持回答的客观性

LLM 的应用场景

1. 智能对话

1
2
3
4
5
6
7
8
# 基础对话
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "你是一个有帮助的助手"},
{"role": "user", "content": "帮我解释什么是量子计算"}
]
)

2. 内容创作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 写文章
prompt = """
请为技术博客写一篇关于 Python 装饰器的入门文章:
- 包含代码示例
- 解释原理
- 300 字左右
"""

# 写邮件
prompt = """
写一封请假邮件:
- 原因:发烧需要休息
- 时间:明天一天
- 语气:礼貌但不啰嗦
"""

3. 代码开发

1
2
3
4
5
6
7
8
9
10
11
# 代码补全
# 注释会自动补全代码

# Bug 修复
def buggy_function(items, threshold):
for item in items
if item > threshold
print(item)

# 代码审查
# 检查性能、安全、可维护性问题

4. 数据分析

1
2
3
4
5
6
7
8
9
10
11
12
13
# 生成分析代码
prompt = """
分析这个 CSV 文件,找出销售额最高的产品类别:
- 文件路径:sales.csv
- 需要按类别汇总
- 生成可视化图表
"""

# 数据清洗
prompt = """
清洗以下数据,去除重复项,处理缺失值:
[data...]
"""

5. RAG 系统

结合知识库实现更准确的问答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
用户问题


┌─────────┐ 检索 ┌──────────┐
│ 向量 │ ───────→ │ 知识库 │
│ 数据库 │ └──────────┘
└────┬────┘
│ 返回相关片段

┌─────────┐
│ LLM │ ← 结合上下文生成答案
└────┬────┘


最终回答

如何选择 LLM

选择考虑因素

因素 说明
任务类型 对话/代码/分析/创作
性能要求 准确率、速度、成本
隐私需求 是否需要私有化部署
语言 中文/英文/多语言
预算 API 调用 vs 开源自部署

推荐方案

场景 推荐模型
对话/客服 GPT-4o / Claude 3.5
代码开发 Claude 3.5 / GPT-4
中文简单任务 Qwen / DeepSeek
低成本方案 GPT-3.5 / 开源模型
完全私有化 LLaMA 3 / Qwen

Prompt 工程基础

1. 结构化提示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 清晰的指令
prompt = """
# 角色
你是一位资深 Python 后端工程师。

# 任务
帮我审查以下代码的性能问题。

# 代码
def slow_function(data):
result = []
for item in data:
if item > 0:
result.append(item ** 2)
return result

# 要求
1. 指出性能问题
2. 提供优化方案
3. 给出优化后的代码
"""

2.Few-shot 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
prompt = """
情感分类任务:

文本:"刚收到货,质量很不错"
情感:正面

文本:"等了两周还没到,太慢了"
情感:负面

文本:"就那样吧,不好不差"
情感:

请判断上文的情感:
"""

3. 思维链提示

1
2
3
4
5
6
7
8
9
10
11
prompt = """
解数学题时,请先思考再给出答案。

问题:超市促销,原价 80 元的商品打 8 折,再减 10 元,最后多少钱?

思考过程:
1. 打 8 折:80 × 0.8 = 64 元
2. 再减 10 元:64 - 10 = 54 元

答案:54 元
"""

总结

大语言模型代表了人工智能领域的重要突破,它们通过大规模预训练学习到了丰富的语言知识和推理能力。

理解 LLM 的基本原理(Transformer、注意力机制、预训练+SFT+RLHF)、掌握主流模型的特点、熟练运用 Prompt 工程,是每一个 AI 应用开发者必备的技能。

随着模型能力的不断提升和成本的持续下降,LLM 正在成为各行各业的生产力工具。掌握这项技术,将帮助我们更好地适应这个 AI 时代。


有问题欢迎留言讨论!