圖文實錄|大規(guī)模預(yù)訓(xùn)練模型:探討與展望
第二期「瀾舟NLP分享會」在 8 月 20?日圓滿落幕,本期主題為《金融NLP場景下,大模型技術(shù)應(yīng)用趨勢》,我們邀請到來自復(fù)旦大學(xué)計算機(jī)學(xué)院邱錫鵬教授分享了“大規(guī)模預(yù)訓(xùn)練模型:探討與展望”,本此演講主要圍繞大規(guī)模預(yù)訓(xùn)練語言模型展開討論,并探討大模型成功的原因、適用場景、未來發(fā)展方向以及身處大模型時代我們的機(jī)遇。?
大家可以關(guān)注「瀾舟科技」公眾號,在后臺回復(fù)關(guān)鍵詞“0820”獲取 PPT 資料。
本文根據(jù)復(fù)旦大學(xué)計算機(jī)學(xué)院教授邱錫鵬在「瀾舟 NLP 分享會」上的演講整理。全文約?6373?字,預(yù)計閱讀時長?20?分鐘。

??點擊上方觀看直播回放
背景
今天介紹的主題是對大規(guī)模預(yù)訓(xùn)練模型的探討與展望。
目前,預(yù)訓(xùn)練模型對下游任務(wù)的提升非常明顯,已成為自然語言處理乃至整個人工智能領(lǐng)域的基礎(chǔ)模型。自然語言處理正在形成新的技術(shù)范式,即上游大規(guī)模的預(yù)訓(xùn)練模型配合下游任務(wù)的知識遷移調(diào)試。
現(xiàn)在,一個自然語言處理問題可以劃為兩部分的任務(wù),分別為上游任務(wù)與下游任務(wù)。
上游任務(wù):預(yù)訓(xùn)練語言模型
上游任務(wù),即通過構(gòu)建數(shù)據(jù)、構(gòu)建預(yù)訓(xùn)練模型來把模型做大。當(dāng)然,預(yù)訓(xùn)練模型并不是只需要做大就可以,有時也需要更貼合下游任務(wù),但通常情況下我們會認(rèn)為,模型越大,越可能帶來更多的收益。因此,一部分人在嘗試構(gòu)建大規(guī)模的預(yù)訓(xùn)練模型,另一部分人則致力于將模型應(yīng)用到下游的任務(wù)調(diào)試方面。
對于任務(wù)調(diào)試來說,我們發(fā)現(xiàn),隨著模型參數(shù)量的增加,模型的小樣本的學(xué)習(xí)效果會有明顯提升。這種小樣本的學(xué)習(xí)能力也正是人工智能追求的目標(biāo)之一,即通用人工智能,其具有非常強(qiáng)的學(xué)習(xí)能力。因此,我們希望知道,如果我們繼續(xù)對模型的規(guī)模進(jìn)行數(shù)量級的擴(kuò)大與增加,能否真正實現(xiàn)通用的人工智能。這也是驅(qū)動學(xué)術(shù)界與工業(yè)界的很多研究者致力于把模型做大的原因之一。
然而,將模型做大并非易事,不僅需要各方面的努力,包括更多的數(shù)據(jù)、算力、基礎(chǔ)設(shè)施等,都要跟上;同時,也要考慮模型本身的能力是否足夠,以及預(yù)訓(xùn)練任務(wù)能否支撐我們得到更好的預(yù)訓(xùn)練模型。
下游任務(wù):知識遷移調(diào)適
下游任務(wù),即將已有的預(yù)訓(xùn)練模型更快更好的遷移到下游任務(wù)上。在下游任務(wù)的應(yīng)用時,我們需要研究的問題也有很多。例如在效率的提升方面,早期我們使用 fintune 的方法對模型進(jìn)行調(diào)參,但這種方法的效率非常低。因此后期就有人提出,采用只增加 adapter 調(diào)試器并只調(diào)一小部分的參數(shù)甚至不調(diào)參數(shù),直接遷移到下游任務(wù)的方法是否可以提高效率。
預(yù)訓(xùn)練模型綜述
目前,預(yù)訓(xùn)練模型綜述的主要內(nèi)容基本均由大模型應(yīng)用的上游和下游兩部分的研究構(gòu)成。

