国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
萬字長文解讀:ChatGPT的前世今生

本文來自微信公眾號:機器之心 (ID:almosthuman2014),作者:追一科技,原文標(biāo)題:《ChatGPT的前世今生:OpenAI的技術(shù)“執(zhí)拗”與“豪賭”》,頭圖來自:unsplash

本文全方位地介紹了 ChatGPT 的能力特征、發(fā)展歷程以及 OpenAI 一路走來所堅守的技術(shù)路線,并對 ChatGPT 出現(xiàn)之后 NLP 領(lǐng)域的范式轉(zhuǎn)換進(jìn)行了展望,即 ChatGPT 開啟“文本生成 + 指令”的范式。

一、ChatGPT,不再“愚蠢”的人工智能

ChatGPT 的相關(guān)話題應(yīng)該算是繼 AlphaGo 以來,最出圈的人工智能熱點了。簡單來說,它是一個可以用自然語言對話的機器人,你可以問它任何問題(當(dāng)然它有可能會答錯,但你可以引導(dǎo)并糾正它),它都會以非常流暢、標(biāo)準(zhǔn)的自然語言回答你。不僅如此,它還能回答代碼問題、數(shù)學(xué)問題等等,你可以和它在關(guān)于任何問題上聊得不亦樂乎。

我們可以用一個經(jīng)典的雞兔同籠問題來感性地認(rèn)識一下 ChatGPT 的能力:

從這個回答可以觀察到幾個特點。首先是對自然語言的理解和轉(zhuǎn)換為數(shù)學(xué)問題的能力,其次它通過將一個較為復(fù)雜的推理問題分步拆解,一步步獲得最后的答案。這個能力被業(yè)內(nèi)稱作“思維鏈”(Chain of thought)。接下來換一下問法,看看它會怎么回答。

從這個圖中可以發(fā)現(xiàn),ChatGPT 對自己所說的內(nèi)容是有感知的,并且可以給出這么說的原因。另外也可以發(fā)現(xiàn),它確實也會出錯(第一次計算耳朵數(shù)量錯了。此處有個冷知識,雞是有類似于“耳朵”一樣的功能器官),但可以通過引導(dǎo)的方式讓它給出正確的答案,并且會告訴你自己為什么錯了。

如果不事先告訴你這是一個人工智能模型,ChatGPT 給人的感覺確實像一個真正有邏輯思維和語言交流能力的真人。它的出現(xiàn)第一次讓大家覺得,人工智能似乎終于能夠和人正常交流了,雖然有時候會出錯,但在交流的過程中至少沒有語言和邏輯上的障礙,它能“懂”你在說什么,并且按照人類的思維模式和語言規(guī)范給你反饋。這種非常智能的體驗感,是它突破業(yè)界小圈子,給大眾帶來沖擊感的原因。

這里還希望再次強調(diào)這種體驗感的問題,因為也許過去業(yè)界由于技術(shù)的限制,為了完成場景中的特定任務(wù)而忽略了這一點。如今 ChatGPT 的出現(xiàn)代表了人工智能不再是過去那種“有用,但是也挺蠢”的形態(tài)了。

為了更好地理解 ChatGPT 這種非常智能的感覺是怎么產(chǎn)生的,難免要從過去那種“很蠢”的人工智能說起。準(zhǔn)確地說,ChatGPT 背后使用的依然是自然語言處理(NLP)技術(shù),但卻打破了原有的范式。

要理解這一點,可以先看看目前的主流做法是怎樣的。人類交流依托的是語言,甚至也有很多人認(rèn)為人類的思維也是建立在語言上的。因此,理解運用自然語言一直是人工智能的重要課題。但語言實在太復(fù)雜,因此為了讓計算機理解運用語言,通常會將這個過程拆分為很多的細(xì)分項,這就是在技術(shù)領(lǐng)域中常說的“任務(wù)”。舉幾個例子:

  • 情感分析任務(wù),針對的是理解語言所蘊含的情感傾向;

  • 句法分析任務(wù),針對的是分析文本的語言學(xué)結(jié)構(gòu);

  • 實體識別任務(wù),針對的是從文本中定位出實體片段,例如地址、名字等等;

  • 實體連接任務(wù),針對的是從文本中抽取出實體間的關(guān)系;

這樣的任務(wù)還有很多,都是從某個細(xì)分的側(cè)面去對自然語言進(jìn)行分析、處理。這樣做有很多好處,比如有了這些拆分,就可以從不同的維度來考察一個自然語言處理系統(tǒng)的細(xì)分能力;也可以針對某一個細(xì)分的項專門做系統(tǒng)或者模型的設(shè)計等。從技術(shù)的角度來說,將一個復(fù)雜的任務(wù)(理解并運用自然語言)拆分為很多的簡單任務(wù)(各種各樣的 NLP 任務(wù))確實是一種比較典型的解決復(fù)雜問題的路徑,這也是目前的主流做法。然而在 ChatGPT 出現(xiàn)之后,以馬后炮視角去看,也許在讓計算機理解并運用自然語言這條路上,這種拆分并不是最有效的途徑。

