跳去內容

大型語言模型

出自維基百科,自由嘅百科全書
ChatGPT-3.5 英文版嘅截圖;ChatGPT 用咗大型語言模型嘅技術。

大型語言模型英文簡稱 LLM,係教人工智能處理語言嗰時會用到嘅一個概念。大型語言模型屬於語言模型一類,做法重點係畀電腦讀取極大量由目標語言寫成嘅文本,當中啲文本要寫到貼近口語,啲演算法會教電腦學習隻語言內部嘅統計關係。而事實表明,LLM 可以達致貼近人類嘅語言處理能力。

大型語言模型嘅基礎係人工神經網絡,使用 2017 年發明嘅變壓器架構。到截至2024年6月 (2024-6月)為止,最大同最有能力嘅大型語言模型用嘅係只包含解碼器嘅變壓器架構,令佢能夠有效處理同生成大規模文本數據。

歷史上,喺 2020 年前,微調係主要用嚟適應模型至特定任務嘅方法。不過,較大嘅模型例如 GPT-3 已經展示出通過提示工程能夠達到類似效果,呢種方法係製作特定嘅輸入提示嚟引導模型嘅回應。[1] 呢啲模型喺人類語言語料庫中獲得關於語法、語義同本體嘅知識,但亦會繼承訓練數據中嘅不準確同偏見[2]

著名嘅大型語言模型包括 OpenAIGPT 系列模型(例如 GPT-3.5GPT-4GPT-4o;用於 ChatGPT微軟 Copilot),GoogleGemini(目前用於同名嘅傾偈機械人),MetaLLaMA 模型系列,AnthropicClaude 模型,同 Mistral AI 嘅模型。

基本諗頭

[編輯]
一個三層人工神經網絡嘅抽象圖;每個圓圈代表一粒模擬嘅神經細胞,每粒細胞嘅啟動程度取決於佢前面嗰排細胞嘅啟動程度[3]

學大型語言模型,一般假設學習者已經識基本嘅編程,當中 Python 係廿一世紀初大語言模型最常用嗰隻程式語言。除此之外,學習者通常亦需要識少少標記語言[e 1]方面嘅嘢。

大型語言模型(LLM)係一種人工智能用嘅模型,整嚟幫人工智能理解、生成同操作自然語言。大語言模型用咗深度學習[e 2]嘅技術,尤其係神經網絡[e 3],用到大量嘅文本數據「訓練」電腦學識目標語言當中嘅統計特性——例如假設都係用中文字寫,粵文當中後出現嘅機率,應該會高過中文書面語。事實表明,大語言模型能夠準確預測「呢隻呢隻字詞應該會係乜」,並且達致各種嘅語言處理,包括係文本生成翻譯同埋答問題呀噉,而且到咗廿一世紀初,大語言模型講流暢度同連貫度嘅話同人類不相伯仲。

大語言模型之所以「大」,係因為佢哋

  1. 有大量參數,又要
  2. 用大量材料。

大語言模型嘅神經網絡非常龐大,閒閒哋有幾十億甚至幾萬億個參數。呢啲模型參數喺訓練期間會係噉調整,優化個模型。除此之外,訓練大語言模型,要畀佢哋讀取大量嘅文本數據,呢啲數據可以嚟自書籍、網站同文章等嘅來源,而且要寫到似口語[註 1]。訓練過程係非監督嘅,即係話模型要喺冇明確標籤或人工干預嘅情況下學習數據裡便嘅規律同關聯。喺訓練過程當中,模型要靠上下文預測語句跟住落嚟有乜嘢字詞。例如粵文數據入便有噉嘅語句:

「隻貓坐喺 __ 上面。」

因為句嘢開頭有隻貓,所以個空格比較大機會張梳化,多過會係架直昇機[註 2]。喺學習過程中,個神經網絡要學識隻語言嘅文法語義,甚至係一啲有關個世界點運作嘅知識,先至能夠準確噉做預測。

歷史背景

[編輯]
睇埋:統計

AI 改革

[編輯]

