后GPT 3.0時(shí)代,大語言模型能否直通AGI? | 創(chuàng)業(yè)錦囊
發(fā)布時(shí)間:2023-10-08 17:00 閱讀次數(shù):13741
ChatGPT 的出現(xiàn),是驚喜亦是警醒,既讓人們看到了大語言模型的更多可能,亦讓我們頓悟國內(nèi)對(duì)LLM的認(rèn)知及發(fā)展理念仍未立足世界前沿。 ChatGPT 是否帶來了 NLP 乃至 AI 領(lǐng)域的研究范式轉(zhuǎn)換?如果是,那會(huì)帶來怎樣的影響?LLM 從海量數(shù)據(jù)中學(xué)到了什么知識(shí)?LLM 又是如何存取這些知識(shí)的?隨著 LLM 規(guī)模逐步增大,會(huì)帶來什么影響?什么是 In Context Learning? 為什么它是一項(xiàng)很神秘的技術(shù)?它和 Instruct 又是什么關(guān)系?LLM 具備推理能力嗎?思維鏈 CoT 又是怎么做的? 本期創(chuàng)業(yè)錦囊,精選中國中文信息學(xué)會(huì)理事、中科院軟件所博士、新浪微博機(jī)器學(xué)習(xí)團(tuán)隊(duì)新技術(shù)研發(fā)負(fù)責(zé)人張俊林文章,回顧大型語言模型(LLM)的發(fā)展歷程、技術(shù)迭代更新以及未來走向,探討通過超大 LLM 實(shí)現(xiàn)通用人工智能(AGI)的可能性,希望對(duì)你有所啟發(fā)。 作者 I 張俊林 來源 I??知乎

歡迎加入長江商學(xué)院X火山引擎X飛書X錦秋基金
「AI未來空間站」
ChatGPT 出現(xiàn)后驚喜或驚醒了很多人。驚喜是因?yàn)闆]想到大型語言模型(LLM,Large Language Model)效果能好成這樣;驚醒是頓悟到我們對(duì) LLM 的認(rèn)知及發(fā)展理念,距離世界最先進(jìn)的想法,差得有點(diǎn)遠(yuǎn)。我屬于既驚喜又驚醒的那一批,也是典型的中國人,中國人善于自我反思,于是開始反思,而這篇文章正是反思的結(jié)果。
實(shí)話實(shí)說,國內(nèi)在 LLM 模型相關(guān)技術(shù)方面,此刻,距離最先進(jìn)技術(shù)的差距進(jìn)一步加大了。技術(shù)領(lǐng)先或技術(shù)差距這事情,我覺得要?jiǎng)討B(tài)地以發(fā)展的眼光來看。在 Bert 出現(xiàn)之后的一到兩年間,其實(shí)國內(nèi)在這塊的技術(shù)追趕速度還是很快的,也提出了一些很好的改進(jìn)模型,差距拉開的分水嶺應(yīng)該是在 GPT 3.0 出來之后,也就是 2020 年年中左右。在當(dāng)時(shí),其實(shí)只有很少的人覺察到:GPT 3.0 它不僅僅是一項(xiàng)具體的技術(shù),其實(shí)體現(xiàn)的是 LLM 應(yīng)該往何處去的一個(gè)發(fā)展理念。自此之后,差距拉得越來越遠(yuǎn),ChatGPT 只是這種發(fā)展理念差異的一個(gè)自然結(jié)果。所以,我個(gè)人認(rèn)為,拋開是否有財(cái)力做超大型 LLM 這個(gè)因素,如果單從技術(shù)角度看,差距主要來自于對(duì) LLM 的認(rèn)知以及未來應(yīng)往何處去的發(fā)展理念的不同。
國內(nèi)被國外技術(shù)甩得越來越遠(yuǎn),這個(gè)是事實(shí),不承認(rèn)也不行。前陣子網(wǎng)上很多人擔(dān)憂說國內(nèi) AI 現(xiàn)在處于 “危急存亡之秋”,我覺得倒也不至于這么嚴(yán)重。君不見,這個(gè)世界上,具備這么超前眼光的只有 OpenAI 一家嗎?包括 Google 在內(nèi),其實(shí)對(duì)于 LLM 發(fā)展理念的理解,明顯都落后 OpenAI 一個(gè)身位。現(xiàn)實(shí)是 OpenAI 表現(xiàn)過于優(yōu)秀,把所有人都甩開了,不僅僅是國內(nèi)。
我覺得,OpenAI 對(duì) LLM 在理念及相關(guān)技術(shù)方面,領(lǐng)先國外的 Google、DeepMind 大約半年到一年的時(shí)間,領(lǐng)先國內(nèi)大概兩年左右的時(shí)間。在 LLM 這個(gè)事情上,感覺梯隊(duì)很明顯,Google 應(yīng)該是排在第二位,最能體現(xiàn) Google 技術(shù)眼光的是 PaLM 和 Pathways,推出時(shí)間大概在 22 年 2 月到 4 月間,同一時(shí)期,OpenAI 推出的卻是 InstructGPT,從這里就可以看出 Google 和 OpenAI 的差距了,至于為何這么說,你看了我后面的正文后大概能理解。DeepMind 之前的重心一直在強(qiáng)化學(xué)習(xí)攻克游戲和 AI for science 這些方面,切入 LLM 其實(shí)很晚,應(yīng)該是 21 年才開始重視這個(gè)方向,目前也處于追趕狀態(tài)。Meta 就更不用說了,重心一直不在 LLM 上,目前感覺也發(fā)力開始追趕。這還是目前做得最好的一批機(jī)構(gòu),尚且如此,更何況國內(nèi)呢?我覺得情有可原。至于 OpenAI 關(guān)于 LLM 的理念是什么,我在本文的最后一部分,會(huì)談?wù)勎业恼J(rèn)知。
本文梳理自 GPT 3.0 出現(xiàn)之后的主流 LLM 技術(shù),在此之前的主流技術(shù)可以參考「乘風(fēng)破浪的PTM,深度解讀預(yù)訓(xùn)練模型的進(jìn)展」。
我相信看完這兩篇文章,能夠讓您對(duì) LLM 領(lǐng)域的技術(shù)脈絡(luò),LLM 技術(shù)發(fā)展過程中出現(xiàn)過的不同發(fā)展理念,乃至未來可能的發(fā)展趨勢(shì),有比較清晰的認(rèn)知。當(dāng)然,很多地方講的內(nèi)容是我個(gè)人看法,有很大的主觀性,錯(cuò)漏難免,所以還請(qǐng)謹(jǐn)慎參考。
本文試圖回答下面一些問題:ChatGPT 是否帶來了 NLP 乃至 AI 領(lǐng)域的研究范式轉(zhuǎn)換?如果是,那會(huì)帶來怎樣的影響?LLM 從海量數(shù)據(jù)中學(xué)到了什么知識(shí)?LLM 又是如何存取這些知識(shí)的?隨著 LLM 規(guī)模逐步增大,會(huì)帶來什么影響?什么是 In Context Learning? 為什么它是一項(xiàng)很神秘的技術(shù)?它和 Instruct 又是什么關(guān)系?LLM 具備推理能力嗎?思維鏈 CoT 又是怎么做的?等等,相信看完,能讓您對(duì)這些問題有一個(gè)答案。
首先,在談 LLM 技術(shù)現(xiàn)狀前,先宏觀地談下我心目中的研究范式轉(zhuǎn)換問題。這樣,我們才能 “先見森林,再見樹木”,對(duì)具體技術(shù)為何會(huì)是如此變化有個(gè)更清晰的認(rèn)知。
01
潮流之巔:
NLP 研究范式的轉(zhuǎn)換
如果我們把時(shí)間線往前拉得更長一些,回到 NLP 領(lǐng)域的深度學(xué)習(xí)時(shí)代,在更長時(shí)間窗口內(nèi)觀察技術(shù)變遷及其影響,可能會(huì)更容易看清其中的一些關(guān)鍵節(jié)點(diǎn)。我個(gè)人認(rèn)為,在最近 10 年來 NLP 領(lǐng)域的技術(shù)發(fā)展過程中,可能存在兩次大的研究范型轉(zhuǎn)換。
范式轉(zhuǎn)換 1.0: 從深度學(xué)習(xí)到兩階段預(yù)訓(xùn)練模型
這個(gè)范式轉(zhuǎn)換所涵蓋的時(shí)間范圍,大致在深度學(xué)習(xí)引入 NLP 領(lǐng)域(2013 年左右),到 GPT 3.0 出現(xiàn)之前(2020 年 5 月左右)。
在 Bert 和 GPT 模型出現(xiàn)之前,NLP 領(lǐng)域流行的技術(shù)是深度學(xué)習(xí)模型,而 NLP 領(lǐng)域的深度學(xué)習(xí),主要依托于以下幾項(xiàng)關(guān)鍵技術(shù):以大量的改進(jìn) LSTM 模型及少量的改進(jìn) CNN 模型作為典型的特征抽取器;以 Sequence to Sequence(或叫 encoder-decoder 亦可)+Attention 作為各種具體任務(wù)典型的總體技術(shù)框架。
在這些核心技術(shù)加持下,NLP 領(lǐng)域深度學(xué)習(xí)的主要研究目標(biāo),如果歸納一下,是如何有效增加模型層深或模型參數(shù)容量。就是說,怎么才能往 encoder 和 decoder 里不斷疊加更深的 LSTM 或 CNN 層,來達(dá)成增加層深和模型容量的目標(biāo)。這種努力,盡管確實(shí)不斷增加了模型層深,但是從解決具體任務(wù)的效果角度看,總體而言,不算很成功,或者說和非深度學(xué)習(xí)方法相對(duì),帶來的優(yōu)勢(shì)不算大。
深度學(xué)習(xí)之所以不夠成功,我認(rèn)為主要原因來自于兩個(gè)方面:一方面是某個(gè)具體任務(wù)有限的訓(xùn)練數(shù)據(jù)總量。隨著模型容量的增加,需要靠更大量的訓(xùn)練數(shù)據(jù)來支撐,否則即使你能把深度做起來,任務(wù)效果也做不上去。而在預(yù)訓(xùn)練模型出現(xiàn)之前,很明顯這是 NLP 研究領(lǐng)域一個(gè)嚴(yán)重問題;另外一個(gè)方面是 LSTM/CNN 特征抽取器,表達(dá)能力不夠強(qiáng)。意思是就算給你再多的數(shù)據(jù)也沒用,因?yàn)槟悴荒苡行У匚諗?shù)據(jù)里蘊(yùn)含的知識(shí)。主要應(yīng)該是這兩個(gè)原因,阻礙了深度學(xué)習(xí)在 NLP 領(lǐng)域的成功突圍。
Bert/GPT 這兩個(gè)預(yù)訓(xùn)練模型的出現(xiàn),無論在學(xué)術(shù)研究角度看,還是工業(yè)應(yīng)用角度來看,都代表了 NLP 領(lǐng)域的一個(gè)技術(shù)飛躍,并帶來了整個(gè)領(lǐng)域研究范式的轉(zhuǎn)換。這種范式轉(zhuǎn)換帶來的影響,體現(xiàn)在兩個(gè)方面:首先,是部分 NLP 研究子領(lǐng)域的衰退乃至逐步消亡;其次,NLP 不同子領(lǐng)域的技術(shù)方法和技術(shù)框架日趨統(tǒng)一,在 Bert 出現(xiàn)后一年左右,技術(shù)棧基本收斂到兩種技術(shù)模式中。關(guān)于這兩點(diǎn),我們分頭來談。
影響一:中間任務(wù)的消亡
NLP 是一個(gè)宏觀研究領(lǐng)域的統(tǒng)稱,里面有五花八門具體的子領(lǐng)域與子方向,如果仔細(xì)分析,從任務(wù)的性質(zhì)角度,可以把這些任務(wù)分成兩大類:一類可以叫做 “中間任務(wù)”,一類可以稱為 “最終任務(wù)”。
典型的中間任務(wù)包括:中文分詞、詞性標(biāo)注、NER、句法分析、指代消解、語義 Parser 等,這類任務(wù)一般并不解決應(yīng)用中的實(shí)際需求,大多數(shù)是作為那些解決實(shí)際需求任務(wù)的中間階段或者輔助階段存在的,比如幾乎沒有需求說,我要一個(gè)句法 Parser,把這個(gè)句子的句法分析樹給用戶看看,用戶不需要看到這些 NLP 的中間階段處理結(jié)果,他只關(guān)心某個(gè)具體任務(wù)你有沒有干好。“最終任務(wù)” 包括比如文本分類、文本相似性計(jì)算、機(jī)器翻譯、文本摘要等等,有很多。這類任務(wù)的特點(diǎn)是每個(gè)子領(lǐng)域都解決某個(gè)實(shí)際需求,任務(wù)結(jié)果基本能直接呈現(xiàn)給用戶,比如用戶確實(shí)存在給你一句英文,告訴他中文是什么的需求。
按理說,“中間任務(wù)” 就不應(yīng)該出現(xiàn),而之所以會(huì)存在,這是 NLP 技術(shù)發(fā)展水平不夠高的一種體現(xiàn)。在技術(shù)發(fā)展早期階段,因?yàn)楫?dāng)時(shí)的技術(shù)相對(duì)落后,很難一步做好有難度的最終任務(wù)。比如機(jī)器翻譯,早期技術(shù)要做好機(jī)器翻譯是很困難的,于是科研人員就把難題分而治之,分解成分詞、詞性標(biāo)注、句法分析等各種中間階段,先把每個(gè)中間階段做好,然后再拼起來完成最終任務(wù),這也是沒辦法的事情。
但是自從 Bert/GPT 出現(xiàn)之后,其實(shí)就沒有必要做這些中間任務(wù)了,因?yàn)橥ㄟ^大量數(shù)據(jù)的預(yù)訓(xùn)練,Bert/GPT 已經(jīng)把這些中間任務(wù)作為語言學(xué)特征,吸收到了 Transformer 的參數(shù)里,此時(shí)我們完全可以端到端地直接解決那些最終任務(wù),而無須對(duì)這種中間過程專門建模。這里可能爭(zhēng)議最大的是中文分詞,其實(shí)道理也是一樣的,哪些字應(yīng)該組成一個(gè)詞,這個(gè)其實(shí)你不用管,讓 LLM 自己當(dāng)特征去學(xué)就行了,只要對(duì)于解決任務(wù)有幫助,它自然會(huì)去學(xué)該學(xué)的合理分詞方式,也未必一定要和我們?nèi)祟惱斫獾姆衷~規(guī)則相同。
基于以上認(rèn)知,其實(shí)在 Bert/GPT 一出現(xiàn),你就應(yīng)該得出這類 NLP 的中間階段的任務(wù),會(huì)逐步退出歷史舞臺(tái)這個(gè)結(jié)論。
影響二:不同研究方向技術(shù)路線的統(tǒng)一
在說明具體影響前,我們先討論下另外一種 NLP 任務(wù)劃分方式,這對(duì)于理解后面內(nèi)容有幫助。如果對(duì) “最終任務(wù)” 進(jìn)一步進(jìn)行分類,又大致可以分為兩大不同類型的任務(wù):自然語言理解類任務(wù)和自然語言生成類任務(wù)。如果排除掉 “中間任務(wù)” 的話,典型的自然語言理解類任務(wù)包括文本分類、句子關(guān)系判斷、情感傾向判斷等,這種任務(wù)本質(zhì)上都是分類任務(wù),就是說輸入一個(gè)句子(文章),或者兩個(gè)句子,模型參考所有輸入內(nèi)容,最后給出屬于哪個(gè)類別的判斷。自然語言生成也包含很多 NLP 研究子方向,比如聊天機(jī)器人、機(jī)器翻譯、文本摘要、問答系統(tǒng)等。生成類任務(wù)的特點(diǎn)是給定輸入文本,對(duì)應(yīng)地,模型要生成一串輸出文本。這兩者的差異主要體現(xiàn)在輸入輸出形式上
自從 Bert/GPT 模型誕生后,出現(xiàn)了明顯的技術(shù)統(tǒng)一趨向。首先,NLP 中不同的子領(lǐng)域,其特征抽取器都逐漸從 LSTM/CNN 統(tǒng)一到 Transformer 上。其實(shí),自 Bert 公開后不久,就應(yīng)該意識(shí)到,這必然會(huì)成為技術(shù)趨勢(shì)。至于其原因,在幾年前我寫的這篇「張俊林:放棄幻想,全面擁抱 Transformer:自然語言處理三大特征抽取器(CNN/RNN/TF)比較」中做了說明和分析,感興趣的同學(xué)可參考。
而且,目前 Transformer 不僅統(tǒng)一了 NLP 諸多領(lǐng)域,也正在逐步地替換圖像處理各種任務(wù)中被廣泛使用的 CNN 等其它模型的進(jìn)程之中,類似的,多模態(tài)模型目前也基本都采用了 Transformer 模型。這種 Transformer 從 NLP 出發(fā),攻城略地逐步統(tǒng)一 AI 越來越多領(lǐng)域的趨勢(shì),起始于 2020 年底出現(xiàn)的 Vision Transformer (ViT) ,之后蓬勃發(fā)展,到目前已大獲成功,且其繼續(xù)向更多領(lǐng)域拓展的勢(shì)頭會(huì)越來越迅猛。
其次,大多數(shù) NLP 子領(lǐng)域的研發(fā)模式切換到了兩階段模式:模型預(yù)訓(xùn)練階段 + 應(yīng)用微調(diào)(Fine-tuning)或應(yīng)用 Zero/Few Shot Prompt 模式。更準(zhǔn)確地說,NLP 各種任務(wù)其實(shí)收斂到了兩個(gè)不同的預(yù)訓(xùn)練模型框架里:對(duì)于自然語言理解類任務(wù),其技術(shù)體系統(tǒng)一到了以 Bert 為代表的 “雙向語言模型預(yù)訓(xùn)練 + 應(yīng)用 Fine-tuning” 模式;而對(duì)于自然語言生成類任務(wù),其技術(shù)體系則統(tǒng)一到了以 GPT 2.0 為代表的 “自回歸語言模型(即從左到右單向語言模型)+Zero /Few Shot Prompt” 模式。至于為何會(huì)分化成兩條技術(shù)路線,有其必然性,關(guān)于這點(diǎn)我們放在后面解釋。
這兩種模式,看似比較相像,但其背后蘊(yùn)含了迥異的發(fā)展思路,也會(huì)導(dǎo)向不同的未來發(fā)展方向。不過遺憾的是,我們中的絕大多數(shù)人,在當(dāng)時(shí)都低估了 GPT 這條發(fā)展路線的潛力,而把視覺中心聚焦到了 Bert 這種模式上。
范式轉(zhuǎn)換2.0: 從預(yù)訓(xùn)練模型走向通用人工智能
這個(gè)范式轉(zhuǎn)換所涵蓋的時(shí)間范圍,大致在 GPT3.0 出現(xiàn)之后(20 年 6 月左右),一直到目前為止,我們應(yīng)該正處于這個(gè)范式轉(zhuǎn)換過程中。
ChatGPT 是觸發(fā)這次范型轉(zhuǎn)換的關(guān)鍵節(jié)點(diǎn),但是在 InstructGPT 出現(xiàn)之前,其實(shí) LLM 處于這次范式轉(zhuǎn)換前的一個(gè)過渡期。
過渡期:以 GPT 3.0 為代表的 “自回歸語言模型 + Prompting” 模式占據(jù)統(tǒng)治地位
前面說過,在預(yù)訓(xùn)練模型發(fā)展的早期,技術(shù)框架收斂到了 Bert 模式和 GPT 模式這兩種不同的技術(shù)范型,而且人們普遍更看好 Bert 模式一些,相當(dāng)多數(shù)的后續(xù)技術(shù)改進(jìn),都是沿著 Bert 那條路走的。但是,隨著技術(shù)的繼續(xù)發(fā)展,你會(huì)發(fā)現(xiàn),目前規(guī)模最大的 LLM 模型,幾乎清一色都是類似 GPT 3.0 這種 “自回歸語言模型 + Prompting” 模式的,比如 GPT 3、PaLM、GLaM、Gopher、Chinchilla、MT-NLG、LaMDA 等,沒有例外。為什么會(huì)這樣呢?背后一定有其必然性,我認(rèn)為可能主要源于兩個(gè)原因。

