帶你簡單瞭解Chatgpt背後的秘密:大語言模型所需要條件(資料演算法算力)以及其當前階段的缺點侷限性
1.什麼是語言模型?
大家或多或少都聽過 ChatGPT 是一個 LLMs,那 LLMs 是什麼?LLMs 全稱是 Large Language Models,中文是大語言模型。那麼什麼是語言模型?
語言模型簡單說來,就是對人類的語言建立數學模型,注意,這裡的關鍵是數學模型,語言模型是一個由數學公式構建的模型,並不是什麼邏輯框架。這個認知非常重要。最早提出語言模型的概念的是賈里尼克博士。他是世界著名的語音識別和自然語言處理的專家,他在 IBM 實驗室工作期間,提出了基於統計的語音識別的框架,這個框架結構對語音和語言處理有著深遠的影響,它從根本上使得語音識別有實用的可能。在賈里尼克以前,科學家們把語音識別問題當作人工智慧問題和模式匹配問題。而賈里尼克把它當成通訊問題。
為何是通訊問題?為何轉換成通訊問題後,就能實現語音識別?根據夏農確定的現代通訊原理,所謂的通訊,也被稱為通道的編碼和解碼,資訊源先產生原始資訊,然後接收方還原一個和原始資訊最接近的資訊。比如,你打電話的時候,問對方一句「你吃了晚飯了嗎」,在傳輸前,通訊系統會對這句話進行編碼,編成類似「100111101100000…」,但是傳輸過程中,一定會有訊號損失,接收方收到的編碼可能是「1001111011000…」,此時我們就沒法解碼回原來的句子了。
- 那如何解決這個問題?
我們可以把與接收到的編碼「1001111011000…」類似的句子都羅列出來,可能的情況是:
- 吃了晚飯了嗎
- 你吃了飯了嗎
- 你吃了晚飯了嗎
- 你吃了晚飯了
然後通訊系統會計算出哪一種的可能性最大,最後把它選出來。只要噪音不大,並且傳輸資訊有冗餘,那我們就能復原出原來的資訊。賈里尼克博士認為讓計算機理解人類的語言,不是像教人那樣教它語法,而是最好能夠讓計算機計算出哪一種可能的語句機率最大。這種計算自然語言每個句子的機率的數學模型,就是語言模型。
2.如何計算機率?
- 第一階段:最簡單的方法,當然就是用統計學的方法去計算了,簡單說來,就是靠輸入的上下文進行統計,計算出後續詞語的機率,比如「你吃了晚飯了嗎」,「你吃了」後面按照機率,名詞如「飯」或「晚飯」等機率更高,而不太可能是動詞,如「睡」「睡覺」。這是語言模型的第一階段,模型也被稱為是統計語言模型(Statistical Language Model,SLM),其基本思想是基於馬爾可夫假設建立詞語測模型,根據最近的上下文預測下一個詞。後續語言模型的發展又迭代了三個版本。
- 第二階段是神經網路語言模型(Neural Language Model,NLM),是一個用神經網路來訓練模型,學習單詞之間的關聯性和機率關係。它能夠利用大量的資料進行深度學習,從而捕捉到詞彙之間更加複雜的關係。NLM 模型採用的是分層的結構,把輸入的文字資料空間投射到高維的語義空間中並進行學習。透過不斷地更新神經網路模型引數,NLM 的神經網路逐漸學會了文字資料的語義並能夠生成連貫自然、語義準確的文字。
與前面提到的 SLM 相比,由於深度神經網路的學習能力更強,NLM 在學習語言模型時具有更好的泛化能力和適應性。比如能生成更長的文字等。但 NLM 相對來說也比較依賴更大的資料集,並且需要花很多人力在資料標註上。
- 第三階段是預訓練語言模型(Pre-trained Language Model,PLM),是一種使用大量文字資料來訓練的自然語言處理模型。相對 NLM 來說,PLM 使用無監督學習方法,因此不需要先標註資料或註明文字型別等資訊。各位可能聽過的 Transformer 架構就是一種預訓練語言模型。
- 第四階段是大預言模型(Large Language Model),你可以將現在的 LLM 理解為一個訓練資料特別大的 PLM,比如 GPT-2 只有 1.5B 引數,GPT-3 則到了驚人 175B,儘管 LLM 只是擴充了模型的大小,但這些大尺寸的預訓練語言模型表現出了與較小的預訓練語言模型不同的行為,並且在解決一些複雜任務上展現了驚人的能力(俗稱湧現能力,注意這個湧現能力目前還存在爭議),所以學術界為這些大型預訓練語言模型命名為大語言模型 LLM。
上面這四個階段可能比較難理解,你可以簡單理解:
- 語言模型本質上都是在計算自然語言每個句子的機率的數學模型。當你輸入一個問題給 AI 時,AI 就是用機率算出它的回答。
- 另外,當今的語言模型,並不是一個問題對一個答案,實際上是一個問題,多個答案,然後根據答案的機率進行排序,最後返回一個最可能的答案。
3. 開發大語言模型需要什麼?
瞭解完大語言模型的原理之後,你可能會好奇 TA 是如何開發的。開發大語言模型的關鍵是什麼。最近看到不少文章為了流量,甚至連 5G 通訊都說成了是開發大語言模型的關鍵,其實從前面的原理介紹,不難看出,大語言模型的其中一個關鍵點是資料。
關鍵一:資料
訓練資料主要是所謂的語料庫。今天的很多語言模型的語料庫主要有以下幾種:
- Books:BookCorpus 是之前小語言模型如 GPT-2 常用的資料集,包括超過 11000 本電子書。主要包括小說和傳記,最近更新時間是 2015 年 12 月。大一點的書籍語料庫是 Gutenberg,它有 70000 本書,包括小說、散文、戲劇等作品,是目前最大的開源書籍語料庫之一,最近更新時間是 2021 年 12 月。
- CommonCrawl:這個是目前最大的開源網路爬蟲資料庫,不過這個資料包含了大量髒資料,所以目前常用的四個資料庫是 C4、CC-Stories、CC-News 和 RealNews。另外還有兩個基於 CommonCrawl 提取的新聞語料庫 REALNEWS 和 CC-News。
- Reddit Links:簡單理解 Reddit 就是外國版本的百度貼吧 + 知乎。目前開源的資料庫有 OpenWebText 和 PushShift.io。
- Wikipedia:維基百科是目前大模型廣泛使用的語料庫。
- Code:一般包含 GitHub 上的開源公共程式碼庫,或者是 StackOverflow 的資料,Google 之前釋出過一個叫 BigQuery 的資料集。
實際上,訓練大語言模型會混合使用不同的資料,一般不會只使用單一語料庫。比如 GPT-3 用的混合資料集就包括 Books、CommonCrowl、Reddit Links 和 Wikipedia。
從資料上看,你需要知道一個事實,中文語料在這上面佔比很小。ChatGPT 能用中文回答你的問題,只是因為它的語料裡有一些中英文對應的語料,然後模型就像是「懂中文了一樣」,所以更可能的情況是,它先生成了英文內容,再翻譯成中文。如果你去問 ChatGPT 3.5:請給我幾個中文諧音梗,你應該就能理解我說的話了。
以下是 ChatGPT 的返回結果:
以下是一些中文諧音梗的例子:
我蒸發了,意思是我是 Vaper 了(Vaper發音接近蒸發)。
會有星期天,都得過過來,意思是星期二,星期三,星期四,星期五,星期六,都得過過來。
看到你,我的內心涼了 below zero,意思是涼了半截(below zero與半截音相近)。
蜀道難,難於上青天,賽道難,難於上488(488與“蜀道難”同音)。
洋蔥姑娘,想哭卻哭不出來,因為洋蔥讓我流淚了(洋蔥和“要哭”在中文中的發音很相似)。
雨紛紛,舊故里草木深,我聽聞,你始終在我身邊深(“身邊深”和“身邊尋”諧音)。
你的車開得真快,一開就是“出租”,意思是“出祖宗”(發音類似)。
關鍵二:演算法
有了資料之後,你還需要有演算法去做計算,目前最常用的開發大語言模型的演算法庫有:
- Transformers:這是一個使用 Transformer 架構構建的開源 Python 庫。
- DeepSpeed:是由微軟開發的深度學習最佳化庫。
- Megatron-LM:這是由 Nvidia 開發的深度學習庫。
- JAX:它是由 Google 開發的用於高新能機器學習演算法的 Python 庫。
關鍵三:算力
簡單理解,算力就是計算資源,或者說硬體,OpenAI 沒有說它訓練 GPT-3 語言模型花了多少計算資源。但 OpenAI 的 CEO 暗示硬體成本超過一億美元,如果我們按照 1000 美元一個 GPU 計算,它大約使用了 10 萬個 GPU,以 32 位運算為準,它能提供超過 100 PFLOPS 的算力,也就是每秒 10 億億次運算以上,這大約是阿里雲最大的資料中心的四分之一的算力。
注意,這還是 GPT-3 時的花費。
另外,我還想分享一個觀點,不要以為算力會隨時間的前進,就能跨越。算力永遠會是制約我們瓶頸,因為我們對人工智慧的要求會不斷的提高。
本文主要內容來自論文 A Survey of Large Language Models。
4. 大語言模型有什麼缺點?
瞭解完原理後,我覺得有必要跟大家聊聊大語言模型的缺點,這樣大家才能知道 AI 的邊界在哪裡,並在可控的邊界內進行創新。
缺點一:結果高度依賴訓練語料
正如我前面提到的,當今的語言模型,即使發展了四個版本,但依然沒有脫離「機率計算」,本質上來說它們的核心原理就是「利用已有的資訊來預測其他資訊」。
那這就意味著,大語言模型其實並沒有意識,也不知道對錯,其生成的結果,高度依賴訓練語料。
那會導致怎樣的後果?
- 如果語料的內容是有偏的(比如帶有種族歧視、性別歧視的內容),甚至是錯誤的,那大語言模型的生成的結果也會是錯誤的。
- 如果該領域語料很少,大語言模型生成的結果準確率就很低。甚至有可能會出現幻覺(這個是第二個缺點)。
當然面對這個缺點,有什麼方法規避?
第一種方法就是在語料大、且錯誤率低的領域使用 LLMs。
比如語言學領域,像翻譯、或者文案生成這種場景。即使語法錯誤了,但語料裡存在大量的相同用法,那某種程度上來說,模型給的答案也算是對的,有點類似古代的通假字,或者現代的很多流行語。
第二種就是用人工干預。
簡單說來就是人工將語料裡的內容剔除,或者對其進行人類反饋強化學習。但人工干預並不意味著就沒有問題了,這種方法有可能導致新的問題出現,比如將人的主觀好惡加入到模型中,或者有可能偽造一些資訊,加入到模型中。
缺點二:Hallucinations
這個可以直譯成「幻覺」,簡單說來,就是會說胡話。有些問題因為語聊很少,計算機率後,會吐出一些很奇怪的內容,比如這個例子,我讓 AI 介紹一個世界上不存在的品牌 Boie 的智慧牙刷:
Tell me about AeroGlide UltraSlim Smart Toothbrush by Boie
AI 的回答是,你可以看到 AI 就是在一本正經地說胡話:
The AeroGlide UltraSlim Smart Toothbrush by Boie is a high-tech toothbrush that uses advanced sonic technology to provide a deep and thorough clean. It features a slim and sleek design that makes it easy to hold and maneuver, and it comes with a range of smart features that help you optimize your brushing routine.
One of the key features of the AeroGlide UltraSlim Smart Toothbrush is its advanced sonic technology, which uses high-frequency vibrations to break up plaque and bacteria on your teeth and gums. This technology is highly effective at removing even the toughest stains and buildup, leaving your teeth feeling clean and refreshed.
In addition to its sonic technology, the AeroGlide UltraSlim Smart Toothbrush also comes with a range of smart features that help you optimize your brushing routine. These include a built-in timer that ensures you brush for the recommended two minutes, as well as a pressure sensor that alerts you if you're brushing too hard.
Overall, the AeroGlide UltraSlim Smart Toothbrush by Boie is a highly advanced and effective toothbrush that is perfect for anyone looking to take their oral hygiene to the next level. With its advanced sonic technology and smart features, it provides a deep and thorough clean that leaves your teeth feeling fresh and healthy.
缺點三:暫時只能解決數學問題
我解釋下,這裡提到的數學問題,並不僅僅指的是數學運算這種數學問題,而是能透過數學解決的問題。比如我們可以研發無人駕駛汽車,當它遇到行人突然橫穿馬路時,能自己剎車停下來,這就是一個數學問題,它透過計算識別行人,並進行剎車。
但如果這輛無人車在一個單行道的巷子裡遇到一輛堵在巷子的汽車,它就沒有辦法了,只能報警,讓司機過來挪車,這就是一個數學無法解決的問題。
暫時來看目前大多數的 LLMs 都只能解決數學問題,有些不可計算的問題,暫時都沒法解決。特別像是需要自己實操進行實驗的問題。
當然我這裡也只是稱其為「暫時」,因為可能未來機器人 + LLMs 有可能會將可計算的範圍擴充寬一點。