大模型如何計算 Loss:訓練與推理的差異

深入交叉熵損失、反向傳播與梯度下降,徹底釐清訓練與推理階段的本質差異。

大模型如何計算 Loss:訓練與推理的差異

上一篇我們看到模型如何一個字一個字地生成回應,也理解了推理階段的採樣策略。
但模型是怎麼「學會」預測下一個詞的?它怎麼知道自己錯了?又怎麼從錯誤中調整?

這一篇,我們要深入訓練階段的核心:損失函數(Loss Function)交叉熵(Cross-Entropy)反向傳播(Backpropagation)梯度下降(Gradient Descent),並徹底釐清訓練與推理的本質差異。

Training → Loss Function | Inference → Sampling Strategy

一、訓練階段到底在訓練什麼?

在訓練階段,模型的核心任務是最小化預測誤差

具體來說,模型會接收大量的文本資料,並嘗試預測每一個位置的下一個 Token。
假設我們有一句話:

今天 天氣 真 好

模型會看到:

  • 輸入「今天」,預測「天氣」
  • 輸入「今天 天氣」,預測「真」
  • 輸入「今天 天氣 真」,預測「好」

每一個位置,模型都會輸出一個機率分布,代表詞表中每個詞被選為下一個詞的可能性。
然後我們拿這個分布,跟實際的目標詞(Ground Truth)比對,計算差距。

這個差距,就是損失(Loss)

損失值越大,代表模型的預測越離譜;損失值越小,代表預測越精確。
訓練的整體目標,就是透過優化演算法,不斷調整模型內部的數十億甚至數千億個參數,逐步降低損失值。

二、交叉熵損失函數:衡量預測與答案的距離

在語言模型中,最常用的損失函數是交叉熵損失(Cross-Entropy Loss)

什麼是交叉熵?

交叉熵來自資訊理論,用來衡量兩個機率分布之間的差異。
假設:

  • (y):真實的目標分布(通常是 One-Hot 向量,正確答案位置為 1,其餘為 0)
  • (\hat{y}):模型預測的機率分布

交叉熵的公式為:

[ L = -\sum_{i=1}^{V} y_i \log(\hat{y}_i) ]

其中 (V) 是詞彙表大小。

因為 (y) 是 One-Hot 向量,只有正確答案的位置是 1,其餘是 0,所以公式可以簡化為:

[ L = -\log(\hat{y}_{\text{correct}}) ]

也就是說,交叉熵損失就是正確答案的預測機率取負對數

直觀理解

  • 如果模型預測正確答案的機率是 1.0,則 (L = -\log(1) = 0),損失為零。
  • 如果模型預測正確答案的機率是 0.1,則 (L = -\log(0.1) \approx 2.3),損失較大。
  • 如果模型預測正確答案的機率是 0.001,則 (L = -\log(0.001) \approx 6.9),損失非常大。

所以,模型越確定正確答案,損失越小;越不確定或預測錯誤,損失越大。

Predicted Distribution vs. Ground Truth

三、反向傳播:從錯誤中找出責任

有了損失值之後,下一個問題是:
我們要如何調整數十億個參數,才能降低這個損失?

這就需要反向傳播(Backpropagation)

反向傳播的核心思想是鏈式法則(Chain Rule)
如果我們想知道某個參數對最終損失的影響有多大,就必須沿著計算圖,從輸出層一路往回推,計算損失對每個參數的梯度(Gradient)

梯度代表的是:

「如果我把這個參數增加一點點,損失會增加還是減少?增加或減少多少?」

具體流程如下:

  1. 前向傳播(Forward Pass):輸入資料經過多層網路,得到預測輸出,並計算損失。
  2. 反向傳播(Backward Pass):從損失出發,沿著網路反向計算每個參數的梯度。
  3. 參數更新:根據梯度,調整每個參數的值。

這個過程就像一個大型的責任分配系統:
損失是最終的「錯誤」,反向傳播則是把這個錯誤的責任,一層一層地分配給每個參數。

四、梯度下降:一步步走向更低損失

計算出梯度之後,我們就可以用**梯度下降(Gradient Descent)**來更新參數。

最基本的更新公式是:

[ \theta \leftarrow \theta - \eta \nabla_\theta L ]

其中:

  • (\theta):模型參數
  • (\eta):學習率(Learning Rate)
  • (\nabla_\theta L):損失對參數的梯度

直觀來說:

  • 如果梯度是正的,代表損失會隨著參數增加而增加,所以我們要減少參數。
  • 如果梯度是負的,代表損失會隨著參數增加而減少,所以我們要增加參數。

學習率 (\eta) 則控制每次更新的步伐大小:

  • 太大:可能跨過最低點,導致震盪甚至發散。
  • 太小:收斂太慢,訓練時間過長。

在實際訓練中,我們通常不會用全部的資料計算梯度,而是用小批次(Mini-Batch)來估計梯度,這稱為隨機梯度下降(Stochastic Gradient Descent, SGD)
現代模型更常使用 Adam、AdamW 等自適應優化器,能根據參數的歷史梯度動態調整學習率。