首先,Google 的 T5 模型,在形式上統(tǒng)一了自然語言理解和自然語言生成任務(wù)的外在表現(xiàn)形式。如上圖所示,標(biāo)為紅色的是個(gè)文本分類問題,黃色的是判斷句子相似性的回歸或分類問題,這都是典型的自然語言理解問題。在 T5 模型里,這些自然語言理解問題在輸入輸出形式上和生成問題保持了一致,也就是說,可以把分類問題轉(zhuǎn)換成讓 LLM 模型生成對(duì)應(yīng)類別的字符串,這樣理解和生成任務(wù)在表現(xiàn)形式就實(shí)現(xiàn)了完全的統(tǒng)一。
這說明自然語言生成任務(wù),在表現(xiàn)形式上可以兼容自然語言理解任務(wù),若反過來,則很難做到這一點(diǎn)。這樣的好處是:同一個(gè) LLM 生成模型,可以解決幾乎所有 NLP 問題。而如果仍然采取 Bert 模式,則這個(gè) LLM 模型無法很好處理生成任務(wù)。既然這樣,我們當(dāng)然傾向于使用生成模型,這是一個(gè)原因。
第二個(gè)原因,如果想要以零示例提示語(zero shot prompting)或少數(shù)示例提示語(few shot prompting)的方式做好任務(wù),則必須要采取 GPT 模式。現(xiàn)在已有研究(參考:On the Role of Bidirectionality in Language Model Pre-Training)證明:如果是以 fine-tuning 方式解決下游任務(wù),Bert 模式的效果優(yōu)于 GPT 模式;若是以 zero shot/few shot prompting 這種模式解決下游任務(wù),則 GPT 模式效果要優(yōu)于 Bert 模式。這說明了,生成模型更容易做好 zero shot/few shot prompting 方式的任務(wù),而 Bert 模式以這種方式做任務(wù),是天然有劣勢(shì)的。這是第二個(gè)原因。
但是問題來了:為什么我們要追求 zero shot/few shot prompting 這種方式來做任務(wù)呢?要解釋清楚這個(gè)問題,我們首先需要搞清楚另外一個(gè)問題:什么樣的 LLM 模型,對(duì)我們是最理想的?

上圖展示了一個(gè)理想的 LLM 該有的樣子。首先,LLM 應(yīng)該具備強(qiáng)大的自主學(xué)習(xí)能力。假設(shè)我們把世界上能獲得的所有文本或者圖片等不同類型的數(shù)據(jù)喂給它,它應(yīng)該能夠自動(dòng)從中學(xué)習(xí)到里面包含的所有知識(shí)點(diǎn),學(xué)習(xí)過程不需要人的介入,并且能靈活應(yīng)用所學(xué)知識(shí),來解決實(shí)際問題。因?yàn)閿?shù)據(jù)是海量的,要吸收所有知識(shí),就要非常多的模型參數(shù)來存儲(chǔ)知識(shí),所以這個(gè)模型必然會(huì)是一個(gè)巨無霸模型。
其次,LLM 應(yīng)該能解決 NLP 任何子領(lǐng)域的問題,而不僅支持有限領(lǐng)域,甚至它應(yīng)該可以響應(yīng) NLP 之外其它領(lǐng)域的問題,最好是任意領(lǐng)域的問題都能得到很好地回答。
再者,當(dāng)我們使用 LLM 解決某個(gè)具體領(lǐng)域問題的時(shí)候,應(yīng)該用我們?nèi)祟惲?xí)慣的表達(dá)方式,就是說 LLM 應(yīng)該理解人類的命令。這體現(xiàn)出讓 LLM 適配人,而不是反過來,讓人去適配 LLM 模型。人適配 LLM 的典型例子,比如絞盡腦汁去嘗試各種不同的 prompt,以試圖找到好的提示語,才能很好地解決手頭問題。關(guān)于這點(diǎn),上圖在人類和 LLM 交互的接口層,舉了幾個(gè)例子,說明什么是好的人使用 LLM 模型的接口形式。
看完這個(gè)理想中的 LLM,我們?cè)倩仡^解釋上面遺留的問題:為什么我們要追求 zero shot/few shot prompting 這種方式來做任務(wù)呢?有兩個(gè)原因。
第一,這個(gè) LLM 模型規(guī)模必然非常巨大,有能力作出這個(gè)模型,或改動(dòng)這個(gè)模型參數(shù)的機(jī)構(gòu)必然很少。而任務(wù)需求方是千千萬萬的中小機(jī)構(gòu)甚至是個(gè)人,就算你把模型開源出來,他們也無力部署這個(gè)模型,更不用說再用 Fine-tuning 這種模式去修改模型參數(shù)了。所以,我們應(yīng)該追求不修正模型參數(shù),就能讓任務(wù)需求方完成任務(wù)的方式,也就是應(yīng)該采取 prompt 模式完成任務(wù),而非 Fine-tuning 模式(由此可看出,soft prompting 技術(shù)方向是違背這個(gè)發(fā)展趨勢(shì)的)。模型制作方則將 LLM 作成公用服務(wù),以 LLM as Service 的模式運(yùn)行。作為服務(wù)支持方,考慮到千變?nèi)f化的用戶需求,所以 LLM 模型制作方更要追求讓 LLM 能完成盡可能多類型的任務(wù),這是附帶的影響,也是為何超級(jí)大模型一定會(huì)追求走向 AGI 的現(xiàn)實(shí)因素。
第二,zero shot prompting 也好,few shot prompting 也好,甚至促進(jìn) LLM 推理能力的思維鏈(CoT,Chain of Thought)Prompting 也好,就是上圖中接口層中的現(xiàn)有技術(shù)。具體而言,zero shot prompting 的初衷,其實(shí)就是人類和 LLM 的理想接口,直接用人類所習(xí)慣的任務(wù)表述方式讓 LLM 做事情,但是發(fā)現(xiàn) LLM 并不能很好地理解,效果也不好。經(jīng)過繼續(xù)研究,轉(zhuǎn)而發(fā)現(xiàn):對(duì)于某項(xiàng)任務(wù),如果給 LLM 幾個(gè)示例,用這些示例來代表任務(wù)描述,效果會(huì)比 zero shot prompting 好,于是大家都去研究更好的 few shot prompting 技術(shù)。可以理解為,本來我們希望 LLM 能夠用人類常用的命令方式來執(zhí)行某個(gè)任務(wù),但是目前技術(shù)還做不到,所以退而求其次,用這些替代技術(shù)來表達(dá)人類的任務(wù)需求。
如果理解了上述邏輯,很容易得出如下結(jié)論:few shot prompting(也被稱為 In Context Learning)只是一種過渡時(shí)期的技術(shù)。如果我們能夠更自然地去描述一個(gè)任務(wù),而且 LLM 可以理解,那么,我們肯定會(huì)毫不猶豫地拋棄這些過渡期的技術(shù),原因很明顯,用這些方法來描述任務(wù)需求,并不符合人類的使用習(xí)慣。
這也是為何我將 GPT 3.0+Prompting 列為過渡期技術(shù)的原因,ChatGPT 的出現(xiàn),改變了這個(gè)現(xiàn)狀,用 Instruct 取代了 Prompting,由此帶來新的技術(shù)范式轉(zhuǎn)換,并產(chǎn)生若干后續(xù)影響。
影響一:讓 LLM 適配人的新型交互接口
在理想 LLM 的背景下,我們?cè)賮砜?ChatGPT,能更好理解它的技術(shù)貢獻(xiàn)。ChatGPT 應(yīng)該是目前所有的現(xiàn)有技術(shù)里,最接近理想 LLM 的技術(shù)方法。如果歸納下 ChatGPT 最突出特點(diǎn)的話,我會(huì)用下面八個(gè)字:“能力強(qiáng)大,善解人意”。
“能力強(qiáng)大” 這一點(diǎn),我相信應(yīng)該主要?dú)w功于 ChatGPT 所依托的基礎(chǔ) LLM GPT3.5。因?yàn)?ChatGPT 盡管加入了人工標(biāo)注數(shù)據(jù),但是量級(jí)只有數(shù)萬,這個(gè)規(guī)模的數(shù)據(jù)量,和訓(xùn)練 GPT 3.5 模型使用的幾千億 token 級(jí)別的數(shù)據(jù)量相比,包含的世界知識(shí)(數(shù)據(jù)中包含的事實(shí)與常識(shí))可謂滄海一粟,幾可忽略,基本不會(huì)對(duì)增強(qiáng) GPT 3.5 的基礎(chǔ)能力發(fā)揮什么作用。所以它的強(qiáng)大功能,應(yīng)該主要來自于隱藏在背后的 GPT 3.5。GPT 3.5 對(duì)標(biāo)理想 LLM 模型中的那個(gè)巨無霸模型。
那么,ChatGPT 向 GPT 3.5 模型注入新知識(shí)了嗎?應(yīng)該是注入了,這些知識(shí)就包含在幾萬人工標(biāo)注數(shù)據(jù)里,不過注入的不是世界知識(shí),而是人類偏好知識(shí)。所謂 “人類偏好”,包含幾方面的含義:首先,是人類表達(dá)一個(gè)任務(wù)的習(xí)慣說法。比如,人習(xí)慣說:“把下面句子從中文翻譯成英文”,以此表達(dá)一個(gè) “機(jī)器翻譯” 的需求,但是 LLM 又不是人,它怎么會(huì)理解這句話到底是什么意思呢?你得想辦法讓 LLM 理解這句命令的含義,并正確執(zhí)行。所以,ChatGPT 通過人工標(biāo)注數(shù)據(jù),向 GPT 3.5 注入了這類知識(shí),方便 LLM 理解人的命令,這是它 “善解人意” 的關(guān)鍵。其次,對(duì)于什么是好的回答,什么是不好的回答,人類有自己的標(biāo)準(zhǔn),例如比較詳細(xì)的回答是好的,帶有歧視內(nèi)容的回答是不好的,諸如此類。這是人類自身對(duì)回答質(zhì)量好壞的偏好。人通過 Reward Model 反饋給 LLM 的數(shù)據(jù)里,包含這類信息。總體而言,ChatGPT 把人類偏好知識(shí)注入 GPT 3.5,以此來獲得一個(gè)聽得懂人話、也比較禮貌的 LLM。
可以看出,ChatGPT 的最大貢獻(xiàn)在于:基本實(shí)現(xiàn)了理想 LLM 的接口層,讓 LLM 適配人的習(xí)慣命令表達(dá)方式,而不是反過來讓人去適配 LLM,絞盡腦汁地想出一個(gè)能 Work 的命令(這就是 instruct 技術(shù)出來之前,prompt 技術(shù)在做的事情),而這增加了 LLM 的易用性和用戶體驗(yàn)。是 InstructGPT/ChatGPT 首先意識(shí)到這個(gè)問題,并給出了很好的解決方案,這也是它最大的技術(shù)貢獻(xiàn)。相對(duì)之前的 few shot prompting,它是一種更符合人類表達(dá)習(xí)慣的人和 LLM 進(jìn)行交互的人機(jī)接口技術(shù)。
而這必將啟發(fā)后續(xù)的 LLM 模型,繼續(xù)在易用人機(jī)接口方面做進(jìn)一步的工作,讓 LLM 更聽話。
影響二:很多 NLP 子領(lǐng)域不再具備獨(dú)立研究?jī)r(jià)值
就 NLP 領(lǐng)域而言,這次范式轉(zhuǎn)換,意味著很多目前獨(dú)立存在的 NLP 研究領(lǐng)域,將被納入 LLM 的技術(shù)體系,進(jìn)而不再獨(dú)立存在,逐步消失。經(jīng)過第一次范式轉(zhuǎn)換,盡管 NLP 中很多 “中間任務(wù)”,繼續(xù)作為獨(dú)立研究領(lǐng)域存在不再必要,但是大多數(shù) “最終任務(wù)”,仍然是以獨(dú)立研究領(lǐng)域存在的,只是切換成在 “預(yù)訓(xùn)練 + fine-tuning” 框架下,面對(duì)領(lǐng)域獨(dú)有問題,陸續(xù)提出新的改進(jìn)方案。
目前研究表明,很多 NLP 任務(wù),隨著 LLM 模型規(guī)模增長,效果會(huì)大幅提升。據(jù)此,我覺得可得到如下推論:大多數(shù)某領(lǐng)域所謂 “獨(dú)有” 的問題,大概率只是缺乏領(lǐng)域知識(shí)導(dǎo)致的一種外在表象,只要領(lǐng)域知識(shí)足夠多,這個(gè)所謂領(lǐng)域獨(dú)有的問題,就可以被很好地解決掉,其實(shí)并不需要專門針對(duì)某個(gè)具體領(lǐng)域問題,冥思苦想去提出專用解決方案。也許 AGI 的真相超乎意料地簡(jiǎn)單:你只要把這個(gè)領(lǐng)域更多的數(shù)據(jù)交給 LLM,讓它自己學(xué)習(xí)更多知識(shí)即可。
在這個(gè)背景下,同時(shí),ChatGPT 證明了我們現(xiàn)在是可以直接去追求理想 LLM 模型的,那么,未來的技術(shù)發(fā)展趨勢(shì)應(yīng)該是:追求規(guī)模越來越大的 LLM 模型,通過增加預(yù)訓(xùn)練數(shù)據(jù)的多樣性,來涵蓋越來越多的領(lǐng)域,LLM 自主從領(lǐng)域數(shù)據(jù)中通過預(yù)訓(xùn)練過程學(xué)習(xí)領(lǐng)域知識(shí),隨著模型規(guī)模不斷增大,很多問題隨之得到解決。研究重心會(huì)投入到如何構(gòu)建這個(gè)理想 LLM 模型,而非去解決某個(gè)領(lǐng)域的具體問題。這樣,越來越多 NLP 的子領(lǐng)域會(huì)被納入 LLM 的技術(shù)體系,進(jìn)而逐步消失。
我認(rèn)為,判斷某個(gè)具體領(lǐng)域是否該立即停止獨(dú)立研究,其判斷標(biāo)準(zhǔn)可采取以下兩種方法,占其一即可:第一,判斷某個(gè)任務(wù),是否 LLM 的研究效果超過人類表現(xiàn),對(duì)于那些 LLM 效果超過人類的研究領(lǐng)域,已無獨(dú)立研究的必要。舉個(gè)例子,GLUE 與 SuperGLUE 測(cè)試集合里的很多任務(wù),目前 LLM 效果已超過人類表現(xiàn),與這個(gè)數(shù)據(jù)集合密切相關(guān)的研究領(lǐng)域,其實(shí)就沒有繼續(xù)獨(dú)立存在的必要。第二,對(duì)比兩種模式的任務(wù)效果,第一種模式是用較大的領(lǐng)域?qū)S脭?shù)據(jù)進(jìn)行 Fine-tuning,第二種是 few-shot prompting 或 instruct-based 方法。如果第二種方法效果達(dá)到或超過第一種方法,則意味著這個(gè)領(lǐng)域沒有繼續(xù)獨(dú)立存在的必要性。如果用這個(gè)標(biāo)準(zhǔn)來看,其實(shí)很多研究領(lǐng)域,目前 fine-tuning 效果還是占優(yōu)的(因?yàn)檫@種模式領(lǐng)域訓(xùn)練數(shù)據(jù)量大),看似還可獨(dú)立存在。但是考慮到很多任務(wù)隨著模型規(guī)模增大,few shot prompting 效果持續(xù)增長,隨著更大模型的出現(xiàn),這個(gè)拐點(diǎn)很可能短期就會(huì)達(dá)到。
如果上述猜測(cè)成立,將意味著如下殘酷事實(shí):對(duì)于很多 NLP 領(lǐng)域的研究人員,將面臨往何處去的選擇,是繼續(xù)做領(lǐng)域獨(dú)有問題呢?還是放棄這種看似前途不大的方式,轉(zhuǎn)而去建設(shè)更好的 LLM?如果選擇轉(zhuǎn)向去建設(shè) LLM,又有哪些機(jī)構(gòu)有能力、有條件去做這個(gè)事情呢?你對(duì)這個(gè)問題的回答會(huì)是什么呢?
影響三:更多 NLP 之外的研究領(lǐng)域?qū)⒈患{入 LLM 技術(shù)體系
如果站在 AGI 的視角,參照之前描述的理想 LLM 模型,它所能完成的任務(wù),不應(yīng)局限于 NLP 領(lǐng)域,或某一兩個(gè)學(xué)科領(lǐng)域,理想中的 LLM 應(yīng)該是領(lǐng)域無關(guān)的通用人工智能模型,它現(xiàn)在在某一兩個(gè)領(lǐng)域做得好,不代表只能做這些任務(wù)。ChatGPT 的出現(xiàn),證明了現(xiàn)在這個(gè)時(shí)期,我們?nèi)プ非?AGI 是有可行性的,而現(xiàn)在是拋開 “領(lǐng)域?qū)W科” 這個(gè)思維束縛的時(shí)候了。
ChatGPT 除了展示出以流暢的對(duì)話形式解決各種 NLP 任務(wù)外,也具備強(qiáng)大的代碼能力。很自然的,之后越來越多其它的研究領(lǐng)域,也會(huì)被逐步納入 LLM 體系中,成為通用人工智能的一部分。