因為在單個任務(wù)上的優(yōu)秀表現(xiàn),并不能代表系統(tǒng)就掌握了自然語言。人對于人工智能體的“智能感”,是基于對它應(yīng)用自然語言的整體能力而產(chǎn)生的,這一點在 ChatGPT 上有明顯的體現(xiàn)。雖然 OpenAI 沒有開放 ChatGPT 的 API 服務(wù),外界還無法測評它在各個細(xì)分 NLP 任務(wù)上的具體效果,但以過往外界對它的前身 GPT-3、InstructGPT 等模型的測試情況表明,對于某些特定的任務(wù),一個用專門數(shù)據(jù)精調(diào)過的小模型,確實可以獲得更好的效果(詳細(xì)分析請參考《深入理解語言模型的突現(xiàn)能力》。

但這些在單個任務(wù)上有更好表現(xiàn)的小模型,并沒有引起很大的出圈效應(yīng)。歸根結(jié)底,是因為它們只有單一的能力。單個的能力出眾并不能代表它們具有了理解和運用自然語言的能力,從而也無法獨自在實際應(yīng)用場景中發(fā)揮作用。正因如此,通常在一個真實的應(yīng)用場景中,都是多個具有單點能力的模塊經(jīng)過人為的設(shè)計拼湊而成,這種人為的拼湊方式是過去的人工智能系統(tǒng)讓人感覺并不智能的原因之一。

從人類理解和運用自然語言的視角去看,這個現(xiàn)象其實很好理解。普通人在理解、運用自然語言的時候,并不會在腦內(nèi)將它拆分為很多步不同的任務(wù),逐個任務(wù)進(jìn)行分析,然后再匯總,這不是人類使用自然語言的方式。就好比一個人,在聽到一句話的時候,并不會對它的句法結(jié)構(gòu)、實體內(nèi)容與關(guān)系、情感傾向等這些內(nèi)容逐一分析,然后拼湊出這句話的含義,人對語言的理解過程是一個整體過程。

再進(jìn)一步,人對這句話的整體理解,會以自然語言的形式,通過回復(fù)的方式整體地表現(xiàn)出來。這個過程并不是像人工智能系統(tǒng)那樣,拆分單個任務(wù),然后逐一輸出情感分析的標(biāo)簽、實體信息的片段、或是別的某個單個任務(wù)的結(jié)果,然后用這些東西拼湊出回復(fù)。

而以 ChatGPT 為代表,GPT 系列模型所做的事情才真正接近了人類理解和運用語言的能力 —— 直接接收自然語言,然后直接回復(fù)自然語言,并保證了語言的流暢性與邏輯性。這是人與人的交流方式,所以大家對它抱以“很智能”的體驗感。

也許很多人會認(rèn)為,如果能做到 ChatGPT 這樣當(dāng)然很好,過去那種對任務(wù)的拆分是因為技術(shù)的限制不得已而為之。從技術(shù)應(yīng)用的視角來看,這樣迂回的方式當(dāng)然是需要的,這種方法也在很長的一段時間內(nèi)被采用,并且確實也能夠解決很多實際場景中的問題。但如果回顧 GPT 系列模型的發(fā)展過程,就會發(fā)現(xiàn) OpenAI“賭”了另一條路,并且他們“賭”贏了。

二、OpenAI 的“賭局”

GPT 初代,一切開始的地方。早在 2018 年,OpenAI 就發(fā)布了最初版本的 GPT 模型。

從 OpenAI 公開的論文(Improving Language Understanding by Generative Pre-Training)可以了解到,這個模型采用了12 層的 Transformer Decoder 結(jié)構(gòu),用了大約 5GB 的無監(jiān)督文本數(shù)據(jù)進(jìn)行語言模型任務(wù)的訓(xùn)練。

雖然初代 GPT 模型采用的就已經(jīng)是生成式的預(yù)訓(xùn)練(這也是 GPT 名字的由來,Generative Pre-Training,即生成式預(yù)訓(xùn)練),但使用的是無監(jiān)督預(yù)訓(xùn)練 + 下游任務(wù)微調(diào)的范式。這一范式其實并不是什么新的發(fā)明,它在 CV(計算機視覺)領(lǐng)域已經(jīng)有比較廣泛的應(yīng)用,只是由于當(dāng)年 ELMo 模型的出色表現(xiàn),把它重新“介紹”到了 NLP 領(lǐng)域。

GPT 模型的出現(xiàn)在那一年確實引來了一些業(yè)內(nèi)的關(guān)注,但它并不是那一年的 C 位主角。因為就在同年,Google 的 BERT 模型橫空出世,以優(yōu)異的效果吸引了幾乎全部的目光(這個景象有點像現(xiàn)在的 ChatGPT,不禁感嘆 Google 和 OpenAI 之間的“恩恩怨怨”真是天道好輪回)。

圖片來自 BERT 論文,從圖示中可以一窺當(dāng)年 BERT 對標(biāo)的就是 GPT,并引以為傲地指出雙向編碼能力。

BERT 模型雖然也是采用和 GPT 一樣的 Transformer 模型結(jié)構(gòu),但它幾乎就是為“無監(jiān)督預(yù)訓(xùn)練 + 下游任務(wù)微調(diào)”的范式量身定制的模型。和 GPT 相比,BERT 所使用的掩碼語言模型任務(wù)(Masked Language Model)雖然讓它失去了直接生成文本的能力,但換來的是雙向編碼的能力,這讓模型擁有了更強的文本編碼性能,直接的體現(xiàn)則是下游任務(wù)效果的大幅提升。而 GPT 為了保留生成文本的能力,只能采用單向編碼。

以當(dāng)年的眼光來看,BERT 絕對是一個更加優(yōu)秀的模型。因為既然 BERT 和 GPT 兩者都是采用“預(yù)訓(xùn)練 + 微調(diào)”的范式,并且下游任務(wù)依然是分類、匹配、序列標(biāo)注等等“經(jīng)典”的 NLP 任務(wù)形式,那么像 BERT 模型這種更注重特征編碼的質(zhì)量,下游任務(wù)選一個合適的損失函數(shù)去配合任務(wù)做微調(diào),顯然比 GPT 這種以文本生成方式去“迂回地”完成這些任務(wù)更加直接。

從 BERT 模型出來以后,“無監(jiān)督訓(xùn)練 + 下游任務(wù)微調(diào)”的范式便奠定了它的霸主地位,各類沿著 BERT 的思路,琢磨“如何獲得更好的文本特征編碼”的方法大量涌現(xiàn),以至于 GPT 這個以生成式任務(wù)為目標(biāo)的模型顯得像一個“異類”。馬后炮地說,如果當(dāng)時 OpenAI“順應(yīng)大勢”,放棄生成式預(yù)訓(xùn)練這條路,也許我們要等更長的時間才能見到 ChatGPT 這樣的模型。

GPT-2 帶來的希望

當(dāng)然,我們現(xiàn)在見到了 ChatGPT,所以 OpenAI 沒有放棄生成式預(yù)訓(xùn)練的路線。實際上堅持的“回報”隱約出現(xiàn)在了第二年,也就是 2019 年。OpenAI 發(fā)布了有 48 層 Transformer 結(jié)構(gòu)的 GPT-2 模型。在發(fā)布的論文(Language Models are Unsupervised Multitask Learners)中,他們發(fā)現(xiàn)通過無監(jiān)督數(shù)據(jù)配合生成式訓(xùn)練后,GPT 展示出了零樣本(zero-shot)的多任務(wù)能力。而奇妙的是,這些多任務(wù)的能力并不是顯式地、人為地加入到訓(xùn)練數(shù)據(jù)中的。

用通俗的話來舉個例子,GPT-2 其中一個展示出來的能力是做翻譯,但令人吃驚的是,通常專門用來做翻譯的模型是需要大量的平行語料(即兩種不同語種之間配對的數(shù)據(jù))進(jìn)行監(jiān)督訓(xùn)練,但 GPT-2 并沒有使用這種數(shù)據(jù),而僅僅是在大量的語料上進(jìn)行生成式的訓(xùn)練,然后它就“突然”會做翻譯了。這個發(fā)現(xiàn)或多或少地帶有點顛覆性的意味,它向人們展示了三個重要的現(xiàn)象:

  • 想讓模型去完成一種 NLP 任務(wù),也許并不需要和任務(wù)匹配的標(biāo)注數(shù)據(jù)。例如 GPT-2 訓(xùn)練時沒有用標(biāo)注的翻譯數(shù)據(jù),但它會做翻譯。

  • 想讓模型去完成一種 NLP 任務(wù),也許并不需要和任務(wù)匹配的訓(xùn)練目標(biāo)。例如 GPT-2 訓(xùn)練的時候并沒有設(shè)計翻譯任務(wù)和相關(guān)的損失函數(shù),它只是在做語言模型任務(wù)。

  • 僅僅用語言模型任務(wù)(即生成式任務(wù))訓(xùn)練的模型,也可以具有多任務(wù)的能力。例如 GPT-2 展現(xiàn)出了翻譯、問答、閱讀理解等等的能力。

雖然以現(xiàn)在的眼光來看,當(dāng)時的 GPT-2 所展示出來的各種能力還比較初級,效果距離使用監(jiān)督數(shù)據(jù)微調(diào)后的一些其它模型還有明顯的差距,但這并沒有妨礙 OpenAI 對它所蘊含的潛在能力充滿期待,以至于在論文摘要中的最后一句話中,他們提出了對 GPT 系列模型未來的期望:

“These findings suggest a promising path towards building language processing systems which learn to perform tasks from their naturally occurring demonstrations.”

后來一系列事情的發(fā)展也證明了他們確實是一直朝著這個 promising path 的方向在前進(jìn)。如果說在 2018 年,GPT 初代模型出來的時候,GPT 的生成式預(yù)訓(xùn)練還面臨著被 BERT 這類以“提取特征”為目地的預(yù)訓(xùn)練模型在各方面碾壓,那么在 GPT-2 中的發(fā)現(xiàn),給了生成式預(yù)訓(xùn)練一個 BERT 類模型無法替代的潛在優(yōu)勢,即語言模型任務(wù)所帶來的多任務(wù)能力,且這種多任務(wù)能力是無需標(biāo)注數(shù)據(jù)的。

當(dāng)然,在那個時間點上,生成式的技術(shù)路徑依然面臨風(fēng)險和挑戰(zhàn)。畢竟當(dāng)時的 GPT-2 在各任務(wù)上的表現(xiàn)還是差于經(jīng)過微調(diào)的模型,這導(dǎo)致了 GPT-2 雖然有著翻譯、摘要等等能力,但效果太差以至于無法實際使用。因此,如果在當(dāng)時想要一個可用的翻譯模型,最好的選擇依然是老老實實用標(biāo)注數(shù)據(jù)訓(xùn)練一個專門用來翻譯的模型。

GPT-3,數(shù)據(jù)飛輪的開始

從 ChatGPT 時代往回看,也許 OpenAI 在 GPT-2 中的發(fā)現(xiàn)確實堅定了他們對 GPT 系列模型的信心,并決定加大研發(fā)投入力度。因為在隨后的 2020 年他們發(fā)布了 1750 億參數(shù)量的 GPT-3,一個即便以現(xiàn)在的眼光去看也大得讓人驚嘆的模型。雖然 OpenAI 沒有明確公開訓(xùn)練這個模型的費用,但大家的估算是當(dāng)時花了 1200 萬美元。

同時公開的還有一篇長達(dá) 60 多頁的論文(Language Models are Few-Shot Learners),其中詳細(xì)闡述了這個新的龐然巨物所展示出來的新能力。最重要的發(fā)現(xiàn)莫過于論文標(biāo)題中所說的,語言模型具有小樣本(few-shot)學(xué)習(xí)的能力。

小樣本學(xué)習(xí)是一個機器學(xué)習(xí)領(lǐng)域的專業(yè)術(shù)語,但它有著很樸素的理念,即“人類是可以通過少量的幾個例子就學(xué)會一個新的語言任務(wù)”。想象一下在語文課上學(xué)習(xí)怎么掌握“把”字句換成“被”字句樣(雨把衣服淋濕了 —— 衣服被雨淋濕了)的情形,老師會給出幾個例子,同學(xué)們就能夠掌握這項能力。

但對于深度學(xué)習(xí)模型來說,它通常需要學(xué)習(xí)(訓(xùn)練)成千上萬的例子才能掌握一項新的能力,但大家發(fā)現(xiàn) GPT-3 卻像人類一樣具有類似的能力。而且重點在于,只需要給它展示幾個例子,它就會“有樣學(xué)樣”地完成例子給出的任務(wù),而不需要進(jìn)行額外的訓(xùn)練(即不需要進(jìn)行常規(guī)訓(xùn)練中的梯度反傳和參數(shù)更新)。后來的研究表明,這種能力是巨型模型所特有的,被業(yè)內(nèi)叫做“在上下文中學(xué)習(xí)”(in context learning)的能力。

GPT-3 論文中所展示的英語翻譯法語的 In context learning 能力。

實際上,小樣本學(xué)習(xí)能力本身并不是很驚人的發(fā)現(xiàn)。畢竟業(yè)內(nèi)一直都在對小樣本學(xué)習(xí)進(jìn)行研究,很多專攻小樣本學(xué)習(xí)的模型都有出色的小樣本學(xué)習(xí)能力。但 GPT-3 展示出來的這種“在上下文中學(xué)習(xí)”的小樣本能力卻非常出人意料,其原因也和 GPT-2 所展示的多任務(wù)能力一樣:

  • GPT-3 并沒有為了獲得小樣本的能力而在訓(xùn)練數(shù)據(jù)、訓(xùn)練方式上做特別的設(shè)計,它依然只是一個用語言模型任務(wù)訓(xùn)練的生成式模型;

  • GPT-3 的小樣本能力是以“在上下文中學(xué)習(xí)”的方式展現(xiàn)出來的。換句話說,想讓它獲得新的能力,不需要對它再訓(xùn)練,而只需要給它看幾個示范的例子。

除了這個能力以外,GPT-3 還展示出了優(yōu)秀的文本生成能力,相比 GPT-2,它生成的內(nèi)容更加流暢,而且可以生成很長的內(nèi)容。這些能力綜合體現(xiàn)在一個模型上,讓 GPT-3 在當(dāng)時成為了大家的關(guān)注焦點,它也成為 OpenAI 正式對外提供服務(wù)的模型。

但隨著這個模型服務(wù)的開放,越來越多的人嘗試使用這個模型。從這時起,OpenAI 通過開放給公眾的方式,同時也在收集著更具有多樣性的數(shù)據(jù)(用戶使用時輸入的內(nèi)容可能會被用于模型的訓(xùn)練,這一點是寫在用戶條款中的),這些數(shù)據(jù)在后來的模型迭代中也發(fā)揮著重要的作用。自此 GPT 系列模型的數(shù)據(jù)飛輪便轉(zhuǎn)動了起來,越多優(yōu)質(zhì)的用戶數(shù)據(jù),迭代出效果越好的模型。

與 ChatGPT 不同的是,GTP-3 并不是采用對話的形式交互的模型,而是一個文本的續(xù)寫模型(也就是在你輸入的文字后面接著往下寫),因此它并不具備如今的 ChatGPT 所擁有的多輪對話能力。但它已經(jīng)能夠干很多的事情,例如編寫故事、給郵件做自動補全等等。但同時,大家也慢慢發(fā)現(xiàn)了一些問題,例如它會一本正經(jīng)地輸出不符合事實的內(nèi)容,并且會輸出一些有害的言論等等。這是這種文本生成模型最突出的弊端,雖然經(jīng)過多次迭代,但 ChatGPT 如今也依然面臨類似的問題。

CodeX,讓計算機自己寫代碼

OpenAI 在對 GPT-3 的研究中還有一個意外的發(fā)現(xiàn),它能夠根據(jù)一些注釋生成很簡單的代碼。因此在隨后的 2021 年,他們對生成代碼這件事情進(jìn)行了專門的研究投入,并發(fā)布了 CodeX 模型。它可以看作是一個有著代碼專精能力的 GPT 模型,能夠根據(jù)自然語言輸入生成比較復(fù)雜的代碼。

從外部視角來看,我們無法判斷代碼生成的研究與 GPT 系列模型的研發(fā)是否在同時進(jìn)行。但放在當(dāng)時,讓模型具有生成代碼的能力,從實用化的角度來說確實更加具有意義,畢竟 GPT-3 還未擁有如今 ChatGPT 這般強悍的能力。另一方面,讓模型去生成代碼也能規(guī)避它生成有危害文本內(nèi)容帶來的風(fēng)險。

在 CodeX 論文中提及了幾個要點,首先是讓經(jīng)過文本數(shù)據(jù)預(yù)訓(xùn)練的 GPT 模型在專門的代碼數(shù)據(jù)(數(shù)據(jù)來自 github 的開源代碼,一共 159G)上訓(xùn)練確實能夠明顯提升模型對代碼的理解和輸出能力。其次是論文中用的是一個 120 億參數(shù)的“小”模型,這個信息從側(cè)面反映出 OpenAI 內(nèi)部除了對外開放接口的 1750 億參數(shù)的 GPT-3 模型外,還有別的不同大小的模型版本。

而加入代碼訓(xùn)練,讓模型獲得理解和生成代碼的決定,原本的初衷也許只是希望 GPT 能夠多一種應(yīng)用場景。它看似與 GPT 系列模型在理解和運用自然語言的能力沒有太大的聯(lián)系,但根據(jù)后續(xù)的研究(詳細(xì)的分析請參考文章《拆解追溯 GPT-3.5 各項能力的起源》,增加對代碼數(shù)據(jù)的訓(xùn)練很有可能觸發(fā)了后來的 GPT 模型在自然語言上的復(fù)雜推理和思維鏈的能力。

也許在 OpenAI 做 CodeX 之初并沒有預(yù)料到會有這樣的結(jié)果,但就像他們一直使用文本生成任務(wù)來做 GPT 模型,然后在 GPT-2 和 GPT-3 中“解鎖”了“多任務(wù)的能力”和“在上下文中學(xué)習(xí)的能力”那樣,代碼數(shù)據(jù)的引入又一次讓他們獲得了意料之外的收獲。雖然看上去似乎有一些偶然,但對技術(shù)路線的前瞻性認(rèn)知,加上堅持與持續(xù)的投入顯然是一個至關(guān)重要的因素。

InstructGPT,讓 GPT 好好說話

在前面我們提到了 GPT-3 雖然已經(jīng)有很強的能力,但上線以后隨著使用的人越來越多,也發(fā)現(xiàn)了很多問題,最嚴(yán)重的應(yīng)該要數(shù)“一本正經(jīng)地胡說八道”和“輸出帶有危害性的內(nèi)容”這兩點了。雖然在 2021 年 OpenAI 似乎暫時將重點放在了讓模型理解和生成代碼這件事情上,但他們應(yīng)該一直在嘗試解決 GPT-3 的這些問題。

在 2022 年初,OpenAI 發(fā)表了 InstructGPT 的論文(Training language models to follow instructions with human feedback),從中我們可以一窺解決這些問題的方法。論文的核心理念是讓模型接受人類的教導(dǎo)(反饋),這一點在標(biāo)題中就已經(jīng)開宗明義了。

GPT-3 之所以會出現(xiàn)“一本正經(jīng)地胡說八道”和“輸出有害的內(nèi)容”這樣的問題,其根源來自于它所使用的訓(xùn)練數(shù)據(jù)。像 GPT-3 這樣的龐然大物,對數(shù)據(jù)的需求量是海量的。我們從 GPT-3 的論文中可以找到它的數(shù)據(jù)來源,大致可以劃分為三類:網(wǎng)頁內(nèi)容、百科內(nèi)容以及書籍。雖然網(wǎng)頁內(nèi)容的量非常大,但也非常“臟、亂、差”,自然會包含很多非真實性和有害的內(nèi)容。GPT-3 在這些數(shù)據(jù)上進(jìn)行訓(xùn)練,自然也就學(xué)到了這些東西。

但作為一款對外提供服務(wù)的產(chǎn)品,GPT-3 的回答應(yīng)該更小心一些。要解決這個問題,其中的一難點在于怎么去定義模型應(yīng)該怎么說話。因為生成模型的輸出內(nèi)容是自然語言本身,而不是一個分類的標(biāo)簽或一個實體名詞這種有明確的、客觀對錯的內(nèi)容。沒有明確的對錯,就導(dǎo)致無法像訓(xùn)練經(jīng)典的 NLP 模型那樣直接針對目標(biāo)設(shè)計訓(xùn)練任務(wù)。

而 InstructGPT 給出的解決思路是非常直接的,既然對于“好的回答”這個評價指標(biāo)有很多不同的影響因素,這些因素又相互交織在一起,那就讓人來教它怎么寫回答。因為人類是比較善于處理這種“既有明確的要求,又有模糊的范圍”的問題的,讓真人寫一些“優(yōu)秀范例”,讓模型去學(xué)習(xí)這些“優(yōu)秀范例”,這正是 InstructGPT 提出的總體思路。

具體而言,InstructGPT 提出了兩個階段的路徑來讓 GPT 學(xué)習(xí)人類給出的“優(yōu)秀范例”,第一階段是監(jiān)督學(xué)習(xí),第二階段是強化學(xué)習(xí)。在第一階段中(對應(yīng)下圖中最左邊的 Step 1),讓真人根據(jù)不同的 Prompt(粗淺可以認(rèn)為是我們使用 ChatGPT 時,在對話框里輸入的那條文本,在業(yè)界這個東西叫做指令)寫真實的、無害的、有用的回答。

實際操作過程中,為了保證這些內(nèi)容的質(zhì)量,會給寫回答的標(biāo)注人員一些規(guī)范性的指引,然后讓已經(jīng)經(jīng)過預(yù)訓(xùn)練的 GPT 模型在這些人類編輯的數(shù)據(jù)上繼續(xù)訓(xùn)練。這一階段可以看作是對模型的一種“規(guī)訓(xùn)”,用一個不嚴(yán)謹(jǐn)?shù)念惐葋碚f,就像語文老師讓你默寫優(yōu)秀范文那樣。

圖片來自 InstructGPT 論文,提出通過監(jiān)督式的指令微調(diào) + 人類反饋的強化學(xué)習(xí)來讓模型的輸出變得合理。

第二階段是強化學(xué)習(xí),技術(shù)上分為兩步。第一步(對應(yīng)上圖中間的 Step 2)是讓被“規(guī)訓(xùn)”后的模型根據(jù)不同的 Prompt 生成多個不同的回答,并由人來給這些回答按照好與差的標(biāo)準(zhǔn)來排序。然后用這些標(biāo)注了優(yōu)劣之分的數(shù)據(jù)訓(xùn)練一個打分模型,讓它可以自動給更多的數(shù)據(jù)進(jìn)行排序打分。

強化學(xué)習(xí)階段的第二步(對應(yīng)上圖中右邊的 Step 3)就是利用這個打分模型作為強化學(xué)習(xí)中的環(huán)境反饋,以策略梯度(Policy Gradient,準(zhǔn)確地說是 PPO 算法)的方式對已經(jīng)“規(guī)訓(xùn)”后的 GPT 模型進(jìn)行訓(xùn)練。整個第二階段的過程可以看作是對模型的一種“強化”,再用一個不嚴(yán)謹(jǐn)?shù)念惐葋碚f,就像語文老師給你寫的作文打分,讓你從分?jǐn)?shù)中分辨什么是好與不好,然后不斷進(jìn)步。

