9. 微调(Fine-tuning)的数学原理

大模型微调(Fine-tuning)的本质:

是通过数学优化,让模型预测更接近正确答案。

虽然大模型看起来像:

但底层本质上仍然是:

神经网络参数优化问题。


1. 神经网络训练的核心流程

训练过程本质上是:

输入数据
→ 模型预测
→ 计算误差
→ 调整参数
→ 再次预测

不断循环。


2. 微调训练完整流程

graph TD

A[训练数据 Input/Output]
--> B[Tokenizer 分词]

B --> C[输入模型]

C --> D[预测下一个 Token 概率]

D --> E[计算 Loss 损失函数]

E --> F[Backward 反向传播]

F --> G[计算梯度 Gradient]

G --> H[Optimizer 更新参数]

H --> I[模型权重更新]

I --> J[继续下一轮训练]

3. 微调训练的核心步骤

通常包括:

步骤 作用
添加训练数据 教模型学习任务
前向传播(Forward) 模型预测结果
计算损失(Loss) 判断预测是否正确
反向传播(Backward) 计算参数如何调整
Optimizer 更新权重 让模型变得更好
多轮训练(Epoch) 持续优化模型

4. 添加训练数据

例如:

input:
中国的首都是哪里?

output:
北京

模型目标:

预测出 “北京”。


5. 模型输出的本质

模型并不是直接输出:

北京

而是输出:

整个词表上的概率分布。

例如:

Token 概率
北京 0.7
上海 0.2
东京 0.1

6. Loss(损失函数)

Loss 用于衡量:

模型预测有多“错误”。


7. Cross Entropy(交叉熵)

大模型最常见的 Loss 是:

Cross Entropy Loss(交叉熵损失)

它的作用:

比较“预测概率”和“正确答案”的差距。


8. 交叉熵的直觉理解

如果正确答案是:

北京

情况1:预测正确

Token 概率
北京 0.95

Loss:

很小

说明模型预测很好。


情况2:预测错误

Token 概率
上海 0.8
北京 0.1

Loss:

很大

说明模型预测错误。


9. Loss 的目标

训练目标就是:

让 Loss 越来越小。

即:

预测越来越接近正确答案

10. Forward(前向传播)

前向传播:

模型从输入一路计算到输出。

过程包括:

Input
→ Embedding
→ Transformer
→ Logits
→ Probability

11. Backward(反向传播)

计算完 Loss 后,

模型需要知道:

“哪里错了”。

这一步叫:

Backpropagation(反向传播)


12. 反向传播做了什么

它会从 Loss 开始:

反向计算每个参数对错误的影响。

即:

哪个参数导致预测错误?

13. Gradient(梯度)是什么

梯度(Gradient)本质上是:

参数应该往哪个方向调整。

可以理解为:

“修正建议”

14. 梯度的直觉理解

例如:

模型预测:

上海

但正确答案是:

北京

梯度会告诉模型:

减少“上海”的概率
增加“北京”的概率

15. 参数更新流程

graph LR

A[模型预测错误]
--> B[计算 Loss]

B --> C[Backward 计算梯度]

C --> D[Optimizer 更新参数]

D --> E[模型预测更准确]

16. Optimizer(优化器)

Optimizer 的作用:

根据梯度更新模型参数。

即:

参数 = 参数 - 学习率 × 梯度

17. SGD(随机梯度下降)

最经典优化器:

SGD(Stochastic Gradient Descent)

思想很简单:

哪里错了
→ 就往反方向修正

18. 学习率(Learning Rate)

Learning Rate 决定:

每次参数调整幅度。


学习率太小

训练非常慢

学习率太大

训练不稳定
甚至发散

19. 大模型常用优化器

现代 LLM 很少直接使用 SGD。

更常见:


20. Adam 的核心思想

Adam 会自动:

因此:

Adam 更适合超大模型训练。


21. AdamW

AdamW 是 Adam 的改进版。

特点:

更好的 Weight Decay(权重衰减)

它能有效:

目前:

AdamW 是 LLM 微调最常见优化器之一。


22. Parallel Training(并行训练)

大模型参数巨大:

7B
70B
100B+

单卡无法训练。

因此需要:

并行计算(Parallel Training)


23. 常见并行方式

类型 作用
Data Parallel 数据并行
Tensor Parallel 张量并行
Pipeline Parallel 流水线并行

24. 梯度爆炸(Gradient Explosion)

训练中可能出现:

Gradient 非常大

导致:


25. 如何防止梯度爆炸

常见方法:

Gradient Clipping(梯度裁剪)

例如:

限制梯度最大值

避免更新过大。


26. 如何防止过拟合(Overfitting)

过拟合:

模型记住训练集,
但不会泛化。


27. 常见防止过拟合方法

方法 作用
更多数据 提升泛化
Dropout 增加随机性
Weight Decay 限制参数过大
Early Stopping 提前停止训练
验证集评估 监控泛化能力

28. Epoch 是什么

Epoch:

模型完整学习一遍训练集。

例如:

epoch = 1

表示:

所有训练数据都训练了一轮。


29. 训练代码示例(HuggingFace)

trainer = SFTTrainer(
    model=model,
    args=args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset
)

for epoch in range(num_epochs):
    trainer.train()

30. 训练中的关键步骤

loss.backward()
optimizer.step()
optimizer.zero_grad()

31. backward()

loss.backward()

作用:

计算梯度。


32. optimizer.step()

optimizer.step()

作用:

更新模型参数。


33. optimizer.zero_grad()

optimizer.zero_grad()

作用:

清空旧梯度。

否则梯度会不断累积。


34. HuggingFace 可视化训练

训练过程中通常会观察:

用于判断:


35. 微调训练的本质

整个 Fine-tuning 的本质:

不断预测
→ 计算错误
→ 修正参数
→ 预测更准确

循环上亿次。


36. 一句话总结

Loss:

衡量模型错得多严重。

Gradient:

告诉模型该怎么改。

Optimizer:

负责真正修改参数。

Fine-tuning:

本质上是一个不断“减少错误”的数学优化过程。