LLM 從 NLP 向外進(jìn)行領(lǐng)域拓展,一個(gè)自然的選擇就是圖像處理及多模態(tài)相關(guān)任務(wù)。目前已經(jīng)有些工作在嘗試把多模態(tài)融入,讓 LLM 成為一個(gè)支持多模態(tài)輸入輸出的通用人機(jī)接口,典型的例子包括 DeepMind 的 Flamingo 和微軟的 “Language Models are General-Purpose Interfaces”,上圖展示了這種方式的概念結(jié)構(gòu)。
我的判斷是無論是圖像還是多模態(tài),未來被融入 LLM 成為好用的功能,可能比我們想象的進(jìn)度要慢。主要原因在于:盡管圖像領(lǐng)域最近兩年也一直在模仿 Bert 預(yù)訓(xùn)練的路子,嘗試引入自監(jiān)督學(xué)習(xí),釋放模型自主從圖像數(shù)據(jù)中學(xué)習(xí)知識(shí)的能力,典型技術(shù)就是 “對(duì)比學(xué)習(xí)” 和 MAE,這是兩條不同的技術(shù)路線。然而,從目前效果來看,盡管取得了很大的技術(shù)進(jìn)步,但貌似這條路尚未走通,這體現(xiàn)在圖像領(lǐng)域預(yù)訓(xùn)練模型應(yīng)用到下游任務(wù),帶來的效果收益,遠(yuǎn)不如 Bert 或 GPT 應(yīng)用在 NLP 下游任務(wù)那樣顯著。所以,圖像預(yù)處理模型仍需深入探索,以釋放圖像數(shù)據(jù)的潛力,而這會(huì)遲滯它們被統(tǒng)一到 LLM 大模型的時(shí)間。當(dāng)然,如果哪天這條路被趟通,大概率會(huì)復(fù)現(xiàn) NLP 領(lǐng)域目前的局面,就是圖像處理各個(gè)研究子領(lǐng)域可能會(huì)逐步消失,被融入到大型 LLM 中來,直接完成終端任務(wù)。
除了圖像與多模態(tài),很明顯,其它領(lǐng)域也會(huì)逐漸被納入到理想 LLM 中來,這個(gè)方向方興未艾,是具備高價(jià)值的研究主題。
以上是我對(duì)范式轉(zhuǎn)換的個(gè)人思考,接下來,我們來梳理下 GPT 3.0 之后 LLM 模型的主流技術(shù)進(jìn)展。如理想 LLM 模型所示,相關(guān)的技術(shù)其實(shí)可以分為兩大類;一類是關(guān)于 LLM 模型如何從數(shù)據(jù)中吸收知識(shí),也包括模型規(guī)模增長對(duì) LLM 吸收知識(shí)能力帶來的影響;第二類是關(guān)于人如何使用 LLM 內(nèi)在能力來解決任務(wù)的人機(jī)接口,包括 In Context Learning 和 Instruct 兩種模式。思維鏈(CoT)prompting 這種 LLM 推理技術(shù),本質(zhì)上也屬于 In Context Learning,因?yàn)楸容^重要,我就把它們單獨(dú)拎出來講一下。
02
學(xué)習(xí)者:
從無盡數(shù)據(jù)到海量知識(shí)
從目前研究結(jié)果看,Transformer 是足夠強(qiáng)大的特征抽取器,尚不需要做特別的改進(jìn)。那么通過預(yù)訓(xùn)練過程,Transformer 學(xué)到了什么?知識(shí)是如何存取的?我們又如何修正錯(cuò)誤知識(shí)?本節(jié)講述這方面的研究進(jìn)展。
求知之路:LLM 學(xué)到了什么知識(shí)
LLM 從海量自由文本中學(xué)習(xí)了大量知識(shí),如果把這些知識(shí)做粗略分類的話,可以分為語言類知識(shí)和世界知識(shí)兩大類。
語言類知識(shí)指的是詞法、詞性、句法、語義等有助于人類或機(jī)器理解自然語言的知識(shí)。關(guān)于 LLM 能否捕獲語言知識(shí)有較長研究歷史,自從 Bert 出現(xiàn)以來就不斷有相關(guān)研究,很早就有結(jié)論,各種實(shí)驗(yàn)充分證明 LLM 可以學(xué)習(xí)各種層次類型的語言學(xué)知識(shí),這也是為何使用預(yù)訓(xùn)練模型后,各種語言理解類自然語言任務(wù)獲得大幅效果提升的最重要原因之一。另外,各種研究也證明了淺層語言知識(shí)比如詞法、詞性、句法等知識(shí)存儲(chǔ)在 Transformer 的低層和中層,而抽象的語言知識(shí)比如語義類知識(shí),廣泛分布在 Transformer 的中層和高層結(jié)構(gòu)中。
世界知識(shí)指的是在這個(gè)世界上發(fā)生的一些真實(shí)事件(事實(shí)型知識(shí),F(xiàn)actual Knowledge),以及一些常識(shí)性知識(shí) (Common Sense Knowledge)。比如 “拜登是現(xiàn)任美國總統(tǒng)”、“拜登是美國人”、“烏克蘭總統(tǒng)澤連斯基與美國總統(tǒng)拜登舉行會(huì)晤”,這些都是和拜登相關(guān)的事實(shí)類知識(shí);而 “人有兩只眼睛”、“太陽從東方升起” 這些屬于常識(shí)性知識(shí)。關(guān)于 LLM 模型能否學(xué)習(xí)世界知識(shí)的研究也有很多,結(jié)論也比較一致:LLM 確實(shí)從訓(xùn)練數(shù)據(jù)中吸收了大量世界知識(shí),而這類知識(shí)主要分布在 Transformer 的中層和高層,尤其聚集在中層。而且,隨著 Transformer 模型層深增加,能夠?qū)W習(xí)到的知識(shí)數(shù)量逐漸以指數(shù)級(jí)增加(可參考:BERTnesia: Investigating the capture and forgetting of knowledge in BERT)。其實(shí),你把 LLM 看作是一種以模型參數(shù)體現(xiàn)的隱式知識(shí)圖譜,如果這么理解,我認(rèn)為是一點(diǎn)問題也沒有的。
“When Do You Need Billions of Words of Pre-training Data?” 這篇文章研究了預(yù)訓(xùn)練模型學(xué)習(xí)到的知識(shí)量與訓(xùn)練數(shù)據(jù)量的關(guān)系,它的結(jié)論是:對(duì)于 Bert 類型的語言模型來說,只用 1000 萬到 1 億單詞的語料,就能學(xué)好句法語義等語言學(xué)知識(shí),但是要學(xué)習(xí)事實(shí)類知識(shí),則要更多的訓(xùn)練數(shù)據(jù)。這個(gè)結(jié)論其實(shí)也是在意料中的,畢竟語言學(xué)知識(shí)相對(duì)有限且靜態(tài),而事實(shí)類知識(shí)則數(shù)量巨大,且處于不斷變化過程中。而目前研究證明了隨著增加訓(xùn)練數(shù)據(jù)量,預(yù)訓(xùn)練模型在各種下游任務(wù)中效果越好,這說明了從增量的訓(xùn)練數(shù)據(jù)中學(xué)到的更主要是世界知識(shí)。
記憶之地:LLM 如何存取知識(shí)
由上可知,LLM 確實(shí)從數(shù)據(jù)中學(xué)到了很多語言類及世界知識(shí)。那么,對(duì)于某條具體的知識(shí),LLM 把它存儲(chǔ)到了哪里?又是如何提取出來的?這也是一個(gè)有意思的問題。
顯然,知識(shí)一定存儲(chǔ)在 Transformer 的模型參數(shù)里。從 Transformer 的結(jié)構(gòu)看,模型參數(shù)由兩部分構(gòu)成:多頭注意力(MHA)部分占了大約參數(shù)總體的三分之一,三分之二的參數(shù)集中在 FFN 結(jié)構(gòu)中。MHA 主要用于計(jì)算單詞或知識(shí)間的相關(guān)強(qiáng)度,并對(duì)全局信息進(jìn)行集成,更可能是在建立知識(shí)之間的聯(lián)系,大概率不會(huì)存儲(chǔ)具體知識(shí)點(diǎn),那么很容易推論出 LLM 模型的知識(shí)主體是存儲(chǔ)在 Transformer 的 FFN 結(jié)構(gòu)里。