早期嘅人工智能(講緊廿世紀),系統通常係基於規則[e 4]嘅。呢啲系統會按照預先講定嘅規則同邏輯語句嚟行,當中啲規則同邏輯語句要由人類專家精心設計,想像一句句「如果噉噉噉,就做噉噉噉」嘅句子。不過呢啲系統好僵化,自然語言固有咁多含糊歧義,佢哋根本搞唔掂。而且基於規則嘅人工智能唔識將自己知嘅嘢普遍化,例如如果 input 嗰句嘢嘅結構或者詞彙超出咗預先定義嘅規則,系統就無法理解或者產生有意義嘅 output ——呢種缺憾好大問題,因為語言本質上就係會不斷演變嘅。因此,呢啲早期系統處理唔到自然語言。

事實係,基於規則嘅人工智能有好多問題都搞唔掂。喺 1980 年代至 1990 年代,研究者開始運用統計方法嚟分析大型嘅數據集,唔會明文話畀電腦知語言跟從咩法則,而係教佢哋自己學習數據入便有咩規律並且做出預測。舉例說明,想像研究者要教電腦處理粵文,基於規則嘅做法會明文教電腦

粵語字後面實係掕名詞。」

等嘅法則,而新做法就係畀電腦睇大量由粵文寫成嘅文本材料,畀電腦自己發現「後面嘅,近乎全部都係名詞」噉嘅法則。呢種技術本質上就容納數據入便存有嘅隨機性,一般認為係重要一步,令到人工智能界朝住「成功教人工智能系統理解人類語言」前進。

2010 年代,深度學習嘅出現進一步加強咗 AI 嘅能力,人工神經網絡令到人工智能能夠以非規則嘅方式嚟處理語言,當中遞迴神經網絡[e 5]零舍重要,令 AI 有能力處理好似語言呢啲要考慮上下文嘅資訊:本質上,語言呢家嘢就講究次序;同一隻字詞,可以因為之前出現咗嘅字詞而意思出現大改變[註 3],而簡化噉講,遞迴神經網絡最大特徵就係識得「暫時記住」手上嗰件資訊,並且畀呢件「記憶」影響自己點處理跟住落嚟嘅資訊。

分佈假說

[編輯]

除此之外,語義分佈假說[e 6]亦都間接造就咗大語言模型:語義分佈假說呢個諗頭係講語言點樣表達意思嘅;呢個學說講緊要決定一隻字詞嘅語義,可以睇吓佢傾向同邊啲字詞「可互換」[4],用粵語做例子:

「個差人拉咗個賊。」
「個警察拉咗個賊。」

差人警察喺(例如)99% 嘅情況下都可互換,就算將差人換做警察,句嘢嘅合理程度都唔會變。相比之下,差人女警嘅可互換度會明顯低啲,可能得 50%,而差人蘋果嘅可互換度就仲低。根據語義分佈假說,研究者可以畀電腦讀取極之大量——講緊幾億字咁多[註 1] ——嘅合理語句,就達到教電腦學識理解語言背後嘅意思。

準備訓練

[編輯]
pandas 個撈稿

典型嘅大型語言模型程序,包含以下呢啲工序:

  • 引入需要嘅函式庫,例如用 Python 嘅話,通常都會用到 pandas 呢個專處理數據嘅函式庫。
  • 引入需要嘅文本數據,呢啲文本要寫到似口語,即係粵語大語言模型需要用粵文(寫到合乎粵語口語)嘅數據。
  • 事前數據處理
  • 訓練神經網絡,然後
  • 測試神經網絡,睇吓佢係咪滿足到設計者用緊嘅性能標準。

每個工序,Python 都有功能支援。

常見應用

[編輯]
睇埋:知識提取

首先,研究者要知自己訓練個模型係要嚟做咩嘅。

用個簡單例子,想像家吓要分析以下呢段粵文文本:

親愛嘅 Amazon

本人住喺香港,於二月三十號喺你個網站度落咗柯打,買咗一個家樂牌電飯煲。我對件商品嘅質素覺得唔滿意,所以寫封電郵提出投訴。我想講嘅係,個電飯煲係煲到飯,但係我用親煲粥功能煲皮蛋瘦肉粥,啲粥都煲到杰撻撻噉。我想你哋即刻退返錢畀我。

陳卡倫上

