生成式AI怎麼運作?大型語言模型(LLM)的原理
會寫文章的生成式AI,核心是一種稱為「大型語言模型」的計算機制。它做的事,是預測接在現有文章後面的「下一小段」,把它補上,然後一再重複。它是依照學過的文章的傾向來寫,所以就算文句通順,內容也可能與事實不符,重要的內容需要確認。
這篇文章可以了解
- 大型語言模型實際在做的事(預測後續),以及稱為詞元的單位
- 一次一個詞元寫出文章的機制,以及答案每次都不同的原因
- 參數的意思,以及常見的三個訓練階段
- Transformer與注意力機制,以及一次能看的長度上限
- 會出現看似合理的錯誤的原因,以及安全的使用方式
預備知識:不需要。AI計算的內容(把數字相乘再相加的重複)在「AI為什麼要用GPU?」中說明。
生活中的例子
輸入問題,AI就會用文章回答。它也被用來寫電子郵件的草稿、摘要長篇文件、翻譯外語。像這樣創作出文章或圖片等新內容的AI,稱為「生成式AI」。
本文談的是生成式AI中會寫文章的那一類。它的核心是「大型語言模型」,取英文名稱的字首,也稱為LLM。新聞常先提到產品名稱,但內部機制的基本原理是共通的。
各產品的細部構造,很多都沒有公開。因此本文只說明能在論文或公開資料中確認、許多模型共通的想法。
它做的事是「猜後續」
語言模型是一種計算機制,用機率表示文章接下來容易出現什麼。機率是用0到100%表示某個候選有多容易出現的數字。「大型」的意思,後面再說明。
例如輸入「今天的天氣非常」。模型會替接下來可能出現的每個候選,都標上機率。「好」很高,「差」比它低,無關的詞幾乎是0。
這些機率不是誰寫進表格裡的。而是模型從大量文章學習時,計算方式一點一點被決定下來的結果。怎麼學習,會在後面的「常見的三個訓練階段」說明。
詞元:切分文章的單位
圖中的候選不一定是詞。語言模型會把文章切成小片段來處理,這些片段稱為「詞元」(token)。有時是一個字,有時是好幾個字的組合。
例如「今天是晴天」可能被切成「今天」「是」「晴」「天」。不過這只是說明用的例子,不是實際模型的輸出。切法由各個模型決定,同一句話換了模型,詞元數也會不同。
模型一次能處理的文章長度,以及服務的使用費用,常用詞元數來計算。詞元數和字數並不一致,當作大概的參考就好。
一次補上一個詞元
回答的文章並不是一次整段寫好的。模型先選出下一個詞元,補在文章最後。再以補上後的整段文章為線索,選出下一個詞元。這樣重複下去,直到選中代表「到此結束」的特殊詞元,或達到設定的長度為止。
下一個詞元不一定是機率最高的那個。很多時候,是像依照機率決定中獎率的抽籤那樣選出來的。這種選法稱為「取樣」。同樣的問題每次得到的答案都有點不同,主要就是這個原因。
如果每次只選第一名,文章容易變得單調,或一再重複同樣的說法。Holtzman等人的研究(2019年發表)探討了這個問題,提出先刪去低機率的候選再抽籤的方法。另外,抽籤的偏向程度可以用稱為「溫度」的設定來改變。溫度調低,排名前面的候選更容易被選中,答案的變化就會變小。
參數:經由訓練調整的大量數字
文字本身無法直接計算,所以模型會先把詞元轉成一串數字再計算。對這些數字乘上固定的數再相加,這樣的計算疊了很多層。在這些計算中,決定要多重視哪個輸入等的數字,稱為「參數」。
參數不是由人一個一個決定的。訓練剛開始時是隨機的值,再一點一點修正,讓預測變準。修正完成的參數值整組,就裝著模型學到的東西。相乘再相加的計算內容,在「AI為什麼要用GPU?」中說明。
大型語言模型的「大型」,主要是指參數非常多。例如Meta在2024年公開的Llama 3.1,最大的模型約有4,050億個參數。很多模型不公開內部,參數數量無法從外部確認,所以這裡用公開的模型當例子。
常見的三個訓練階段
大型語言模型通常分成幾個階段來訓練。這裡介紹常用的三階段流程。階段的分法和方法,因開發者而異。
第一個是「預訓練」。準備網路上的文章、書籍等大量文章。給模型看文章的前半段,讓它預測下一個詞元,猜錯就稍微修正參數。正確答案就在文章本身裡,所以不需要人寫答案。Llama 3使用了約15兆個詞元的文章(2024年的論文)。
完成預訓練的模型,很會接續文章,但不一定會回答問題。有時它會把問題當開頭,接著寫出一串類似的問題。
所以第二步,是針對目的,對已訓練好的模型再做少量追加訓練。這稱為「微調」。這裡給模型看問題與好答案範例(例如人寫的)的組合。因為是從正確的範例學習,所以稱為「監督式微調」。
第三步是配合人類的偏好。對同一個問題產生多個答案,由人比較哪個比較好。以這些評價為線索,讓模型更容易給出受偏好的答案。有名的做法是使用從結果得到的評分來學習的強化學習,稱為「人類回饋強化學習」(RLHF)。
這個三階段流程,在OpenAI研究人員2022年的論文中,以完整的形式提出。另一方面,Meta在2024年的論文中說明,第三步選用了稱為DPO的方法。這是不使用強化學習,直接從比較結果學習的方法。原因是在大型模型上計算量較少,成績也較好。並不是一定都是這三個階段。
Transformer與注意力機制
現在的大型語言模型,多半使用稱為「Transformer」的計算架構。這是Google的研究人員等在2017年,以〈Attention Is All You Need〉這篇論文發表的。它原本是為了把文章翻譯成其他語言而設計的。
在那之前,處理文章的AI多半是從開頭依序一個一個讀詞元。不等前一個結果就無法往下算,所以有難以同時計算的弱點。Transformer能把現有文章的詞元一起同時計算。這和用大量計算電路同時計算的GPU很合得來。不過在補寫答案時,仍然是一次一個詞元。
Transformer的核心是注意力機制(attention),英文是「注意」的意思。在寫文章的模型中,每個詞元都會計算要多注意它前面的哪個詞元。再依照注意的程度,把對方的資訊取進來。
例如「我跟小陳借了一支筆。它是藍色的。」這句話,「它」指的是什麼很重要。如果像圖中那樣,「它」能強烈注意「筆」,就比較容易寫出意思正確的後續。不過,這張圖是為了說明而簡化的例子。實際模型中,哪一層在注意什麼,人要解讀並不容易。
上下文視窗:一次能看的長度
產生答案時,能當作線索的文章長度有上限。這是問題、之前的對話、寫到一半的答案加起來的詞元數上限,稱為「上下文視窗」。
上限因模型而異。例如Llama 3.1最多能處理128K(約13萬)個詞元(2024年)。超過上限的部分,模型看不到。因此有些服務會省略長對話中較舊的部分,或先摘要再交給模型。
在對話中告訴它的內容,會當作當下的線索來使用。但是對話並不會當場改寫模型的參數。不過,也有服務會保存輸入的內容,用於之後的訓練。這點在「安全的使用方式」中說明。
為什麼會出現看似合理的錯誤?
語言模型被訓練成寫出看似合理的後續。模型本身並沒有確認內容是否為事實的機制。因此,它有時會用通順的文句,寫出沒有根據的內容。這稱為「幻覺」(hallucination)。
美國國家標準暨技術研究院(NIST)2024年的指引,把這個現象說明為「產生以充滿自信的方式陳述的錯誤內容」。例如不存在的書名,或在哪裡都查不到的數字,可能會像真的一樣出現。
模型並不是在查一本寫好答案的字典。它學過的文章的傾向,只是融入了參數的值裡。對於訓練用的文章蒐集完成之後發生的事,它本身並不知道。
因此,有一種方法是把模型接上搜尋等外部工具,讓它先讀過找到的資料再回答。Lewis等人2020年的論文,把這稱為「檢索增強生成(RAG)」。錯誤可以減少,但資料本身可能有誤,也可能讀錯,所以錯誤不會消失。
訓練與推論:計算與電力
決定參數的訓練,是由開發者讓大量GPU長時間運作來進行。另一方面,用訓練好的模型產生答案的計算,稱為推論。每次有人使用,就會進行推論。兩者的差異整理在「AI訓練與推論的差異」的表格中。
推論時,每產生一個詞元,都要從記憶體讀出大量參數來計算。所以不只計算速度,從記憶體搬運資料的速度也很重要。AI用的GPU為什麼使用特別的記憶體,在「HBM是什麼?」中說明。
這些計算在稱為資料中心的專用建築裡進行,會用掉大量電力。根據國際能源署(IEA)2025年的報告,2024年資料中心的用電約占全球的1.5%。這個數字也包含AI以外的用途,但IEA認為資料中心用電增加的最大因素是AI。資料中心在「雲端運算是什麼?」中說明。
安全的使用方式
重要的內容,請用原始資料確認。特別是和數字、日期、法律、健康、金錢有關的答案,要用官方資料等查證。即使答案寫了資料名稱或網址,也要打開確認它是否存在、是否真的那樣寫。
輸入的內容也要注意。有些服務依照使用條款或設定,會把輸入的文章用於之後的訓練。公司機密或他人的個人資料,在確認處理方式之前不要輸入。例如日本的個人資訊保護委員會也在2023年6月提醒大眾,輸入的個人資料有可能被用於AI的學習。
在公司使用時,要遵守公司的規定,並使用合約中訂有輸入內容處理方式的服務。從把資料交給外部業者的角度來看,這和使用雲端是同樣的想法。使用AI的答案時,確認內容、決定要不要用的,也是人。
常見的誤解
誤解:AI是搜尋答案資料庫來回答的
實際上,語言模型本身並不是在查答案清單,而是用參數一次預測一個詞元。所以同一個問題,說法也會改變,還可能產生在哪裡都沒寫過的錯誤。就算是接上搜尋的服務,讀完搜尋結果後產生文章的部分,機制也一樣。答案流暢地冒出來,看起來就像某處存著正確答案,這就是誤解的來源。
誤解:既然能像人一樣說話,就和人一樣能理解,也有意識
實際上,能確定的是:語言模型是被訓練、調整成預測後續的計算機制。它能寫出像人寫的文章,所以看起來像在像人一樣思考。但語言模型能不能說是在某種意義上「理解」,研究者之間的意見也分歧。這場討論整理在Mitchell與Krakauer 2023年的評論中。有沒有意識,也是無法從本文說明的機制得到答案的問題。至少,說話自然並不保證內容正確。
誤解:模型越大,一定答得越正確
實際上,參數越多,往往能把越多事情處理好,但這不保證正確。在OpenAI研究人員2022年的論文中,調整成會遵循指示的13億參數模型,在人類評價中更受偏好。比較的對象,是沒有經過這種調整的1,750億參數模型。大型模型也會產生幻覺。重要的不只是大小,還有訓練的方式,以及使用者的確認。
從數字來看
| 項目 | 數字 | 補充 |
|---|---|---|
| Transformer的發表 | 2017年 | 論文〈Attention Is All You Need〉 |
| Llama 3.1最大模型的參數 | 約4,050億個 | 2024年,Meta公布 |
| Llama 3預訓練使用的文章 | 約15兆個詞元 | 2024年的論文 |
| Llama 3.1的上下文視窗 | 最多128K(約13萬)個詞元 | 2024年 |
| 依人類評價調整的模型 | 13億參數 | 答案比1,750億參數的模型更受偏好(2022年的論文) |
| 全球資料中心的用電 | 約占全球的1.5% | 2024年,IEA。包含AI以外的用途 |
模型的大小和長度上限每年都在變,請把這些數字當作「當時的一個例子」來看。
進一步學習
- 用表格看差異:AI訓練與推論的差異、監督式學習、非監督式學習與強化學習的差異(預訓練和RLHF的基礎學習方式)
- 學習方式的用語:遷移學習(把訓練好的模型用在其他目的的想法)
- 機制的用語:KV 快取(推論時保存前面詞元計算結果的記憶體)、RNN(Transformer之前主流的依序讀取方式)
- 算算計算量:「矩陣乘法要算幾次?」
- 從零件來看:「AI為什麼要用GPU?」、「HBM是什麼?」