因此,用一種非常不嚴(yán)謹(jǐn),但普通人或許也能夠理解的方式來說,InstructGPT 先是讓一個“口無遮攔”的 GPT 通過“默寫人類的優(yōu)秀范文”的方式初步學(xué)會“好好說話”,然后再“給它獨自寫出來的東西打個分,讓它回去好好領(lǐng)悟,繼續(xù)進(jìn)步”。

當(dāng)然,在技術(shù)上牽涉事情會更復(fù)雜一些,比如“優(yōu)秀范文”的具體規(guī)范和數(shù)量等數(shù)據(jù)上的問題,以及強化學(xué)習(xí)中打分模型的選擇,算法參數(shù)的設(shè)置等算法上的問題,都會對最后的效果產(chǎn)生影響。但最終的結(jié)果表明,這種方式是非常有效的,論文中也指出一個通過上述方式訓(xùn)練出來的 13 億的小模型,效果就能夠超過沒有經(jīng)過這種訓(xùn)練的更大的模型。

另外論文中還有一些非常值得一提的內(nèi)容。首先是關(guān)于 Prompt 的一些發(fā)現(xiàn)。InstructGPT 訓(xùn)練時所使用的 Prompt 主要由兩部分構(gòu)成,一部分是專門的 AI 訓(xùn)練師編寫的,另一部分自來 OpenAI 的模型在線服務(wù)期間,由用戶使用中編寫的內(nèi)容,這時數(shù)據(jù)飛輪的作用就體現(xiàn)了。

