博客 / 詳情

返回

為什麼 loss 幾乎沒用:微調裏最容易讓人“自嗨”的指標

loss 是怎麼一步步“騙”過工程師的

如果你做過大模型微調,幾乎一定經歷過這樣一個時刻。

訓練剛跑起來,你盯着屏幕上的 loss 曲線,看着它從一個比較高的值,慢慢、穩定地往下走。曲線很平滑,沒有劇烈抖動,看起來一切都很健康。這時候你心裏往往會產生一種非常強烈的安全感:
“這次應該穩了。”

但等你真正拿模型去測試時,問題就來了。

  • 模型回答好像沒什麼變化
  • 有時候甚至更奇怪了
  • 你很難説清楚它到底“學到了什麼”

這時候你會開始懷疑:
是不是數據不夠多?
是不是訓練還不夠久?
是不是 learning rate 還要再調一調?

很少有人會在這個階段反問一句:
有沒有可能,是我一開始就不該把 loss 當成主要依據?

一個必須先説清楚的事實:loss 從來不是“效果指標”

這是整篇文章最重要的前提。

loss 的本質,是一個訓練過程中的優化目標,而不是一個業務效果的衡量標準。
它回答的問題只有一個:

模型在多大程度上擬合了你給它的訓練數據?

注意,這個問題裏,沒有“好不好用”,也沒有“像不像你想要的”。

在預訓練階段,loss 非常重要,因為模型在學習語言本身;
但在微調階段,尤其是 SFT / LoRA 這種微調裏,loss 的解釋力會急劇下降。

微調裏,loss 在“很努力地幹一件你並不關心的事”

這句話聽起來有點刺耳,但非常真實。

在微調中,loss 在做的事情是:
儘可能讓模型復現你給它的示例輸出。

只要模型越來越像“背答案”,loss 就會下降。
至於這種“像”,是不是你真正想要的,那是另一個問題。

舉個非常常見的例子。
你給模型準備了一批客服數據,希望它學會“更謹慎一點”。但這些數據裏,恰好存在一些固定句式,比如大量出現“請您放心”“我們將盡快處理”。

模型非常聰明,它很快就學會:
只要多輸出這些句子,就能顯著降低 loss。

loss 會下降得非常好看,但你真正想要的“判斷邊界能力”,可能一點都沒學到。

31
loss 下降但行為未變化的示意圖

第一個典型誤區:loss 降得快 ≠ 微調效果好

很多人第一次微調時,都會被一個現象“鼓舞”到。

loss 下降得非常快,甚至幾百步就降了一大截。
這時候你會本能地覺得:
“模型學得好快!”

但在微調裏,這往往不是好消息。

loss 降得越快,往往意味着一件事:
模型正在非常高效地記住你的示例。

如果你的數據規模很小、風格很統一,這種“快速記憶”幾乎是必然的。但問題在於,記住示例 ≠ 學會泛化。

在真實測試中,你會發現模型只在“長得很像訓練數據”的問題上表現不錯,一旦問題稍微換個説法,效果就急劇下降。

第二個典型誤區:loss 穩定 ≠ 模型穩定

另一個非常容易讓人放鬆警惕的情況是:
loss 曲線非常穩定,沒有明顯震盪。

這在很多教程裏,被視為“訓練健康”的標誌。但在微調裏,這個信號其實非常曖昧。

loss 穩定,只能説明:
訓練過程在數值上是可控的。

它並不能告訴你:

  • 模型行為有沒有發生不可逆的偏移
  • 模型是不是開始過度依賴某些模式
  • 模型是不是在“犧牲原有能力換取擬合”

尤其是在 LoRA 微調中,這種“穩定但危險”的情況非常常見。

32
loss 穩定但輸出風格漂移示意圖

一個非常關鍵的現實:loss 只反映“訓練分佈內”的世界

這是 loss 在微調中解釋力有限的根本原因。

loss 的計算對象,永遠是你給它的訓練數據。
也就是説,它只對“分佈內表現”負責。

但你真正關心的,幾乎永遠是:
模型在真實使用場景下表現如何。

一旦訓練數據和真實輸入存在偏差,loss 就會立刻“失聲”。

你會看到一個非常經典的現象:
訓練集 loss 很低,驗證集 loss 也不高,但真實問題一問就翻車。

不是模型突然變笨了,而是你拿着一個只會回答課後習題的學生,去參加了一場完全不同的考試。

為什麼“看輸出”比“看 loss”重要一百倍

這可能是最不“自動化”、但最有效的建議。

在微調階段,尤其是前幾輪微調,人工查看輸出,幾乎是不可替代的。

你要問的問題不是:
loss 降了多少?

而是:

  • 模型是不是開始用你期望的結構回答?
  • 它在不確定時有沒有更謹慎?
  • 它有沒有學會你示例裏的“潛台詞”?

這些東西,loss 永遠不會告訴你。

那 loss 是不是就完全沒用了?

説到這裏,很容易被誤解成“loss 一點用都沒有”。
這不是事實。

loss 在微調裏,依然有幾個非常重要、但非常有限的作用:

  • 判斷訓練有沒有正常跑起來
  • 快速發現數值爆炸或異常
  • 比較不同配置下的收斂趨勢

但請注意,它的角色更像是:
“報警器”,而不是“方向盤”。

它告訴你“有沒有出事”,卻幾乎不告訴你“該往哪開”。

為什麼很多團隊會被 loss 綁架

這是一個很現實的問題。

因為 loss 是:

  • 自動的
  • 可量化的
  • 好畫圖的
  • 看起來很“科學”的

而人工評估是:

  • 慢的
  • 主觀的
  • 難以規模化的

但在微調這種高度依賴目標定義的任務中,主觀判斷本身就是信息。

你想要什麼樣的模型,就必須通過人類判斷來確認它是否在往那個方向走。

一個更健康的做法:loss + 對照輸出

在真實工程中,我更推薦一種非常樸素、但有效的方式。

  • 固定一組你非常熟悉的問題
  • 在每一輪微調後,對比模型前後的輸出
  • 結合 loss 曲線,只作為參考

只要你能穩定地回答一句話:
“這一輪,模型在哪些行為上變得更像我想要的了?”

那這輪微調就是有價值的。

一個現實建議:別等 loss 完美了,才去看輸出

這是我見過最多人踩的坑之一。

很多人會等訓練跑完,loss 收斂得非常漂亮,才開始測試模型。
但這時候,如果方向錯了,代價已經非常大。

更健康的節奏是:
早看、頻繁看、反覆對比。

在頻繁驗證輸出變化、對比不同訓練輪次效果時,使用像 LLaMA-Factory online 這種能快速切換模型版本、即時測試的方式,會比等一次完整訓練結束更符合微調的真實節奏。

總結:loss 最大的危險,不是它沒用,而是你太信它

寫到這裏,其實結論已經很清楚了。

loss 在微調裏不是沒用,而是作用範圍被嚴重高估了。
它能告訴你“訓練有沒有在跑”,卻幾乎無法告訴你“模型有沒有變成你想要的樣子”。

如果你把 loss 當成主要決策依據,那你很可能會在一條看起來很平滑的曲線上,慢慢把模型帶偏。

真正成熟的微調過程,永遠是:loss 作為底線保障,輸出評估作為核心依據

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.