大型語言模型

ChatGPT-3.5 英文版嘅截圖；ChatGPT 用咗大型語言模型嘅技術。
大型語言模型，英文簡稱 LLM，係教人工智能處理語言嗰時會用到嘅概念。大型語言模型屬於語言模型一類，做法係畀電腦讀取極大量由目標語言寫成嘅文本，當中啲文本要寫到貼近口語，而模型嘅演算法會教電腦學習隻語言內部嘅統計關係。事實表明，呢種模型可以達致接近人類嘅語言處理能力。
大型語言模型嘅基礎係人工神經網絡，使用二〇一七年發明嘅變壓器架構。到截至二〇二四年 (二〇二四-唔見咗必要嘅參數 1=月份！)[update]為止，最大同最有能力嘅大型語言模型用嘅係只包含解碼器嘅變壓器架構，令佢能夠有效處理同生成大規模文本數據。
歷史上，喺二〇二〇年前，微調係主要用嚟適應模型至特定任務嘅方法。不過，較大嘅模型例如 GPT-3 已經展示出通過提示工程能夠達到類似效果，呢種方法係製作特定嘅輸入提示嚟引導模型嘅回應。 呢啲模型喺人類語言語料庫中獲得關於語法、語義同本體嘅知識，但亦會繼承訓練數據中嘅不準確同偏見。

基本諗頭
一個三層人工神經網絡嘅抽象圖；每個圓圈代表一粒模擬嘅神經細胞，每粒細胞嘅啟動程度取決於佢前面嗰排細胞嘅啟動程度。
睇埋：語言模型、人工神經網絡同深度學習
學大型語言模型，一般假設學習者已經識基本嘅編程，當中 Python 係廿一世紀初大語言模型最常用嗰隻程式語言。除此之外，學習者通常亦需要識少少標記語言方面嘅嘢。
大型語言模型係一種人工智能用嘅模型，整嚟幫人工智能理解、生成同操作自然語言。大語言模型用咗深度學習嘅技術，尤其係神經網絡，用到大量嘅文本數據「訓練」電腦學識目標語言當中嘅統計特性：例如假設都係用中文字寫，粵文當中啲喺嗰後出現嘅機率，應該會高過中文書面語。事實表明，大語言模型能夠準確預測「呢隻呢隻字詞應該會係乜」，並且達致各種嘅語言處理，包括係文本生成、翻譯同埋答問題呀噉，而且到咗廿一世紀初，大語言模型講流暢度同連貫度嘅話同人類不相伯仲。
大語言模型最重要嘅特徵就係大，即係話佢哋
有大量參數，又要
用大量材料。
大語言模型嘅神經網絡非常龐大，閒閒哋有幾十億甚至幾萬億個參數。呢啲模型參數喺訓練期間會係噉調整，優化個模型。除此之外，訓練大語言模型，要畀佢哋讀取大量嘅文本數據，呢啲數據可以嚟自書籍、網站同文章等嘅來源，而且要寫到似口語。訓練過程係非監督嘅，即係話模型要喺冇明確標籤或人工干預嘅情況下學習數據裡便嘅規律同關聯。喺訓練過程當中，模型要靠上下文預測語句跟住落嚟有乜嘢字詞。例如粵文數據入便有噉嘅語句：
「隻貓坐喺 __ 上面。」
因為句嘢開頭有隻貓，所以個空格比較大機會係張梳化，多過會係架直昇機。喺學習過程中，個神經網絡要學識隻語言嘅文法同語義，甚至係一啲有關個世界點運作嘅知識，先至能夠準確噉做預測。