但這樣的定位,粒度還是太粗,無法很好回答具體某條知識(shí)是如何存儲(chǔ)與提取的,比如 “中國的首都是北京” 這條知識(shí),以三元組表達(dá)就是 < 北京,is-capital-of,中國 >,其中 “is-capital-of” 代表實(shí)體間關(guān)系。這條知識(shí)它存儲(chǔ)在 LLM 的哪里呢?
“Transformer Feed-Forward Layers Are Key-Value Memories” 給出了一個(gè)比較新穎的觀察視角,它把 Transformer 的 FFN 看成存儲(chǔ)大量具體知識(shí)的 Key-Value 存儲(chǔ)器。如上圖所示(圖左是原始論文圖,其實(shí)不太好理解,可以看做了注釋的圖右,更好理解些),F(xiàn)FN 的第一層是個(gè) MLP 寬隱層,這是 Key 層;第二層是 MLP 窄隱層,是 Value 層。FFN 的輸入層其實(shí)是某個(gè)單詞對(duì)應(yīng)的 MHA 的輸出結(jié)果 Embedding,也就是通過 Self Attention,將整個(gè)句子有關(guān)的輸入上下文集成到一起的 Embedding,代表了整個(gè)輸入句子的整體信息。
Key 層的每個(gè)神經(jīng)元節(jié)點(diǎn),記載了一對(duì) < Key,Value > 信息。比如對(duì)于上圖中 FFN 第一個(gè)隱層的第i個(gè)節(jié)點(diǎn)Ki,也許就是它記載了 < 北京,is-capital-of,中國 > 這條知識(shí)。Ki節(jié)點(diǎn)對(duì)應(yīng)的 key 向量,其實(shí)指的是節(jié)點(diǎn)Ki和輸入層每個(gè)節(jié)點(diǎn)的權(quán)重向量;而對(duì)應(yīng)的 Value 向量,指的是節(jié)點(diǎn)Ki和 FFN 第二層的 Value 層每個(gè)節(jié)點(diǎn)形成連接的權(quán)重向量。每個(gè)神經(jīng)元的 Key 向量,用于識(shí)別輸入中的某種語言或者知識(shí)模式,是一種模式探測(cè)器。如果輸入中包含它要檢測(cè)的某種模式,那么輸入向量和Ki節(jié)點(diǎn)的 key 權(quán)重進(jìn)行向量?jī)?nèi)積計(jì)算,加上 Relu,形成的大數(shù)值響應(yīng),意味著Ki檢測(cè)到了這個(gè)模式,于是再把這個(gè)響應(yīng)值,通過節(jié)點(diǎn)的 Value 權(quán)重向量向 FFN 第二層傳播。這等價(jià)于將 Value 向量的值,用響應(yīng)值加權(quán),然后傳遞并體現(xiàn)到第二層 Value 層每個(gè)節(jié)點(diǎn)的輸出上。如此這般,F(xiàn)FN 的正向傳播計(jì)算過程,看起來就像是通過 Key 檢測(cè)到某種知識(shí)模式,然后取出對(duì)應(yīng)的 Value,并把 Value 體現(xiàn)在 FFN 的第二層輸出上。當(dāng)然,F(xiàn)FN 第二層每個(gè)節(jié)點(diǎn),會(huì)收集 FFN 的 Key 層所有節(jié)點(diǎn)信息,所以是一種混合響應(yīng),而 Value 層所有節(jié)點(diǎn)的混合響應(yīng),可以解讀為代表輸出單詞的概率分布信息。
聽著可能還是比較復(fù)雜,我們用個(gè)極端的例子來說明。我們假設(shè)上圖的節(jié)點(diǎn)Ki就是記載 < 北京,is-capital-of,中國 > 這條知識(shí)的 Key-Value 存儲(chǔ)器,它的 Key 向量,用于檢測(cè)” 中國的首都是…” 這個(gè)知識(shí)模式,它的 Value 向量,基本存儲(chǔ)了與單詞 “北京” 的 Embedding 比較接近的向量。當(dāng) Transformer 的輸入是 “中國的首都是 [Mask]” 的時(shí)候,Ki節(jié)點(diǎn)從輸入層探測(cè)到這個(gè)知識(shí)模式,所以產(chǎn)生較大的響應(yīng)輸出。我們假設(shè) Key 層其它神經(jīng)元對(duì)這個(gè)輸入都沒有任何響應(yīng),那么對(duì)應(yīng)的 Value 層的節(jié)點(diǎn),其實(shí)只會(huì)接收到 “北京” 這個(gè) Value 對(duì)應(yīng)的單詞 embedding,并通過Ki的大響應(yīng)值,進(jìn)行了進(jìn)一步的數(shù)值放大。于是,Mask 位置對(duì)應(yīng)的輸出,就自然會(huì)輸出 “北京” 這個(gè)單詞。基本就是這么個(gè)過程,看著很復(fù)雜,其實(shí)很簡(jiǎn)單。
而且這篇文章還指出,Transformer 低層對(duì)句子的表層模式作出反應(yīng),高層對(duì)語義模式作出反應(yīng),就是說低層 FFN 存儲(chǔ)詞法、句法等表層知識(shí),中層和高層存儲(chǔ)語義及事實(shí)概念知識(shí),這和其它研究結(jié)論是一致的。
要我猜,把 FFN 看成 Key-Value 存儲(chǔ)器這種思路,很可能不是最終的正確答案,但是距離最終正確答案的距離,估計(jì)也不太遠(yuǎn)。
知識(shí)涂改液:如何修正 LLM 里存儲(chǔ)的知識(shí)
既然我們已知具體的某條世界知識(shí)存儲(chǔ)在某個(gè)或者某些 FFN 節(jié)點(diǎn)的參數(shù)里,自然會(huì)引發(fā)另外一個(gè)問題:我們能否修正 LLM 模型里存儲(chǔ)的錯(cuò)誤或者過時(shí)的知識(shí)呢?比如對(duì)于問題:“英國的現(xiàn)任首相是誰?” 鑒于近年來英國首相頻繁更迭,你猜 LLM 更傾向輸出 “鮑里斯” 還是更青睞 “蘇納克”?很明顯訓(xùn)練數(shù)據(jù)中包含 “鮑里斯” 的數(shù)據(jù)會(huì)更多,這種情況很大可能 LLM 會(huì)給出錯(cuò)誤回答,于是我們就有修正 LLM 里存儲(chǔ)的過時(shí)知識(shí)的必要性。
如果歸納下,目前有三類不同方法來修正 LLM 里蘊(yùn)含的知識(shí):
第一類方法從訓(xùn)練數(shù)據(jù)的源頭來修正知識(shí)。“Towards Tracing Factual Knowledge in Language Models Back to the Training Data” 這篇文章的研究目標(biāo)是:對(duì)于指定的某條知識(shí),我們是否可以定位到是哪些訓(xùn)練數(shù)據(jù)導(dǎo)致 LLM 學(xué)會(huì)了這條知識(shí)?答案是肯定的,這意味著我們可以逆向追蹤到某條知識(shí)對(duì)應(yīng)的訓(xùn)練數(shù)據(jù)源頭。如果利用這項(xiàng)技術(shù),假設(shè)我們想要?jiǎng)h除某條知識(shí),則可首先定位到其對(duì)應(yīng)的數(shù)據(jù)源頭,刪除數(shù)據(jù)源,然后重新預(yù)訓(xùn)練整個(gè) LLM 模型,這樣即可達(dá)成刪除 LLM 中相關(guān)知識(shí)的目的。但是這里有個(gè)問題,如果修正一小部分知識(shí),我們就需要重新做一次模型預(yù)訓(xùn)練,這樣做明顯成本太高。所以這種方法不會(huì)太有發(fā)展前景,可能比較適合那種對(duì)于某個(gè)特定類別數(shù)據(jù)的一次性大規(guī)模刪除場(chǎng)合,不適合少量多次的常規(guī)知識(shí)修正場(chǎng)景,比如可能比較適合用來做去除偏見等去 toxic 內(nèi)容的處理。
第二類方法是對(duì) LLM 模型做一次 fine-tuning 來修正知識(shí)。一個(gè)直觀能想到的方法是:我們可以根據(jù)要修正成的新知識(shí)來構(gòu)建訓(xùn)練數(shù)據(jù),然后讓 LLM 模型在這個(gè)訓(xùn)練數(shù)據(jù)上做 fine-tuning,這樣指導(dǎo) LLM 記住新的知識(shí),遺忘舊的知識(shí)。這個(gè)方法簡(jiǎn)單直觀,但是也有一些問題,首先它會(huì)帶來災(zāi)難遺忘問題,就是說除了忘掉該忘的知識(shí),還忘掉了不該忘的知識(shí),導(dǎo)致這么做了之后有些下游任務(wù)效果下降。另外,因?yàn)槟壳暗?LLM 模型規(guī)模非常大,即使是做 fine-tuning,如果次數(shù)頻繁,其實(shí)成本也相當(dāng)高。對(duì)這種方法感興趣的可以參考 “Modifying Memories in Transformer Models”。
另外一類方法直接修改 LLM 里某些知識(shí)對(duì)應(yīng)的模型參數(shù)來修正知識(shí)。假設(shè)我們想要把舊知識(shí) < 英國,現(xiàn)任首相,鮑里斯 >,修正到 < 英國,現(xiàn)任首相,蘇納克 >。首先我們想辦法在 LLM 模型參數(shù)中,定位到存儲(chǔ)舊知識(shí)的 FFN 節(jié)點(diǎn),然后可以強(qiáng)行調(diào)整更改 FFN 中對(duì)應(yīng)的模型參數(shù),將舊知識(shí)替換成新的知識(shí)。可以看出,這種方法涉及到兩項(xiàng)關(guān)鍵技術(shù):首先是如何在 LLM 參數(shù)空間中定位某條知識(shí)的具體存儲(chǔ)位置;其次是如何修正模型參數(shù),來實(shí)現(xiàn)舊知識(shí)到新知識(shí)的修正。關(guān)于這類技術(shù)的細(xì)節(jié),可以參考 “Locating and Editing Factual Associations in GPT” 和 “Mass-Editing Memory in a Transformer”。理解這個(gè)修正 LLM 知識(shí)的過程,其實(shí)對(duì)于更深入理解 LLM 的內(nèi)部運(yùn)作機(jī)制是很有幫助的。
03
規(guī)模效應(yīng):
當(dāng) LLM 越來越大時(shí)會(huì)發(fā)生什么
我們知道,近年來,LLM 模型規(guī)模在快速增長,目前效果最好的 LLM 模型,其參數(shù)規(guī)模大都超過了千億(100B)參數(shù)規(guī)模。比如,OpenAI 的 GPT 3 的規(guī)模為 175B,Google 的 LaMDA 規(guī)模為 137B,PaLM 的規(guī)模為 540B,DeepMind 的 Gogher 規(guī)模為 280B 等,不一而足。國內(nèi)也有中文巨型模型,比如智源 GLM 規(guī)模 130B,華為 “盤古” 規(guī)模 200B,百度 “文心” 規(guī)模 260B,浪潮 “源 1.0” 規(guī)模 245B。那么,一個(gè)很自然的問題就是:隨著 LLM 模型規(guī)模不斷增長,會(huì)發(fā)生些什么呢?
預(yù)訓(xùn)練模型的應(yīng)用往往是兩階段的:預(yù)訓(xùn)練階段,及具體場(chǎng)景應(yīng)用階段。在預(yù)訓(xùn)練階段,其優(yōu)化目標(biāo)是交叉熵,對(duì) GPT 這種自回歸語言模型來說,也就是看 LLM 是否正確預(yù)測(cè)到了下一個(gè)單詞;而場(chǎng)景應(yīng)用階段,一般要看具體場(chǎng)景的評(píng)價(jià)指標(biāo)。一般我們的直覺是:如果 LLM 模型在預(yù)訓(xùn)練階段的指標(biāo)越好,自然它解決下游任務(wù)的能力就越強(qiáng)。然而,事實(shí)并非完全如此。現(xiàn)有研究已證明,預(yù)訓(xùn)練階段的優(yōu)化指標(biāo)確實(shí)和下游任務(wù)表現(xiàn)出正相關(guān)關(guān)系,但是并非完全正相關(guān)。也就是說,只看預(yù)訓(xùn)練階段的指標(biāo),來判斷一個(gè) LLM 模型是否夠好,這是不夠的。基于此,我們分頭來看在這兩個(gè)不同階段,隨著 LLM 模型增大,有什么影響。

首先,我們先看在預(yù)訓(xùn)練階段,隨著模型規(guī)模逐步增大,會(huì)發(fā)生什么。OpenAI 在 “Scaling Laws for Neural Language Models” 中專門研究了這個(gè)問題,并提出 LLM 模型所遵循的 “伸縮法則”(scaling law)。如上圖所示,這個(gè)研究證明:當(dāng)我們獨(dú)立增加訓(xùn)練數(shù)據(jù)量、模型參數(shù)規(guī)模或者延長模型訓(xùn)練時(shí)間(比如從 1 個(gè) Epoch 到 2 個(gè) Epoch),預(yù)訓(xùn)練模型在測(cè)試集上的 Loss 都會(huì)單調(diào)降低,也就是說模型效果越來越好。
既然三個(gè)因素都重要,那么我們?cè)趯?shí)際做預(yù)訓(xùn)練的時(shí)候,就有一個(gè)算力如何分配的決策問題:假設(shè)用于訓(xùn)練 LLM 的算力總預(yù)算(比如多少 GPU 小時(shí)或者 GPU 天)給定,那么是應(yīng)該多增加數(shù)據(jù)量、減少模型參數(shù)呢?還是說數(shù)據(jù)量和模型規(guī)模同時(shí)增加,減少訓(xùn)練步數(shù)呢?此消彼長,某個(gè)要素規(guī)模增長,就要降低其它因素的規(guī)模,以維持總算力不變,所以這里有各種可能的算力分配方案。最終 OpenAI 選擇了同時(shí)增加訓(xùn)練數(shù)據(jù)量和模型參數(shù),但是采用早停策略 (early stopping) 來減少訓(xùn)練步數(shù)的方案。因?yàn)樗C明了:對(duì)于訓(xùn)練數(shù)據(jù)量和模型參數(shù)這兩個(gè)要素,如果只單獨(dú)增加其中某一個(gè),這不是最好的選擇,最好能按照一定比例同時(shí)增加兩者,它的結(jié)論是優(yōu)先增加模型參數(shù),然后才是訓(xùn)練數(shù)據(jù)量。假設(shè)用于訓(xùn)練 LLM 的算力總預(yù)算增加了 10 倍,那么應(yīng)該增加 5.5 倍的模型參數(shù)量,1.8 倍的訓(xùn)練數(shù)據(jù)量,此時(shí)模型效果最佳。
DeepMind 的一項(xiàng)研究(參考:Training Compute-Optimal Large Language Models)更深入地探究了這個(gè)問題,其基本結(jié)論和 OpenAI 的結(jié)論差不多,比如確實(shí)需要同時(shí)增加訓(xùn)練數(shù)據(jù)量和模型參數(shù),模型效果才會(huì)更好。而很多大模型在做預(yù)訓(xùn)練的時(shí)候,并沒有考慮這一點(diǎn),很多 LLM 大模型只是單調(diào)增加模型參數(shù),而固定住了訓(xùn)練數(shù)據(jù)量,這個(gè)做法其實(shí)是不對(duì)的,限制了 LLM 模型的潛力。但是它修正了兩者的比例關(guān)系,認(rèn)為訓(xùn)練數(shù)據(jù)量和模型參數(shù)是同等重要的,也就是說,假設(shè)用于訓(xùn)練 LLM 的算力總預(yù)算增加了 10 倍,那么應(yīng)該增加 3.3 倍的模型參數(shù)量,3.3 倍的訓(xùn)練數(shù)據(jù)量,這樣模型效果才最好。
這意味著:增加訓(xùn)練數(shù)據(jù)量的重要性,比我們之前所認(rèn)為的,還要重要。基于這個(gè)認(rèn)知,DeepMind 在設(shè)計(jì) Chinchilla 模型時(shí),在算力分配上選擇了另外一種配置:對(duì)標(biāo)數(shù)據(jù)量 300B、模型參數(shù)量 280B 的 Gopher 模型,Chinchilla 選擇增加 4 倍的訓(xùn)練數(shù)據(jù),但是將模型參數(shù)降低為 Gopher 的四分之一,大約為 70B。但是無論預(yù)訓(xùn)練指標(biāo),還是很多下游任務(wù)指標(biāo),Chinchilla 效果都要優(yōu)于規(guī)模更大的 Gopher。
這帶給我們?nèi)缦聠⑹荆何覀兛梢赃x擇放大訓(xùn)練數(shù)據(jù),并同比例地減少 LLM 模型參數(shù),以達(dá)到在不降低模型效果的前提下,極大縮小模型規(guī)模的目的。縮小模型規(guī)模有很多好處,比如在應(yīng)用的時(shí)候,推理速度會(huì)快很多等,無疑這是一個(gè)很有前途的 LLM 發(fā)展路線。
以上是從預(yù)訓(xùn)練階段來看模型規(guī)模的影響,如果從 LLM 解決下游具體任務(wù)效果的角度來看,隨著模型規(guī)模增大,不同類型的任務(wù)有不同的表現(xiàn),具體而言,有以下三類情況。