可以發(fā)現(xiàn),無論是哪種,這些 Prompt 都是由真人寫出來的,雖然文章中沒有對這些 Prompt 的具體涵蓋范圍、分布情況以及提問的方式展開詳細(xì)的分析,但可以合理地猜測這些 Prompt 具有一定的多樣性和較高的質(zhì)量。其實文章中對比了使用這些真人編寫的 Prompt 訓(xùn)練的模型和使用一些開源 NLP 任務(wù)數(shù)據(jù)集中構(gòu)建的 Prompt(例如 T0 數(shù)據(jù)集、FLAN 數(shù)據(jù)集)訓(xùn)練出來的模型,結(jié)論是由真人編寫 Prompt 訓(xùn)練出來的模型,給出的答案更加能被評測的人接受。

另外一點是關(guān)于訓(xùn)練好的模型對新的 Prompt 的泛化能力的問題,可想而知的是,如果訓(xùn)練完成的模型無法產(chǎn)生 Prompt 的泛化能力,那么現(xiàn)在 ChatGPT 所表現(xiàn)出來的,幾乎百問百答的能力是不太可能產(chǎn)生的。因為在模型做微調(diào)的階段,即便是再多的數(shù)據(jù),也不可能把人們有可能會輸入的內(nèi)容都覆蓋完整。而 InstrctGPT 論文中點明了文中所采用的方法是可以產(chǎn)生 Prompt 的泛化能力的。