AI 改革
睇埋：機械學習同基於規則嘅系統
早期嘅 AI（講緊廿世紀）通常係基於規則嘅。呢啲系統會按照預先講定嘅規則同邏輯語句嚟運作，當中啲規則同邏輯語句要由人類專家精心設計，想像一句句「如果噉噉噉，就做噉噉噉」嘅句子。不過呢啲系統太過僵化：自然語言固有咁多含糊同歧義，佢哋根本搞唔掂。而且基於規則嘅人工智能唔識將自己知嘅嘢普遍化，例如如果入落去嗰句嘢嘅結構或者詞彙超出咗預先定義嘅規則，系統就無法理解或者產生有意義嘅輸出——呢種缺憾好大問題，因為語言本質上就係會不斷演變嘅。因此呢啲早期系統處理唔到自然語言。
事實係，基於規則嘅人工智能有好多問題都搞唔掂。喺一九八〇年代至一九九〇年代，研究者開始運用統計方法嚟分析大型嘅數據集，唔再明文話畀電腦知語言跟從咩法則，而係教佢哋自己學習數據入便有咩規律並且做預測。舉例說明，想像研究者要教電腦讀粵文，基於規則嘅做法會明文教電腦
「粵語啲後面實係掕名詞。」
「粵語嘅後面實係掕名詞。」
「全部同冚唪唥呢兩隻詞都係粵文可以用嘅。」
... 等嘅法則，而新做法就係畀電腦讀取大量用粵文寫嘅文本材料，畀佢自己發現「啲後面嘅，近乎全部都係名詞」噉嘅法則。呢種技術本質上就容許數據入便存有隨機性，一般認為呢點係重要一步，令到人工智能界朝住「成功教人工智能理解語言」前進。
二〇一〇年代，深度學習嘅出現進一步加強咗人工智能嘅能力，人工神經網絡令到人工智能能夠以非規則嘅方式處理語言，當中遞迴神經網絡零舍重要，令人工智能有能力處理好似語言呢啲要睇上下文嘅資訊：本質上，語言呢家嘢就講究次序；同一隻字詞，可以因為之前出現咗嘅字詞而意思出現大改變而簡化噉講，遞迴神經網絡最大特徵就係識得「暫時記住」手上嗰件資訊，並且畀呢件「記憶」影響自己點處理跟住落嚟嘅資訊。
到咗二〇二〇年代，大型語言模型嘅技術經已趨向成熟。著名嘅大型語言模型包括 OpenAI 嘅 GPT 系列模型——例如 GPT-3.5、GPT-4 同 GPT-4o；用於 ChatGPT 同微軟 Copilot，Google 嘅 Gemini ——目前用於同名嘅傾偈機械人，Meta 嘅 LLaMA 模型系列，Anthropic 嘅 Claude 模型，同 Mistral AI 嘅模型。

理論背景
睇埋：語義分佈假說
語義分佈假說呢個語言學概念亦間接造就咗大語言模型：語義分佈假說呢個諗頭係講語言點樣表達意思嘅；呢個學說講緊要決定一隻字詞嘅語義，可以睇吓佢傾向同邊啲字詞「可互換」，用粵語做例子：
「個差人拉咗個賊。」
「個警察拉咗個賊。」
差人同警察喺（例如）99% 嘅情況下都可互換，就算將差人換做警察，句嘢嘅合理程度都唔會變。相比之下，差人同女警嘅可互換度會明顯低啲，可能得 50% 咁多，而差人同蘋果嘅可互換度就仲低。根據語義分佈假說，研究者可以畀電腦讀取極之大量——講緊幾億字咁多 ——嘅合理語句，就達到教電腦學識理解語言背後嘅意思。

準備訓練
pandas 個撈稿
典型嘅大型語言模型程序，包含以下呢啲工序：
引入需要嘅函式庫，例如用 Python 嘅話，通常都會用到 pandas 呢個專處理數據嘅函式庫。
引入需要嘅文本數據，呢啲文本要寫到似口語，即係粵語大語言模型需要用粵文（寫到合乎粵語嘅文法同用詞）嘅數據。
做事前數據處理，
訓練神經網絡，然後
測試神經網絡，睇吓佢係咪滿足到設計者用緊嘅性能標準。
每個工序，Python 都有功能支援。

常見應用
睇埋：知識提取
首先，研究者要知道自己訓練個模型係要嚟做咩嘅。用個簡單例子，想像家吓要分析以下呢段粵文文本：
親愛嘅 Amazon：
本人住喺香港，於二月三十號喺你個網站度落咗柯打，買咗一個家樂牌電飯煲。我對件商品嘅質素覺得唔滿意，所以寫封電郵提出投訴。我想講嘅係，個電飯煲係煲到飯，但係我用親煲粥功能煲皮蛋瘦肉粥，啲粥都煲到杰撻撻噉。我想你哋即刻退返錢畀我。