第一類任務(wù)完美體現(xiàn)了 LLM 模型的 scaling law,就是說隨著模型規(guī)模逐步放大,任務(wù)的表現(xiàn)越來越好,如上圖里的(a)圖所示。這類任務(wù)通常符合如下共性:它們往往都是知識(shí)密集型任務(wù),也就是說如果 LLM 模型包含的知識(shí)量越多,這類任務(wù)表現(xiàn)越好。而很多研究已經(jīng)證明越大的 LLM 模型學(xué)習(xí)效率越高,也就是說相同訓(xùn)練數(shù)據(jù)量,模型越大任務(wù)效果越好,說明面對(duì)的即使是同樣的一批訓(xùn)練數(shù)據(jù),更大的 LLM 模型相對(duì)規(guī)模小一些的模型,從中學(xué)到了更多的知識(shí)。更何況一般情況下,在增大 LLM 模型參數(shù)的時(shí)候,往往會(huì)同步增加訓(xùn)練數(shù)據(jù)量,這意味著大模型可以從更多數(shù)據(jù)中學(xué)習(xí)更多的知識(shí)點(diǎn)。這些研究可以很好地解釋上圖,為何隨著模型規(guī)模增大,這些知識(shí)密集型的任務(wù)效果越來越好。大多數(shù)傳統(tǒng)的自然語言理解類任務(wù),其實(shí)都屬于這種知識(shí)密集型任務(wù),而很多任務(wù)在近兩年獲得了極大的效果提升,甚至超過了人類表現(xiàn)。很明顯,這大概率是 LLM 模型的規(guī)模增長帶來的,而非歸功于某項(xiàng)具體的技術(shù)改進(jìn)。
第二類任務(wù)展現(xiàn)出 LLM 具備某種 “涌現(xiàn)能力(Emergent Ability)”,如上圖(b)所示。所謂 “涌現(xiàn)能力”,指的是當(dāng)模型參數(shù)規(guī)模未能達(dá)到某個(gè)閥值時(shí),模型基本不具備解決此類任務(wù)的任何能力,體現(xiàn)為其性能和隨機(jī)選擇答案效果相當(dāng),但是當(dāng)模型規(guī)模跨過閥值,LLM 模型對(duì)此類任務(wù)的效果就出現(xiàn)突然的性能增長。也就是說,模型規(guī)模是解鎖 (unlock) LLM 新能力的關(guān)鍵,隨著模型規(guī)模越來越大,會(huì)逐漸解鎖 LLM 越來越多的新能力。這是個(gè)很神奇的現(xiàn)象,因?yàn)樗馕吨缦伦屓藢?duì)未來可報(bào)樂觀預(yù)期的可能:或許很多任務(wù),目前 LLM 還不能很好地解決,甚至站在現(xiàn)在這個(gè)時(shí)刻的我們看起來,LLM 完全沒有能力解決這類任務(wù),但因 LLM 具備 “涌現(xiàn)能力”,所以如果我們繼續(xù)推大模型,也許某一天它的這項(xiàng)能力就被突然解鎖了。LLM 模型的規(guī)模增長會(huì)給我們帶來意想不到的精彩禮物。
“Beyond the Imitation Game: Quantifying and extrapolating the capabilities of language models” 這篇文章指出,這類體現(xiàn)出 “涌現(xiàn)能力” 的任務(wù)也有一些共性:這些任務(wù)一般由多步驟構(gòu)成,要解決這些任務(wù),往往需要先解決多個(gè)中間步驟,而邏輯推理能力在最終解決這類任務(wù)中發(fā)揮重要作用。思維鏈(Chain of Thought)Prompting 是典型的增強(qiáng) LLM 推理能力的技術(shù),能大幅提升此類任務(wù)的效果,關(guān)于 CoT 技術(shù),在隨后小節(jié)內(nèi)容會(huì)做解釋,此處暫不展開。
問題是,為何 LLM 會(huì)出現(xiàn)這種 “涌現(xiàn)能力” 現(xiàn)象呢?上述文章以及 “Emergent Abilities of Large Language Models” 給出了幾個(gè)可能的解釋:
一種可能解釋是有些任務(wù)的評(píng)價(jià)指標(biāo)不夠平滑。比如說有些生成任務(wù)的判斷標(biāo)準(zhǔn),它要求模型輸出的字符串,要和標(biāo)準(zhǔn)答案完全匹配才算對(duì),否則就是 0 分。所以,即使隨著模型增大,其效果在逐步變好,體現(xiàn)為輸出了更多的正確字符片段,但是因?yàn)闆]有完全對(duì),只要有任何小錯(cuò)誤都給 0 分,只有當(dāng)模型足夠大,輸出片段全部正確才能得分。也就是說,因?yàn)橹笜?biāo)不夠平滑,所以不能體現(xiàn) LLM 其實(shí)正在逐步改善任務(wù)效果這一現(xiàn)實(shí),看起來就是 “涌現(xiàn)能力” 這種外在表現(xiàn)。
另外一種可能的解釋是:有些任務(wù)由若干中間步驟構(gòu)成,隨著模型規(guī)模增大,解決每個(gè)步驟的能力也在逐步增強(qiáng),但是只要有一個(gè)中間步驟是錯(cuò)的,最終答案就是錯(cuò)的,于是也會(huì)導(dǎo)致這種表面的 “涌現(xiàn)能力” 現(xiàn)象。
當(dāng)然,上面的解釋目前還都是猜想,至于為何 LLM 會(huì)出現(xiàn)這種現(xiàn)象,還需要進(jìn)一步更深入的研究。

還有少部分任務(wù),隨著模型規(guī)模增長,任務(wù)的效果曲線展現(xiàn)出 U 形特性:隨著模型規(guī)模逐漸變大,任務(wù)效果逐漸變差,但是當(dāng)模型規(guī)模進(jìn)一步增長,則效果開始越來越好,呈現(xiàn)出 U 形增長趨勢(shì),如上圖所示的粉紅色 PaLM 模型在兩個(gè)任務(wù)上的指標(biāo)走勢(shì)。為何這些任務(wù)表現(xiàn)得如此特殊呢?“Inverse scaling can become U-shaped” 這篇文章給出了一種解釋:這些任務(wù),內(nèi)部其實(shí)隱含了兩種不同類型的子任務(wù),一種是真正的任務(wù),另外一種是 “干擾任務(wù)(distractor task)”。當(dāng)模型規(guī)模小的時(shí)候,無法識(shí)別任意一種子任務(wù),所以模型的表現(xiàn)跟隨機(jī)選擇答案差不多,當(dāng)模型增長到中等規(guī)模的時(shí)候,主要執(zhí)行的是干擾任務(wù),所以對(duì)真正的任務(wù)效果有負(fù)面影響,體現(xiàn)為真正任務(wù)效果的下降,而當(dāng)進(jìn)一步增加模型規(guī)模,則 LLM 可以忽略干擾任務(wù),執(zhí)行真正的任務(wù),體現(xiàn)為效果開始增長。
對(duì)于那些隨著模型規(guī)模增大,效果一直下降的任務(wù),如果采用思維鏈(CoT)Prompting,則部分任務(wù)的表現(xiàn)轉(zhuǎn)換為遵循 Scaling law,即模型規(guī)模越大效果越好,而其它任務(wù)則轉(zhuǎn)換為 U 性增長曲線。這其實(shí)側(cè)面說明了:此類任務(wù)應(yīng)屬于推理類型的任務(wù),所以加入 CoT 后任務(wù)表現(xiàn)會(huì)發(fā)生質(zhì)的變化。
04
人機(jī)接口:
從 In Context Learning
到 Instruct 理解
一般我們經(jīng)常提到的人和 LLM 的接口技術(shù)包括:zero shot prompting、few shot prompting、In Context Learning,以及 Instruct。這些其實(shí)都是表達(dá)某個(gè)具體任務(wù)的描述方式。不過如果你看文獻(xiàn),會(huì)發(fā)現(xiàn)叫法比較亂。
其中 Instruct 是 ChatGPT 的接口方式,就是說人以自然語言給出任務(wù)的描述,比如 “把這個(gè)句子從中文翻譯成英文”,類似這種。zero shot prompting 我理解其實(shí)就是現(xiàn)在的 Instruct 的早期叫法,以前大家習(xí)慣叫 zero shot,現(xiàn)在很多改成叫 Instruct。盡管是一個(gè)內(nèi)涵,但是具體做法是兩種做法。早期大家做 zero shot prompting,實(shí)際上就是不知道怎么表達(dá)一個(gè)任務(wù)才好,于是就換不同的單詞或者句子,反復(fù)在嘗試好的任務(wù)表達(dá)方式,這種做法目前已經(jīng)被證明是在擬合訓(xùn)練數(shù)據(jù)的分布,其實(shí)沒啥意思。目前 Instruct 的做法則是給定命令表述語句,試圖讓 LLM 理解它。所以盡管表面都是任務(wù)的表述,但是思路是不同的。
而 In Context Learning 和 few shot prompting 意思類似,就是給 LLM 幾個(gè)示例作為范本,然后讓 LLM 解決新問題。我個(gè)人認(rèn)為 In Context Learning 也可以理解為某項(xiàng)任務(wù)的描述,只是 Instruct 是一種抽象的描述方式,In Context Learning 是一種例子示范的例子說明法。當(dāng)然,鑒于目前這幾個(gè)叫法用的有點(diǎn)亂,所以上述理解僅代表個(gè)人看法。
所以我們此處只對(duì) In Context Learning 和 Instruct 進(jìn)行介紹,不再提 zero shot 和 few shot 了。
神秘的 In Context Learning
如果你細(xì)想,會(huì)發(fā)現(xiàn) In Context Learning 是個(gè)很神奇的技術(shù)。它神奇在哪里呢?神奇在你提供給 LLM 幾個(gè)樣本示例

Fine-tuning 和 In Context Learning 表面看似都提供了一些例子給 LLM,但兩者有質(zhì)的不同(參考上圖示意):Fine-tuning 拿這些例子當(dāng)作訓(xùn)練數(shù)據(jù),利用反向傳播去修正 LLM 的模型參數(shù),而修正模型參數(shù)這個(gè)動(dòng)作,確實(shí)體現(xiàn)了 LLM 從這些例子學(xué)習(xí)的過程。但是,In Context Learning 只是拿出例子讓 LLM 看了一眼,并沒有根據(jù)例子,用反向傳播去修正 LLM 模型參數(shù)的動(dòng)作,就要求它去預(yù)測(cè)新例子。既然沒有修正模型參數(shù),這意味著貌似 LLM 并未經(jīng)歷一個(gè)學(xué)習(xí)過程,如果沒有經(jīng)歷學(xué)習(xí)過程,那它為何能夠做到僅看一眼,就能預(yù)測(cè)對(duì)新例子呢?這正是 In Context Learning 的神奇之處。這是否讓你想起了一句歌詞:“只是因?yàn)樵谌巳褐卸嗫戳四阋谎?再也沒能忘掉你容顏”,而這首歌名叫 “傳奇”。你說傳奇不傳奇?看似 In Context Learning 沒從例子里學(xué)習(xí)知識(shí),實(shí)際上,難道 LLM 通過一種奇怪的方式去學(xué)習(xí)?還是說,它確實(shí)也沒學(xué)啥?關(guān)于這個(gè)問題的答案,目前仍是未解之謎。現(xiàn)有一些研究各有各的說法,五花八門,很難判斷哪個(gè)講述的是事實(shí)的真相,甚至有些研究結(jié)論還相互矛盾。這里提供幾個(gè)目前的說法,至于誰對(duì)誰錯(cuò),只能你自己把握了。當(dāng)然,我認(rèn)為追求這個(gè)神奇現(xiàn)象背后的真相,是一個(gè)好的研究課題。
試圖證明 In Context Learning 沒有從例子中學(xué)習(xí)的工作是 “Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?”。它發(fā)現(xiàn)了:在提供給 LLM 的樣本示例
真正對(duì) In Context Learning 影響比較大的是:X和Y的分布,也就是輸入文本X的分布和候選答案Y有哪些,如果你改變這兩個(gè)分布,比如把Y替換成候選答案之外的內(nèi)容,則 In Context Learning 效果急劇下降。
總之,這個(gè)工作證明了 In Context Learning 并未學(xué)習(xí)映射函數(shù),但是輸入和輸出的分布很重要,這兩個(gè)不能亂改。
有些工作認(rèn)為 LLM 還是從給出的示例學(xué)習(xí)了這個(gè)映射函數(shù)Y=f(x),不過是種隱式地學(xué)習(xí)。比如 “What learning algorithm is in-context learning? Investigations with linear models” 認(rèn)為 Transformer 能夠隱式地從示例中學(xué)習(xí)X到Y(jié)的映射過程,它的激活函數(shù)中包含了一些簡(jiǎn)單映射函數(shù),而 LLM 通過示例能夠激發(fā)對(duì)應(yīng)的那一個(gè)。而 “Why Can GPT Learn In-Context? Language Models Secretly Perform Gradient Descent as Meta-Optimizers” 這篇文章則將 ICL 看作是一種隱式的 Fine-tuning。
總而言之,目前這還是一個(gè)未解之謎。
神奇的 Instruct 理解
我們可以把 Instruct 當(dāng)作一種方便人類理解的任務(wù)表述,在這個(gè)前提下,目前關(guān)于 Instruct 的研究可以分成兩種:偏學(xué)術(shù)研究的 Instruct,以及關(guān)于人類真實(shí)需求描述的 Instruct。