關(guān)于預(yù)訓(xùn)練模型的綜述,復(fù)旦大學(xué)的邱錫鵬團(tuán)隊發(fā)表了《Pre-trained Models for Natural Language Processing: A Survey》,對當(dāng)今自然語言處理的預(yù)訓(xùn)練模型情況進(jìn)行了梳理。其中內(nèi)容包括但不限于:
當(dāng)前預(yù)訓(xùn)練模型的各種架構(gòu)類型,
上游預(yù)訓(xùn)練任務(wù)與模型,例如面向特定任務(wù)的多語言跨模態(tài)模型等。
預(yù)訓(xùn)練模型在下游任務(wù)的調(diào)試方法,例如 Fine-tuning 與 Promote-tuning 等。
預(yù)訓(xùn)練模型的壓縮與效率優(yōu)化,例如 Inference time 的優(yōu)化等。
......
大模型技術(shù)的探討
本次分享會的主題是關(guān)于大模型的探討與展望,在我們對大模型技術(shù)應(yīng)用趨勢的展望之前,讓我們先思考幾個問題:
問題一:大模型是什么?
就像神經(jīng)網(wǎng)絡(luò)通過其參數(shù)學(xué)習(xí)到了某種知識,預(yù)訓(xùn)練語言模型也應(yīng)當(dāng)是學(xué)習(xí)到了某種知識才得以解決問題。
然而,這個知識是關(guān)于什么的知識?是關(guān)于語言的知識嗎?顯然不是,對此我們很容易舉出反例。我們?nèi)祟悓W(xué)習(xí)語言,通常是不會通過維基百科來學(xué)習(xí)的,我們會通過其他的文字材料,如小說這類材料來學(xué)習(xí)語言。然而,維基百科的訓(xùn)練數(shù)據(jù)卻是所有的預(yù)訓(xùn)練語言模型共用的。也就是說,預(yù)訓(xùn)練語言模型并不是“語言的模型”,而是“以語言承載的知識的另一種表現(xiàn)形式”。
維基百科承載的是人類的知識,這些知識是用語言的形式寫下來的。所以,大模型其實是把這些知識由原來的文本形式、語言形式所承載的知識,轉(zhuǎn)成以模型的參數(shù)來承載,完成知識轉(zhuǎn)移。因此,我們可以把大模型看成一種隱式的知識庫,或者一個參數(shù)化的百科全書。
此外,目前來看,大模型某種程度上只是“知識的搬運工”,它并沒有生產(chǎn)知識。它所知道的都是隱含在它學(xué)習(xí)過的數(shù)據(jù)中,而在提供給它的以文本承載的知識中沒有的內(nèi)容,它是不會學(xué)習(xí)到的。當(dāng)然這與知識的泛化不同,不生產(chǎn)知識不代表其沒有泛化的能力。
問題二:預(yù)訓(xùn)練模型為什么會成功?
這里,邱老師表示,預(yù)訓(xùn)練模型其實一直都很成功。
從早期深度學(xué)習(xí)開始,初始的深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練不深,因此使用 DBN 來做初始化,即先預(yù)訓(xùn)練 DBN,再將其參數(shù)賦予預(yù)訓(xùn)練模型。再如在計算機(jī)視覺 CV 方向,很多圖像的下游任務(wù)都需要在 Imagenet 上做預(yù)訓(xùn)練。此外,早期自然語言處理領(lǐng)域的 word2vec 算法的預(yù)訓(xùn)練也是類似的過程。
預(yù)訓(xùn)練模型取得成功,可以從以下角度分析其原因:
機(jī)器學(xué)習(xí)的角度:可以約束假設(shè)空間,并提高泛化性。
通常情況下,神經(jīng)網(wǎng)絡(luò)的參數(shù)空間非常大,特別是對于目前如 Transformer 這種復(fù)雜的模型。這種復(fù)雜模型如果遇到小規(guī)模數(shù)據(jù)的話非常容易過擬合。因此,模型的初始點非常重要,一個好的初始點有助于找到更好的局部最優(yōu)解。而一個好的初始點就可以讓后續(xù)的訓(xùn)練不會離其太遠(yuǎn),也就隱含了約束假設(shè)空間、起到正則化的作用,從而提高它的泛化性。
知識的角度:預(yù)訓(xùn)練模型學(xué)習(xí)了很多語言知識、世界知識,這些知識有助于其在下游任務(wù)上取得成功。
問題三:預(yù)訓(xùn)練模型真的不具備理解能力和常識推理能力?