之所以花了更多的文字對 InstructGPT 做介紹,因為根據(jù) ChatGPT 官方頁面的介紹,InstructGPT 中的方法正是用來訓(xùn)練 ChatGPT 的方法,不同的只是 ChatGPT 使用了對話式的數(shù)據(jù)組織方式。

GPT-3.5 時代和 ChatGPT 的誕生

在隨后的時間內(nèi),OpenAI 發(fā)布了多個被稱為 GPT-3.5 系列的模型,雖然這些模型并未有相關(guān)的論文跟隨發(fā)表,但根據(jù)這篇文章的分析,GPT-3.5 系列應(yīng)該是融合了 OpenAI 在 GPT-3 時代積累的技術(shù)、數(shù)據(jù)以及經(jīng)驗開發(fā)出來的。由于沒有詳細(xì)的官方公開信息參考,關(guān)于這些模型的具體資料,外界主要是通過分析使用的體驗、相關(guān)的技術(shù)論文以及 OpenAI 的 API 文檔介紹來進(jìn)行推測。

根據(jù)分析,GPT-3.5 系列的模型有可能并不是在 GPT-3 上繼續(xù)微調(diào)而來,而很可能是將代碼和自然語言的數(shù)據(jù)融合在一起,重新從零開始訓(xùn)練了一個基礎(chǔ)模型。這個模型可能比 GPT-3 的 1750 億參數(shù)量更大,它在 OpenAI 的 API 中被命名為 codex-davinci-002。然后在這個基礎(chǔ)模型上,通過指令微調(diào)和人類反饋得到了一系列后續(xù)的模型,包括 ChatGPT。

GPT 系列模型的發(fā)展路徑。

簡要地說,從 code-davince-002 這個模型開始,經(jīng)過有監(jiān)督的指令微調(diào)得到 text-davinci-002。以及后續(xù)的 text-davinci-003 和 ChatGPT,也是在 GPT-3.5 系列的某個模型上通過指令微調(diào)以及人類強化學(xué)習(xí)反饋得到的。并且 text-davinci-003 和 ChatGPT 都是在 2022 年 11 月發(fā)布的,不同的是 text-davinci-003 和 GPT-3 一樣,是一個文本補全模型。而根據(jù) ChatGPT 的官方介紹,它是通過將過往的數(shù)據(jù)處理成對話交互的形式,并增加了新的對話數(shù)據(jù)訓(xùn)練出來的。

至此,我們大致回顧了 OpenAI GPT 系列模型從 2018 年的初代 GPT 到現(xiàn)在的 ChatGPT,一路發(fā)展迭代的過程。在這個過程中,OpenAI 一直保持著對生成式預(yù)訓(xùn)練模型這一技術(shù)路徑的“執(zhí)拗”,并且也一直從不斷發(fā)展的 NLP 技術(shù)中吸納新的方法,從最初的 Transformer 模型結(jié)構(gòu),到后來的指令微調(diào)(Prompt tuning)等技術(shù)的出現(xiàn),這些因素共同促成了如今 ChatGPT 的成功。有了對 GPT 系列模型發(fā)展的了解,我們可以再回過頭來看看如今的 ChatGPT。

三、走近再看 ChatGPT

在第一章節(jié)中我們闡述了 ChatGPT 出圈的原因主要是:“它以流暢、符合邏輯的自然語言來反饋人類對它輸入的自然語言”,從而給與它交流的人帶來了很強的“智能感”。在第二章節(jié)中通過回顧 GPT 系列模型的發(fā)展歷史來了解 ChatGPT 成功之路。

而這一章節(jié)會嘗試以盡可能讓圈外人都能理解的方式,稍微深入一些技術(shù)的內(nèi)容,并且探討一下當(dāng)前的一些大型文本生成式模型為什么未能做到相同的效果。這一部份的主要參考來自于《深入理解語言模型的突現(xiàn)能力》《拆解追溯 GPT-3.5 各項能力的起源》這兩篇文章以及相關(guān)的一些論文,建議希望詳細(xì)了解細(xì)節(jié)的讀者閱讀原文。

雖然在第一章中指出,ChatGPT 所帶來的驚艷效果是由許多不同的 NLP 任務(wù)綜合體現(xiàn)出來的,但在分析它背后的技術(shù)時,還是通過將它的能力進(jìn)行拆解會更加清晰明了一些??傮w而言,ChatGPT 所體現(xiàn)出來的能力可以大致劃分為以下幾個維度:

文本生成的能力

ChatGPT 的所有輸出都是即使生成出來的文本,所以文本生成的能力是它最基本的要求。

這一項能力實際上是來自于它的訓(xùn)練方式,ChatGPT 在預(yù)訓(xùn)練時,是一個標(biāo)準(zhǔn)的自回歸語言模型任務(wù),這是 OpenAI 所有 GPT 系列模型的基底。所謂的自回歸語言模型任務(wù),通俗的理解是這樣的:

它可以根據(jù)已經(jīng)輸入的文本,預(yù)測下一個 token 應(yīng)該是什么。這里所說的 token,所代表的是模型所使用的最小單位的字符片段,它可以是字(在中文里采用字是很常見的),也可以是詞(英文的每個詞天然地被空格隔開了,所以常采用詞),甚至是字母。

但現(xiàn)在的方法通常采用的是子詞(subword,介于字母和詞之間,主要的目的是減少詞表數(shù)量)。但不論是哪種,自回歸語言模型任務(wù)的基本思路都是根據(jù)已經(jīng)輸入的文本,預(yù)測下一個要輸出的文本是什么,就像下圖的例子中那樣:

這個例子中,BOS 代表了輸入的開頭,而每個 token 是一個詞,GPT 模型根據(jù)輸入的“今天”和 “天氣”兩個詞,預(yù)測下一個要輸出的是“不”。

在訓(xùn)練的時候,會準(zhǔn)備很多文本數(shù)據(jù),比如網(wǎng)頁上的文章、各類書籍等等,只要是正常的文字內(nèi)容,都可以用來訓(xùn)練。值得說明的是,這種數(shù)據(jù)不需要進(jìn)行額外的人工標(biāo)注,因為這類數(shù)據(jù)本來就是人寫的,模型要做的事情就是根據(jù)這些人寫出的文本,去學(xué)習(xí)“給定了前面的文字,接著這些文字后面這個地方應(yīng)該是什么”的問題。這便是業(yè)內(nèi)所稱的“無監(jiān)督訓(xùn)練”,實際上模型并不是真的沒有監(jiān)督(不然模型學(xué)什么呢?),只是它的數(shù)據(jù)不需要額外的人工標(biāo)注。

也正因為這個任務(wù)是不需要額外標(biāo)注的,因此可以“免費”獲得大量的數(shù)據(jù),得益于互聯(lián)網(wǎng)的普及,可以“輕松地”獲得海量的由真人寫出的文本內(nèi)容用來訓(xùn)練。這一點也是 GPT 系列模型的特點之一,用海量的數(shù)據(jù),去訓(xùn)練很大的模型。

那么在我們使用 ChatGPT 的時候,它是怎么工作的呢?其實也和它的訓(xùn)練方式一樣,模型會根據(jù)我們在對話框里輸入的內(nèi)容,去預(yù)測接在這些內(nèi)容的下一個 token 是什么,得到這個 token 后,會將它與前面的內(nèi)容拼接成一個新的文本給模型,模型再預(yù)測下一個 token,如此反復(fù),直到滿足某個條件后停止。這個停止的條件有很多不同的設(shè)計方式,比如可以是輸出的文本達(dá)到特定的長度,又或者是模型預(yù)測出某個用來代表停止的特殊 token。

