骨架是随机的,怎么变成会说话的模型?本篇拆训练目标、损失、优化器、三阶段。 教学性模拟--loss 曲线与分布为确定性示意,用以理解原理,非真实训练日志。
所有训练都围绕这一件事:给定上文,猜下一个词。
今天天气很
预测 ->
?
一开始模型瞎猜(分布很平),随着训练,概率越来越集中在正确词「好」上。这就是学习的过程。预测错就产生 loss,反向传播回去更新参数,下一轮猜得更准。
「猜得有多偏」的量化。越接近正确词,loss 越小。
不用记公式,记一句话:模型给正确词分配的概率越大,loss 越小。给 1.0(完全确定)-> loss=0;给 0.01(几乎不猜它)-> loss 很大。训练就是压低这个 loss。-log 的作用是把「概率(0~1)」翻成「惩罚(0~∞)」--概率越小惩罚越狠,且不是线性的。
AdamW 是标配;学习率先 warmup 升、再 cosine 降。看曲线。
Warmup:开头几步学习率从 0 慢慢升--模型一开始是随机的,步子太大直接崩。Cosine 衰减:到中后期慢慢降回 0,让模型在最优解附近「精调」而不是乱跳。这条曲线是现代大模型训练的标配形状。
训练太猛会「死记硬背」训练集,泛化差。三招防它。
训练时随机丢一部分神经元(置 0)。逼模型不依赖单一路径,更鲁棒。推理时关掉。
把权重往小拉。防参数长太大导致过拟合,等价于 L2 正则。
梯度太大就裁剪到阈值内。防爆梯度,稳训练。
一个现代大模型通常分三步走。点 RUN 看流程。
海量无标注文本,纯「预测下一个词」。吃掉整个互联网级别数据。这步最贵(占 99% 算力),练出的是语言能力 + 世界知识,但还不听话。
用「问题-好答案」的人工标注数据微调。教模型按对话格式、有帮地回答。这步让它从「会续写」变成「会答」。
训练一个「打分模型」(人类偏好训练的),用强化学习让模型往高分方向优化。对齐人类喜好:有用、无害、诚实。
参数更多 / 数据更多 / 算力更多 -> loss 更低。三者要平衡。
Scaling Law:loss 随算力幂律下降。但只堆参数不堆数据会过拟合,只堆数据不堆参数学不动--三者得按比例一起涨。这也是「为什么 7B 模型在某数据量上最优、再大就要配更多数据」的根源。
| 术语 | 一句话 |
|---|---|
next token prediction | 预测下一个词,Decoder-Only 的训练目标 |
交叉熵 loss | 给正确词的概率越大 loss 越小 |
AdamW | 动量+自适应+解耦权重衰减,优化器标配 |
warmup | 开头学习率从 0 升,防随机初始化时崩 |
cosine 衰减 | 后期学习率平滑降到 0,精调收敛 |
预训练/SFT/RLHF | 语言能力 -> 听指令 -> 对齐人类偏好,三阶段 |
Scaling Law | loss 随算力幂律下降,参数/数据/算力要平衡 |
经典到现代的升级:KV Cache、GQA、RoPE、Flash Attention、MoE。最后一篇。