如圖 2,在 2020 年 GPT3 的測試過程中,如果我們向模型提問太陽有幾個眼睛,模型會回答太陽有一只眼睛。從這個例子中,我們會認(rèn)為他可能是不具備常識的。當(dāng)然,后期 GPT3 加入了相關(guān)的知識,其本身在不斷更新并不斷加入新知識,可以通過融入常識等知識去修正模型。

近期,有一篇文章《Large Language Mod》,它提到,如果對這些大模型直接輸入“超綱”的問題,它的回答可能是錯誤的,因為他沒有經(jīng)過嚴(yán)格的推理。神奇的是,如圖3,只要在每個回答前加入一個 prompt,這句話就是“Let's think step by step”,模型就可以按照它之前學(xué)習(xí)過的推理的路徑,一步步的將正確答案生成出來。
因此,預(yù)訓(xùn)練模型并非真的不具備理解能力與常識推理能力,而是需要類似“Let's think step by step”這樣的“咒語”,去挖掘我們還沒有發(fā)現(xiàn)的能力。當(dāng)然,這樣的 prompt 也存在缺點,即其不具備通用性,對不同的任務(wù)可能需要換不同的 prompt。因此,這一問題也需要更深入的研究去逐漸改進(jìn)。
問題四:預(yù)訓(xùn)練模型是自然語言處理的未來嗎?
針對這個問題,邱老師給出的答案是:“預(yù)訓(xùn)練”是,“模型”不是。
一方面,未來的模型,一定是越來越大的,而我們的訓(xùn)練數(shù)據(jù)通常是不夠的,所以一定需要通過某種預(yù)訓(xùn)練的方式去進(jìn)行。當(dāng)然,預(yù)訓(xùn)練本身的內(nèi)涵很廣,他不一定是語言模型的形式,也可能是其他的預(yù)訓(xùn)練任務(wù)的形式。
另一方面,目前我們的模型是以 Transformer 架構(gòu)的,它雖然能量強(qiáng),但本身還有很多天生的缺陷。因此我們認(rèn)為,模型架構(gòu)方面未來可能還會有迭代。但是這個迭代可能會越來越難,因為當(dāng)我們越來越頻繁的使用某種模型架構(gòu)如 Transformer 時,它的生態(tài)建立的越來越完善,我們就會產(chǎn)生某種路徑依賴。也就是說,當(dāng)我們提出一個新的模型的時候,其實際應(yīng)用效率可能沒有 Transformer 高,因為我們整個架構(gòu)已經(jīng)是為 Transformer 做過優(yōu)化的了。
但是,Transformer 的缺陷也非常明顯,比如它不適合處理長文檔。所以,盡管短期內(nèi)可能還是 Transformer 作為主流,未來一定會有某種新的形態(tài)出現(xiàn)。