另外值得一提的是,模型預(yù)測下一個 token 時,其實背地里是一個采樣的過程。換句話說,模型在預(yù)測 token 時,輸出的其實是所有可能出現(xiàn)的 token 的概率,然后從這個概率分布里采樣一個 token。因此,在使用 ChatGPT 時,會發(fā)現(xiàn)即便對于相同的輸入,它的輸出每次也會不一樣,因為在背地里它采樣了不一樣的 token 作為輸出。

了解這些之后,可以再回過頭來思考一下模型在學(xué)什么。它在學(xué)習(xí)怎么回答問答嗎?又或者說它在學(xué)習(xí)怎么理解自然語言所蘊含的信息、邏輯、情感?還是說它在學(xué)習(xí)海量的知識?從訓(xùn)練任務(wù)的設(shè)計來看,似乎都沒有,它只是從海量的文本數(shù)據(jù)里,學(xué)習(xí)了“根據(jù)輸入的這些文本,一個人類在后面會接著寫什么”這件事。但正是這樣的模型,在“進(jìn)化”到 ChatGPT 時,它卻掌握了豐富的知識、復(fù)雜的邏輯推理等等,它似乎掌握了一個人類運用語言所需要的幾乎所有的能力。這是一件非常神奇的事情,它的“進(jìn)化”歷程將會在下一章節(jié)中做更加深入的介紹。

豐富的知識儲備

ChatGPT 能夠正確回答非常多的問題,包括歷史、文學(xué)、數(shù)學(xué)、物理、編程等等。因為目前版本的 ChatGPT 并沒有利用外部知識,因此這些知識的內(nèi)容是“儲存”在模型內(nèi)部的。

ChatGPT 所擁有的豐富知識儲備,來自于它的訓(xùn)練數(shù)據(jù),以及它足夠大的體量,以便學(xué)會這些內(nèi)容。雖然官方并沒有公開 ChatGPT 所使用的訓(xùn)練數(shù)據(jù)的具體細(xì)節(jié),但從它的前身 GPT-3 的論文可以推測,這些數(shù)據(jù)大致可以分為三個大的范疇:網(wǎng)頁內(nèi)容、書籍內(nèi)容以及百科內(nèi)容。

可想而知的是,這些內(nèi)容天然地蘊含了大量的知識,百科和書籍自然不必說,而網(wǎng)頁內(nèi)容也包含了許多新聞、評論、觀點等,并且網(wǎng)頁也包括了很多專門的問答垂直類網(wǎng)站,這些都是 ChatGPT 的知識來源。在官方的介紹里指出 ChatGPT 無法回答 2021 年以后發(fā)生的事情,因此合理的猜測是訓(xùn)練的數(shù)據(jù)收集截止到 2021 年。

但數(shù)據(jù)量只是其中一個方面,要讓模型“掌握”這些數(shù)據(jù),其自身的體量是不可能小的。以 GPT-3 為例,它有 1750 億參數(shù),可以粗淺地理解為,這些數(shù)據(jù)的內(nèi)容以及模型的各項能力,都以這一個個參數(shù)的具體數(shù)值的形式,固定在了訓(xùn)練完成的模型中。感性的理解是,假設(shè)一個模型只有 1 個參數(shù),那它什么也干不了。更嚴(yán)謹(jǐn)?shù)姆治龊蛯Ρ瓤梢詤⒖歼@篇論文《Holistic Evaluation of Language Models》的測評,方向性的結(jié)論是越大的模型,在需要知識來完成的任務(wù)上表現(xiàn)得越好。

(論文地址:https://arxiv.org/pdf/2211.09110.pdf)

邏輯推理與思維鏈的能力

從第一章圖片中的雞兔同籠的例子可以看出,ChatGPT 具有很強的邏輯推理能力。并且它能夠?qū)?fù)雜的內(nèi)容,通過拆解,分成多個小的步驟,一步步地進(jìn)行推理,獲得最后的答案,這種能力被稱為思維鏈。

從前面的介紹我們知道,模型在訓(xùn)練的時候并沒有針對邏輯推理以及思維鏈做特定的設(shè)計。而當(dāng)前的主流觀點認(rèn)為,邏輯推理和思維鏈很可能和兩個因素相關(guān),第一個是模型的體量,第二個是模型是否在代碼數(shù)據(jù)上進(jìn)行過訓(xùn)練。

關(guān)于模型體量與推理、思維鏈能力的關(guān)系,在《深入理解語言模型的突現(xiàn)能力》中有對應(yīng)的介紹。下面這張圖展示了思維鏈能力與模型體量的關(guān)系。

不同模型不同尺寸的思維鏈效果對比,圖來自論文。GSM8K,SVAMP 和 MAWPS 是三個需要邏輯推理的數(shù)學(xué)應(yīng)用題數(shù)據(jù)集,LaMDA,GPT 和 PaLM 分別是 3 個不同的模型。

簡要地說,圖表中給出了三個不同的模型,在三個數(shù)學(xué)應(yīng)用題數(shù)據(jù)集上的答對率。而值得關(guān)注的是以下幾個方面:

  • 思維鏈的能力(藍(lán)色實線)在模型體量夠大的時候產(chǎn)生了效果上的突變;

  • 思維鏈的能力在模型夠大的前提下,效果超過了標(biāo)準(zhǔn)的指令(Standard prompting,黑色實線)方法;

  • 思維鏈的能力在模型夠大的情況下,可以接近甚至超過有監(jiān)督的方法(橙色虛線)。

用通俗的話來說,就是在模型足夠大的時候,思維鏈的能力突然展現(xiàn)了出來,能夠達(dá)到、甚至超過那些在推理數(shù)據(jù)集上專門進(jìn)行有監(jiān)督訓(xùn)練的模型。這個圖也許部分解釋了現(xiàn)在我們看到的 ChatGPT 所具有的優(yōu)異推理和思維鏈能力。

而另一個關(guān)于推理以及思維鏈能力的產(chǎn)生因素,與模型是否在代碼數(shù)據(jù)上做過訓(xùn)練有關(guān)。目前這一點只是一個推論,《拆解追溯 GPT-3.5 各項能力的起源》中的分析表明體量類似的大型模型,沒有在代碼上做過訓(xùn)練的話,只有很弱或幾乎沒有思維鏈和推理能力。

而 ChatGPT 確實是在代碼數(shù)據(jù)上進(jìn)行過訓(xùn)練的,這一點從它能夠理解并生成代碼也可以看出來。在第二章回顧發(fā)展歷程中提到了,OpenAI 在 2021 年就發(fā)布了專門針對代碼的 CodeX 模型,將代碼數(shù)據(jù)加入 GPT 的訓(xùn)練數(shù)據(jù)應(yīng)該就是從那時開始的。

按照人的提問或者指令給予回復(fù)的能力

ChatGPT 除了可以用狹義的基于“問答”形式的交互以外,還能夠按照輸入的要求進(jìn)行回復(fù)。例如,在應(yīng)對“幫我寫一封信”這類指令式的要求時,它同樣也展現(xiàn)出了優(yōu)秀的能力。這種能力讓它不僅是一個提供答案的“高級搜索引擎”,更是一種可以用自然語言來交互的文字處理工具。

雖然目前大眾普遍把目光聚焦在將 ChatGPT 作為一種類搜索引擎的工具,但查閱相關(guān)知識并給予回答并不是它的唯一能力。實際上,單就 ChatGPT 本身而言,回答知識性的問題并不是它的強項,畢竟它本身的訓(xùn)練數(shù)據(jù)被定格在了 2021 年。即便用更新的數(shù)據(jù)去訓(xùn)練,但它終究跟不上時事的變化,因此要將它用作知識性的問答工具,還是需要與搜索引擎等外部知識源做結(jié)合,就像現(xiàn)在 Bing 做的一樣。