五、為什麼訓練需要 Mask?

在上一篇文章我們提過,訓練時模型不能看到未來的資訊。
這是因為語言模型的目標是預測下一個詞,如果模型在預測第 (t) 個詞時,能看到第 (t+1) 個詞甚至之後的內容,那它根本不需要學習,只要抄答案就好了。

所以我們使用因果掩碼(Causal Mask),將未來位置的注意力分數設定為負無窮大,經過 Softmax 後這些位置的權重就變成 0。

這確保了模型在預測每個位置時,只能關注當前及之前的詞,模擬真實生成時的條件。

六、訓練與推理的關鍵差異

很多人會混淆訓練與推理,但它們的目標、資料流與計算方式截然不同。以下用表格整理:

面向訓練階段推理階段
目標最小化預測誤差生成連貫自然的文本
答案已知(Ground Truth)未知,需從機率分布採樣
計算可平行處理所有位置自回歸,一次只生成一個 Token
損失函數交叉熵損失無損失函數,只有採樣策略
關鍵技術反向傳播、梯度下降、MaskTemperature、Top-K、Top-P
輸出參數更新生成的 Token 序列
資源需求極高(需要大量 GPU、記憶體)較低(但推論速度受模型大小影響)

訓練階段的核心特徵

  • 有標準答案:每個位置的下一個詞都是已知的。
  • 平行計算:因為答案已知,模型可以同時計算所有位置的損失。
  • 目標明確:最小化交叉熵損失。
  • 需要 Mask:防止模型看到未來資訊。
  • 需要大量計算資源:數十億參數的梯度計算與更新,需要龐大的算力。

推理階段的核心特徵

  • 沒有標準答案:模型只能根據自己預測的分布來採樣。
  • 自回歸生成:一次只生成一個 Token,無法平行處理。
  • 目標是生成品質:透過 Temperature、Top-K、Top-P 等策略平衡準確性與多樣性。
  • 不需要反向傳播:只做前向傳播,計算量相對較小。

Training (Forward + Backward) vs. Inference (Forward Only)

七、一個具體的訓練例子

假設我們有一句話:

我 喜歡 吃 蘋果

訓練時,模型會收到:

輸入目標
喜歡
我 喜歡
我 喜歡 吃蘋果

對於每個位置,模型輸出一個機率分布。
假設在預測「蘋果」時,模型輸出:

  • 蘋果:0.6
  • 香蕉:0.2
  • 橘子:0.1
  • 其他:0.1

交叉熵損失為:

[ L = -\log(0.6) \approx 0.51 ]

如果模型預測「蘋果」的機率只有 0.1,則:

[ L = -\log(0.1) \approx 2.3 ]

損失越大,反向傳播的梯度就越大,參數更新的幅度也越大。
模型會逐漸學會:在「我 喜歡 吃」之後,下一個詞更應該是「蘋果」而不是其他詞。

八、訓練中的工程挑戰

訓練數十億甚至數千億參數的大模型,面臨著許多優化挑戰。以下是三項核心技術,它們協同作用以確保訓練的穩定性與模型的最終效能:

1. 正規化(Normalization)

用以穩定梯度。在每一層的輸出進行標準化,使數據分布維持在穩定範圍,防止數值爆炸或梯度劇烈震盪。

2. 殘差連接(Residual Connection)

用以防止梯度消失。透過建立跨層的捷徑,讓梯度能有效回流到淺層網路,使訓練極深層模型成為可能。

3. Dropout

用以解決過擬合(Overfitting)。在訓練中隨機停用部分神經元,強迫模型學習更強健的特徵,提升對新數據的泛化能力。

Normalization + Residual + Dropout

這些技術我們會在下一篇詳細解釋。

九、總結:從錯誤中學習的完整迴圈

大語言模型的訓練,可以濃縮成一個完整的迴圈:

  1. 前向傳播:輸入文本,模型預測下一個 Token 的機率分布。
  2. 計算損失:用交叉熵衡量預測與答案的差距。
  3. 反向傳播:計算損失對每個參數的梯度。
  4. 梯度下降:根據梯度更新參數,降低損失。
  5. 重複:數百萬次,直到損失收斂。

而推理階段則是:

  1. 前向傳播:輸入提示,模型輸出下一個 Token 的機率分布。
  2. 採樣:用 Temperature、Top-K、Top-P 選出下一個 Token。
  3. 接續:將新 Token 接到輸入後面,重複直到生成完整回應。

兩者的核心差異在於:

訓練有標準答案,目標是最小化誤差;推理沒有標準答案,目標是生成自然連貫的文本。

理解了這個差異,你就掌握了 LLM 從學習到應用的完整脈絡。


下一篇預告

《大模型為什麼難訓?Normalization、Residual 與 Dropout》

我們會深入解釋為什麼深層網路會梯度消失、為什麼需要正規化、殘差連接如何拯救深層網路,以及 Dropout 如何防止過擬合。這些看似微小的工程細節,其實是打造穩定大模型的關鍵。