如圖4所示,目前主要使用的 Transformer 架構(gòu)主要有以下三種:
只使用 Encoder 的如 BERT 模型
只使用 Decoder 的如 GPT 模型
使用 Encoder 和 Decoder 的 BART/T5 模型。
可以看出,大模型的同質(zhì)化越來越嚴(yán)重。當(dāng)然,大模型的同質(zhì)化并不完全是缺點,它相反會帶來一個優(yōu)點。
這個優(yōu)點就是:模型統(tǒng)一之后,在自然語言處理的不同任務(wù),就可以用一個模型來處理所有的問題;或者也可以將 Transformer 也應(yīng)用到多模態(tài)或者視覺領(lǐng)域、音頻領(lǐng)域等其他領(lǐng)域,都用一個架構(gòu)來處理所有的問題,包括各個層面如感知、認(rèn)知層面等的問題。因此,這也有助于不同學(xué)科之間更好地交融。
大模型技術(shù)的展望
大模型同質(zhì)化的優(yōu)點:范式統(tǒng)一
有了 Transformer 這種架構(gòu)之后,或者說有了預(yù)訓(xùn)練模型的架構(gòu)之后,首先在 NLP 領(lǐng)域帶來的新的變化就是范式統(tǒng)一。NLP 里面的任務(wù)形式,多種多樣。有分類問題、序列標(biāo)注問題、匹配問題、閱讀理解問題,結(jié)構(gòu)化的學(xué)習(xí)問題、還有生成問題等等。它的早期的任務(wù)形式是多種多樣的。復(fù)旦大學(xué)邱錫鵬團(tuán)隊在論文《Paradigm Shift in Natural Language Processing》中,總結(jié)了在自然語言處理里面的七種范式。這七種范式早期各自對應(yīng)相應(yīng)的任務(wù)。自從預(yù)訓(xùn)練模型出現(xiàn)之后,以 Encoder-Decoder 為例,如果大家要利用 T5 或 BART 這些模型的能力,就勢必要把自己的任務(wù)轉(zhuǎn)換成 T5 或 BART 所擅長的形式。通過這種方式,大模型的同質(zhì)化間接地促進(jìn)了自然語言處理的范式統(tǒng)一。

近幾年,預(yù)訓(xùn)練模型使得自然語言處理的范式發(fā)生了很大的遷移,如圖5所示,左側(cè)列出了七種不同的范式,可以看出,在 2017 年以前的每個范式是均勻、平行地發(fā)展的,并處理各自對應(yīng)的任務(wù)。從2017 年開始,特別是在2018年 BERT 問世后,范式發(fā)生了明顯的轉(zhuǎn)變。例如,分類的范式會逐漸的向 Match 或 MRC 轉(zhuǎn)換。再如,很多任務(wù)都可以換換成序列到序列的范式,分類任務(wù)、匹配任務(wù)和序列標(biāo)注任務(wù)都可以使用序列到序列的方式解決。而最近幾年,一個語言模型加上一個 prompt 的這種范式會更加流行。
也就是說,預(yù)訓(xùn)練模型加速了自然語言處理的范式統(tǒng)一。這樣既可以統(tǒng)一自然語言處理任務(wù),也降低了自然語言處理的技術(shù)門檻。
語言模型即服務(wù)
當(dāng)前,隨著模型規(guī)模的增大,很多模型都是云端使用的。而云端的模型很難支持 Fine-tuning 等調(diào)參,它只是一個服務(wù),用戶傳入文本,云端模型輸出。
那如何更好地在下游任務(wù)做調(diào)試呢?這里也有很多研究。比如針對語言模型服務(wù)((Language-Model-as-a-Service))的場景,一個比較有代表性的調(diào)優(yōu)方法叫黑箱調(diào)優(yōu)。黑箱調(diào)優(yōu)就是將云端的原模型作為黑箱,用一些無梯度優(yōu)化的方法調(diào)優(yōu),如發(fā)一個 Query后根據(jù)結(jié)果去調(diào)參。這種方法目前在一些小樣本上,如 BBTV2 上,已經(jīng)達(dá)到了和整個模型 Model-tuning 類似的效果,并且它需要調(diào)節(jié)的參數(shù)更少。
也就是說,通過調(diào)節(jié)更少的參數(shù)量與無梯度的優(yōu)化的方法,就可以達(dá)到和梯度優(yōu)化接近甚至更好的性能。因此,這也是一個非常有前景的應(yīng)用場景。
大模型帶來的問題
大模型也有可能帶來一些問題。
早期的自然語言處理的很多模型,都是追尋機(jī)器學(xué)習(xí)范式的,即“訓(xùn)練誤差-測試誤差=泛化誤差”,這是一種端到端的方式。但在預(yù)訓(xùn)練模型之后,我們把要解決的問題分成兩步,即預(yù)訓(xùn)練+精調(diào)。然而,預(yù)訓(xùn)練模型時我們沒有標(biāo)準(zhǔn),我們并不知道怎樣去設(shè)預(yù)訓(xùn)練的目標(biāo),使得它在下游任務(wù)的測試誤差小,即訓(xùn)練與測試是不一致的。因此,它不是一種端到端的方式,到底什么樣的目標(biāo)對預(yù)訓(xùn)練是有效的,或者對下游任務(wù)是有效的,他們之間存在 gap。但這個 gap 是什么,我們目前不知道。
當(dāng)然,語言模型越小,它可能在下游任務(wù)的泛化性會更好,但這也不完全正確。比如 GPT3 模型的訓(xùn)練并不是不斷的迭代,讓語言模型的困惑度最小,而是只要所有數(shù)據(jù)都見過一遍就結(jié)束了。因此,這種方式使得無論是預(yù)訓(xùn)練還是遷移,它的方案都可能不清晰。擁有豐厚資源的如大廠單位可能會更關(guān)注預(yù)訓(xùn)練的誤差,而沒有很多資源的可能更關(guān)注如何降低下游任務(wù)的測試誤差。因此,有沒有可衡量預(yù)訓(xùn)練模型有效性的任務(wù)指標(biāo)也是大模型帶來的問題之一。
前文提到的大模型同質(zhì)化嚴(yán)重也會帶來一定的缺點,如它會抹殺某種多樣性。例如,基本很多論文都是基于 T5 的研究,而不是像以前一樣,有多樣化的研究。此外,目前我們依賴的 prompt 的方式比較繁瑣,需要人為干預(yù),因此可能還需要重回特征工程。最后,大模型能耗高、不環(huán)保也是一個問題。
大模型帶來的機(jī)會
如果把大模型的生命周期,分成建立模型結(jié)構(gòu)、預(yù)訓(xùn)練、精調(diào)、部署與推斷的話,那么每個階段都有很多的機(jī)會去做:
建立模型結(jié)構(gòu)階段:提高模型效率,建模非注意力機(jī)制以及設(shè)置稀疏路由等以減少他的推斷時間。
預(yù)訓(xùn)練階段:提升訓(xùn)練效率、知識嵌入與知識更新等。
精調(diào)階段:下游知識遷移(Y-Tuning),上下文學(xué)習(xí)(In-Context Learning)等。
部署階段:可靠性(Reliability),統(tǒng)一范式(Unified Paradigm)等。
推斷階段:推斷效率提升(ELUE,Towards Efficient NLP).