但換一個角度來看,ChatGPT 像是一個“語言完備”的文本工具,也就是它能夠按照你給它的要求,完成指定的、可以用文本形式表達(dá)出來的內(nèi)容,就像下面這個例子。

按照給定的計劃內(nèi)容生成英文郵件進(jìn)行匯報。

這里所說的“語言完備”,指的是運用語言的能力??梢钥闯錾厦孢@個例子里,其實不涉及知識性的內(nèi)容,因為需要它寫的內(nèi)容已經(jīng)提供給它了。但要寫出這封郵件,涉及到的是運用語言的能力,比如遣詞造句、語種切換、郵件格式等等。

現(xiàn)在我們回過頭來,嘗試分析它的這種“按照指令完成任務(wù)”的能力是怎么獲得的。在學(xué)界中,這種指令被稱為 prompt,實際上對話中的用戶輸入、問答中的問題也是一種 prompt,因此可以粗淺地理解為,在聊天框里輸入的所有內(nèi)容都是 prompt。如果了解我們在本章第一節(jié)介紹語言模型的內(nèi)容,那么更嚴(yán)謹(jǐn)一些的說法應(yīng)該是“輸入給模型的上文”都是 prompt。

ChatGPT 根據(jù)輸入的指令(prompt)進(jìn)行回復(fù)的能力,是來自于一種被稱為指令微調(diào)的模型訓(xùn)練方式(prompt tuning)。其實原理很簡單,模型依然還是“根據(jù)輸入的內(nèi)容,預(yù)測下一個 token 是什么”,只是在指令微調(diào)的階段,輸入的內(nèi)容被換成了這些事先寫好的 prompt,而 prompt 后面需要生成的內(nèi)容,則是事先寫好的答案。因此在這一階段和一開始所說的無監(jiān)督自回歸語言模型訓(xùn)練,最大的不同在于數(shù)據(jù)。這里的數(shù)據(jù),也就是 prompt 以及對應(yīng)的回復(fù),都是人寫的,換句話說,這一階段用的是人工標(biāo)注的數(shù)據(jù)進(jìn)行的監(jiān)督訓(xùn)練。

提到人工標(biāo)注的數(shù)據(jù),就自然牽涉到了所需要的數(shù)據(jù)量了,因為每一條標(biāo)注數(shù)據(jù)都是需要成本的。如果是不需要標(biāo)注(就像第一階段的訓(xùn)練),那么自然有海量的文本數(shù)據(jù)可供訓(xùn)練,但如果要標(biāo)注,那到底需要多少這種數(shù)據(jù)呢?要知道,讓標(biāo)注人員手寫一個 prompt,然后再手寫一個幾百字的、真實詳盡的回答,成本是很高的。

根據(jù)論文《Training language models to follow instructions with human feedback》的介紹,所需要的數(shù)據(jù)其實不需要太多(相比于無監(jiān)督階段所使用的數(shù)據(jù)來說)。雖然具體到 ChatGPT 到底使用了多少沒有確切的信息公開,但可以確定的是在數(shù)量級上一定遠(yuǎn)比用來進(jìn)行無監(jiān)督訓(xùn)練的網(wǎng)頁、百科和書籍所構(gòu)成的數(shù)據(jù)集要小非常多。