陳卡倫上
大語言模型可以用嚟做以下呢啲分析。呢啲分析常用到，Python 啲函式庫有埋 module 畀人用一兩句陳述式嚟行，而且啲陳述式仲會畀用家指定分析嘅參數：
文檔分類：基於文本嘅統計特性，預測佢係咩類型嘅文件。攞住上面個文本，文檔分類應該起馬會畀出信件或者投訴信等嘅答案。
命名實體識別：預測文本裡便有邊啲字詞係表示緊有名實體，例如入咗上面段文做 input，output 會類似噉嘅樣——
問答系統：輸入「個客想要啲咩？」呢句粵文 prompt，個系統會識答
自動總結：用家輸入參數，設定最大長度 coeng_dou 係（例如）20 隻中文字，叫電腦自動噉總括文本，段總結包埋標點符號長度唔可以超過最大長度，部電腦會出類似以下嘅 output
「陳卡倫小姐唔滿意佢柯打嘅電飯煲，想退錢。」
機械翻譯：顧名思義就係要將段嘢譯做第隻話，例如要將段嘢譯做中文書面語（預測段嘢嘅中文書面語版本）噉：
「親愛的 Amazon：本人住在香港，於二月三十號在你的網站作網上訂購，買了一個家樂牌電飯煲。我對這件商品的質素感到不滿意，所以寫一封電郵提出投訴。我想說的是，這電飯煲的確是能煲飯，但是我每次使用煲粥功能煲皮蛋瘦肉粥，粥也會全變成水。我想你們馬上退錢。」
文檔生成：用家輸入參數，設定個 prompt 做「敬愛嘅陳卡倫小姐，我哋得知件產品唔合符你嘅要求，深感抱歉。」噉嘅語句，然後設定最大長度 coeng_dou 係 200 隻中文字，叫電腦自動噉寫埋佢（預測段回覆跟住落嚟係講乜）。部電腦會出類似以下嘅 output
「顧客服務回應：敬愛嘅陳卡倫小姐，我哋得知件產品唔合符你嘅要求，深感抱歉。我哋會有咁快得咁快調查吓呢件產品嘅質素有乜嘢問題，並且準備回收件產品。」
情感分析：攞住文本，畀出個 output，個 output 預測文本當中嘅感受係正面定負面。正常嚟講，一封投訴信應該會係負面嘅。呢種功能喺營銷上好有用，可以用嚟評估啲客對一件產品有咩觀感。
等等。

數據搜集
古騰堡計劃個撈稿；佢哋有搜集各種語言嘅文化作品材料，包括（例如）粵語電影嘅對白或者用粵文寫嘅短篇故仔。
睇埋：語言資源同語料庫
要整大語言模型，第一步係要畀電腦讀取大量嘅語言數據，而呢啲數據通常係要以文本（而非錄音）形式存在嘅。教大語言模型處理粵語就要輸入大量嘅粵文，教大語言模型處理日語就要輸入大量嘅日文... 如此類推。數據嘅質素好唔好同數量夠唔夠多，會顯著影響模型嘅效能。一般嚟講，大語言模型需要極大量嘅文字數據，講緊要有閒閒哋幾兆字節咁多嘅數據，先至可以捕捉到人類語言當中嘅多元化結構。
文本數據嘅常見來源包括：
網頁刮料：研究者可以寫程式由網站、新聞文章同埋論壇等嘅地方攞料。
公開嘅資料庫：例如係唔同語言嘅語料庫噉，維基百科亦可以提供語言資料。亦可以睇吓古騰堡計劃嘅嘢。
書籍、期刊同學術論文：嚟自數碼圖書館同埋檔案館嘅文字。
社交媒體啲用戶自行產生嘅內容：例如 Facebook 同 Twitter 啲留言都可以用嚟做語言材料。
呀噉。Python 仲有功能，可以畀用家直接由古騰堡計劃等嘅大型語言資料庫度引入數據，而且完全免費，一個人只要有電腦識用 Python 編程就用得。例如係以下嘅 Python 陳述式：
from nltk.corpus import gutenberg
句嘢係「由 NLTK.corpus 嗰度引入 gutenberg 呢嚿資源」噉嘅意思。

