ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

损失为何从ln(vocab_size)开始:train-llm-from-scratch的预训练数学直觉

2026/8/30 10:08:16 拓冰建站 浏览量
损失为何从ln(vocab_size)开始:train-llm-from-scratch的预训练数学直觉 损失为何从ln(vocab_size)开始train-llm-from-scratch的预训练数学直觉【免费下载链接】train-llm-from-scratchA straightforward method for training your LLM, from downloading data to generating text.项目地址: https://gitcode.com/GitHub_Trending/tr/train-llm-from-scratch刚接触 LLM 预训练的人第一眼看到训练日志里loss ≈ 10.8时都会愣住这个数字是凭空冒出来的吗在开源项目 train-llm-from-scratch 中从零预训练一个 Transformer 模型时损失cross-entropy loss恰恰从ln(vocab_size) ≈ 10.83附近起步。本文将用最小量的公式和代码讲透预训练损失为何从这个值开始、它随训练下降意味着什么以及如何像专业工程师一样解读一条健康的损失曲线。一、10.83 从哪来均匀猜测的数学下界 预训练的任务是下一个词预测next-token prediction模型对每个位置输出一个覆盖整个词表的分数向量logits经 softmax 变成概率分布再用交叉熵损失衡量给真实下一个词分配了多少概率单位置损失ℓ −log p(真实 token)批损失对所有位置取平均关键在于起点。模型参数是随机初始化的对任何下一个词都没有任何判断力softmax 输出的近似是一条均匀分布——每个 token 的概率都是 1/VV 为词表大小。此时loss ≈ −log(1/V) ln(V)也就是说ln(vocab_size)不是魔法常数而是蒙眼乱猜时必然产生的损失是随机模型的理论起点。本项目使用 OpenAIr50k_base分词器词表大小V 50304见 config/post_training_config.py 中的vocab_size字段所以ln(50304) ≈ 10.83官方文档 docs/foundations/objectives.md 用一句话概括了这个直觉loss 接近 log(V) 意味着模型接近均匀随机猜测。交叉熵的具体计算发生在 src/models/transformer.py 的forward中F.cross_entropy而训练循环在 scripts/pretrain_base.py。二、看图说话一条真实预训练损失曲线的三个看点 下面是本仓库在 2×L40 上用 The Pile 预训练 77M 参数模型的真实损失曲线由 images/plot_artifacts.py 从训练日志绘制图中三条线正好对应三个知识点灰色虚线 均匀猜测基线。就是ln(50304) ≈ 10.83脚本里一行axhline(10.83)画出的随机水平线。曲线必须尽快跌破它跌破越多说明模型学到的语言规律越多。蓝色 train loss 从 11.14 起步略高于 10.83 属正常现象随机初始化 小批量带来的方差会让第一个点飘到基线之上随后迅速回落并单调下降官方记录的路径是 11.06 → 8.6 → 6.0 → …。橙色 dev loss 与 train loss 走势贴合。验证集损失是泛化的晴雨表两者同降是好兆头若 dev 先止跌回升则提示过拟合。三、下降的每个点都在说什么困惑度视角 把损失取指数就得到大家常说的困惑度perplexityPPL exp(loss)它有一个极直观的读法——模型平均在多少个候选词之间犹豫损失值困惑度人话解读≈ 10.83≈ 50,304全词表蒙猜等于什么都没学≈ 6.0≈ 403已学会高频词规律≈ 3.7≈ 40每步只犹豫几十个词语言结构已内化所以loss 下降的完整故事是模型在把语言的统计规律一步步压缩进权重里每降 1 个单位平均犹豫的候选词数量就缩小 e ≈ 2.72 倍。这也是为什么 docs/02_pretraining.md 称 train loss 是单一最佳健康信号。四、新手自检清单你的预训练曲线健康吗 ✅结合上面的数学直觉拿到日志后可以快速对号✅起点 ≈ ln(V)偏离太远如明显更低要先怀疑数据管道而不是模型更强✅前几百步快速下穿基线优化器 warmup 高频词规律被迅速吸收✅train 与 dev 同步缓降训练在泛化可放心继续⚠️loss 卡在 ln(V) 附近不动检查学习率、数据 shuffle 或梯度是否消失⚠️loss 突然跳涨/发散通常与学习率过大或梯度裁剪缺失有关本项目默认grad_clip1.0。五、延伸学习把数学直觉读完整 仓库自带一套从零理解 Transformer的基础教程覆盖注意力、目标函数、优化与生成建议配合本文阅读目标函数与困惑度推导docs/foundations/objectives.md分词与 token 形状词表 50304 的来源docs/foundations/tokenization.md预训练阶段完整流程docs/02_pretraining.md基础教程页面截图预览一句话总结**损失从ln(vocab_size)出发是随机模型的数学指纹它之后每下降一格都是模型把语言从 5 万个候选中收窄到几十个候选的确凿证据。**读懂这条曲线你就握住了预训练最核心的健康仪表盘。【免费下载链接】train-llm-from-scratchA straightforward method for training your LLM, from downloading data to generating text.项目地址: https://gitcode.com/GitHub_Trending/tr/train-llm-from-scratch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考