AI · AI 基礎
大型語言模型(LLM)是怎麼運作的?
簡答
大型語言模型是一種神經網路,訓練目標是根據前面所有的 token(文字的小片段)預測下一個 token。它回答你的時候,會先把提示詞切成 token,替每一個可能的下一個 token 打分數,選出一個接在文字後面,然後重複這個動作直到停止。再經過指令與人類回饋的額外訓練,這個預測器才變成好用的助理。
一句話說明:超會猜下一個字的模型
LLM 只會重複做一件事:看目前為止的文字,估計每個可能的下一段文字出現的機率,選出其中一個接上去,再看一次。一篇 300 字的回答,就是幾百次這樣的小步驟。
聽起來太簡單,似乎不可能寫出文章、程式碼和翻譯,力量其實來自規模。模型擁有數十億個參數(訓練時調整的數值),並用極大量的文字訓練過。要在這麼多文字上把下一個字猜準,它就必須學會文法、知識、推理的方式,以及程式碼的結構。
ChatGPT、Claude、Gemini、DeepSeek、Qwen 這類聊天助理,都是圍繞 LLM 打造的產品。產品在外面加上聊天介面、隱藏的系統提示詞、安全規則,通常還有網路搜尋之類的工具,核心仍是預測下一個 token。
你的訊息會經歷什麼:逐步拆解
以提示詞 The capital of France is 為例,模型會這樣處理:
- 斷詞(tokenize):文字被切成 token。用某個常見的斷詞器,這句會變成五個 token:The、capital、of、France、is(多數帶著前面的空格)。
- 嵌入(embed):每個 token 被換成一長串數字,也就是嵌入向量,讓意思相近的詞在這個空間裡彼此靠近。
- 注意(attend):嵌入向量穿過幾十層 Transformer。每一層的注意力步驟,都讓每個 token 回頭看前面的 token,並取用相關的資訊。
- 評分(score):最後一層為詞表中的每個 token 打分數,詞表常有 10 萬個以上的項目,分數再轉成機率。
- 取樣(sample):依照這些機率與取樣設定,選出一個 token。
- 重複(repeat):選出的 token 接到文字後面,整個流程再跑一次,預測下一個 token,直到模型輸出停止 token 或達到長度上限。
下一個 token 的機率大概像下表這樣,數字僅為示意,並非來自真實模型:
| 候選的下一個 token | 示意機率 | 說明 |
|---|---|---|
| Paris | 0.92 | 預期的答案 |
| a | 0.03 | 可能接成 a city of ... |
| the | 0.02 | 可能接成 the city of ... |
| located | 0.01 | 文法正確但不常見 |
| Lyon | 0.001 | 是錯的,但仍有可能被抽中 |
這張表帶出兩個重點。第一,模型不是在查資料庫,而是在產生最可能的接續。第二,錯誤的 token 永遠有一點機率,這也是模型有時會說出錯誤內容的原因之一。
注意力機制:模型如何掌握語意
注意力是 2017 年發表的 Transformer 架構的核心概念。對每個 token,模型會計算在建構它的語意時,應該給前面每個 token 多少權重。
看這句:The trophy did not fit in the suitcase because it was too big. 要理解 it 指的是什麼,模型必須把它連到 trophy(獎盃),而不是 suitcase(行李箱)。把 big 換成 small,it 就變成指行李箱。注意力讓模型能根據周圍的字詞建立這種連結,並在許多層之間逐層修正理解。
因為注意力要拿每個 token 和前面的 token 比較,文字越長,運算成本就上升得越快。這就是每個模型都有上下文視窗(context window)的原因:模型一次最多能處理的 token 數量。
LLM 如何訓練:三個階段
原始的下一個 token 預測器還不是好用的助理。你問它問題,它可能接著再列一串問題,因為網路上的文字本來就長那樣。現代的助理會經過幾個階段的訓練。
| 階段 | 訓練資料 | 模型學到什麼 | 成果 |
|---|---|---|---|
| 預訓練(pretraining) | 海量的公開文字與程式碼 | 語言、知識、規律、推理方式 | 能接續任何文字的基礎模型 |
| 指令微調(instruction tuning) | 人工撰寫的範例提示詞與優質回答 | 遵循指令的格式 | 會回答問題而不是胡亂延伸的模型 |
| 偏好調校(例如 RLHF) | 由人或模型對多個回答排序 | 哪些回答比較討人喜歡:有用、誠實、安全 | 風格一致、懂得拒絕的助理 |
InstructGPT 的研究顯示,用這種方式訓練的較小模型,比只做過預訓練的大得多的模型更受使用者青睞。撰文當下,許多模型還會接受額外訓練,學會先逐步思考再回答,產品中常以思考模式或推理模式呈現。
訓練在發布前進行一次,成本極高。你和模型聊天時,它的參數並不會改變,也不會當場從對話中學習,不過供應商若政策允許,可能會用對話訓練之後的版本。
會改變答案的取樣設定
同一句提示詞可能得到不同的答案,因為模型是從機率分布中取樣。使用 API 時,你可以控制取樣的方式,實際範圍與預設值依供應商而異。
| 設定 | 作用 | 何時調整 |
|---|---|---|
temperature | 數值低時,機率最高的選項更容易被選中;數值高時,機率被攤平,變化更多 | 擷取資料與寫程式調低,腦力激盪調高 |
top_p | 只從機率加總達到 p 的最小 token 集合中取樣 | 通常調整它或 temperature 其中之一就好,不要兩個都改 |
max_tokens | 限制輸出長度 | 回答在句子中間被截斷時調高 |
| 停止序列 | 出現就結束生成的文字 | 結構化輸出、範本 |
| 系統提示詞 | 放在對話之前的隱藏指令 | 一次設好角色、語氣、格式與規則 |
低 temperature 能讓答案更穩定,但不會讓答案更正確。如果最可能的接續本身就是錯的,低 temperature 只會讓模型每次都錯。
LLM 做不到的事
只要記得它的運作機制,許多令人意外的失誤就說得通了:
- 它們看不到字母。模型看到的是 token,所以 strawberry 這個字可能被拆成 st、raw、berry 三塊,數字母或把單字倒過來寫因此很困難。
- 它們自己不會記得過去的對話。應用程式裡的記憶功能,是把筆記存起來,再塞進提示詞裡。
- 除非應用程式把搜尋結果或文件放進上下文,否則它們不知道最近發生的事。
- 它們不會查證事實。下一個 token 預測的過程中,沒有任何一步會把輸出和現實對照,所以流暢的文字也可能是錯的。
- 除非呼叫工具,否則它們不會執行程式碼,也無法做精確運算。純文字的長乘法很容易出錯。
好的產品會用工具補上這些缺口:計算機、程式碼執行器、網路搜尋,或是從你自己的文件中檢索。知道缺口在哪裡,就知道什麼時候該要求使用工具,或自己檢查答案。
從 LLM 原理得到的實用技巧
- 把素材放進提示詞。想問某份文件的內容,就貼上相關段落。模型對看得到的文字,推理起來比對訓練時留下的模糊記憶好得多。
- 把輸出要求講清楚。說明格式、長度、讀者和語言,否則模型會用最典型的選擇填補空白。
- 困難的問題請它列出步驟。寫出中間過程,能讓模型在做出結論前有更多 token 可以運用。
- 新任務開新對話。舊的、不相關的訊息仍留在上下文裡,可能把答案帶偏。
- 人名、數字、引述和連結要自己查證,這些是最容易被捏造的細節。
常見問題
大型語言模型真的理解自己說的話嗎?
它們會建立豐富的內部語意表示,讓它們在許多情況下能回答、翻譯與推理。但它們沒有經驗或目標,也可能在人類覺得顯而易見的簡單任務上失敗,所以這算不算理解,至今仍有爭論。
為什麼 AI 對同一個問題會給不同的答案?
模型是從機率分布中取樣下一個 token,答案開頭的小小隨機選擇,會讓後面的措辭越走越不同。調低 temperature 可以讓答案更容易重現。
GPT 是什麼的縮寫?
GPT 是 Generative Pre-trained Transformer(生成式預訓練 Transformer)的縮寫:一種用大量文字預訓練、能生成文字的 Transformer 模型。
LLM 會連上網路嗎?
模型本身不會,它只知道截止日期前的訓練資料。有些應用程式加上網路搜尋工具,把結果貼進上下文,所以才能談到最近發生的事。
LLM 的參數是什麼?
參數是神經網路內部的一個數值,由訓練來調整。模型有數十億個參數,合起來編碼了模型學到的一切。參數越多能容納的規律越多,但執行成本也越高。