最后,圖6是對 NLP 的技術(shù)范式演進(jìn)的總結(jié)與未來的展望。
早期機(jī)器學(xué)習(xí)時代,我們常用的技術(shù)叫特征工程,也就是我們需要找很多 Feature 特征。后來,在深度學(xué)習(xí)時代,我們就轉(zhuǎn)變?yōu)榧軜?gòu)工程,需要找合適的神經(jīng)網(wǎng)絡(luò)架構(gòu)。比如我們對 CNN、LSTM 等模型做架構(gòu)上的變化,使得其再下游任務(wù)的效果最優(yōu)。此后還有目標(biāo)變化,這也就是前文提到的范式變化,如將匹配任務(wù)的目標(biāo)轉(zhuǎn)換成序列生成的目標(biāo)。近兩年, 我們就會轉(zhuǎn)為 Prompt 工程,又稱提示工程,即我們同意利用如 GPT 或 T5 模型,對不同的任務(wù)找到合適的 Prompt 即可。
那么,未來又是什么呢?這里,邱錫鵬表示,未來可能會關(guān)于數(shù)據(jù)。如果將所有任務(wù)的數(shù)據(jù)都結(jié)構(gòu)化為統(tǒng)一形式,這樣就可以利用當(dāng)下最成功的預(yù)訓(xùn)練模型,如 GPT、T5 模型等。這也得益于大模型的同質(zhì)化,如果我們能夠?qū)⑺腥蝿?wù)的數(shù)據(jù)統(tǒng)一,不管什么任務(wù)我們都可以利用特定的模型了。因此,未來的機(jī)會很有可能會在數(shù)據(jù)方面。
那在數(shù)據(jù)方面,我們要考慮的就是如何將各種任務(wù)的數(shù)據(jù)都結(jié)構(gòu)化為統(tǒng)一的形式。通過這種方式,我們就可以利用多任務(wù)的數(shù)據(jù)去調(diào)試或做知識遷移,這樣也可以加速NLP模型與技術(shù)的落地。