(論文地址:https://arxiv.org/pdf/2203.02155.pdf)

只需要相對少量的人工標(biāo)注的 prompt 數(shù)據(jù)就能達(dá)到讓模型按照指令做出回復(fù)的目的,這一點背后其實隱含了一個現(xiàn)象,在學(xué)界內(nèi)被稱為 prompt 的泛化能力??梢韵胂笠幌?,如今全世界都在不停的向 ChatGPT 提問,所提的問題也必定是千奇百怪的,這些問題其實就是一個個的 prompt。

但用來對 ChatGPT 進(jìn)行指令微調(diào)的 prompt 肯定不會有這么多,這說明模型在學(xué)習(xí)到了一定量的 prompt 和相應(yīng)的答案以后,它能夠“舉一反三”地對它沒有見過的 prompt 進(jìn)行回答,這就是 prompt 的泛化能力。文章《拆解追溯 GPT-3.5 各項能力的起源》分析指出,這種泛化能力與在指令微調(diào)階段讓模型學(xué)習(xí)的標(biāo)注數(shù)據(jù)數(shù)量以及多樣性相關(guān)。

此外,用少量的 prompt 數(shù)據(jù)就能微調(diào)出類似于 ChatGPT 這樣擁有強大能力的模型,背后還隱含了另一個猜測,即模型所表現(xiàn)出來的各項能力,可能在無監(jiān)督訓(xùn)練的階段就已經(jīng)存在于模型當(dāng)中了。其實這也很好理解,畢竟相比于無監(jiān)督的數(shù)據(jù),這些人工標(biāo)注的 prompt 數(shù)量太少了,很難想象模型是通過對這些僅有的標(biāo)注數(shù)據(jù)學(xué)習(xí)而產(chǎn)生了各種各樣的能力。從這個角度來說,指令微調(diào)的過程更多只是讓模型學(xué)會按一定的規(guī)范來進(jìn)行回復(fù),而它的知識、邏輯等能力是早已存在的。

“客觀公正”的能力

如果對 ChatGPT 詢問一些有害或者有爭議的問題,可以看到 ChatGPT 的回答都是非常“小心”的,很像是經(jīng)過訓(xùn)練的新聞發(fā)言人般的回答。雖然它目前依然做得不夠好,但這種能力是 OpenAI 敢將它公開作為一款產(chǎn)品使用的核心因素。

讓模型的輸出符合人類的價值觀是 OpenAI 一直在做的事情。早在 2020 年 GPT-3 的時候,OpenAI 就發(fā)現(xiàn)這種通過網(wǎng)上的數(shù)據(jù)訓(xùn)練出來的模型,會生成帶有歧視、危險、爭議的內(nèi)容。作為一個對外提供服務(wù)的產(chǎn)品,這些有害的內(nèi)容顯然是不合適的。而現(xiàn)在的 ChatGPT 在這一點上有著明顯的改善,讓模型做出這種“行為改變”的主要方法也來自于 InstructGPT 的論文,更確切地說,是通過有監(jiān)督的指令微調(diào)加上人類反饋的強化學(xué)習(xí)共同完成的,這一點在第二章中也已經(jīng)做過介紹了。

通過上述的分析可以發(fā)現(xiàn),從技術(shù)方法的角度來說,ChatGPT 相關(guān)的內(nèi)容都是已知的,但為什么當(dāng)前只有它擁有如此驚艷的表現(xiàn)呢。實際上從 ChatGPT 推出之后,NLP 社區(qū)就一直在分析這其中的原因,雖然很多結(jié)論是推測性的,但也為同類模型的國產(chǎn)化帶來一些啟示。

模型體量的因素

能力涌現(xiàn)出現(xiàn)的前提是模型體量達(dá)到一定的規(guī)模,雖然沒有具體的指標(biāo)指引,但從目前的事實情況來看,類似于思維鏈等比較“高級”的能力,需要在數(shù)百億參數(shù)量以上的模型中才表現(xiàn)得足夠優(yōu)異。

數(shù)據(jù)量的因素

模型的大小不是唯一的因素。DeepMind 在這篇論文《Training Compute-Optimal Large Language Models》提供了一些分析性的結(jié)論,指出訓(xùn)練的數(shù)據(jù)量需要隨著模型的體量相應(yīng)地增加,更確切地說,是模型訓(xùn)練時“見過的 token”數(shù)量,需要隨著模型體量增加。

(論文地址:https://arxiv.org/pdf/2203.15556.pdf)

數(shù)據(jù)質(zhì)量的因素

對于無監(jiān)督的數(shù)據(jù),數(shù)據(jù)量相對而言并不是很大的障礙,但數(shù)據(jù)質(zhì)量往往更加容易被忽視。實際上在 GPT-3 的論文中,就有專門的內(nèi)容介紹數(shù)據(jù)的處理工作。為了清洗 GPT-3 的訓(xùn)練數(shù)據(jù),OpenAI 專門訓(xùn)練了一個數(shù)據(jù)過濾模型,來從海量的網(wǎng)頁數(shù)據(jù)中獲取更高質(zhì)量的數(shù)據(jù)。相比而言,與 GPT-3 體量相當(dāng)?shù)囊恍╅_源模型,例如 Meta 的 Opt 和 BigScience 的 Bloom,似乎沒有進(jìn)行這一步清洗。這也許是這兩個開源模型效果劣于 GPT-3 的原因之一。

此外,數(shù)據(jù)質(zhì)量的衡量維度不是單一的,諸如數(shù)據(jù)的多樣性、內(nèi)容重復(fù)度以及數(shù)據(jù)的分布情況都是需要考慮的因素。例如雖然 GPT-3 所使用的網(wǎng)頁、百科、書籍這三大類數(shù)據(jù)中,網(wǎng)頁數(shù)據(jù)的總量是最多的,但在訓(xùn)練時這三類數(shù)據(jù)的采樣并不是按照實際數(shù)據(jù)的多寡進(jìn)行的。

另外值得一提的是,在指令微調(diào)的階段,采用人工編寫指令也許是一個重要的影響因素。InstructGPT 的論文明確指出在測評過程中,采用人工編寫的指令訓(xùn)練出來的模型,比采用現(xiàn)有的 NLP 數(shù)據(jù)集通過模版的方式構(gòu)建指令訓(xùn)練出來的模型有更好的效果。這也許解釋了在 T0、FLAN 等由 NLP 數(shù)據(jù)集構(gòu)成的指令數(shù)據(jù)集訓(xùn)練出來的模型為什么效果會差一些。

訓(xùn)練過程的影響

這類巨型模型在訓(xùn)練時通過集群進(jìn)行訓(xùn)練,同時采用數(shù)據(jù)并行、模型并行以及 ZeRO 優(yōu)化器(一種降低訓(xùn)練過程顯存占用的方法),這些方式為訓(xùn)練的穩(wěn)定性引入了更多的變量。如下這篇分析指出甚至模型是否采用 bfloat16 精度都對結(jié)果有明顯的影響。

(分析鏈接:https://jingfengyang.github.io/gpt)

相信了解了上面的這些內(nèi)容,大家對復(fù)刻一個類 ChatGPT 的方式以及會面臨的問題會有一個大致的了解。有幸的是 OpenAI 已經(jīng)證明了這技術(shù)路徑是能夠走通的,ChatGPT 的出現(xiàn)也確實正在改變 NLP 技術(shù)的發(fā)展走向。

四、未來的展望

ChatGPT 從 2022 年 11 月上線以來,引起了極大的關(guān)注。相信即便是非專業(yè)領(lǐng)域,甚至是與計算機也很少打交道的群體,或多或少地都知道它的存在,這個現(xiàn)象本身就已經(jīng)反映出它的出現(xiàn)有些不同尋常。圈外的大眾更多的是以好奇、驚訝或者驚嘆的方式來感性地認(rèn)識它的出現(xiàn)。而對從業(yè)者來說,它的出現(xiàn)更多的是對未來技術(shù)走向的思考。

從技術(shù)的角度來說,ChatGPT 的出現(xiàn)標(biāo)志著 NLP 領(lǐng)域的又一次范式切換。之所以說是“又”一次,是因為在 2018 年,也就是初代 GPT 發(fā)布的那一年,與之同年發(fā)布的 BERT 模型以自身優(yōu)異的表現(xiàn),開創(chuàng)了 NLP 的“預(yù)訓(xùn)練 + 微調(diào)”范式的時代,具體內(nèi)容在第二章中已經(jīng)做過介紹了。這里主要介紹由 ChatGPT 開啟的“文本生成 + 指令”的范式。具體來說,就是利用訓(xùn)練好的 ChatGPT 或類似的文本生成模型,通過輸入適當(dāng)?shù)闹噶?span label="備注">(prompt)來完成某一項具體的場景。

這種范式與此前的 NLP 技術(shù)應(yīng)用有很大的不同。不論是早期的利用 LDA、RNN 等統(tǒng)計模型或很小的深度學(xué)習(xí)模型的時代,還是后來利用 BERT 等預(yù)訓(xùn)練配合微調(diào)的時代,技術(shù)所提供的能力是相對原子化的,距離實際的應(yīng)用場景有一定的距離。

就拿前面舉的讓 ChatGPT 根據(jù)要求寫英文郵件的例子,按照此前的做法,可能需要先抽取實體、事件等內(nèi)容(比如時間、地點、事件等),然后通過模版或是模型形成郵件的樣式,再通過一個翻譯模型轉(zhuǎn)化為英文。當(dāng)然如果數(shù)據(jù)量足夠訓(xùn)練端到端模型的情況下,也可以跳過中間的若干步驟。但不論采用哪種方式,要么需要將最終的場景拆解成原子化的 NLP 任務(wù),要么需要對應(yīng)的標(biāo)注數(shù)據(jù)。而對于 ChatGPT 來說,只需要一個合適的指令。

三個階段的 NLP 技術(shù)范式。

這種生成式模型搭配 prompt 的方式,直接略過了中間的各項 NLP 能力組件,用最直接的方式解決應(yīng)用場景的問題。在這種范式下,完成終端應(yīng)用的技術(shù)路徑將不再是用單點 NLP 能力模塊通過搭積木的方式組合起來。

當(dāng)然,這個過程不是一蹴而就的,也不意味著 NLP 的單點能力變得不重要。從測評的角度來說,每一個單點能力的好壞依然可作為評價模型效果的指標(biāo)。并且,就某些場景來說單點能力依舊是一個強需求。例如在訂票系統(tǒng)中本身就需要針對時間、地點進(jìn)行提取。但與此前不同的是,ChatGPT 本身也可以完成單點能力,而不需要使用額外的功能模塊。

ChatGPT 進(jìn)行信息提取。

ChatGPT 進(jìn)行情感判斷。

從這個角度來說,可以把 ChatGPT 看作是一個以自然語言作為交互媒介的 NLP 工具。如果說在過去,我們是通過模型 + 數(shù)據(jù) + 設(shè)計訓(xùn)練任務(wù)的方式來完成某項 NLP 能力,那么 ChatGPT 則是通過設(shè)計指令來完成這些能力。

可想而知,ChatGPT 的出現(xiàn)大大降低了 NLP 技術(shù)的應(yīng)用門檻。但它目前還不是全能的。最重要的一點在于它缺乏準(zhǔn)確可靠的垂直領(lǐng)域知識,為了讓它的回答可靠,最直接的方式是為它提供外部的知識來源,就像微軟將 Bing 的搜索結(jié)果作為它回答的信息來源那樣。

因此,“傳統(tǒng)”的 NLP 技術(shù)并不會就此完全消亡,而是會以“輔助”的角色,作為目前 ChatGPT 短板的補充,這也許會是未來 NLP 技術(shù)應(yīng)用的新范式。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
傳媒瞭望|郭全中:ChatGPT的爆火,來看看和您的行業(yè)有什么關(guān)系?
GPT-4大力出奇跡的背后:遠(yuǎn)見和堅持
綜述:ChatGPT
人工智能ChatGPT爆火,我們距離“人類智能”還有多遠(yuǎn)
透過ChatGPT的進(jìn)化足跡,OpenAI傳達(dá)了哪些信號?
ChatGPT以及LLM(大語言模型)的思考 | 一起用AI
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服