語言大模型的進化軌跡
ChatGPT 的發布是語言大模型(LLM)發展史的轉折點,它讓人們意識到 LLM 的潛力,并引發了 “AI 競賽”,世界上主要人工智能實驗室和初創公司都參與其中。在這之后,基于 LLM 的聊天機器人層出不窮。
1語言模型
簡單來說,語言模型能夠以某種方式生成文本。它的應用十分廣泛,例如,可以用語言模型進行情感分析、標記有害內容、回答問題、概述文檔等等。但理論上,語言模型的潛力遠超以上常見任務。
想象你有一個完備的語言模型,可生成任意類型的文本,并且人們還無法辨別這些內容是否由計算機生成,那么我們就可以使其完成很多事,例如生成具有代表性的內容,如電子郵件、新聞稿、書籍和電影劇本等。再進一步來看,還可以用其生成計算機程序,甚至構建整個軟件。只要愿意,我們還可以讓它生成科學論文。如果語言模型真正 “完備”,那么它們生成的論文將能夠以假亂真,與真實論文沒有區別,這意味著必須對語言模型展開實質性研究!
當然,就目前而言,完備的語言模型還無法實現,不過也展示出了這些系統的潛力。語言模型不僅僅能 “預測文本”,它們的潛力可能遠超想象。
現在我們回顧一下語言模型的發展歷程,從最初的樸素語言模型到目前基于 Transformer 的 LLM(語言大模型)。
2
樸素語言模型
語言模型是機器學習模型,因此它們會學習如何生成文本。教授它們的方法(即訓練階段)是提供一個大規模文本語料庫,它們將從中學習如何模仿生成這些文本的過程。
也許這聽起來有些抽象,但創建一個樸素語言模型實際上非常簡單。你可以將文本語料庫分成一定大小的字符串塊,并測量它們的頻率。下面是我使用大小為 2 的字符串得到的結果:
圖源:《機器學習導論》
這些字符串塊被稱為 n-gram(其中 n 表示字符串的大小,因此此處 n=2)。通過這些 n-gram,你可以像玩多米諾骨牌一樣生成文本。從一個初始的 n-gram 開始,例如 “th”,然后根據測量的頻率隨機選擇一個以初始 n-gram 結尾的 n-gram 。在這個例子中,如果選擇 “hi”,就會形成 “th” + “hi” = “thi”。然后再繼續添加以 “i” 開頭的 n-gram,以此類推,生成整段文本。不過正如你所想,這些 n-gram 模型并不能生成足夠連貫的文本。以下是我繼續執行這一過程時得到的結果:
說實話,這一結果并不太理想!但也說得通,因為該模型的記憶能力很有限,只通過前一個字符來預測下一個字符。如果我們使用 n=4 的字符串,結果會稍微好一些:
“complaine building thing Lakers inter blous of try sure camp Fican chips always and to New Semested and the to have being severy undiscussion to can you better is early shoot on”
現在出現了一些拼寫正確的單詞,但結果仍不夠理想!理論上,進一步增加 n 的值,輸出結果會得到改善,但在實踐中,我們無法顯著增加 n 值,因為這需要一個龐大的數據集來訓練模型。最后,我們可以嘗試將單詞而不是字符作為基本單位(在自然語言處理術語中稱為 “詞元(token)”)。這會改善輸出結果,但因為 n<6,生成的文本仍然缺乏連貫性。
這些樸素語言模型的記憶能力始終有限,因此無法生成超過一定長度的連貫文本。盡管如此,它們仍具備一定用途。幾年前,樸素語言模型被廣泛用于文本分類和語音識別,且如今仍被用于語言識別等任務。然而,對于更高級的文本理解和文本生成任務來說,樸素語言模型就捉襟見肘了。因此需要神經網絡。
3
基于神經網絡的語言模型
現代語言模型基于(人工)神經網絡。神經網絡是受人腦啟發開發出的計算機,能夠通過任務示例學習如何執行任務。這種機器學習形式也被稱為深度學習,因為其中的網絡由多個計算層組成(因此被稱為 “深度” 網絡)。在神經網絡中,通過遍歷任務示例并迭代修改網絡參數以優化任務目標,從而實現學習。你可以將這些參數想象成一組旋鈕(knob),通過左右旋動以改進目標,但區別是計算機為你進行改進,并且知道如何同時正確地朝著改進方向進行調整(得益于著名的反向傳播算法)。因此,網絡會遍歷任務示例(通常以幾百個示例為一批),并在這一過程中優化目標。以下是一個正在被優化的目標示例(稱為成本函數,數值越小越好):
成本函數隨訓練迭代次數的變化。圖源:《機器學習導論》
隨著模型的訓練,成本函數值會逐漸下降,意味著模型在任務處理上變得更加優秀。
在該案例中,我們想要生成文本。目前,標準的方法是訓練一個模型,通過前面的單詞預測后面的單詞。由于下一個單詞有多種可能性,模型會學習為每個可能的單詞關聯一個概率。以下是對 “the cat sat on the” 之后可能出現單詞的概率分布可視化圖像:
改編自《機器學習導論》
一旦擁有這樣的預測模型,就可以從預測概率中抽樣來生成下一個單詞,然后將該單詞重新輸入到網絡,再抽樣一個新的單詞,以此類推,從而生成文本。這一生成過程被稱為自回歸,因為網絡利用自己的預測結果來生成新的預測。雖然有人對此提出了異議,認為這并非最佳方法,但目前而言,這就是最實際的操作方式,且效果也出奇地好!
曾經用于建模語言的第一類神經網絡是 RNN(循環神經網絡),尤其是 LSTM(長短期記憶網絡)架構。RNN 就像一個逐個閱讀單詞的小型機器,在這一過程中,它會更新思維狀態(mental state)。這種思維狀態如同記憶,使它們在生成文本時能大概記住一段時間的信息。相比 n-gram 模型,RNN 模型能夠獲得更為優越的性能。
RNN 創建之初,神經對話模型(Neural Conversational Model)給我留下了深刻印象。該模型是 Google 于 2015 年基于電影字幕訓練的一個特殊 LSTM 模型,當時這個模型已經算得上是 LLM 了(也可能是首個 LLM):擁有 3 億參數,并在約 10 億詞的數據上進行訓練。由于電影字幕是對話形式,因此可直接將該模型用作聊天機器人。以下是不同人類輸入對應的回答示例:
人類:你叫什么名字?
機器:我叫朱莉婭。
人類:你是什么時候出生的?
機器:7 月 20 日。
人類:我的名字是大衛。我的名字是什么?
機器:大衛。
人類:天行者是誰?
機器:他是一個英雄。
人類:天空是什么顏色?
機器:藍色。
人類:血液是什么顏色?
機器:和黑眼圈的顏色相同。
如你所見,該模型能夠閑聊,同時也對世界有一定了解,這些知識完全是通過學習如何預測文本獲得的!我記得自己曾對這一事實很感興趣:學習預測文本迫使你理解世界(但并不意味著這個過程很容易)。然而,該模型也有一些明顯的短板:它經常出錯,并且與類似基于 LSTM 的模型一樣,無法生成長篇連貫的文本。理論上,循環神經網絡可以長時間記憶事物,但在實踐中,它們卻往往很快就忘記了:經過幾十到一百個詞之后,它們就會開始偏離主題,不再連貫。
2017 年,人們針對短期記憶問題提出一種解決方案 ——Transformer。Transformer 是一種基于注意力機制的新型神經網絡架構(本質上是一種選擇操作),下圖來自介紹 Transformer 的論文,用以說明其在翻譯任務中的工作原理:
Transformer 架構。來源:https://arxiv.org/abs/1706.03762
Transformer 在各個方面都可圈可點,但最值得一提的是,該架構在文本建模方面表現非常出色,并且很適合在 GPU 上運行,從而處理(和學習)大量數據。正是有了 Transformer 這種架構,才使得現代 LLM 得以興起(或至少起到了很強的促進作用)。
4
現代語言大模型
Transformer 的發明標志著現代 LLM 時代的開始。自 2018 年以來,AI 實驗室開始訓練規模越來越大的模型。令眾人驚訝的是,這些模型的質量也在不斷提高!下圖對這些模型進行了可視化,我們將重點介紹其中值得關注的模型:
LLM 進化樹。來源:https://github.com/Mooler0410/LLMsPracticalGuide
這些語言模型主要分為三類。一是 “僅編碼器(encoder-only)” 組(上圖中的粉色部分),該類語言模型擅長文本理解,因為它們允許信息在文本的兩個方向上流動。二是 “僅解碼器(decoder-only)” 組(上圖中的藍色部分),該類語言模型擅長文本生成,因為信息只能從文本的左側向右側流動,以自回歸方式有效生成新詞匯。三是 “編碼器 - 解碼器(encoder-decoder)” 組(上圖中的綠色部分),該類語言模型對上述兩種模型進行了結合,用于完成需要理解輸入并生成輸出的任務,例如翻譯。
這一切都主要始于文本理解類模型。最初是使用 RNN 的 ELMo,之后是谷歌著名的 BERT 模型及其派生模型(如 RoBERTa),它們都基于 Transformer。這些模型通常具有幾億個參數(相當于約 1GB 的計算機內存),在大約 10GB 到 100GB 的文本上進行訓練(通常為幾十億個單詞),并且可以在現代筆記本電腦上以約 0.1 秒的速度處理一段文本。這些模型極大地提升了文本理解任務的性能,如文本分類、實體檢測和問題回答等。這已然是 NLP(自然語言處理)領域的一場革命,不過才剛剛拉開序幕……
在文本理解類語言模型發展的同時,OpenAI 開始基于 Transformer 創建文本生成類語言模型。首先是 2018 年的 GPT-1,有 1 億個參數;然后是 2019 年的 GPT-2,擁有高達 15 億個參數,并在 40GB 的文本上進行了訓練。至少對我來說,GPT-2 的創建是一個至關重要的時刻。以下是 GPT-2 可以生成的文本示例,從一個由人類撰寫的段落開始:
來源:https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
生成的英語文本質量很不錯,而且具有連貫性。例如,科學家的名字沒有改變,而這在基于 RNN 的模型中是個經典問題。由于 GPT-2 在所生成文本的質量上取得了巨大突破,為避免濫用,OpenAI 最初決定不向公眾發布??梢哉f GPT-2 標志著 LLM 正朝著正確的方向發展。需要注意的是:使用這類語言模型需要先提供一個起始文本,這個起始文本被稱為提示(prompt)。
一年后(2020 年),OpenAI 創建了 GPT-3。GPT-3 是一個具有 1750 億個參數的模型(需要 700GB 的計算機內存來存儲模型?。?,該模型不僅規模顯著擴大,文本生成質量也有重大改進。除了性能的提升外,GPT-3 還讓人們對未來如何使用 LLM 大開眼界。
首先,GPT-3 能夠編寫代碼。例如,你可以使用 GPT-3 來生成(非常)簡單的網站,只需在提示中描述網站的外觀即可。以下是一個示例,讓 GPT-3 使用 HTML 創建一個按鈕:
這些基本的編碼能力在當時并不十分實用,但它們的出現意味著軟件開發在未來可能會發生根本性轉變。
GPT-3 另一令人矚目的能力是能夠進行上下文學習,它可以通過提示中所展示的示例來學習如何執行任務。這意味著你可以通過編寫提示來定制 LLM,而無需更改它們的權重。這一能力開辟了一種全新的、完全基于提示的自然語言處理方式,如今十分受歡迎。
總而言之,GPT-3 展示了 “提示” 作為一種新方式的潛力,可以讓機器通過自然語言按照我們的意愿執行任務。
注意:GPT-3 比 GPT-2 要大得多。自 2018 年以來,模型的規模急劇增加。以下是一些值得關注的 LLM 及其規模:
在兩年時間里,模型參數的數量增加了 1000 倍,目前最大的模型(如 GPT-4)已接近 1 萬億個參數,這是因為模型規模的增加與性能的改善密切相關,并且目前還未達到性能瓶頸。這些模型規模十分龐大,與人腦相比,人腦約有 1000 億個神經元,每個神經元平均與其他 1000 個神經元相連接,總共約有 100 萬億個連接。從某種意義上說,最大的 LLM 仍然比人腦小 100 倍。當然,這只是一個非常寬泛的比較,因為人腦和當前 LLM 使用的架構和學習方法都截然不同。
另一個有趣的指標是這些模型在訓練階段所 “閱讀(read)” 的單詞數量。
如你所見,數量十分龐大。這些模型在訓練過程中會接觸超 1000 億個單詞,是一個人在一生中聽到或閱讀單詞數量的 100 倍以上!這顯示出神經網絡與人腦的不同之處:神經網絡的學習速度比人類慢得多,但可以獲得比人類接觸的多得多的數據。
需要注意的是,LLM 在訓練過程中所接觸到的單詞數量并未像參數數量那樣迅速增長(從 GPT-1 到 GPT-3 只增長了 3 倍)。這是因為優先考慮模型規模,不過結果證明這是一個小小的失誤。最新的模型并沒有比 GPT-3 大很多,但通過處理更多單詞來進行訓練。
這種對數據的渴求導致了一個問題,即可用文本的總量存在硬性限制,約為數萬億個單詞,而模型正在接近這一限制。雖然仍有可能循環遍歷所有文本,但這會導致模型性能的回報遞減??偠灾?,可得出結論:網絡在訓練階段處理的有效限制是幾十萬億個單詞,比 GPT-4 的數量約多出 10 倍。
另一個問題是,通過用更多的數據訓練更大的模型,計算成本也在增加。以下是訓練上述模型的預估計算成本:
為顯著超越當前模型的性能,下一代模型需要耗費數億美元的計算資源。雖然考慮到這些模型能帶來的好處,這一成本是合理的,但如此巨大的花費仍然是一個問題。
模型的擴展變得越來越困難。幸運的是,擴大規模并不是改進 LLM 的唯一途徑。2022 年末,一項創新開啟了另一場革命,這次的影響遠遠超出了 NLP 領域。
5
指令調優和聊天機器人 LLM
GPT-3 揭示了提示的潛力,但撰寫提示并不容易。事實上,傳統語言模型經訓練可以模仿其在網絡上看到的內容。因此,要想創建一個好的提示,你必須清楚網絡上哪種起始文本可能會引導模型生成你所期望的結果。這是一種奇怪的游戲,也是一種找到正確表述的藝術,你需要改變措辭,假裝自己是專家,展示如何逐步思考的示例等等。這一過程叫做提示工程,這使得使用這些 LLM 變得困難。
為解決這個問題,研究人員一直在探索如何修改基礎 LLM,以讓其更好地遵循人類指令?,F主要有兩種方法:一是使用人類編寫的指令 - 回答對(instruction-answer pairs),并在此數據集上對基礎 LLM 進行微調(即繼續訓練)。二是讓 LLM 生成幾個可能的答案,然后由人類對答案評分,并使用強化學習在此數據集上對 LLM 微調。這就是著名的 RLHF(人類反饋的強化學習)的過程。此外,我們還可以將兩種方法相結合,OpenAI 在 InstructGPT 和 ChatGPT 中就對這兩者進行了結合。
InstructGPT 和 ChatGPT 的指令調整步驟。來源:https://openai.com/blog/chatgpt(修改自 https://arxiv.org/abs/2203.02155)
將這兩種技術結合在一起可以得到一個經過指令調整的 LLM。調整后的 LLM 比基礎模型更擅長遵循人類指令,使用起來更加容易。
經過指令調整的 LLM 已經非常出色了,但還有最后一步才能將這些 LLM 真正轉化為每個人都可以使用的東西 —— 聊天機器人。OpenAI 在 2022 年 12 月發布了 ChatGPT,一個基于 GPT-3.5 的聊天機器人。它的創建方式與 InstructGPT 相同,但這次使用的是整個對話而不僅僅是指令 - 回答對。
ChatGPT 發布后,基于 LLM 的新型聊天機器人開始層出不窮。OpenAI 使用 GPT-4 來代替 GPT-3.5,對 ChatGPT 進行了改進,Anthropic 發布了 Claude,Google 推出 Bard,Meta 也研發出了 LLaMA,還有幾個開源 LLM 正在發布過程中。這是一次真正的模型大爆炸,將會帶來許多令人興奮的應用,NuMind 也會為此出一份力。
ChatGPT 發布兩個月后,迅速擁有了上億用戶,成為有史以來用戶增長最快的產品。人們用 ChatGPT 來根據要點編寫電子郵件、重新組織文本、總結文本、編寫代碼,或學習東西(在此之前,搜索引擎一直壟斷著這項任務)。ChatGPT 的發布是 LLM 發展史的轉折點,它讓人們意識到了 LLM 的潛力,引發了 “AI 競賽”,世界上主要人工智能實驗室和初創公司都參與其中。
值得注意的是,LLM 的突然普及也引發了人們的擔憂。人們擔心 LLM 被有心人利用,做一些有害的事情,所以創建開放式 LLM 聊天機器人必須確保它們的 “安全” 性(或 “與人類價值觀保持一致”),也就是說它們不能幫助制造炸彈等。目前有一些方法可以繞過聊天機器人的安全防御措施,但隨著時間推移,這些安全措施會逐漸完善,想繞過它們將變得十分困難。
6
語言大模型的未來
近年來,LLM 取得了很大進步,人們對它的熱情達到了空前高度,在這一領域投入了大量精力。那么,LLM 的未來將如何發展?雖然預測未來很難,但我們也有一些看法:
模型大小和訓練規模將繼續擴大。擴展在過去取得了非常好的效果,且仍有提升空間,但問題是,模型的訓練成本急劇增長,逐漸讓人望而卻步(>1 億美元)。更好的 GPU 和新的專用硬件有助于擴展模型規模,但它們的開發和生產需要時間。此外,最大的模型已經迭代了所有書籍和整個網絡,這意味著我們正在達到可用訓練數據的極限(即 “詞元危機”)。
因此,可以肯定的是,在未來幾年內,參數數量不會像過去那樣出現爆發式增長。最大的模型今年應該會穩定在 1 萬億參數以下規模,然后以每年 50% 的速度增長。
LLM 將超越純語言模型,將圖像和視頻納入訓練數據,成為多模態模型。從圖像和視頻中學習可能有助于模型更好地理解世界。GPT-4 就是在圖像和文本上進行訓練的,且取得了少許性能提升。利用視頻數據訓練 LLM 可能給這一領域帶來質的改變,但這需要大量計算。預計還需兩年多的時間才能真正實現利用視頻訓練 “語言” 大模型。
擴大規模、實現語言模型向多模態模型的轉變需要大量算力。為緩解這一問題,我們可以采用更好的神經架構和訓練程序,這些架構和訓練程序要么計算強度較低,要么可以用更少的數據進行學習(人類大腦證明這是可能的)。然而更可能的是類似于 RNN 的內存會卷土重來,因為這種內存運行時的效率非常高(例如最近的 RWKV 架構)。
此外,還可能有一些更大的變化,例如 LLM 不以自回歸的方式生成,而是以自上而下的方式生成(例如在生成單詞之前做出(隨機)決定),這種做法可能更合乎邏輯(這就是神經網絡目前生成圖像的方式)。到底何時會開發出這樣的新架構 / 方法還很難說,但我們預計應該就在未來幾年,一旦開發出來,LLM 模型的性能將得到大幅提升。
另一個改進方向是繼續進行指令調優,讓更多人參與到 “教育” LLM(即與 AI 對齊)的過程中。這可以由私人 AI 實驗室來實現,也可以是一個更像維基百科的眾包項目,以改進和對齊開放模型的 LLM 能力。在這個問題上,我們還是希望偏離傳統的 RLHF,而是讓人們與模型對話來進行教導,就像我們對待孩子一樣。我不確定這種項目的具體時間線,但我已經思考了一段時間,非常希望看到它的實現。
上文我們只討論了改進實際模型的方法,但實際上有一些方法可以在不改變模型的情況下改進 LLM。方法之一就是為 LLM 提供工具。這種工具可以是用于查找準確信息的搜索引擎,或者是用于進行基本數學計算的計算器。此外,它還可以是一個結合了推理引擎(符號人工智能的經典組件)的知識庫,如 Wolfram Alpha,用于查找事實、進行邏輯推理或其他神經網絡不擅長的計算。當然,這個工具還可以是一個用于編寫和運行代碼的完整編程環境。LLM 可以通過生成觸發 API 調用的特殊詞元(單詞)來使用這些工具,然后將 API 的輸出插入到生成的文本中。
LLM 使用工具示例。來源:https://arxiv.org/abs/2302.04761
上述趨勢實際上已經開始了(例如,ChatGPT 插件、LangChain 庫和 Toolformer 論文),我相信這些工具將成為 LLM 的核心。
改進 LLM 的另一個方法是以更智能的方式使用它們,讓它們更好地完成任務。這可以通過巧妙的提示或更高級的程序來實現。比如說我們可以讓 LLM 按步驟進行思考(即思想鏈提示( chain-of-thoughts prompting)),并提高 LLM 在邏輯任務上的表現。以下是提示 LLM 按步驟思考的示例:
思維鏈提示示例。來源:https://arxiv.org/abs/2201.11903
同樣地,我們可以要求 LLM 反思、批判自己的輸出,并對其進行迭代修改。通過迭代,我們可以顯著提高 LLM 性能,尤其是生成代碼方面的性能。我們還可以更進一步,創建完全自主的智能體,這些智能體可以管理任務列表并迭代任務,直到達到主要目標(請參考 AutoGPT 和 BabyAGI)。目前,這些自動化智能體的運行效果并不理想,但它們的效果會逐步提升,很難說這些自動化智能體會發展到何種程度,對 LLM 產生何種影響。
由于 LLM 可以通過這些程序(思想鏈、迭代批評等)改進答案,因此,我們可以使用這些程序創建指令 - 答案對,然后在指令 - 答案對上按順序對 LLM 微調以提高其性能。這種自我完善是可能的(參見 https://arxiv.org/abs/2210.11610),我相信它具有很大的潛力。例如,我們可以想象模型為了變得更加自洽而與自身進行討論,這是一種自我反思過程??赡軙M一步提升 LLM 的表現。
LLM 可能還有其他改進方向,總的來說,我們無法確定 LLM 的未來,但顯然它們將繼續發展下去。理解和生成文本的能力使 LLM 成為了一項基本技術。即使在目前的發展情況下,LLM 也將解鎖大量應用程序,日常工作中的數字助理就是一個很好的例子,更瘋狂的是,LLM 甚至可能引導我們創造某種超級智能。
評論