大語言模型可以用嚟做以下呢啲分析。呢啲分析常用到,Python 啲函式庫有埋 module 畀人用一兩句陳述式嚟行,而且啲陳述式仲會畀用家指定分析嘅參數

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

等等。

數據搜集

[編輯]
古騰堡計劃個撈稿;佢哋有搜集各種語言嘅文化作品材料,包括(例如)粵語電影對白[5]或者用粵文寫嘅短篇故仔

要整大語言模型,第一步係要畀電腦讀取大量嘅語言數據,而呢啲數據通常係要以文本(而非錄音)形式存在嘅。教大語言模型處理粵語就要輸入大量嘅粵文[註 4],教大語言模型處理日語就要輸入大量嘅日文... 如此類推。數據嘅質素好唔好同數量夠唔夠多,會顯著影響模型嘅效能。一般嚟講,大語言模型需要極大量嘅文字數據,講緊要有閒閒哋幾兆字節咁多嘅數據,先至可以捕捉到人類語言當中嘅多元化結構[註 5]

文本數據嘅常見來源包括:

呀噉。Python 仲有功能,可以畀用家直接引入嚟自古騰堡計劃等大型語言資料庫嘅數據,而且完全免費,一個人只要有電腦識用 Python 編程就用得。例如係以下嘅 Python 陳述式[6]

from nltk.corpus import gutenberg

句嘢係「 NLTK.corpus 嗰度引入 gutenberg 呢嚿資源」噉嘅意思。

事前處理

[編輯]

研究者郁手做分析前,多數都要清理吓啲數據先。呢個過程就係所謂嘅事前處理[e 16]。常見嘅事前處理工序包括:

  • 常規化:要清走 HTML 或者其他標記語言嘅標籤;而且如果文本係用羅馬字寫嘅,要將啲字符冚唪唥變晒做細階
  • 記號化[e 17]:將語句揼散做字詞等細啲嘅單位,例如
    • 入:我喺度學大型語言模型嘅嘢。,可能會變成
    • 出:['我', '喺度', '學', '大型', '語言', '模型', '嘅', '嘢', '。']
  • 攞走啲停用詞[e 18]:攞走啲一般認為係「冇重要意思」嘅字詞;喺廿一世紀初嘅英文處理當中,the is at 等通常都當係停用詞。好似係 Python 嘅自然語言工具箱[e 19]就有一張停用詞表,列出晒邊啲字詞係停用詞要攞走。
  • 詞形還原[e 20]詞幹提取[e 21]:如果手上嗰隻語言有顯著嘅詞形變化現象,就會用到詞形還原同詞幹提取;詞形還原做嘅嘢係將一隻字詞嘅唔同款擺埋一齊(例如英文 run ran runs 都係 run 嘅變體)而詞幹提取就係「提取」呢啲唔同形態共有嘅詞幹
  • 詞性標注[e 22]:同語句入便每隻字詞標返佢係咩詞性;想像家陣有呢句粵文語句[7]
  • 執吓啲數據,將數據以表等易睇嘅形式呈現出嚟。

呀噉。

神經網絡

[編輯]
(英文) 2021 年典型變壓器嘅架構

攞到語言數據,做咗清理,就要郁手訓練人工神經網絡。大語言模型同一般嘅神經網絡一樣,都會用到監督式學習非監督式學習嘅做法。

神經網絡係大語言模型嘅核心,尤其係變壓器[e 23]嘅架構。用合乎直覺嘅方法講,變壓器嘅諗頭係攞住手上嘅語句,再建立一層「有上下文嘅意思表示」,然後再建立下一層「有上下文嘅意思表示」... 直至得到語句嘅真正意思為止。每上一層,個模型都會有個神經網絡由前一層嘅資訊嗰度,計出[註 6]下一層嘅意思表示要係咩樣。變壓器源於 2017 年,徹底改變咗自然語言處理呢個領域,而且仲係 GPT 等大語言模型嘅支柱。

關注機制

[編輯]
内文:關注機制

關注機制[e 24]架構係變壓器嘅重點創新。關注機制允許模型評估語句唔同字詞嘅重要程度,由第 (k-1) 層嘅字詞嗰度判斷要點樣理解第 k 層嘅字詞。舉個實質例子,想像以下呢句粵文語句:

「阿明冇去公園跑步,因為佢今日好攰。」

當中一般會理解為係指緊阿明。一個變壓器當中嘅意思表示,好可能會似以下噉:

第 6 層:「阿明冇去公園跑步,因為佢今日好攰。」
第 5 層:「阿明冇去公園跑步,因為佢今日好攰。」

當中第 6 層個,對阿明嘅權重係(例如)0.97,對公園嘅權重係(例如)0.35,而對嘅權重係(例如)0.1。簡單講,即係話個神經網絡由學習過程當中,學識對每隻字詞嚟講,句嘢入便邊隻字詞「值得關注」(權重反映嘅嘢)[8][9] ——呢點對於理解語言嚟講好重要:喺自然語言當中,同一句嘢入便嘅字詞會互相影響,例如喺英文入便,如果主語第三人稱單數佢掕住嗰隻動詞就要加 /s/ 等嘅標記;有咗變壓器,就算一句嘢入便有兩隻彼此相距遠嘅字詞互相影響——話阿明好攰嗰句嘢,阿明隔咗九隻字符——個模型都可以捕捉到佢哋之間嘅關係。

除此之外,變壓器仲包含咗多頭關注[e 25]以至編碼與解碼架構[e 26]等嘅重要技術。簡單講,多頭關注功能令變壓器能夠處理語言實有嘅複雜性——能夠例如捕捉到多種唔同嘅字詞間關係。而編碼與解碼架構就會將輸入文字轉換成中間表示[e 27],而解碼器會將中間表示轉換成有用嘅輸出。

微調

[編輯]

喺實際應用上,用大語言模型嘅人好多時都會用「現成」嘅大語言模型,當中 Python 仲允許用家直接引入 import 啲人預先訓練咗[e 28]嘅變壓器。不過事實表明,攞現成嘅大語言模型嚟用,往往有必要做些少微調[e 29]

唔同類型嘅文本,使用語言嘅風格都梗會有啲唔同:舉個簡單例子,用粵文科學嘅文本,同粵文嘅新聞報導比起嚟,好可能會比較大機會提到某啲特定嘅詞彙,例如係科學方法實驗證據...等嘅詞彙;假如有一個現成嘅大語言模型,佢已經識得預測「下一隻字詞係乜」,但係用家睇返紀錄,發覺個模型啲訓練用文本咩都有——科普文章又有、新聞報導又有、搞笑故事又有... 噉佢嘅預測能力就「唔夠專化」;喺呢個時候,用家就有可能想做一啲微調——比較簡單嘅做法,可以係搵用粵文寫科學嘅文章(例如粵文維基百科大把呢啲文章)返嚟,用呢啲文章做數據再訓練吓個模型,令到個模型嘅參數再作少少變化[註 7]

順利嘅話,個模型做咗微調就變到「更加專化」——更擅長預測佢專門處理嗰種文本。

提示工程

[編輯]
睇埋:提示工程

提示工程[e 30]講緊嘅係要改良畀落生成式 AI 度嘅 input(提示),可以用嚟令到大型語言模型(都可以係生成式人工智能嘅一種)產生出更高質嘅 output。要將提示優化,可以係寫 input 嗰陣試吓用唔同嘅措辭、長度或者語境——大型語言模型對措辭嘅細微變化好敏感,如果叫個模型「用專家級嘅知識嚟行事」可以大大改變出到嘅結果。此外,做提示工程亦有可能要考慮點樣將指示「講得清楚啲」,反覆測試提示有助達到更準確嘅輸出,同時仲要避免寫嘢寫得太過含糊不清[10][11]

常見問題

[編輯]

訓練大型語言模型嘅過程,成日會遇到以下呢啲問題:

評估指標

[編輯]

以下呢啲指標都可以用嚟評估大語言模型:

等等。

平台

[編輯]

要實際郁手做 LLM 相關工作,會用到以下呢啲平台:

睇埋

[編輯]

參考

[編輯]