事前處理
睇埋：事前數據處理
研究者郁手做分析前，多數都要清理吓啲數據先。呢個過程就係所謂嘅事前處理。常見嘅事前處理工序包括：
常規化：要清走 HTML 或者其他標記語言嘅標籤；而且如果文本係用羅馬字寫嘅，要將啲字符冚唪唥變晒做細階。
記號化：將語句揼散做字詞等細啲嘅單位，例如
入：我喺度學大型語言模型嘅嘢。，可能會變成
出：['我', '喺度', '學', '大型', '語言', '模型', '嘅', '嘢', '。']
攞走啲停用詞：攞走啲一般認為係「冇重要意思」嘅字詞；喺廿一世紀初嘅英文處理當中，the is at 等通常都當係停用詞。好似係 Python 嘅自然語言工具箱就有一張停用詞表，列出晒邊啲字詞係停用詞要攞走。
詞形還原同詞幹提取：如果手上嗰隻語言有顯著嘅詞形變化現象，就會用到詞形還原同詞幹提取；詞形還原做嘅嘢係將一隻字詞嘅唔同款擺埋一齊（例如英文 run ran runs 都係 run 嘅變體）而詞幹提取就係「提取」呢啲唔同形態共有嘅詞幹。
詞性標注：同語句入便每隻字詞標返佢係咩詞性；想像家陣有呢句粵文語句：
入：佢喺茶樓食燒賣。，句嘢做咗詞性標注，就會變成好似噉
出：佢 (prn) 喺 (in) 茶樓 (n) 食 (v) 燒賣 (n)。
執吓啲數據，將數據以表等易睇嘅形式呈現出嚟。
呀噉。

神經網絡
（英文） 2021 年典型變壓器嘅架構
内文：變壓器 (機械學習模型)
睇埋：遞迴神經網絡
攞到語言數據，做咗清理，就要郁手訓練神經網絡。大語言模型同一般嘅神經網絡一樣，都會用到監督式學習同非監督式學習嘅做法。
神經網絡係大語言模型嘅核心，尤其係變壓器嘅架構。用合乎直覺嘅方法講，變壓器嘅諗頭係攞住手上嘅語句，再建立一層「有上下文嘅意思表示」然後再建立下一層「有上下文嘅意思表示」... 直至得到語句嘅真正意思為止。每上一層，個模型都會有個神經網絡由前一層嘅資訊嗰度，計出下一層嘅意思表示要係咩樣。變壓器源於二〇一七年，呢種技術徹底改變咗自然語言處理，而且仲係 GPT 等大語言模型嘅支柱。

關注機制
内文：關注機制
關注機制架構係變壓器嘅重點創新。關注機制允許模型評估語句唔同字詞嘅重要程度，由第 (k-1) 層嘅字詞嗰度判斷要點樣理解第 k 層嘅字詞。舉個實質例子，想像以下呢句粵文語句：
「阿明冇去公園跑步，因為佢今日好攰。」
當中佢一般會理解為係指緊阿明。一個變壓器當中嘅意思表示，好可能會似以下噉：
第 6 層：「阿明冇去公園跑步，因為佢今日好攰。」
第 5 層：「阿明冇去公園跑步，因為佢今日好攰。」
當中第 6 層個佢，對阿明嘅權重係（例如）0.97，對公園嘅權重係（例如）0.35，而對冇嘅權重係（例如）0.1。簡單講，即係話個神經網絡由學習過程當中，學識對每隻字詞嚟講，句嘢入便邊隻字詞「值得關注」（權重反映嘅嘢） ——呢點對於理解語言嚟講好重要：喺自然語言當中，同一句嘢入便嘅字詞會互相影響，例如喺英文入便，如果主語係第三人稱單數，佢掕住嗰隻動詞就要加 /s/ 等嘅標記；有咗變壓器，就算一句嘢入便有兩隻彼此相距遠嘅字詞互相影響——話阿明好攰嗰句嘢，阿明同佢隔咗九隻字符——個模型都可以捕捉到佢哋之間嘅關係。
除此之外，變壓器仲包含咗多頭關注以至編碼與解碼架構等嘅重要技術。簡單講，多頭關注功能令變壓器能夠處理語言實有嘅複雜性——能夠例如捕捉到多種唔同嘅字詞間關係。而編碼與解碼架構就會將輸入文字轉換成中間表示，而解碼器會將中間表示轉換成有用嘅輸出。

