大模型如何運作:從自回歸生成到推理採樣
從自回歸生成到推理採樣,理解 LLM 如何在推論階段一個字一個字生成回應。
大模型如何運作:從自回歸生成到推理採樣
前四篇,我們從文字向量化、詞嵌入與位置編碼,一路拆解到注意力機制與多頭 Transformer。
現在,模型內部的零件大致齊了,但還有一個最直觀的問題沒回答:
當我們輸入一句提示,大模型到底是怎麼「一個字一個字」把回應生出來的?
這一篇,我們要從自回歸生成談到推理採樣,理解 LLM 在推論階段的核心運作邏輯。
一、大模型的本質:文字接龍
大語言模型(LLM)的核心運作機制,本質上是一種自回歸模型(Autoregressive Model)。
它做的事情,說穿了就是預測下一個 Token(Next Token Prediction)。
整個生成過程就像文字接龍:
- 輸入一段提示(Prompt)
- 模型預測下一個最可能出現的 Token
- 把這個 Token 接續到輸入後面
- 用新的輸入再預測下一個 Token
- 反覆直到生成完整的回應
舉例來說,如果輸入是「今天天氣真」,模型可能會:
- 第一次預測:「好」
- 第二次預測:「,」
- 第三次預測:「適」
- 第四次預測:「合」
- 第五次預測:「出」
- 第六次預測:「遊」
最終生成:「今天天氣真好,適合出遊。」
這個過程看起來很簡單,但背後其實牽涉到兩個截然不同的階段:訓練階段與推理階段。
它們的目標、資料流與核心邏輯都不一樣。
二、訓練階段:從誤差中學習
在訓練階段,模型的核心任務是最小化預測誤差。
模型會接收大量文本資料,並嘗試預測每一個位置的下一個 Token。
為了衡量預測的好壞,我們使用**交叉熵損失函數(Cross-Entropy Loss)**來計算模型預測的機率分布與實際目標詞(Ground Truth)之間的差距。
損失值越大,代表模型的預測越離譜;損失值越小,代表預測越精確。
訓練的整體目標,就是透過反向傳播(Backpropagation)與梯度下降(Gradient Descent),不斷調整模型內部的數十億甚至數千億個參數,逐步降低損失值。
這個過程可以理解為:
模型每次「猜」一個詞,然後比對正確答案,根據差距調整自己的內部參數,反覆數百萬次,直到預測越來越精準。
訓練階段有幾個關鍵特徵:
- 有標準答案:每個位置的下一個詞都是已知的。
- 平行計算:因為答案已知,模型可以同時計算所有位置的損失。
- 目標明確:最小化交叉熵損失。
- 需要 Mask:防止模型看到未來資訊,這在上一篇文章已經解釋過。
三、推理階段:從機率中採樣
當模型訓練完成,進入推理(生成)階段時,目標從「精確預測」轉變為「生成連貫且自然的文本」。
此時,模型會根據輸入的提示,計算出下一個 Token 的機率分布——也就是詞表中每個詞被選中的可能性。
假設詞彙表有 5 萬個 Token,模型會輸出一個長度為 5 萬的機率向量,總和為 1。
例如:
| Token | 機率 |
|---|---|
| 好 | 0.45 |
| 不 | 0.20 |
| 很 | 0.15 |
| 真 | 0.05 |
| 其他 | 0.15 |
接下來的問題是:我們要如何從這個分布中選出下一個 Token?
如果每次都單純選擇機率最高的詞彙,這種方法稱為貪婪解碼(Greedy Decoding)。
它雖然直觀,但生成的內容往往會顯得機械式且重複,缺乏人類語言的自然多樣性。
為了解決這個問題,我們引入了機率抽樣策略,來平衡輸出的品質與多樣性。
四、三大採樣策略
1. Temperature(溫度係數)
Temperature 是一個用來調整機率分布「平滑度」的參數。
它透過以下方式作用於機率分布:
[ P’(x_i) = \frac{\exp\left(\log(P(x_i)) / T\right)}{\sum_j \exp\left(\log(P(x_j)) / T\right)} ]
簡單來說,它會把原始的機率分布重新縮放:
- 低溫度(如 0.1):機率分布變得尖銳,高機率的詞更容易被選中,輸出更確定且保守。
- 高溫度(如 1.0):機率分布變得平滑,低機率的詞也有機會出線,輸出更隨機且富有創造性。
- 溫度為 0:等同於貪婪解碼,每次都選最高機率的詞。
2. Top-K 抽樣
只從機率排名前 K 個的候選詞中進行抽樣,其餘低機率的詞被直接過濾掉。
這能有效排除明顯不合適的選項,同時保留一定的多樣性。
例如,設定 (K = 3),就只從機率最高的 3 個詞中抽樣,其他全部丟棄。
3. Top-P(核採樣,Nucleus Sampling)
動態選擇機率總和達到 (P)(例如 0.9)的最小候選集合。
這種方法能根據當下機率分布的狀況,靈活調整候選詞的數量。
例如,如果前 3 個詞的機率總和已經達到 0.9,就只從這 3 個詞中抽樣;
如果前 10 個詞的總和才達到 0.9,就從這 10 個詞中抽樣。
這種方法在維持多樣性的同時,避免納入過多不合理的選項。
五、訓練與推理的關鍵差異
| 面向 | 訓練階段 | 推理階段 |
|---|---|---|
| 目標 | 最小化預測誤差 | 生成連貫自然的文本 |
| 答案 | 已知(Ground Truth) | 未知,需從機率分布採樣 |
| 計算 | 可平行處理所有位置 | 自回歸,一次只生成一個 Token |
| 損失函數 | 交叉熵損失 | 無損失函數,只有採樣策略 |
| 關鍵技術 | 反向傳播、梯度下降、Mask | Temperature、Top-K、Top-P |
| 輸出 | 參數更新 | 生成的 Token 序列 |
理解這個差異,是掌握 LLM 運作邏輯的關鍵。
六、一個具體的生成例子
假設我們輸入提示:「從前有一隻」
模型第一次預測下一個 Token 的機率分布:
- 小豬:0.35
- 小貓:0.25
- 小狗:0.20
- 小鳥:0.10
- 其他:0.10
如果使用 Temperature=0.7、Top-P=0.9:
- 先經過 Temperature 調整,分布稍微平滑。
- 累積機率:小豬(0.35) + 小貓(0.25) + 小狗(0.20) + 小鳥(0.10) = 0.90,達到 Top-P 門檻。
- 從這四個候選中隨機抽樣,可能選中「小貓」。
於是生成:「從前有一隻小貓」
接著把「從前有一隻小貓」當作新輸入,繼續預測下一個 Token,如此反覆,直到生成完整的段落。
這就是自回歸生成的實際樣貌。
七、總結:從預測到生成
大語言模型的運作,可以濃縮成以下幾個重點:
- 自回歸機制:不斷預測下一個 Token,並將結果接續到輸入中。
- 訓練階段:透過交叉熵損失、反向傳播與梯度下降,讓模型學會預測。
- 推理階段:從模型輸出的機率分布中,透過 Temperature、Top-K、Top-P 等策略採樣。
- 核心權衡:在準確性與多樣性之間取得平衡,讓生成內容既合理又自然。
這些技術共同確保了模型輸出的內容既能維持多樣性,又不會因隨機性過高而導致語句不通順。
掌握這些核心邏輯,是深入理解參數運算、模型微調與進階應用的重要基礎。
不過,訓練階段其實還藏著許多工程挑戰:
為什麼深層網路會梯度消失?為什麼需要正規化?Dropout 又是怎麼防止過擬合?
這些問題,我們留到下一篇來解答。
下一篇預告
《大模型如何計算 Loss:訓練與推理的差異》
我們會深入交叉熵損失函數、反向傳播、梯度下降,並解釋訓練階段為何需要 Mask、為何需要大量計算資源,以及模型如何從錯誤中真正「學會」語言。