註釋:

  1. 1.0 1.1 LLM 因此畀唔少人詬病:好多語言因為語言資源少而唔夠材料用,整唔到 LLM;例如係小眾語言,或者好似粵語噉有雙層語言情況嘅語言。
  2. 可以睇睇自動完成嘅概念。
  3. 可以睇睇句法語境等嘅概念。
  4. 廿一世紀初嘅中文書面語,原則上係建基於官話嘅白話文,同粵文喺文法同用字上有異。
  5. 有關一隻語言包含幾咁大量嘅資訊,可以睇內隱知識語言習得嘅嘢。
  6. 有關字詞意思可以點樣用數值表示,可以睇睇詞嵌入嘅概念。
  7. 大語言模型嘅參數數量龐大,要重新再更新過晒咁多參數會好嘥時間。所以用家好多時會「鎖住」部份參數,淨係容許「冇鎖」嗰啲參數喺微調過程當中變化。

文中用咗嘅詞彙嘅英文版:

  1. markup languages
  2. deep learning
  3. neural network
  4. rule-based
  5. recurrent neural network
  6. distributional hypothesis
  7. classification
  8. named entity recognition
  9. question answering
  10. automatic summarization
  11. ML
  12. text generation
  13. sentiment analysis
  14. text corpora
  15. Project Gutenberg
  16. preprocessing
  17. tokenization
  18. stop word
  19. NLTK
  20. lemmatization
  21. stemming
  22. POS tagging
  23. transformer
  24. attention mechanism
  25. multi-head attention
  26. encoder-decoder architecture
  27. intermediate representation
  28. pretrained
  29. fine-tuning
  30. prompt engineering

文中引用咗嘅文獻網頁

  1. Brown, Tom B.; Mann, Benjamin; Ryder, Nick; Subbiah, Melanie; Kaplan, Jared; Dhariwal, Prafulla; Neelakantan, Arvind; Shyam, Pranav; Sastry, Girish; Askell, Amanda; Agarwal, Sandhini; Herbert-Voss, Ariel; Krueger, Gretchen; Henighan, Tom; Child, Rewon; Ramesh, Aditya; Ziegler, Daniel M.; Wu, Jeffrey; Winter, Clemens; Hesse, Christopher; Chen, Mark; Sigler, Eric; Litwin, Mateusz; Gray, Scott; Chess, Benjamin; Clark, Jack; Berner, Christopher; McCandlish, Sam; Radford, Alec; Sutskever, Ilya; Amodei, Dario (Dec 2020). Larochelle, H.; Ranzato, M.; Hadsell, R.; Balcan, M.F.; Lin, H. (編). "Language Models are Few-Shot Learners" (PDF). Advances in Neural Information Processing Systems. Curran Associates, Inc. 33: 1877–1901.
  2. Manning, Christopher D. (2022). "Human Language Understanding & Reasoning". Daedalus. 151 (2): 127–138. doi:10.1162/daed_a_01905. S2CID 248377870.
  3. "Artificial Neural Networks as Models of Neural Information Processing | Frontiers Research Topic". Retrieved 2018-02-20.
  4. Harris, Z. (1954). "Distributional structure". Word. 10 (23): 146-162.
  5. Project Gutenberg Cantonese Movie- Subtitles (NTSC-Region 3)
  6. 2. Accessing Text Corpora and Lexical Resources.
  7. NLP Guide: Identifying Part of Speech Tags using Conditional Random Fields. Medium.
  8. Introduction to Large Language Models, Google Developers,佢呢度講咗:"Transformers rely heavily on a concept called self-attention. The self part of self-attention refers to the "egocentric" focus of each token in a corpus. Effectively, on behalf of each token of input, self-attention asks, "How much does every other token of input matter to me?""
  9. How Transformers Work. Medium.
  10. Liu, P., Yuan, W., Fu, J., Jiang, Z., Hayashi, H., & Neubig, G. (2023). Pre-train, prompt, and predict: A systematic survey of prompting methods in natural language processing. ACM Computing Surveys, 55(9), 1-35.
  11. Reynolds, L., & McDonell, K. (2021, May). Prompt programming for large language models: Beyond the few-shot paradigm. In Extended abstracts of the 2021 CHI conference on human factors in computing systems (pp. 1-7).

文獻

[編輯]

有意攻讀人工智能相關學科嘅學生,可以去摷以下嘅文獻嚟睇:

外拎

[編輯]