讀完收獲很多,能幫大家更好地理解、學(xué)習(xí)大模型。原文有2.8w字,我提煉了核心要點,閱讀需要10min。
ChatGPT的出現(xiàn)給很多人帶來了驚喜和醒悟。有人驚喜地發(fā)現(xiàn)大型語言模型(LLM)的效果如此出色,而有人則意識到我們對LLM的認知和發(fā)展理念距離世界先進水平還有很大差距。我是既驚喜又醒悟的一員,也是典型的中國人,善于自我反思。因此,我開始反思,并將這篇文章作為反思的結(jié)果。
我認為,OpenAI在LLM的理念和相關(guān)技術(shù)方面領(lǐng)先于國外的Google和DeepMind大約半年到一年的時間,領(lǐng)先國內(nèi)大約兩年左右。在LLM這個問題上,梯隊很明顯,Google應(yīng)該排在第二位,最能體現(xiàn)Google技術(shù)眼光的是PaLM和Pathways,推出時間大約在2022年2月到4月之間。同一時期,OpenAI推出的是InstructGPT,從這里可以看出Google和OpenAI的差距。至于為什么這么說,你看了后面的內(nèi)容就能理解。DeepMind之前的重點一直在強化學(xué)習(xí)攻克游戲和AI for science等方面,對LLM的關(guān)注比較晚,大約是在2021年才開始重視這個方向,目前仍在追趕狀態(tài)。Meta在LLM上的關(guān)注更少,重點一直不在LLM上,目前也在努力追趕。這些機構(gòu)是目前做得最好的,即便如此,國內(nèi)的差距也是可以理解的。至于OpenAI關(guān)于LLM的理念是什么,我會在本文的最后一部分談?wù)勎业恼J知。
本文試圖回答一些問題:ChatGPT是否帶來了NLP乃至AI領(lǐng)域的研究范式轉(zhuǎn)換?如果是,那會帶來怎樣的影響?LLM從海量數(shù)據(jù)中學(xué)到了什么知識?LLM又是如何存取這些知識的?隨著LLM規(guī)模逐步增大,會帶來什么影響?什么是In Context Learning?為什么它是一項很神秘的技術(shù)?它和Instruct又是什么關(guān)系?LLM具備推理能力嗎?思維鏈CoT又是怎么做的?等等。通過閱讀本文,您將對這些問題有一個答案。
在談到LLM技術(shù)現(xiàn)狀之前,我先宏觀地談一下我心目中的研究范式轉(zhuǎn)換問題,這樣我們才能更清晰地理解具體技術(shù)的變化。
如果我們回顧NLP領(lǐng)域的技術(shù)發(fā)展,可能會發(fā)現(xiàn)兩次大的研究范式轉(zhuǎn)換。第一次轉(zhuǎn)換是從深度學(xué)習(xí)到兩階段預(yù)訓(xùn)練模型,時間跨度大約是2013年至2020年。在Bert和GPT模型出現(xiàn)之前,NLP領(lǐng)域主要依賴于深度學(xué)習(xí)模型,其中核心技術(shù)是改進的LSTM和CNN模型以及Sequence to Sequence+Attention的總體技術(shù)框架。然而,深度學(xué)習(xí)在NLP領(lǐng)域的應(yīng)用并沒有取得很大的成功,主要原因是數(shù)據(jù)量的限制和特征抽取器的表達能力不夠強。Bert和GPT模型的出現(xiàn)改變了這一現(xiàn)狀,引領(lǐng)了NLP領(lǐng)域的技術(shù)轉(zhuǎn)變。這種轉(zhuǎn)變帶來了兩個影響:一是中間任務(wù)的消亡,二是不同研究方向技術(shù)路線的統(tǒng)一。
第二次轉(zhuǎn)換是從預(yù)訓(xùn)練模型走向通用人工智能(AGI),時間跨度大約是2020年至今。ChatGPT是這次轉(zhuǎn)換的關(guān)鍵節(jié)點,它實現(xiàn)了理想LLM模型的接口層,讓LLM適應(yīng)人類的習(xí)慣命令表達方式。這對于提高LLM的易用性和用戶體驗至關(guān)重要。這次轉(zhuǎn)換將進一步推動LLM模型的發(fā)展,納入更多的研究領(lǐng)域,逐步實現(xiàn)通用人工智能。
在這個背景下,很多NLP子領(lǐng)域?qū)⒉辉倬邆洫毩⒀芯康膬r值,因為LLM模型可以通過吸收更多的領(lǐng)域知識來解決這些問題。同時,更多NLP之外的研究領(lǐng)域也將被納入LLM技術(shù)體系,成為通用人工智能的一部分。圖像處理和多模態(tài)任務(wù)是其中的一個自然選擇。
總的來說,LLM模型的發(fā)展趨勢是追求規(guī)模越來越大的模型,通過增加預(yù)訓(xùn)練數(shù)據(jù)的多樣性來涵蓋更多的領(lǐng)域知識。人機接口技術(shù)也將繼續(xù)改進,讓LLM更好地適應(yīng)人類的表達方式。這些技術(shù)轉(zhuǎn)變將對NLP領(lǐng)域和其他研究領(lǐng)域產(chǎn)生深遠影響。
接下來,我們來梳理下GPT 3.0之后LLM模型的主流技術(shù)進展。
Transformer是一種強大的特征抽取器,通過預(yù)訓(xùn)練過程,它可以學(xué)習(xí)到豐富的知識。這些知識可以分為語言類知識和世界知識兩大類。
語言類知識包括詞法、詞性、句法、語義等與自然語言理解相關(guān)的知識。研究表明,Transformer可以學(xué)習(xí)各種層次的語言學(xué)知識,并且這些知識在模型的不同層次中有所分布。淺層的語言知識如詞法、詞性、句法等存儲在低層和中層,而抽象的語言知識如語義類知識則廣泛分布在中層和高層。
世界知識指的是關(guān)于真實事件和常識性知識的知識。研究表明,Transformer可以從訓(xùn)練數(shù)據(jù)中吸收大量的世界知識,并且這些知識主要分布在中層和高層,尤其集中在中層。隨著模型層數(shù)的增加,LLM可以學(xué)習(xí)到更多的世界知識。因此,可以將LLM看作是一種以模型參數(shù)體現(xiàn)的隱式知識圖譜。
對于訓(xùn)練LLM模型所需的數(shù)據(jù)量,研究表明,對于語言學(xué)知識來說,使用1000萬到1億單詞的語料就足夠了,但要學(xué)習(xí)事實類知識,則需要更多的訓(xùn)練數(shù)據(jù)。隨著訓(xùn)練數(shù)據(jù)量的增加,預(yù)訓(xùn)練模型在各種下游任務(wù)中的效果也會越好。因此,從增量的訓(xùn)練數(shù)據(jù)中學(xué)到的更多是世界知識。
LLM模型將知識存儲在Transformer的模型參數(shù)中。模型參數(shù)由多頭注意力(MHA)和前饋神經(jīng)網(wǎng)絡(luò)(FFN)兩部分組成。MHA主要用于計算單詞或知識之間的相關(guān)強度,并對全局信息進行集成。而FFN部分存儲了具體的知識。一種觀點認為,F(xiàn)FN可以看作是一個存儲大量具體知識的Key-Value存儲器。FFN的第一層是Key層,用于識別輸入中的語言或知識模式。第二層是Value層,用于存儲與Key層對應(yīng)的具體知識。FFN的輸入層是通過Self Attention得到的整個輸入句子的整體信息。FFN的正向傳播過程可以看作是通過Key層檢測知識模式,然后取出對應(yīng)的Value,并體現(xiàn)在輸出上。
修正LLM模型中存儲的知識有幾種方法。一種方法是從訓(xùn)練數(shù)據(jù)的源頭進行修正。通過追蹤某條知識對應(yīng)的訓(xùn)練數(shù)據(jù)源頭,可以刪除相關(guān)的數(shù)據(jù)源,然后重新預(yù)訓(xùn)練整個LLM模型。另一種方法是對LLM模型進行fine-tuning,根據(jù)新知識構(gòu)建訓(xùn)練數(shù)據(jù),讓LLM模型在這個數(shù)據(jù)上進行fine-tuning。還有一種方法是直接修改LLM模型參數(shù)中存儲的知識。這些方法都有各自的優(yōu)缺點,需要根據(jù)具體情況選擇合適的方法。
隨著LLM模型規(guī)模的增大,對于預(yù)訓(xùn)練階段來說,增加訓(xùn)練數(shù)據(jù)量和模型參數(shù)規(guī)模是提高模型效果的關(guān)鍵。研究表明,同時增加訓(xùn)練數(shù)據(jù)量和模型參數(shù)規(guī)模效果最好。此外,隨著模型規(guī)模的增大,LLM在不同類型的任務(wù)上表現(xiàn)也有所不同。對于知識密集型任務(wù),隨著模型規(guī)模增大,任務(wù)效果越來越好。對于某些任務(wù),隨著模型規(guī)模的增大,任務(wù)效果呈現(xiàn)出U形增長曲線。對于一些任務(wù),LLM具備一種"涌現(xiàn)能力",當(dāng)模型規(guī)模足夠大時,任務(wù)效果突然出現(xiàn)性能增長。這些現(xiàn)象都需要進一步深入研究。
In Context Learning和Instruct是兩種不同的任務(wù)描述方式。In Context Learning是通過給出具體示例來描述任務(wù),而Instruct是一種更抽象的任務(wù)描述方式。目前的研究表明,LLM可以從給定的示例中學(xué)習(xí)到Instruct的描述,但是關(guān)于LLM是如何實現(xiàn)這種學(xué)習(xí)的,目前還沒有確切的答案。
在增強LLM的推理能力方面,目前的研究主要集中在兩個方向。一種是基于Prompt的方法,通過合適的提示語或示例來激發(fā)LLM的推理能力。另一種是在預(yù)訓(xùn)練階段引入程序代碼,以增強LLM的推理能力。這兩種方法可以互相補充,但從長遠來看,增加訓(xùn)練數(shù)據(jù)的多樣性和引入代碼參與預(yù)訓(xùn)練是更為重要的。
基于Prompt的方法在激發(fā)LLM模型推理能力方面有著重要作用??梢詫⑵浞譃槿龡l技術(shù)路線。
第一種思路是在問題上追加輔助推理Prompt。這種方法簡單直接,但在眾多領(lǐng)域都很有效。具體做法是在問題前追加提示語,例如"Let’s think step by step",然后將LLM的輸出與問題拼接,再追加提示語"Therefore, the answer is",這樣可以大幅增加LLM在各項推理任務(wù)中的效果。
第二種思路是基于示例的思維鏈(Chain of Thought)Prompting。這個方向是LLM推理研究的主要方向。通過給出人工編寫的推理示例,詳細描述每個推理步驟,讓LLM模型學(xué)會推理。這種方法可以顯著提升LLM模型的推理能力。
第三種思路體現(xiàn)了一種分治算法的思想。將復(fù)雜的推理問題分解成若干容易解決的子問題,然后逐步解決子問題,最終推導(dǎo)出整個問題的答案。這種思路類似于分治算法,可能是揭示問題本質(zhì)、解決LLM復(fù)雜推理問題的道路。
此外,加入代碼預(yù)訓(xùn)練可以顯著增強LLM模型的推理能力。通過在預(yù)訓(xùn)練過程中加入代碼數(shù)據(jù),可以提升LLM模型在推理任務(wù)中的表現(xiàn)。這可能是因為代碼數(shù)據(jù)中包含了數(shù)學(xué)類或邏輯推理類的數(shù)據(jù),對解決下游數(shù)學(xué)推理問題有幫助。
總體而言,LLM模型具備推理能力,只是我們需要合適的方法來激發(fā)它。未來的研究可以集中在增強LLM的復(fù)雜推理能力、探索LLM在NLP之外領(lǐng)域的應(yīng)用、改進人機交互接口、構(gòu)建高難度的綜合任務(wù)評測數(shù)據(jù)集等方向。此外,還可以研究如何提高LLM模型的訓(xùn)練效率,如稀疏化模型等技術(shù)選項。
最后,要注意在復(fù)刻類似ChatGPT的模型時,選擇合適的預(yù)訓(xùn)練模式、引入代碼數(shù)據(jù)進行預(yù)訓(xùn)練、注意數(shù)據(jù)質(zhì)量和多樣性、降低模型規(guī)模的同時保持效果、設(shè)計易用的人機交互接口等。這些選擇將有助于實現(xiàn)強大的LLM模型。