我們先來看第一種:偏學(xué)術(shù)研究的 Instruct。它的核心研究主題是多任務(wù)場(chǎng)景下,LLM 模型對(duì) Instruct 理解的泛化能力。如上圖中 FLAN 模型所示,就是說有很多 NLP 任務(wù),對(duì)于每個(gè)任務(wù),研究人員構(gòu)造一個(gè)或者多個(gè) Prompt 模版作為任務(wù)的 Instruct,然后用訓(xùn)練例子對(duì) LLM 模型進(jìn)行微調(diào),讓 LLM 以同時(shí)學(xué)習(xí)多個(gè)任務(wù)。訓(xùn)練好模型后,給 LLM 模型一個(gè)它沒見過的全新任務(wù)的 Instruct,然后讓 LLM 解決 zero shot 任務(wù),從任務(wù)解決得是否足夠好,來判斷 LLM 模型是否有對(duì) Instruct 理解的泛化能力。
如果歸納下目前的研究結(jié)論(可參考 “Scaling Instruction-Fine-tuned Language Models”/“Super-NaturalInstructions: Generalization via Declarative Instructions on 1600+ NLP Tasks”),能夠有效增加 LLM 模型 Instruct 泛化能力的因素包括:增加多任務(wù)的任務(wù)數(shù)量、增加 LLM 模型大小、提供 CoT Prompting, 以及增加任務(wù)的多樣性。如果采取任意一項(xiàng)措施,都可以增加 LLM 模型的 Instruct 理解能力。
第二種是人類真實(shí)需求下的 Instruct,這類研究以 InstructGPT 和 ChatGPT 為代表。這類工作也是基于多任務(wù)的,但是和偏向?qū)W術(shù)研究類工作最大的不同,在于它是面向人類用戶真實(shí)需求的。為什么這么說呢?因?yàn)樗鼈冇糜?LLM 多任務(wù)訓(xùn)練的任務(wù)描述 Prompt,是從大量用戶提交的真實(shí)請(qǐng)求中抽樣而來的,而不是固定好研究任務(wù)的范圍,然后讓研究人員來寫任務(wù)描述 prompt。這里所謂的 “真實(shí)需求”,體現(xiàn)在兩個(gè)方面:首先,因?yàn)槭菑挠脩籼峤坏娜蝿?wù)描述里隨機(jī)抽取的,所以涵蓋的任務(wù)類型更多樣化,也更符合用戶的真實(shí)需求;其次,某個(gè)任務(wù)的 prompt 描述,是用戶提交的,體現(xiàn)了一般用戶在表達(dá)任務(wù)需求時(shí)會(huì)怎么說,而不是你認(rèn)為用戶會(huì)怎么說。很明顯,這類工作改出來的 LLM 模型,用戶體驗(yàn)會(huì)更好。
InstructGPT 論文里,也拿這種方法和 FLAN 那種 Instruct based 方法做了比較。首先在 GPT3 上用 FLAN 提到的任務(wù)、數(shù)據(jù)以及 Prompt 模版進(jìn)行微調(diào),來在 GPT 3 上復(fù)現(xiàn) FLAN 方法,然后和 InstructGPT 進(jìn)行比較,因?yàn)?InstructGPT 的基礎(chǔ)模型也是 GPT3,所以只有數(shù)據(jù)和方法的差別,兩者可比,結(jié)果發(fā)現(xiàn) FLAN 方法的效果,距離 InstructGPT 有很大的差距。那么背后的原因是什么呢?論文分析數(shù)據(jù)后認(rèn)為,F(xiàn)LAN 方法涉及到的任務(wù)領(lǐng)域相對(duì)少,是 InstructGPT 涉及領(lǐng)域的子集,所以效果不好。也就是說,F(xiàn)LAN 論文里涉及到的任務(wù)和用戶真實(shí)需求是不符的,而這導(dǎo)致在真實(shí)場(chǎng)景下效果不夠好。而這對(duì)我們的啟示是:從用戶數(shù)據(jù)中收集真實(shí)需求,這事情是很重要的。
In Context Learning 和 Instruct 的聯(lián)系
如果我們假設(shè) In Context Learning 是用一些例子來具象地表達(dá)任務(wù)命令,Instruct 是一種更符合人類習(xí)慣的抽象任務(wù)描述。那么,一個(gè)很自然的問題是:它們之間有什么聯(lián)系嗎?比如,我們是否能夠提供給 LLM 完成某個(gè)任務(wù)的若干具體示例,讓 LLM 找出其對(duì)應(yīng)的自然語言描述的 Instruct 命令?

目前有零星的工作在探索這個(gè)問題,我認(rèn)為這個(gè)方向是很有研究?jī)r(jià)值的。先說答案,答案是:Yes,LLM Can。“Large Language Models Are Human-Level Prompt Engineers” 是做這個(gè)方向很有趣的工作,如上圖所示,對(duì)于某項(xiàng)任務(wù),給 LLM 一些示例,讓 LLM 自動(dòng)生成能夠描述這項(xiàng)任務(wù)的自然語言命令,然后它再用 LLM 生成的任務(wù)描述去測(cè)試任務(wù)效果。它使用的基礎(chǔ)模型是 GPT 3 和 InstructGPT,經(jīng)過這項(xiàng)技術(shù)加持后,LLM 生成的 Instruct 的效果相比未采用這項(xiàng)技術(shù)的 GPT 3 以及 InstuctGPT 來說,指標(biāo)有極大地提升,而且在一些任務(wù)上超過人類的表現(xiàn)。
這說明了:具象的任務(wù)示例和任務(wù)的自然語言描述之間,有種神秘的內(nèi)在聯(lián)系。至于這種聯(lián)系到底是什么?我們目前對(duì)此還一無所知。
05
智慧之光:
如何增強(qiáng) LLM 的推理能力
目前很多研究已證明 LLM 對(duì)于知識(shí)具有強(qiáng)大的記憶能力,但是,一般我們不會(huì)因?yàn)橐粋€(gè)人記憶能力強(qiáng),就說這人很聰明,是否具有強(qiáng)大的推理能力,往往是我們判斷一個(gè)人是否聰明的重要標(biāo)準(zhǔn)。類似的,如果 LLM 的效果想讓人覺得很驚艷,強(qiáng)大的推理能力是必備的。推理能力本質(zhì)上是綜合運(yùn)用很多相關(guān)知識(shí)點(diǎn),去推導(dǎo)出新知識(shí)或新結(jié)論。關(guān)于 LLM 的推理能力,是最近一年來 LLM 里最重要和熱門的研究領(lǐng)域之一。于是,我們關(guān)心的問題就是:LLM 具備推理能力嗎?如果具備,那么它的推理能力夠強(qiáng)嗎?
這兩個(gè)問題目前的答案似乎應(yīng)該是:當(dāng)模型規(guī)模足夠大的時(shí)候,LLM 本身是具備推理能力的,在簡(jiǎn)單推理問題上,LLM 已經(jīng)達(dá)到了很好的能力,但是復(fù)雜推理問題上,還需要更多深入的研究。
如果梳理現(xiàn)有 LLM 推理相關(guān)工作的話,我把它們歸到兩大類,體現(xiàn)出挖掘或促進(jìn) LLM 推理能力不同的技術(shù)思路:第一類研究比較多,可以統(tǒng)稱為基于 Prompt 的方法,核心思想是通過合適的提示語或提示樣本,更好地激發(fā)出 LLM 本身就具備的推理能力,Google 在這個(gè)方向做了大量很有成效的工作。第二類做法是在預(yù)訓(xùn)練過程中引入程序代碼,和文本一起參與預(yù)訓(xùn)練,以此進(jìn)一步增強(qiáng) LLM 的推理能力,這應(yīng)該是 OpenAI 實(shí)踐出的思路。比如 ChatGPT 肯定具備很強(qiáng)的推理能力,但它并不要求用戶必須提供一些推理示例,所以 ChatGPT 強(qiáng)大的推理能力,大概率來源于使用代碼參與 GPT 3.5 的預(yù)訓(xùn)練。
這兩種思路其實(shí)大方向是迥異的:利用代碼增強(qiáng) LLM 推理能力,這體現(xiàn)出一種通過增加多樣性的訓(xùn)練數(shù)據(jù),來直接增強(qiáng) LLM 推理能力的思路;而基于 Prompt 的方法,它并不會(huì)促進(jìn) LLM 本身的推理能力,只是讓 LLM 在解決問題過程中更好地展示出這種能力的技術(shù)方法。可以看出,前者(代碼方法)治本,后者治標(biāo)。當(dāng)然,兩者其實(shí)也是互補(bǔ)的,但從長遠(yuǎn)看,治本的方法更重要。
基于 Prompt 的方法
這方面工作非常多,如果歸納一下的話,大致可以分為三條技術(shù)路線。

第一種思路是直接在問題上追加輔助推理 Prompt。這種方法簡(jiǎn)單直接,但在眾多領(lǐng)域都很有效。這個(gè)做法是由 “Large language models are zero-shot reasoners” 提出的,也被稱為 zero-shot CoT。具體而言,分為兩個(gè)階段(如上圖所示),第一階段在提問的問題上追加 “Let’s think step by step” 這句提示語,LLM 會(huì)輸出具體的推理過程;第二階段,在第一階段的問題后,拼接 LLM 輸出的具體推理過程,并再追加 Prompt=“Therefore, the answer (arabic numerals) is”,此時(shí) LLM 會(huì)給出答案。如此簡(jiǎn)單的操作,卻可以大幅增加 LLM 在各項(xiàng)推理任務(wù)中的效果,比如在數(shù)學(xué)推理測(cè)試集 GSM8K 上,加上提示語后,推理準(zhǔn)確率直接從原先的 10.4% 提升到了 40.4%,可謂神奇。
為什么 LLM 會(huì)具備給一句 “Let’s think step by step” 提示語,就能列出詳細(xì)的推理步驟并算出答案呢?其原因目前尚無定論,我的猜測(cè)是:很可能因?yàn)轭A(yù)訓(xùn)練數(shù)據(jù)里面存在大量的此種數(shù)據(jù),就是以 “Let’s think step by step” 開頭,然后后面是詳細(xì)的推理步驟,最后給出答案,而 LLM 在預(yù)訓(xùn)練的時(shí)候記住了這些模式。而當(dāng)我們輸入這個(gè)提示語的時(shí)候,激發(fā) LLM 模糊得 “回憶” 起某些例子的推導(dǎo)步驟,于是即可模仿這些例子進(jìn)行步驟推理并給出答案。當(dāng)然這只是我的無依據(jù)推論,若事實(shí)真的如此,如果你看過后面介紹的標(biāo)準(zhǔn) CoT 做法,會(huì)發(fā)現(xiàn) Zero-shot CoT 本質(zhì)上和標(biāo)準(zhǔn) CoT 很可能沒什么區(qū)別,只是標(biāo)準(zhǔn) CoT 由人工來寫推理步驟的示例,而 Zero-shot CoT 大概率是通過提示語,激活了記憶中的某些包含推理步驟的示例,很可能是如此區(qū)別。而標(biāo)準(zhǔn) CoT 效果比 Zero-Shot CoT 效果好也完全可以理解,因?yàn)楫吘箍?LLM 回憶示例,精準(zhǔn)性估計(jì)不會(huì)太高,而人工給出的示例,準(zhǔn)確性是有保障的,所以自然標(biāo)準(zhǔn) CoT 效果會(huì)更好。
這側(cè)面說明了一個(gè)道理,就是 LLM 本身是具備推理能力的,只是我們沒有辦法把它的這種能力激發(fā)出來而已,通過合適的提示語來進(jìn)行兩步提示,就在一定程度上可以釋放出它的這種潛力。另外,對(duì)于中文,很可能存在另外一個(gè)黃金提示語,比如 “詳細(xì)解題思路如下”,類似這種,因?yàn)橹形恼Z料在講解推理步驟的時(shí)候,經(jīng)常用的引導(dǎo)句和 “讓我們一步一步來思考” 應(yīng)該是不同的,這是明顯的西方說法,而探索出這個(gè)中文黃金提示語,其實(shí)也是很有必要的。
第二種思路一般被稱為基于示例的思維鏈(few-shot CoT,Chain of Thought)Prompting。這個(gè)方向目前是 LLM 推理研究的主方向,很多工作都是在這個(gè)思路上做的,我們簡(jiǎn)單介紹幾個(gè)效果顯著的代表性工作,基本能代表 CoT 的技術(shù)發(fā)展方向。

CoT 的主體思想其實(shí)很直白;為了教會(huì) LLM 模型學(xué)會(huì)推理,給出一些人工寫好的推理示例,示例里把得到最終答案前,一步步的具體推理步驟說清楚,而這些人工寫的詳細(xì)推理過程,就是思維鏈 Prompting,具體例子可參照上圖中藍(lán)色文字部分。CoT 的意思是讓 LLM 模型明白一個(gè)道理;就是在推理過程中,步子不要邁得太大,否則很容易出錯(cuò),改變思維模式,化大問題為小問題,步步為營,積小勝為大勝。最早明確提出 CoT 這個(gè)概念的文章是 “Chain of thought prompting elicits reasoning in large language models”,論文發(fā)布于 22 年 1 月份,雖然做法很簡(jiǎn)單,但是應(yīng)用 CoT 后 LLM 模型的推理能力得到了巨大提升,GSM8K 數(shù)學(xué)推理測(cè)試集準(zhǔn)確率提高到 60.1% 左右。當(dāng)然,這種給出詳細(xì)推理步驟和中間過程的思想,并非 CoT 最早提出的,更早一些的 “scratchpad” 技術(shù)(可參考:Show Your Work: Scratchpads for Intermediate Computation with Language Models)首先采用了類似的思路。

CoT 提出不久,很快在 22 年 3 月份,一項(xiàng)被稱為 “Self-Consistency” 的改進(jìn)技術(shù)就將 GSM8K 測(cè)試集準(zhǔn)確率提高到 74.4%,提出這項(xiàng)改進(jìn)的論文是 “Self-Consistency Improves Chain of Thought Reasoning in Language Models”。“Self-Consistency” 的思路也很直觀(參考上圖):首先可以利用 CoT 給出幾個(gè)寫了推理過程的示例,然后要求 LLM 對(duì)給定的問題進(jìn)行推理,如果是 CoT,直接輸出一個(gè)推理過程和答案,整個(gè)過程就結(jié)束了。“Self-Consistency” 則不然,它要求 LLM 輸出多個(gè)不同的推理過程和答案,然后采用投票的方式選出最佳答案,思路非常簡(jiǎn)單直接,但是效果也確實(shí)好。“Self-Consistency” 其實(shí)是教導(dǎo) LLM 學(xué)會(huì)這么一個(gè)道理:孔乙己說過茴香豆的 “茴” 字有四種寫法,類似的,一個(gè)數(shù)學(xué)題的正確解法也可以有很多種,每個(gè)不同的推導(dǎo)過程都指向最終的答案。條條大路通羅馬,雖說也有個(gè)別迷路走到北京的,但是迷路的畢竟是少數(shù),看看大多數(shù)人走到哪里,哪里就是正確答案。簡(jiǎn)單的方法往往蘊(yùn)含著深刻的哲學(xué)含義,是不是這道理?
再往后,“On the Advance of Making Language Models Better Reasoners” 這個(gè)工作在 “Self-Consistency” 基礎(chǔ)上,進(jìn)一步集成了 “從一個(gè) Prompt 問題拓展到多個(gè) Prompt 問題、檢查推理中間步驟的正確性以及對(duì)多個(gè)輸出的回答加權(quán)投票” 這三個(gè)改進(jìn)點(diǎn),將 GSM8K 測(cè)試集準(zhǔn)確率提高到 83% 左右。

