導(dǎo)讀:ChatGPT出現(xiàn)后驚喜或驚醒了很多人。驚喜是因?yàn)闆]想到大型語言模型(LLM,Large Language Model)效果能好成這樣;驚醒是頓悟到我們對(duì)LLM的認(rèn)知及發(fā)展理念,距離世界最先進(jìn)的想法,差得有點(diǎn)遠(yuǎn)。我屬于既驚喜又驚醒的那一批,也是典型的中國(guó)人,中國(guó)人善于自我反思,于是開始反思,而這篇文章正是反思的結(jié)果。
實(shí)話實(shí)說,國(guó)內(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í)國(guó)內(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ā)展理念的不同。
國(guó)內(nèi)被國(guó)外技術(shù)甩得越來越遠(yuǎn),這個(gè)是事實(shí),不承認(rèn)也不行。前陣子網(wǎng)上很多人擔(dān)憂說國(guó)內(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)秀,把所有人都甩開了,不僅僅是國(guó)內(nèi)。
我覺得,OpenAI對(duì)LLM在理念及相關(guān)技術(shù)方面,領(lǐng)先國(guó)外的Google、DeepMind大約半年到一年的時(shí)間,領(lǐng)先國(guó)內(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),尚且如此,更何況國(guó)內(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)練模型的技術(shù)進(jìn)展》
(https://zhuanlan.zhihu.com/p/254821426)
我相信看完這兩篇文章,能夠讓您對(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í)間線往前拉得更長(zhǎng)一些,回到NLP領(lǐng)域的深度學(xué)習(xí)時(shí)代,在更長(zhǎng)時(shí)間窗口內(nèi)觀察技術(shù)變遷及其影響,可能會(huì)更容易看清其中的一些關(guān)鍵節(jié)點(diǎn)。我個(gè)人認(rèn)為,在最近10年來NLP領(lǐng)域的技術(shù)發(fā)展過程中,可能存在兩次大的研究范型轉(zhuǎn)換。
1. 范式轉(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)比較》(https://zhuanlan.zhihu.com/p/54743941)
中做了說明和分析,感興趣的同學(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這種模式上。
2. 范式轉(zhuǎn)換2.0: 從預(yù)訓(xùn)練模型走向通用人工智能 (AGI,Artificial General Intelligence)
這個(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è)賮砜碈hatGPT,能更好理解它的技術(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)镃hatGPT 盡管加入了人工標(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ī)模增長(zhǎng),效果會(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ù)增長(zhǎng),隨著更大模型的出現(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)プ非驛GI是有可行性的,而現(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ī)模增長(zhǎng)對(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)展。
1. 求知之路:LLM學(xué)到了什么知識(shí)
LLM從海量自由文本中學(xué)習(xí)了大量知識(shí),如果把這些知識(shí)做粗略分類的話,可以分為語言類知識(shí)和世界知識(shí)兩大類。
語言類知識(shí)指的是詞法、詞性、句法、語義等有助于人類或機(jī)器理解自然語言的知識(shí)。關(guān)于LLM能否捕獲語言知識(shí)有較長(zhǎng)研究歷史,自從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)任美國(guó)總統(tǒng)”、“拜登是美國(guó)人”、“烏克蘭總統(tǒng)澤連斯基與美國(guó)總統(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í)。
2. 記憶之地: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ǔ)與提取的,比如 “中國(guó)的首都是北京”這條知識(shí),以三元組表達(dá)就是《北京,is-capital-of,中國(guó)》,其中“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è)隱層的第 個(gè)節(jié)點(diǎn) ,也許就是它記載了《北京,is-capital-of,中國(guó)》這條知識(shí)。 節(jié)點(diǎn)對(duì)應(yīng)的key向量,其實(shí)指的是節(jié)點(diǎn) 和輸入層每個(gè)節(jié)點(diǎn)的權(quán)重向量;而對(duì)應(yīng)的Value向量,指的是節(jié)點(diǎn) 和FFN第二層的Value層每個(gè)節(jié)點(diǎn)形成連接的權(quán)重向量。每個(gè)神經(jīng)元的Key向量,用于識(shí)別輸入中的某種語言或者知識(shí)模式,是一種模式探測(cè)器。如果輸入中包含它要檢測(cè)的某種模式,那么輸入向量和 節(jié)點(diǎn)的key權(quán)重進(jìn)行向量?jī)?nèi)積計(jì)算,加上Relu,形成 的大數(shù)值響應(yīng),意味著 檢測(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) 就是記載《北京,is-capital-of,中國(guó)》這條知識(shí)的Key-Value存儲(chǔ)器,它的Key向量,用于檢測(cè)”中國(guó)的首都是…”這個(gè)知識(shí)模式,它的Value向量,基本存儲(chǔ)了與單詞“北京”的Embedding比較接近的向量。當(dāng)Transformer的輸入是“中國(guó)的首都是[Mask]”的時(shí)候, 節(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,并通過 的大響應(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)。
3. 知識(shí)涂改液:如何修正LLM里存儲(chǔ)的知識(shí)
既然我們已知具體的某條世界知識(shí)存儲(chǔ)在某個(gè)或者某些FFN節(jié)點(diǎn)的參數(shù)里,自然會(huì)引發(fā)另外一個(gè)問題:我們能否修正LLM模型里存儲(chǔ)的錯(cuò)誤或者過時(shí)的知識(shí)呢?比如對(duì)于問題:“英國(guó)的現(xiàn)任首相是誰?”鑒于近年來英國(guó)首相頻繁更迭,你猜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)槟壳暗腖LM模型規(guī)模非常大,即使是做fine-tuning,如果次數(shù)頻繁,其實(shí)成本也相當(dāng)高。對(duì)這種方法感興趣的可以參考“Modifying Memories in Transformer Models”。
另外一類方法直接修改LLM里某些知識(shí)對(duì)應(yīng)的模型參數(shù)來修正知識(shí)。假設(shè)我們想要把舊知識(shí)《英國(guó),現(xiàn)任首相,鮑里斯》,修正到《英國(guó),現(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ī)模在快速增長(zhǎng),目前效果最好的LLM模型,其參數(shù)規(guī)模大都超過了千億(100B)參數(shù)規(guī)模。比如,OpenAI的GPT 3的規(guī)模為175B,Google的LaMDA規(guī)模為137B,PaLM的規(guī)模為540B,DeepMind的Gogher規(guī)模為280B等,不一而足。國(guó)內(nèi)也有中文巨型模型,比如智源GLM規(guī)模130B,華為“盤古”規(guī)模200B,百度“文心”規(guī)模260B,浪潮“源1.0”規(guī)模245B。那么,一個(gè)很自然的問題就是:隨著LLM模型規(guī)模不斷增長(zhǎng),會(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ī)模或者延長(zhǎng)模型訓(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ù)呢?此消彼長(zhǎng),某個(gè)要素規(guī)模增長(zhǎng),就要降低其它因素的規(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ī)模增長(zhǎng)帶來的,而非歸功于某項(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)突然的性能增長(zhǎng)。也就是說,模型規(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ī)模增長(zhǎng)會(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ī)模增長(zhǎng),任務(wù)的效果曲線展現(xiàn)出U形特性:隨著模型規(guī)模逐漸變大,任務(wù)效果逐漸變差,但是當(dāng)模型規(guī)模進(jìn)一步增長(zhǎng),則效果開始越來越好,呈現(xiàn)出U形增長(zhǎng)趨勢(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)模型增長(zhǎng)到中等規(guī)模的時(shí)候,主要執(zhí)行的是干擾任務(wù),所以對(duì)真正的任務(wù)效果有負(fù)面影響,體現(xiàn)為真正任務(wù)效果的下降,而當(dāng)進(jìn)一步增加模型規(guī)模,則LLM可以忽略干擾任務(wù),執(zhí)行真正的任務(wù),體現(xiàn)為效果開始增長(zhǎng)。
對(duì)于那些隨著模型規(guī)模增大,效果一直下降的任務(wù),如果采用思維鏈(CoT)Prompting,則部分任務(wù)的表現(xiàn)轉(zhuǎn)換為遵循Scaling law,即模型規(guī)模越大效果越好,而其它任務(wù)則轉(zhuǎn)換為U性增長(zhǎng)曲線。這其實(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了。
1. 神秘的In Context Learning
如果你細(xì)想,會(huì)發(fā)現(xiàn)In Context Learning是個(gè)很神奇的技術(shù)。它神奇在哪里呢?神奇在你提供給LLM幾個(gè)樣本示例 ,然后給它 ,LLM竟然能夠成功預(yù)測(cè)對(duì)應(yīng)的 。聽到這你會(huì)反問:這有什么神奇的呢?Fine-tuning不就是這樣工作的嗎?你要這么問的話,說明你對(duì)這個(gè)問題想得還不夠深入。
如果你細(xì)想,會(huì)發(fā)現(xiàn)In Context Learning是個(gè)很神奇的技術(shù)。它神奇在哪里呢?神奇在你提供給LLM幾個(gè)樣本示例 ,然后給它 ,LLM竟然能夠成功預(yù)測(cè)對(duì)應(yīng)的 。聽到這你會(huì)反問:這有什么神奇的呢?Fine-tuning不就是這樣工作的嗎?你要這么問的話,說明你對(duì)這個(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ì)應(yīng)的正確答案,其實(shí)并不重要,如果我們把正確答案 替換成隨機(jī)的另外一個(gè)答案 ,這并不影響In Context Learning的效果。這起碼說明了一點(diǎn):In Context Learning并沒有提供給LLM那個(gè)從 映射到 的映射函數(shù)信息:,否則的話你亂換正確標(biāo)簽,肯定會(huì)擾亂這個(gè) 映射函數(shù)。也就是說,In Context Learning并未學(xué)習(xí)這個(gè)輸入空間到輸出空間的映射過程。
真正對(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)為L(zhǎng)LM還是從給出的示例學(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 的映射過程,它的激活函數(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)樗鼈冇糜贚LM多任務(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)镮nstructGPT的基礎(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ǔ)的,但從長(zhǎng)遠(yuǎn)看,治本的方法更重要。
1. 基于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)楫吘箍縇LM回憶示例,精準(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ò),改變思維模式,化大問題為小問題,步步為營(yíng),積小勝為大勝。最早明確提出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è)購(gòu)淖訂栴}的答案推導(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)出拆解子問題,并從子問題的答案逐步找出最終答案的思路。
2. 代碼預(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)樵及姹镜腃odex(只使用代碼訓(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é)推理問題是有幫助的,我猜大概率原因在此。
3. 關(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)椤段谋荆a》的多模態(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)域,或值得深入探索的研究方向。
1. 探索LLM模型的規(guī)模天花板
盡管繼續(xù)推大LLM模型的規(guī)模,這事看似沒有技術(shù)含量,但是其實(shí)這個(gè)事情異常重要。我個(gè)人判斷,自從Bert出現(xiàn)以來,到GPT 3,再到ChatGPT,大概率這些給人印象深刻的關(guān)鍵技術(shù)突破,核心貢獻(xiàn)都來自于LLM模型規(guī)模的增長(zhǎng),而非某項(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),粗估下來,國(guó)外不超過5家,國(guó)內(nèi)不超過3家。當(dāng)然,考慮到成本問題,未來也許會(huì)出現(xiàn)“股份制大模型”,就是有能力的幾家機(jī)構(gòu)合作,群策群力,一起來共建超級(jí)大模型的現(xiàn)象。
2. 增強(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ù)字非常長(zhǎng)的時(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ì)提升推理能力的方向。
3. LLM納入NLP之外更多其它研究領(lǐng)域
目前的ChatGPT擅長(zhǎng)NLP和Code任務(wù),作為通向AGI的重要種子選手,將圖像、視頻、音頻等圖像與多模態(tài)集成進(jìn)入LLM,乃至AI for Science、機(jī)器人控制等更多、差異化更明顯的其它領(lǐng)域逐步納入LLM,是LLM通往AGI的必經(jīng)之路。而這個(gè)方向才剛剛開始,因此具備很高的研究?jī)r(jià)值。
4. 更易用的人和LLM的交互接口
如前所述,ChatGPT的最大技術(shù)貢獻(xiàn)即在此。但是很明顯,目前的技術(shù)并不完美,肯定還有很多命令LLM理解不了。所以,沿著這個(gè)方向,尋找更好的技術(shù),來讓人類使用自己習(xí)慣的命令表達(dá)方式,而LLM又能聽懂,這是個(gè)新的,且非常有前景的技術(shù)方向。
5. 建設(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ù),也是需要提前去考慮。
6. 高質(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)步,或者收益減少。
7. 超大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)镾parse模型存在訓(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)換部分有做分析。目前看,國(guó)內(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)該長(zhǎ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)閦ero 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ù)差距也是從這里開始拉開的。很遺憾地是,國(guó)內(nèi)很多從業(yè)者選擇繼續(xù)在“Bert+fine-tuning”這條路上往后走,這也是造成今天落后局面的一個(gè)關(guān)鍵時(shí)間節(jié)點(diǎn)。再往后,就是InstructGPT和ChatGPT了,OpenAI通過ChatGPT證明了一點(diǎn);雖然我們距離真正的AGI,可能還有很長(zhǎng)的路要走,但是通過超大LLM走向AGI這條路,目前看是可行的。
審核編輯 :李倩
-
模型
+關(guān)注
關(guān)注
1文章
3464瀏覽量
49814 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5547瀏覽量
122301 -
nlp
+關(guān)注
關(guān)注
1文章
490瀏覽量
22414 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1584瀏覽量
8661
原文標(biāo)題:張俊林:萬字長(zhǎng)文講述由ChatGPT反思大語言模型的技術(shù)精要
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
ChatGPT 的多語言支持特點(diǎn)
怎樣搭建基于 ChatGPT 的聊天系統(tǒng)
【《大語言模型應(yīng)用指南》閱讀體驗(yàn)】+ 基礎(chǔ)篇
【《大語言模型應(yīng)用指南》閱讀體驗(yàn)】+ 俯瞰全書
大模型LLM與ChatGPT的技術(shù)原理
llm模型和chatGPT的區(qū)別
大語言模型(LLM)快速理解

評(píng)論