AI 之心介紹了 LLM 理解人類語言的過程。那麼 AI 是如何產生語言的?看完本文,你就會知道為什麼我們說,大型語言模型本質上是文字接龍--因為真的是接龍接出來的。
AI 之心描述的是大語言模型當中,BERT 類的 Encoder 模型:模型吃進一段文字,輸出一個分類結果;它雙向閱讀整句話,目的是「理解」。
我們現在更常看到的對話型 AI,例如 Claude、Gemini、Grok、ChatGPT 等,使用的是 Decoder 架構。Decoder 也有同樣的 Tokenizer、Embedding、Attention 機制,但它輸出的不是一個分類結果,而是下一個最可能的 token。而這個新的 token 會成為輸入的一部分,重複整個過程——這就是我們在對話介面上看到文字逐漸出現的原因。
一、Encoder vs Decoder 的差異
AI 之心一文描述的是 BERT 類的模型,這種模型雙向閱讀整句話,目的是「理解」。對話型 AI 的架構是 Decoder,單向,只能看到當前 token 之前的內容,目的是「預測下一個」。
BERT(Encoder):
← 同時看所有方向 →
「它很累所以沒有過馬路」
輸出:模型對整個輸入內容的「理解」。
GPT/Claude(Decoder):
← 看前面已經存在的內容
「它很累所以沒有」→ 下一個是什麼?
「它很累所以沒有過」→ 下一個是什麼?
「它很累所以沒有過馬」→ 下一個是什麼?
輸出:下一個字應該是什麼?
這個「只能往前看」就是生成的基礎;在生成下一個詞的時候,下一個詞還不存在。
二、自迴歸生成(Autoregressive Generation)
如果你與 LLM 對話時,送出內容後仔細觀察,會發現 LLM 的回應並不是一整段出,而是逐字出現的。這就是 Decoder 模型產生內容的方式:根據目前的輸入(包括剛才的輸出),持續產生下一個詞,這就是為什麼說,大語言模型的本質是文字接龍。
「自迴歸」的意思是:輸出成為下一次的輸入。模型吃自己生成的東西繼續生成。每次 Decoder 模型生成一個 token,後就會完整執行下列過程:
[對話歷史到目前為止的所有 token]
↓ Transformer + Attention
每個 token 的 Hidden States
↓ Head(Language Model Head)
Logits(字典裡每個 token 的分數,可能是 5 萬個數字)
↓ SoftMax
機率分布
↓ Sampling(抽樣)
選出一個 token
↓ 加進對話歷史
重複整個過程
自迴歸生成這個運作方式,有時候會為使用者帶來困擾。不知道你有沒有這樣的經驗:大語言模型把它自己的推論,說成是你的見解。因為對 Decoder 來說,整個 context window 是一條連續的 token 序列,沒有『你說的』和『我說的』的邊界標記,只有先後順序。整個對話的歷史都是輸入;包括模型對你的回應在內。而你是使用者,模型會將對話當中的觀點歸功給你。
三、Temperature——控制「選擇」的方式
在 SoftMax 產生機率分布之後,Sampling 會選出下一個 token。如果要影響選出的 token,就要影響 SoftMax 產生的機率。這個有影響力的參數叫做 Temperature(溫度)。Temperature 直接作用在 Logits 上——把每個 Logit 除以 Temperature 的值,再送進 SoftMax。Temperature 越低,Logits 之間的差距被放大,高分的更高;Temperature 越高,差距被壓縮,機率分布變得更平均。
Temperature = 1(預設)
「好」:40%
「的」:25%
「嗎」:15%
其他:20%
按照這個機率隨機選——「好」最常被選,但不是每次都選。
Temperature → 0(接近零)
「好」:99.9%
其他:0.01%
Temperature 接近零,就幾乎永遠會選機率最高的那個。輸出保守、可預測、重複。
Temperature 高(比如 1.5)
「好」:30%
「的」:25%
「嗎」:20%
其他:25%
Temperature 提高,低機率的 token 也有更多機會被選。這使得輸出的變化增加了,可能更有創意,也可能產生奇怪的結果。這就是為什麼我們用同一句話問大語言模型兩次,答案會不完全一樣——每次 sampling 的結果都略有不同。
Ari Holtzman 等人 2019的論文 "The Curious Case of Neural Text Degeneration" 系統性地分析了不同 sampling 策略的效果。這篇論文提出的 nucleus sampling(top-p),只從機率加總達到門檻 p 的 token 裡抽樣,是現在最常用的 sampling 策略之一。
四、從「預測下一個詞」到「有用的助理」
一個純粹的 Decoder 模型只會預測訓練資料裡下一個最可能出現的 token。我們輸入「今天天氣」,它可能輸出「今天天氣預報說明日將有」——因為這是網路文章裡統計上最常接的東西。但這樣不是一個有用的對話助理。
讓它變成對話助理,需要三個額外的訓練階段,這套方法叫做人類回饋強化學習 RLHF(Reinforcement Learning from Human Feedback)。
RLHF 三個階段
階段一:Supervised Fine-tuning(SFT)
收集大量「問題-回答」對,由人工撰寫高品質的回答,用這些資料微調模型。
問:台灣的首都是哪裡?
答:台灣的首都是台北。
模型開始學會「問答」的格式,而不只是「接龍」。
階段二:訓練 Reward Model(獎勵模型)
給模型同一個問題,生成幾個不同的回答,讓人類評分員排序:哪個回答最好?
這些排序資料被用來訓練一個獨立的獎勵模型——它學會預測「人類會給這個回答幾分」。
階段三:PPO(強化學習)
用獎勵模型當作「裁判」,持續調整語言模型的權重:
語言模型生成回答
↓
獎勵模型評分
↓
PPO 演算法:往高分方向調整權重
↓
語言模型下次生成更好的回答
這個循環跑很多次,模型學會生成「人類評分員會給高分」的回答。
Ouyang 等人 2022 的論文 "Training language models to follow instructions with human feedback",是 InstructGPT 的論文,RLHF 方法的核心參考文獻。OpenAI 的 GPT 系列、Anthropic 的 Claude 都是從這個框架發展出來的。
五、System Prompt:使用者看不到的第一層輸入
每次我們與 LLM 對話,context window 裡最前面有一段使用者看不到的文字,是 AI 開發公司放進去的,告訴 LLM:
- 你是什麼模型,由哪個組織製造
- 你的價值觀和行為原則
- 這次對話的特定規則
也就是說,AI 開發商的規則直接放在輸入端;每次模型在 Attention 計算時,先看到的都是 System Prompt 的每個 token。
完整流程
[System Prompt(我們看不到)]
[對話歷史]
[我們的輸入]
↓ Tokenizer
Token ID 矩陣
↓ Embedding
高維向量
↓ Transformer + Attention(單向,只看前面)
Hidden States
↓ Language Model Head
Logits(5萬個候選 token 的分數)
↓ Temperature 調整
↓ SoftMax
機率分布
↓ Sampling
選出一個 token → 顯示在你螢幕上
↓ 加進輸入,重複
下一個 token...
AI 如何與我們對話
以 Decoder 模型構成的對話式 LLM,會把整個對話歷史當作輸入,用 Temperature 調整輸出的多樣性,輸出的 token 又成為對話歷史的一部分,如此周而復始。
也就是說,大語言模型產生的回應,是整個對話歷史的回聲。這個回聲被 AI 開發商的 System Prompt 與 RLHF 訓練時人類評分員的決策所影響;但影響最大的,依然是我們使用者的輸入。
所以駕馭 AI 的第一步,就是駕馭我們的輸入。