網絡微調
内文：微調 (深度學習)
睇埋：樣本代表性
喺實際應用上，用大語言模型嘅人好多時都會用「現成」嘅大語言模型，當中 Python 仲允許用家直接引入 import 啲人預先訓練咗嘅變壓器。不過事實表明，攞現成嘅大語言模型嚟用，往往有必要做些少微調。
唔同類型嘅文本，使用語言嘅風格都梗會有啲唔同：舉個簡單例子，用粵文講科學嘅文本，同粵文嘅新聞報導比起嚟，好可能會比較大機會提到某啲特定嘅詞彙，例如係科學方法、實驗、證據...等嘅詞彙；假如有一個現成嘅大語言模型，佢已經識得預測「下一隻字詞係乜」，但係用家睇返紀錄，發覺個模型啲訓練用文本咩都有——科普文章又有、新聞報導又有、搞笑故事又有... 噉佢嘅預測能力就「唔夠專化」；喺呢個時候，用家就有可能想做一啲微調——比較簡單嘅做法，可以係搵用粵文寫科學嘅文章（例如粵文維基百科大把呢啲文章）返嚟，用呢啲文章做數據再訓練吓個模型，令到個模型嘅參數再作少少變化。
順利嘅話，個模型做咗微調就變到「更加專化」——更擅長預測佢專門處理嗰種文本。

提示工程
睇埋：提示工程
提示工程講緊嘅係要改良畀落生成式人工智能度嘅輸入，可以用嚟令到大型語言模型（都可以係生成式人工智能一種）產生出更高質嘅輸出——即係要「對畀落人工智能度嘅提示做工程」。要改良提示方法有好多，比較簡單嘅可以係寫輸入嗰陣試吓用唔同嘅語境：大型語言模型對措辭嘅細微變化好敏感，如果叫個模型「用專家級嘅知識嚟行事」可以大大改變佢哋出嘅結果。此外，做提示工程亦有可能要考慮點樣將指示「講得清楚啲」，避免寫嘢寫得太過含糊不清。反覆測試啲提示亦有助達到更準確嘅輸出。
小樣本學習講緊人工智能要齋靠數量少嘅例子嚟學識做某樣嘢。廿一世紀初嘅監督式機器學習往往係要對電腦輸入大量嘅數據，閒閒哋要有幾百個個案先得；小樣本學習就唔同，好多時用幾十個個案已經可以教電腦學識數據入面嘅規律。要用小樣本學習嚟協助大型語言模型，首先要將啲數據分割做兩部分：支援集同詢問集，前者包括一列落好晒標籤嘅細樣本，可能得 2 至 5 個樣本，而後者就係用嚟做「評估」嘅。舉例說明，想像而家要教個模型做英到粵翻譯，使用者可以入以下嘅輸入，用數據庫入便頭嗰三個例子做小樣本：
英文：I want to eat.
粵譯：我想食嘢。
英文：He is reading a book.
粵譯：佢喺度睇書。
英文：They are going to school.
粵譯：佢哋去緊學校。
然後就叫個模型以呢三個個案做例，譯埋淨低嗰啲語句佢。
小樣本學習嘅過程係要用支援集訓練個 AI 模型，然後叫個模型試吓對個詢問集做預測，睇吓個模型嘅表現係點。

評估
以下呢啲指標都可以用嚟評估大語言模型：
困惑度
BLEU
ROUGE
等等。