怎么读 loss 曲线

6 分钟阅读深度文章
怎么读 loss 曲线

loss 图是训练过程最直接的报告。健康的曲线长什么样、学习率炸了长什么样、怎么提前发现过拟合、以及 eval 切分到底是为了什么。

在 TheTensorTune 里按下 Start,监视方块就开始画一条线。这条线是整个应用里信息密度最高的东西,然而多数人没学过怎么读它。loss 曲线不是一个分数,而是一份完整的运行报告——当你认识它能讲的四五种剧情之后,一次运行扫一眼就读完了。

这条线到底是什么

loss 就是模型的意外程度。每个训练步里,模型拿一批你的样本,猜下一个 token,然后量一量自己错得多离谱。loss 高说明错得狠,loss 低说明它早料到你会这么答。训练就是 nudging 几百万个数字,让下一次的意外小一点。监视器里的图每步画一个点,另外还有一条虚线画的是 eval 切分——那是模型从不拿来训练的一部分数据,专门留下来做诚实的检验。

健康剧情

健康的曲线先快速下坠,接近底部后逐渐走平。在我们的一次演示运行里——一个小 instruct 模型配三十六条客服样本——训练 loss 在九十步里从 4.0 左右降到 1.4,eval loss 跟着一起降。这个形状意味着模型学的是数据的模式而不是原词原句,毕竟 eval 样本它从没见过。虚线跟着实线往下走的时候,这次运行就值得信。

爆炸

有时曲线不降反升,或者碎成越走越糟的锯齿。这几乎总是学习率的问题。学习率是推的力度:太小没动静,太大每一步都冲过头,模型不是变好而是变坏。我们测试时有一次把它设成了 1.0(别学),然后看着 loss 直线往上冲。LoRA 的默认值 2e-4 经过充分测试,是 2e-4。曲线炸了就调小、重来——已经炸掉的运行不值得抢救。

安静的谎言:过拟合

更阴险的剧情是实线还在降,虚线却掉头向上。模型正在逐字背诵训练样本,在没见过的数据上反而越来越差。在小数据集上——也就是大多数人微调用的数据集——这会在两三个轮数后发生。这不是灾难,是信息:要么就地收手,要么把轮数砍下来。TheTensorTune 的早停会替你盯着 eval 线,把已经不再进步的运行停下来。

经验法则: 训练 loss 降 + eval loss 降 = 在学。训练 loss 降 + eval loss 升 = 在背。全都在涨 = 学习率。全都是平的 = 加数据或加轮数。

还有一个数字也配在屏幕上占一席:困惑度,对比页会同时给出基础和微调模型的数值。它把 loss 翻译成「平均在几个词之间犹豫」——越低越笃定。看着它在演示数据集的 eval 切分上从 55 掉到 9 以下,比任何 loss 数字都痛快,因为它量的是模型从没训练过的数据。留出 eval 切分的全部意义就在这儿:把感觉换成数字。

#训练#loss#指南