第三種思路體現(xiàn)了一種分治算法的思想。當(dāng)然這個(gè)所謂 “分治” 是我歸納的,別人沒這么說。這種思路的核心思想是:對(duì)于一個(gè)復(fù)雜的推理問題,我們把它分解成若干容易解決的子問題,一一解決掉子問題后,我們?cè)購淖訂栴}的答案推導(dǎo)復(fù)雜問題的答案。你看這確實(shí)比較類似分治算法的思想吧。我個(gè)人覺得,這種思路可能才是揭示問題本質(zhì)、最終解決 LLM 復(fù)雜推理問題正宗的道路。我們以 “Least-to-most prompting” 技術(shù)為例來說明這種思路的一種具體實(shí)現(xiàn)方式,如上圖所示:它分為兩個(gè)階段,第一個(gè)階段,從原始問題我們可以得知最終要問的問題是什么,我們假設(shè)最終問題是 Final Q,然后從原始問題填充 Prompt 模版:“如果要解決 Final Q 問題,那么我需要先解決”,然后把原始問題和這個(gè) Prompt 交給 LLM,讓 LLM 模型給出答案,等于讓 LLM 給出最終問題的前置子問題 Sub Q;接下來我們進(jìn)入第二個(gè)階段,讓 LLM 先回答剛才拿到的子問題 Sub Q,并拿到對(duì)應(yīng)的答案,然后原始問題拼接子問題 Sub Q 及對(duì)應(yīng)答案,再去問 LLM 最終那個(gè)問題 Final Q,此時(shí) LLM 會(huì)給出最后的答案。如此這般,體現(xiàn)出拆解子問題,并從子問題的答案逐步找出最終答案的思路。
代碼預(yù)訓(xùn)練增強(qiáng) LLM 推理能力
以上是目前利用 Prompt 激發(fā) LLM 模型推理能力的三種主流做法,而關(guān)于 LLM 的推理能力,目前還觀察到一個(gè)有趣且費(fèi)解的現(xiàn)象:除了文本外,如果能夠加入程序代碼一起參與模型預(yù)訓(xùn)練,則能大幅提升 LLM 模型的推理能力。這個(gè)結(jié)論從不少論文的實(shí)驗(yàn)部分都可以得出(可以參考:AUTOMATIC CHAIN OF THOUGHT PROMPTING IN LARGE LANGUAGE MODELS/Challenging BIG-Bench tasks and whether chain-of-thought can solve them 等論文的實(shí)驗(yàn)部分)。

上圖給出了一份實(shí)驗(yàn)數(shù)據(jù),來自于論文 “On the Advance of Making Language Models Better Reasoners”,其中 GPT3 davinci 就是標(biāo)準(zhǔn)的 GPT 3 模型,基于純文本訓(xùn)練;code-davinci-002(OpenAI 內(nèi)部稱為 Codex)是同時(shí)在 Code 和 NLP 數(shù)據(jù)上訓(xùn)練的模型。如果比較兩者效果,可以看出,不論采用具體哪種推理方法,僅僅是從純文本預(yù)訓(xùn)練模型切換到文本和 Code 混合預(yù)訓(xùn)練模型,在幾乎所有測(cè)試數(shù)據(jù)集合上,模型推理能力都得到了巨大的效果提升,比如我們以 “Self Consistency” 方法為例,在大多數(shù)據(jù)集合上的性能提升,都直接超過了 20 到 50 個(gè)百分點(diǎn),這是很恐怖的性能提升,而其實(shí)在具體推理模型層面,我們什么也沒做,僅僅是預(yù)訓(xùn)練的時(shí)候除了文本,額外加入了程序代碼而已。
除了這個(gè)現(xiàn)象,從上圖數(shù)據(jù)中,我們還可以得出其它一些結(jié)論,比如 GPT 3 這種純文本預(yù)訓(xùn)練模型,其實(shí)是具備相當(dāng)程度的推理能力的,除了在 GSM8K 這種數(shù)學(xué)推理上效果比較差外,其它推理數(shù)據(jù)數(shù)據(jù)集合表現(xiàn)也還可以,前提你需要采用合適的方法,來激發(fā)出它本身就具備的這種能力;再比如,text-davinci-002,也就是在 code-davinci-002 基礎(chǔ)上加入 instruct fine-tuning 后的模型(就是加入 InstructGPT 或 ChatGPT 模型的第一步),其推理能力要弱于 Codex,但是有其它研究表明它在自然語言處理任務(wù)又要強(qiáng)于 Codex。而這貌似說明了,加入 instruct fine-tuning,會(huì)損害 LLM 模型的推理能力,但是會(huì)在一定程度上提升自然語言理解能力。而這些結(jié)論其實(shí)都是很有意思的,也能啟發(fā)后續(xù)進(jìn)一步的思考和探索。
那么,一個(gè)自然的疑問是:為何預(yù)訓(xùn)練模型可以從代碼的預(yù)訓(xùn)練中獲得額外的推理能力?確切原因目前未知,值得深入探索。我猜測(cè)可能是因?yàn)樵及姹镜?Codex(只使用代碼訓(xùn)練,可參考文獻(xiàn):Evaluating Large Language Models Trained on Code)的代碼訓(xùn)練是從文本生成代碼,而且代碼中往往包含很多文本注釋,本質(zhì)上這類似于預(yù)訓(xùn)練模型做了 < 文本,Code > 兩種數(shù)據(jù)的多模態(tài)對(duì)齊工作。而數(shù)據(jù)中必然包含相當(dāng)比例的數(shù)學(xué)或邏輯問題的代碼、描述和注釋,很明顯這些數(shù)學(xué)類或邏輯推理類的數(shù)據(jù),對(duì)于解決下游數(shù)學(xué)推理問題是有幫助的,我猜大概率原因在此。
關(guān)于 LLM 推理能力的思考
上面介紹了 LLM 推理的主流技術(shù)思路和現(xiàn)有的一些結(jié)論,接下來談?wù)勎覍?duì) LLM 模型推理技術(shù)的思考,以下內(nèi)容純個(gè)人推斷,沒有太多證據(jù),還請(qǐng)謹(jǐn)慎參考。我的判斷是:雖然最近一年來,關(guān)于激發(fā) LLM 的推理能力,這方面的技術(shù)進(jìn)展很快,也取得了很大的技術(shù)進(jìn)步,但是總體感覺是,我們可能走在正確的方向上,但是距離接觸到真正的問題本質(zhì)還有一段距離,對(duì)此要有更深入的思考和探索。
首先,我比較贊同上述分治算法的主體思路,對(duì)于復(fù)雜的推理問題,我們應(yīng)該把它拆解成若干簡(jiǎn)單的子問題,因?yàn)樽訂栴}對(duì)于 LLM 來說回答正確的概率就大很多,讓 LLM 一一回答子問題后,再逐步推導(dǎo)出最終答案。受到 “Least-to-most prompting” 技術(shù)的啟發(fā),如果進(jìn)一步思考,我覺得 LLM 推理本質(zhì)上很可能會(huì)是如下兩種可能的其中之一:不斷和 LLM 進(jìn)行交互的圖上推理問題,抑或是不斷和 LLM 進(jìn)行交互的程序流程圖執(zhí)行問題。

先說圖上推理問題,如上圖所示,假設(shè)我們有辦法能夠把復(fù)雜問題拆解成由子問題或者子步驟構(gòu)成的圖結(jié)構(gòu),圖中的節(jié)點(diǎn)是子問題或者子步驟,圖中的邊代表了子問題之間的依賴關(guān)系,就是說只有回答好子問題 A,才能回答子問題 B,而且圖中大概率存在循環(huán)結(jié)構(gòu),就是反復(fù)做某幾個(gè)子步驟。假設(shè)我們能夠得到上述的子問題拆解圖,那么可以根據(jù)依賴關(guān)系,引導(dǎo) LLM 一步一步按照?qǐng)D結(jié)構(gòu),回答必須首先回答的子問題,直到推導(dǎo)出最終答案。

再說程序流程圖問題,參考上圖,假設(shè)我們有辦法把復(fù)雜問題拆解成子問題或子步驟,并產(chǎn)生一個(gè)由子步驟構(gòu)成的類似程序流程圖的結(jié)構(gòu),在這個(gè)結(jié)構(gòu)里,有些步驟會(huì)反復(fù)執(zhí)行多次(循環(huán)結(jié)構(gòu)),有些步驟的執(zhí)行需要進(jìn)行條件判斷(條件分支)。總而言之,在執(zhí)行每個(gè)子步驟的時(shí)候和 LLM 進(jìn)行交互,得到子步驟的答案,然后按照流程不斷執(zhí)行,直到輸出最終答案。類似這種模式。假設(shè)這個(gè)思路大致正確的話,也許可以從這個(gè)角度來解釋為何加入代碼會(huì)增強(qiáng)預(yù)訓(xùn)練模型的推理能力:大概率因?yàn)?< 文本,代碼 > 的多模態(tài)預(yù)訓(xùn)練模型,在模型內(nèi)部是通過類似這種隱含的程序流程圖作為兩個(gè)模態(tài)的橋梁,將兩者聯(lián)系起來的,即由文本描述到隱含的流程圖,再映射到由流程圖產(chǎn)生具體的代碼。也就是說,這種多模態(tài)預(yù)訓(xùn)練,可以增強(qiáng) LLM 模型從文本構(gòu)建出隱含的流程圖并按照流程圖執(zhí)行的能力,也就是加強(qiáng)了它的推理能力。
當(dāng)然,上述思路最大的問題是,我們?nèi)绾胃鶕?jù)文本描述的問題,能夠靠 LLM 模型,或者其它模型,得到圖結(jié)構(gòu)或者流程圖結(jié)構(gòu)?這個(gè)可能是其中的難點(diǎn)。一種可能的思路就類似繼續(xù)增強(qiáng)文本和更高質(zhì)量的代碼預(yù)訓(xùn)練,走隱式學(xué)習(xí)內(nèi)部隱含結(jié)構(gòu)的方法。而目前的 CoT 技術(shù),如果套到上述思路來思考的話,可以這么理解:標(biāo)準(zhǔn) CoT,其實(shí)就是靠自然語言文本來描述圖結(jié)構(gòu)或者程序流程圖的;而 “Least-to-most prompting” 技術(shù),則是試圖根據(jù)最后一個(gè)圖節(jié)點(diǎn),靠倒推來試圖推導(dǎo)出其中的圖結(jié)構(gòu),但是很明顯,目前的方法限制了它倒推的深度,也就是說它只能推導(dǎo)出非常簡(jiǎn)單的圖結(jié)構(gòu),這正是限制它能力的所在。
06
未來之路:
LLM 研究趨勢(shì)及值得研究的重點(diǎn)方向
這里列出一些我個(gè)人認(rèn)為比較重要的 LLM 研究領(lǐng)域,或值得深入探索的研究方向。
探索 LLM 模型的規(guī)模天花板
盡管繼續(xù)推大 LLM 模型的規(guī)模,這事看似沒有技術(shù)含量,但是其實(shí)這個(gè)事情異常重要。我個(gè)人判斷,自從 Bert 出現(xiàn)以來,到 GPT 3,再到 ChatGPT,大概率這些給人印象深刻的關(guān)鍵技術(shù)突破,核心貢獻(xiàn)都來自于 LLM 模型規(guī)模的增長,而非某項(xiàng)具體技術(shù)。說不定,揭開 AGI 真正的鑰匙就是:超大規(guī)模及足夠多樣性的數(shù)據(jù)、超大規(guī)模的模型,以及充分的訓(xùn)練過程。再者,做超大規(guī)模的 LLM 模型,對(duì)技術(shù)團(tuán)隊(duì)的工程實(shí)現(xiàn)能力要求是非常高的,也不能認(rèn)為這事情缺乏技術(shù)含量。
那么繼續(xù)推大 LLM 模型規(guī)模,有什么研究意義呢?我覺得有兩方面的價(jià)值。首先,如上所述,我們已知,對(duì)于知識(shí)密集型的任務(wù),隨著模型規(guī)模越大,各種任務(wù)的效果會(huì)越來越好;而對(duì)很多推理類型的有難度的任務(wù),加上 CoT Prompting 后,其效果也呈現(xiàn)出遵循 Scaling law 的趨向。那么,很自然的一個(gè)問題就是:對(duì)于這些任務(wù),LLM 的規(guī)模效應(yīng),能將這些任務(wù)解決到何種程度?這是包括我在內(nèi),很多人關(guān)心的問題。其次,考慮到 LLM 具備的神奇的 “涌現(xiàn)能力”,如果我們繼續(xù)增加模型規(guī)模,它會(huì)解鎖哪些讓我們意想不到的新能力呢?這也是很有意思的問題。考慮到以上兩點(diǎn),我們?nèi)匀恍枰粩嘣龃竽P鸵?guī)模,看看模型規(guī)模對(duì)解決各類任務(wù)的天花板在哪里。
當(dāng)然,這種事情也就只能說說,對(duì) 99.99% 的從業(yè)者來說,是沒有機(jī)會(huì)和能力做這個(gè)事情的。要做這個(gè)事情,對(duì)研究機(jī)構(gòu)的財(cái)力及投入意愿、工程能力、技術(shù)熱情,都有極高的要求,缺一不可。能做這事情的機(jī)構(gòu),粗估下來,國外不超過 5 家,國內(nèi)不超過 3 家。當(dāng)然,考慮到成本問題,未來也許會(huì)出現(xiàn) “股份制大模型”,就是有能力的幾家機(jī)構(gòu)合作,群策群力,一起來共建超級(jí)大模型的現(xiàn)象。
增強(qiáng) LLM 的復(fù)雜推理能力
正如之前對(duì) LLM 推理能力的敘述,盡管 LLM 在最近一年推理能力得到了很大的提升,但是很多研究(參考:Limitations of Language Models in Arithmetic and Symbolic Induction/Large Language Models Still Can’t Plan)表明,目前 LLM 能夠解決得比較好的推理問題,往往都相對(duì)簡(jiǎn)單,LLM 的復(fù)雜推理能力仍然薄弱,比如即使是簡(jiǎn)單的字符拷貝推理或者加減乘除運(yùn)算,當(dāng)字符串或者數(shù)字非常長的時(shí)候,LLM 推理能力會(huì)極速下降,再比如行為規(guī)劃能力等復(fù)雜推理能力很弱。總而言之,加強(qiáng) LLM 的復(fù)雜推理能力,應(yīng)該是 LLM 未來研究中最重要的環(huán)節(jié)之一。
前文有述,加入代碼加入預(yù)訓(xùn)練,這是一種直接增強(qiáng) LLM 推理能力的方向。這個(gè)方向目前研究尚顯不足,更像是實(shí)踐經(jīng)驗(yàn)的總結(jié),探索背后的原理,并進(jìn)而引入更多類型除代碼外的新型數(shù)據(jù)來增強(qiáng) LLM 的推理能力,這可能是更本質(zhì)提升推理能力的方向。
LLM 納入 NLP 之外更多其它研究領(lǐng)域
目前的 ChatGPT 擅長 NLP 和 Code 任務(wù),作為通向 AGI 的重要種子選手,將圖像、視頻、音頻等圖像與多模態(tài)集成進(jìn)入 LLM,乃至 AI for Science、機(jī)器人控制等更多、差異化更明顯的其它領(lǐng)域逐步納入 LLM,是 LLM 通往 AGI 的必經(jīng)之路。而這個(gè)方向才剛剛開始,因此具備很高的研究?jī)r(jià)值。
更易用的人和 LLM 的交互接口
如前所述,ChatGPT 的最大技術(shù)貢獻(xiàn)即在此。但是很明顯,目前的技術(shù)并不完美,肯定還有很多命令 LLM 理解不了。所以,沿著這個(gè)方向,尋找更好的技術(shù),來讓人類使用自己習(xí)慣的命令表達(dá)方式,而 LLM 又能聽懂,這是個(gè)新的,且非常有前景的技術(shù)方向。
建設(shè)高難度的綜合任務(wù)評(píng)測(cè)數(shù)據(jù)集
好的評(píng)測(cè)數(shù)據(jù)集,是引導(dǎo)技術(shù)不斷進(jìn)步的基石。隨著 LLM 模型逐步增大,任務(wù)效果快速提升,導(dǎo)致很多標(biāo)準(zhǔn)測(cè)試集快速過時(shí)。也就是說,這些數(shù)據(jù)集合相對(duì)現(xiàn)有技術(shù)來說,太容易了,在沒有難度的測(cè)試集合下,我們不知道目前技術(shù)的缺陷和盲點(diǎn)在哪里。所以構(gòu)建高難度的測(cè)試集合,是促進(jìn) LLM 技術(shù)進(jìn)步的關(guān)鍵所在。
目前行業(yè)應(yīng)出現(xiàn)了一些新的測(cè)試集,有代表性的包括 BIGBench、OPT-IML 等。這些測(cè)試集合體現(xiàn)出一些特性,比如相對(duì) LLM 現(xiàn)有技術(shù)具備一定的難度、綜合了各種各樣多種類型的任務(wù)等。
受到 ChatGPT 的啟發(fā),我覺得除此外應(yīng)納入另一考慮因素:體現(xiàn)真實(shí)用戶需求。就是說,這些任務(wù)的表述由用戶真實(shí)發(fā)起,這種方式構(gòu)建出來的 LLM 模型,才能解決用戶實(shí)際需求。
除此外,相信 LLM 會(huì)快速將能力溢出到 NLP 之外的領(lǐng)域,而如何融入更多其它領(lǐng)域的評(píng)測(cè)數(shù)據(jù),也是需要提前去考慮。
高質(zhì)量數(shù)據(jù)工程
對(duì)于預(yù)訓(xùn)練模型來說,數(shù)據(jù)是其根本,預(yù)訓(xùn)練過程可以理解為從數(shù)據(jù)中吸取其中所包含知識(shí)的過程。因此,我們需要進(jìn)一步加強(qiáng)對(duì)高質(zhì)量數(shù)據(jù)的挖掘、收集及清洗等工作。
關(guān)于數(shù)據(jù),需要考慮兩個(gè)方面:數(shù)據(jù)的質(zhì)量和數(shù)量。而根據(jù) T5 的對(duì)比實(shí)驗(yàn),我們可以得出結(jié)論:在數(shù)量和質(zhì)量?jī)蓚€(gè)因素里,質(zhì)量?jī)?yōu)先,正確的道路應(yīng)該是在保證數(shù)據(jù)質(zhì)量的前提下,再去增大數(shù)據(jù)規(guī)模。
數(shù)據(jù)質(zhì)量,包括數(shù)據(jù)的信息含量以及數(shù)據(jù)的多樣性等多個(gè)衡量標(biāo)準(zhǔn),比如 Wiki 明顯就屬于世界知識(shí)密度極高的高質(zhì)量數(shù)據(jù),這是從信息含量來說的;而增加數(shù)據(jù)類型的多樣性,無疑是激發(fā) LLM 各種新能力的根本,比如加入問答網(wǎng)站的數(shù)據(jù),對(duì)于 LLM 的 QA 能力提升是有直接幫助的。多樣化的數(shù)據(jù)賦予了 LLM 更好解決更多不同類型任務(wù)的能力,所以,這可能是數(shù)據(jù)質(zhì)量里最關(guān)鍵的標(biāo)準(zhǔn)。
關(guān)于數(shù)據(jù)數(shù)量,原則上互聯(lián)網(wǎng)上公開發(fā)布的數(shù)據(jù)都可以納入 LLM 模型的預(yù)訓(xùn)練過程。那么,它的極限在哪里?“Will we run out of data? An analysis of the limits of scaling datasets in Machine Learning” 對(duì)此進(jìn)行了估算,結(jié)論是到 2026 年左右,高質(zhì)量的 NLP 數(shù)據(jù)將會(huì)用光,低質(zhì)量 NLP 數(shù)據(jù)會(huì)在 2030 到 2050 年用光,而低質(zhì)量圖像數(shù)據(jù)會(huì)在 2030 到 2060 年用光。而這意味著:要么到時(shí)我們有新類型的數(shù)據(jù)源,要么我們必須增加 LLM 模型對(duì)數(shù)據(jù)的利用效率。否則,目前這種數(shù)據(jù)驅(qū)動(dòng)的模型優(yōu)化方式將會(huì)停止進(jìn)步,或者收益減少。
超大 LLM 模型 Transformer 的稀疏化
目前規(guī)模最大的 LLM 中,有相當(dāng)比例的模型采取了稀疏(Sparse)結(jié)構(gòu),比如 GPT 3、PaLM、GLaM 等,GPT 4 大概率也會(huì)走稀疏模型路線。之所以采用 Sparse 化的模型,主要好處是它可以極大減少 LLM 的訓(xùn)練時(shí)間和在線推理時(shí)間。Switch Transformer 論文里指出:在相同算力預(yù)算的前提下,使用稀疏化 Transformer,相對(duì) Dense Transformer,LLM 模型的訓(xùn)練速度可以提升 4 倍到 7 倍。為何 Sparse 模型可以加快訓(xùn)練和推理時(shí)間呢?這是因?yàn)楸M管模型參數(shù)巨大,但是對(duì)于某個(gè)訓(xùn)練實(shí)例,Sparse 模型通過路由機(jī)制,只使用整個(gè)參數(shù)中的一小部分,參與訓(xùn)練和推理的活躍參數(shù)量比較少,所以速度快。
我認(rèn)為未來超大的 LLM 模型大概率會(huì)收斂到稀疏模型。主要有兩個(gè)原因:一方面,現(xiàn)有研究表明(參考:Large Models are Parsimonious Learners: Activation Sparsity in Trained Transformers),標(biāo)準(zhǔn)的 Dense Transformer 在訓(xùn)練和推理時(shí),它本身也是稀疏激活的,就是說只有部分參數(shù)會(huì)被激活,大部分參數(shù)沒有參與訓(xùn)練和推理過程。既然這樣,我們不如直接遷移到稀疏模型;另外,毫無疑問 LLM 模型的規(guī)模會(huì)繼續(xù)推大,而高昂的訓(xùn)練成本是妨礙其進(jìn)一步擴(kuò)大模型的重要阻力,使用稀疏模型可以極大降低超大模型的訓(xùn)練成本,所以隨著模型規(guī)模越大,稀疏模型帶來的收益越明顯。考慮到這兩個(gè)方面,大概率未來更大的 LLM 模型會(huì)采用稀疏模型方案。
那為何目前其它大規(guī)模模型不走稀疏模型的路線呢?因?yàn)?Sparse 模型存在訓(xùn)練不穩(wěn)定、容易過擬合等問題,不太容易訓(xùn)練好。所以,如何修正稀疏模型面臨的問題,設(shè)計(jì)出更容易訓(xùn)練的稀疏模型,是很重要的未來研究方向。
07
取經(jīng)之路:
復(fù)刻 ChatGPT 時(shí)要注意些什么
如果希望能復(fù)刻類似 ChatGPT 這種效果令人驚艷的 LLM 模型,綜合目前的各種研究結(jié)論,在做技術(shù)選型時(shí)需要重點(diǎn)權(quán)衡如下問題:
首先,在預(yù)訓(xùn)練模式上,我們有三種選擇:GPT 這種自回歸語言模型,Bert 這種雙向語言模型,以及 T5 這種混合模式 (Encoder-Decoder 架構(gòu),在 Encoder 采取雙向語言模型,Decoder 采取自回歸語言模型,所以是一種混合結(jié)構(gòu),但其本質(zhì)仍屬于 Bert 模式)。我們應(yīng)選擇 GPT 這種自回歸語言模型,其原因在本文范式轉(zhuǎn)換部分有做分析。目前看,國內(nèi) LLM 在做這方面技術(shù)選型的時(shí)候,貌似很多都走了 Bert 雙向語言模型或 T5 混合語言模型的技術(shù)路線,很可能方向走偏了。
第二,強(qiáng)大的推理能力是讓用戶認(rèn)可 LLM 的重要心理基礎(chǔ),而如果希望 LLM 能夠具備強(qiáng)大的推理能力,根據(jù)目前經(jīng)驗(yàn),最好在做預(yù)訓(xùn)練的時(shí)候,要引入大量代碼和文本一起進(jìn)行 LLM 訓(xùn)練。至于其中的道理,在本文前面相關(guān)部分有對(duì)應(yīng)分析。
第三,如果希望模型參數(shù)規(guī)模不要那么巨大,但又希望效果仍然足夠好,此時(shí)有兩個(gè)技術(shù)選項(xiàng)可做配置:要么增強(qiáng)高質(zhì)量數(shù)據(jù)收集、挖掘、清理等方面的工作,意思是我模型參數(shù)可以是 ChatGPT/GPT 4 的一半,但是要想達(dá)到類似的效果,那么高質(zhì)量訓(xùn)練數(shù)據(jù)的數(shù)量就需要是 ChatGPT/GPT 4 模型的一倍(Chinchilla 的路子);另外一個(gè)可以有效減小模型規(guī)模的路線是采取文本檢索(Retrieval based)模型 + LLM 的路線,這樣也可以在效果相當(dāng)?shù)那疤嵯拢瑯O大減少 LLM 模型的參數(shù)規(guī)模。這兩個(gè)技術(shù)選型不互斥,反而是互補(bǔ)的,也即是說,可以同時(shí)采取這兩個(gè)技術(shù),在模型規(guī)模相對(duì)比較小的前提下,達(dá)到超級(jí)大模型類似的效果。
第四,超級(jí)大模型因?yàn)槟P鸵?guī)模大,所以訓(xùn)練成本過高,導(dǎo)致很少有機(jī)構(gòu)有能力去做這件事。而且由上文分析可見,繼續(xù)不斷推大 LLM 模型規(guī)模是肯定會(huì)發(fā)生、也應(yīng)該去做的事情。于是,如何通過技術(shù)手段降低 LLM 的訓(xùn)練成本就很重要。LLM 的特征抽取器 Sparse 化是有效降低模型訓(xùn)練及推理成本的技術(shù)選擇。由此可見,隨著模型越來越大,LLM 模型 Sparse 化是一個(gè)應(yīng)該考慮的選項(xiàng)。
第五,ChatGPT 是目前最接近理想 LLM 的技術(shù)方案,而理想中的 LLM 應(yīng)該是以一個(gè)幾乎無所不能的基礎(chǔ)通用大模型作為依托,來支持各種各樣的上層任務(wù)類型。目前看,支持越來越多的任務(wù)類型,主要是通過增加 LLM 預(yù)訓(xùn)練數(shù)據(jù)的多樣性來達(dá)成的,數(shù)據(jù)多樣性越好,LLM 能夠支持的任務(wù)類型就越豐富。所以,應(yīng)該重視通過增加數(shù)據(jù)多樣性來增加 LLM 新能力的思路。
第六,易用的人機(jī)操作接口。人類用他們自己習(xí)慣的表達(dá)方式來描述任務(wù),而 LLM 要能夠理解這些 Instruct 的真實(shí)含義。另外,也要注意這些 Instruct 是符合人類真實(shí)需求的,就是說,要從最終用戶那里收集任務(wù)表述方式,而不能靠研發(fā)人員自己的臆想或猜測(cè)。ChatGPT 給我最大的啟發(fā)其實(shí)是這一點(diǎn),至于是否用增強(qiáng)學(xué)習(xí)我倒覺得不重要,其它替代技術(shù)應(yīng)該也能做類似的事情。
08
ChatGPT:
為什么是 OpenAI
為什么是 OpenAI 作出了 ChatGPT,而不是其它機(jī)構(gòu)呢?我們?cè)谶@里可以做個(gè)簡(jiǎn)單分析。
在本文開頭,我們提到了 OpenAI 看待 LLM 的理念。OpenAI 是怎么看待 LLM 的呢?回顧它不斷推出的技術(shù),可以看出,它其實(shí)從 GPT 1.0 開始,基本就堅(jiān)定地把 LLM 看做是通往 AGI 的一條必由之路。具體而言,在 OpenAI 眼中,未來的 AGI 應(yīng)該長這個(gè)樣子:有一個(gè)任務(wù)無關(guān)的超大型 LLM,用來從海量數(shù)據(jù)中學(xué)習(xí)各種知識(shí),這個(gè) LLM 以生成一切的方式,來解決各種各樣的實(shí)際問題,而且它應(yīng)該能聽懂人類的命令,以便于人類使用。其實(shí)對(duì) LLM 發(fā)展理念的理解,在前半部分,就是 “構(gòu)建一個(gè)任務(wù)無關(guān)的超大型 LLM,讓它從海量數(shù)據(jù)中學(xué)習(xí)各種知識(shí)”,這一點(diǎn)幾乎是大家的共識(shí),能體現(xiàn)出 OpenAI 眼光的其實(shí)是后半部分。
OpenAI 的理念比較超前,對(duì)自我定位從一開始就定得比較高,始終堅(jiān)定不移地探索上述方式是否可以實(shí)現(xiàn) AGI。OpenAI 之所以能作出 ChatGPT,勝在一個(gè)是定位比較高,另一個(gè)是不受外界干擾,態(tài)度上堅(jiān)定不移。
我們可以回顧下它走的一些關(guān)鍵路程:GPT 1.0 走的是生成模式的自回歸語言模型路線,比 Bert 出來的還早些。Bert 證明了:雙向語言模型對(duì)于很多 NLP 理解類任務(wù),效果比自回歸這種單向語言模型效果更好。盡管如此,GPT 2.0 并沒有因此切換到雙向語言模型這條路上,仍然走文本生成的路,而且開始嘗試零示例(zero shot)prompt 和少量示例(few shot)prompt。其實(shí)這時(shí)候, OpenAI 心目中的 AGI 已經(jīng)開始浮出水面,逐漸顯示出輪廓了。只是因?yàn)?zero shot/few shot 效果比 Bert+fine-tuning 差的比較遠(yuǎn),所以大家都沒太當(dāng)回事,甚至不理解它為什么要始終堅(jiān)持走單向語言模型的路線。這個(gè)時(shí)候,我估計(jì)即使是 OpenAI 自己,也不一定能確保這條路肯定能走通。
但是,這不妨礙它繼續(xù)在這條路上往后走。GPT 3.0 已經(jīng)展示出了比較強(qiáng)大的 zero shot/few shot prompt 能力,這時(shí)候 OpenAI 心目中的 AGI 已經(jīng)完全漏出水面,輪廓清晰,而且它的效果也證明了這條路,是有較大可能走得通的。GPT 3.0 是一個(gè)決定 LLM 發(fā)展方向的叉路口和分水嶺,與之對(duì)應(yīng)的另外一條路是 “Bert+fine-tuning” 模式。在這個(gè)岔路口,不同的從業(yè)者選擇走上了不同的道路,后面的技術(shù)差距也是從這里開始拉開的。很遺憾地是,國內(nèi)很多從業(yè)者選擇繼續(xù)在 “Bert+fine-tuning” 這條路上往后走,這也是造成今天落后局面的一個(gè)關(guān)鍵時(shí)間節(jié)點(diǎn)。再往后,就是 InstructGPT 和 ChatGPT 了,OpenAI 通過 ChatGPT 證明了一點(diǎn);雖然我們距離真正的 AGI,可能還有很長的路要走,但是通過超大 LLM 走向 AGI 這條路,目前看是可行的。