關(guān)于ChatGPT八個技術(shù)問題的猜想
看到 ChatGPT 的華麗誕生,心情很復(fù)雜,既高興、驚喜,也感到恐慌。高興和驚喜的是沒有預(yù)料到這么快就見證了自然語言處理(NLP)技術(shù)的重大突破,體驗到通用技術(shù)的無限魅力。恐慌的是 ChatGPT 幾乎可以高質(zhì)量地完成 NLP 中的大多數(shù)任務(wù),逐漸認識到很多 NLP 的研究方向遇到了極大挑戰(zhàn)。
總體而言,ChatGPT 最令人非常驚艷的是它的通用性,相比于 GPT-3 需要通過設(shè)計非常精巧的提示來實現(xiàn)效果并不太好的各種 NLP 能力,ChatGPT 已經(jīng)讓用戶感受不到提示的存在。
作為一個對話系統(tǒng),ChatGPT 讓用戶自然提問便可實現(xiàn)從理解到生成的各種任務(wù),而且性能在開放領(lǐng)域幾乎都達到了當前最佳水平,很多任務(wù)超越了針對特定任務(wù)單獨設(shè)計的模型,并且在代碼編程領(lǐng)域表現(xiàn)卓越。
具體而言,自然語言理解能力(尤其是用戶意圖理解能力)十分突出,無論是問答、聊天、分類、摘要、翻譯等任務(wù),盡管回復(fù)不一定完全正確,但是幾乎都能夠領(lǐng)會用戶意圖,理解能力遠超預(yù)期。
相比于理解能力,ChatGPT 的生成能力更加強大,可以針對各種問題生成具有一定邏輯且多樣化的長文本??偟膩碚f,ChatGPT 表現(xiàn)出的更多是驚艷,是通向 AGI 的初步階段,一些技術(shù)瓶頸解決后會更加強大。
對于 ChatGPT 表現(xiàn)案例的總結(jié)已經(jīng)非常多了,這里主要總結(jié)一下自己對 ChatGPT 技術(shù)問題的一些思考,算是與 ChatGPT 斷斷續(xù)續(xù)交互兩個多月的一個簡單總結(jié)。由于無法了解 ChatGPT 的具體實現(xiàn)技術(shù)和細節(jié),所以幾乎都是主觀猜想,肯定有很多不對的地方,歡迎一起探討。
1. ChatGPT 的通用性為何做得如此之好?
只要使用過 ChatGPT,我們就會發(fā)現(xiàn)它不是一個傳統(tǒng)意義上的人機對話系統(tǒng),實際是一個以自然語言為交互方式的通用語言處理平臺。
2020 年的 GPT-3 雖然擁有了通用能力的雛形,但是需要精心設(shè)計提示語來觸發(fā)相應(yīng)功能,而 ChatGPT 允許用戶采用非常自然的提問就可以準確識別意圖完成各種功能。傳統(tǒng)方法往往先進行用戶意圖識別,再針對不同意圖調(diào)用相應(yīng)功能的處理模塊,例如通過用戶數(shù)據(jù)識別出摘要或翻譯意圖,再調(diào)用文本摘要或機器翻譯模型。
傳統(tǒng)方法在開放域的意圖識別準確率不夠理想,而且不同功能模塊各自為戰(zhàn)無法共享信息,難以形成強大的 NLP 通用平臺。ChatGPT 突破了各自為戰(zhàn)的模式,不再區(qū)分不同功能,統(tǒng)一認為是對話過程中的一種特定需求。那么,ChatGPT 的通用性為何做得如此之好呢?一直在思考這個問題,由于沒有條件實驗證實,所以僅能猜想。
根據(jù) Google 的 Instruction Tuning 研究工作 FLAN,當模型達到一定規(guī)模(e.g. 68B)且 Instruction 任務(wù)的類型達到一定數(shù)目(e.g. 40),模型就涌現(xiàn)出對新意圖的識別能力。OpenAI 從其開放的 API 中收集了全球用戶各種任務(wù)類型的對話數(shù)據(jù),根據(jù)意圖分類和標注,然后在 175B 參數(shù) GPT-3.5 上進行 Instruction Tuning,自然就涌現(xiàn)出了通用的意圖識別能力。
2. 為什么面向?qū)υ挼奈⒄{(diào)沒有遭遇災(zāi)難性遺忘問題?
災(zāi)難性遺忘問題一直是深度學(xué)習中的一個挑戰(zhàn),經(jīng)常因為在某個任務(wù)上訓(xùn)練后就喪失了在其他任務(wù)上的性能。例如,一個 30 億參數(shù)的基礎(chǔ)模型,先在自動問答數(shù)據(jù)上進行微調(diào),然后在多輪對話數(shù)據(jù)上進行微調(diào),結(jié)果會發(fā)現(xiàn)模型的問答能力大幅度下降。ChatGPT 似乎不存在這個問題,其在基礎(chǔ)模型 GPT-3.5 上進行了兩次微調(diào),第一次依據(jù)人工標注的對話數(shù)據(jù)進行微調(diào),第二次根據(jù)人類反饋的強化學(xué)習進行微調(diào),微調(diào)使用的數(shù)據(jù)很少,尤其是人類反饋的打分排序數(shù)據(jù)更少,微調(diào)后竟然仍然表現(xiàn)出強大的通用能力,而并沒有完全過擬合到對話任務(wù)。
這是個非常有趣的現(xiàn)象,也是我們沒有條件驗證的現(xiàn)象。猜測可能有兩方面的原因,一方面是 ChatGPT 使用的對話微調(diào)數(shù)據(jù)實際可能包含了非常全面的 NLP 各種任務(wù),正如 InstructGPT 中對用戶使用 API 的問題分類可以發(fā)現(xiàn),很多都不是簡單的對話,還有分類、問答、摘要、翻譯、代碼生成等等,因此,ChatGPT 實際是對若干任務(wù)同時進行了微調(diào);另一方面,可能當基礎(chǔ)模型足夠大之后,在較小數(shù)據(jù)上的微調(diào)不會對模型產(chǎn)生很大影響,可能僅在基礎(chǔ)模型參數(shù)空間非常小的鄰域中優(yōu)化,所以不會顯著影響基礎(chǔ)模型的通用能力。
3. ChatGPT 的大范圍上下文連續(xù)對話能力是如何做到的?
使用 ChatGPT 時就會發(fā)現(xiàn)它一個讓人十分驚訝的能力,即使和 ChatGPT 交互了十多輪,它仍然還記得第一輪的信息,而且能夠根據(jù)用戶意圖比較準確地識別省略、指代等細粒度語言現(xiàn)象。這些對我們?nèi)藖碚f似乎不算問題,但是在 NLP 的研究歷史中,省略、指代等問題一直是一個難以逾越的挑戰(zhàn)。此外,在傳統(tǒng)對話系統(tǒng)中,對話輪次多了之后,話題的一致性難以保障。
但是,ChatGPT 幾乎不存在這個問題,即使輪次再多,似乎都可以保持對話主題的一致性和專注度。猜測這個能力可能有三方面的來源。首先,高質(zhì)量的多輪對話數(shù)據(jù)是基礎(chǔ)和關(guān)鍵,正如 Google 的 LaMDA,OpenAI 也采用人工標注的方式構(gòu)造了大量高質(zhì)量多輪對話數(shù)據(jù),在此之上進行的微調(diào)將會激發(fā)模型的多輪對話能力。
其次,基于人類反饋的強化學(xué)習因為提升了模型回復(fù)的擬人性,也會間接增強模型多輪對話的一致性能力。最后,模型對 8192 個語言單元(Token)的顯式建模能力使其幾乎可以記憶普通人一整天的對話數(shù)據(jù),在一次對話交流中很難超出這個長度,因此,所有對話歷史都已經(jīng)被有效記憶,從而可以顯著提升連續(xù)多輪對話的能力。
4. ChatGPT 的交互修正能力是如何煉成的?
交互修正能力是智能的一種高級體現(xiàn),對我們來人說稀松平常的事情卻是機器的痛點。在交流過程中,被指出問題后我們會立刻意識到問題所在并及時準確地修正相關(guān)信息。對于機器而言,意識到問題、識別問題范圍并更正對應(yīng)信息的每一步都不是一件容易的事情。ChatGPT 出現(xiàn)之前尚未看到過具有較強交互修正能力的通用模型。
與 ChatGPT 交互后就會發(fā)現(xiàn),無論是用戶更改自己之前的說法還是指出 ChatGPT 的回復(fù)中存在的問題,ChatGPT 都能夠捕捉到修改意圖,并準確識別出需要修改的部分,最后能夠做出正確的修正。
目前為止,沒有發(fā)現(xiàn)任何模型相關(guān)的因素與交互修正能力直接相關(guān),也不相信 ChatGPT 具有實時學(xué)習的能力,一方面是重啟對話后 ChatGPT 可能還會犯相同錯誤,另一方面是基礎(chǔ)大模型的優(yōu)化學(xué)習從來都是從高頻數(shù)據(jù)中總結(jié)頻繁模式,一次對話無論如何也難以更新基礎(chǔ)模型。
相信更多的是基礎(chǔ)語言大模型的一種歷史信息處理技巧,不太確定的因素可能包括:
- OpenAI 人工構(gòu)建的對話數(shù)據(jù)中包含一些交互修正的案例,微調(diào)后擁有了這樣的能力;
- 人工反饋的強化學(xué)習使得模型輸出更加符合人類偏好,從而在信息修正這類對話中表現(xiàn)得更加遵循人類的修正意圖;
- 可能大模型達到一定規(guī)模(e.g. 60B)之后,原始訓(xùn)練數(shù)據(jù)中的交互修正案例就被學(xué)到了,模型交互修正的能力自然就涌現(xiàn)出來了。
5. ChatGPT 的邏輯推理能力是如何學(xué)到的?
當我們詢問 ChatGPT 一些邏輯推理相關(guān)的問題時,它并不是直接給出答案,而是展示出詳細的邏輯推理步驟,最后給出推理結(jié)果。雖然雞兔同籠等很多案例表明 ChatGPT 并沒有學(xué)會推理本質(zhì),而僅僅學(xué)會了推理的表面邏輯,但是展示的推理步驟和框架基本是正確的。
一個語言模型能夠?qū)W習到基本的邏輯推理模式已經(jīng)極大超越了預(yù)期,其推理能力溯源是非常有趣的一個問題。相關(guān)對比研究發(fā)現(xiàn),當模型足夠大,并且程序代碼與文本數(shù)據(jù)混合訓(xùn)練時,程序代碼的完整邏輯鏈就會遷移泛化到語言大模型,從而大模型就擁有了一定的推理能力。
這種推理能力的習得有點神奇,但是也能理解,可能代碼注釋是從邏輯代碼到語言大模型推理能力遷移泛化的橋梁。多語言能力應(yīng)該也是類似的道理。ChatGPT 的訓(xùn)練數(shù)據(jù)絕大部分是英文,中文數(shù)據(jù)占比極少,然而我們發(fā)現(xiàn) ChatGPT 的中文能力雖然比不上英文,但是也非常強大。訓(xùn)練數(shù)據(jù)中的一些中英對照的平行數(shù)據(jù)可能就是英文能力遷移到中文能力的橋梁。
6. ChatGPT 是否針對不同下游任務(wù)采用不同的解碼策略?
ChatGPT 有許多驚艷的表現(xiàn),其中一個是它可以針對同一個問題生成多種不同的回復(fù),顯得很睿智。
比如,我們不滿意 ChatGPT 的回答,可以點擊 “重新生成” 按鈕,它立刻會生成另一種回復(fù),若還是不滿意可以繼續(xù)讓其重新生成。這一點在 NLP 領(lǐng)域并不神秘,對于語言模型來說是它的一個基本能力,也就是采樣解碼。
一個文本片段的后面可能接不同的詞語,語言模型會計算每個詞語出現(xiàn)的概率,如果解碼策略選擇概率最大的詞語輸出,那么每次結(jié)果都是確定的,就無法生成多樣性回復(fù)。如果按照詞匯輸出的概率分布進行采樣,例如,“策略” 的概率是 0.5,“算法” 的概率是 0.3,然后采樣解碼輸出 “策略” 的可能性就是 50%,輸出 “算法” 的可能性就是 30%,從而保證了輸出的多樣性。因為采樣過程是按照概率分布進行的,即使輸出結(jié)果多樣,但是每一次都是選擇概率較大的結(jié)果,所以多種結(jié)果看起來都相對比較合理。對比不同類型的任務(wù)時,我們會發(fā)現(xiàn) ChatGPT 的回復(fù)多樣性針對不同下游任務(wù)差別比較大。
針對 “如何”、“為什么” 等 “How”、“Why” 型任務(wù)時,重新生成的回復(fù)與之前的回復(fù)無論是表達方式還是具體內(nèi)容具有較大差異,針對機器翻譯、數(shù)學(xué)應(yīng)用題等 “What” 型任務(wù)時,不同回復(fù)之間的差異非常細微,有時幾乎沒有變化。如果都是依據(jù)概率分布的采樣解碼,為何不同回復(fù)之間的差異如此之小。
猜測一種理想情況可能是 “What” 型任務(wù)基礎(chǔ)大模型學(xué)習到的概率分布非常尖銳(Sharp),例如學(xué)到的 “策略” 概率為 0.8,“算法” 概率為 0.1,所以大多數(shù)時候采樣到相同的結(jié)果,也就是前面例子中 80% 的可能性都會采樣到 “策略”;“How”、“Why” 型任務(wù)基礎(chǔ)大模型學(xué)習到的概率分布比較平滑(Smooth),例如 “策略” 概率為 0.4,“算法” 概率為 0.3,所以不同時候可以采樣到差異性較大的結(jié)果。
如果 ChatGPT 能夠?qū)W習到任務(wù)相關(guān)的非常理想的概率分布,那確實非常厲害,基于采樣的解碼策略就可以適用于所有任務(wù)。通常,關(guān)于機器翻譯、數(shù)學(xué)計算、事實性問答等答案比較確定或者 100% 確定的任務(wù),一般采用基于貪婪解碼,也就是每次輸出概率最高的詞語。如果希望輸出相同語義的多樣性輸出,大多采用基于柱搜索的解碼方法,但較少采用基于采樣的解碼策略。
從與 ChatGPT 的交互看,所有任務(wù)它似乎都采用了基于采樣的解碼方法,真是暴力美學(xué)。
7. ChatGPT 能否解決事實可靠性問題?
答案缺乏可靠性是目前 ChatGPT 面臨的最大挑戰(zhàn)。特別是針對事實性和知識性相關(guān)的問答,ChatGPT 有時候會一本正經(jīng)地胡編亂造,生成虛假信息。即使讓它給出來源和出處或者參考文獻,ChatGPT 通常也會生成一個不存在的網(wǎng)址或者從未發(fā)表過的文獻。
不過,ChatGPT 通常會給用戶一種比較好的感覺,也就是很多事實和知識它似乎都知道。實際上,ChatGPT 就是一個語言大模型,語言大模型本質(zhì)就是一種深度神經(jīng)網(wǎng)絡(luò),深度神經(jīng)網(wǎng)絡(luò)本質(zhì)就是一種統(tǒng)計模型,就是從高頻數(shù)據(jù)中習得相關(guān)模式。很多常見的知識或事實,在訓(xùn)練數(shù)據(jù)中出現(xiàn)頻率高,上下文之間的模式比較固定,預(yù)測的詞語概率分布就比較尖銳,熵比較小,大模型容易記住,并在解碼過程中輸出正確的事實或知識。
但是,有很多事件和知識即使在非常龐大的訓(xùn)練數(shù)據(jù)中也很少出現(xiàn),大模型便無法學(xué)習到相關(guān)模式,上下文之間的模式比較松散,詞語預(yù)測的概率分布比較平滑,熵比較大,大模型在推理過程中容易產(chǎn)生不確定性的隨機輸出。
這是包括 ChatGPT 在內(nèi)所有生成式模型的固有問題。如果仍然延續(xù) GPT 系列架構(gòu),基礎(chǔ)模型不做改變,從理論上講是難以解決 ChatGPT 回復(fù)的事實可靠性問題。和搜索引擎的結(jié)合目前看是非常務(wù)實的一種方案,搜索引擎負責搜索可靠的事實信息來源,ChatGPT 負責總結(jié)和歸納。
如果希望 ChatGPT 解決事實回答的可靠性問題,可能需要進一步提升模型的拒識能力,也就是過濾掉模型確定無法回答的那些問題,同時還需要事實驗證模塊來驗證 ChatGPT 回復(fù)的正確性。希望下一代 GPT 能夠在這個問題上取得突破。
8. ChatGPT 能否實現(xiàn)實時信息的學(xué)習?
ChatGPT 的交互修正能力使得它看起來似乎擁有了實時的自主學(xué)習能力。
正如上述討論,ChatGPT 可以依據(jù)用戶提供的修改意圖或者更正信息,立刻修正相關(guān)回復(fù),表現(xiàn)出實時學(xué)習的能力。實則不然,學(xué)習能力體現(xiàn)的是學(xué)到的知識是普適的,可以運用在其他時間和其他場合,但是 ChatGPT 并沒有展現(xiàn)出這個能力。ChatGPT 只是在當前的對話中能夠根據(jù)用戶反饋進行了修正,當我們重啟一個對話,測試相同的問題時,ChatGPT 還會犯相同或類似的錯誤。
一個疑問是為何 ChatGPT 不將修改后正確的信息存儲到模型中呢?這里有兩方面的問題。首先,用戶反饋的信息并不一定是正確的,有時候故意引導(dǎo) ChatGPT 做出不合理的回答,只是因為 ChatGPT 在基于人類反饋的強化學(xué)習中加深了對用戶的依賴程度,所以 ChatGPT 在同一個對話過程中會非常相信用戶的反饋。其次,即使用戶反饋的信息是正確的,但因為可能出現(xiàn)頻率不高,基礎(chǔ)大模型不能根據(jù)低頻數(shù)據(jù)更新參數(shù),否則大模型就會對某些長尾數(shù)據(jù)進行過擬合從而失去通用性。
所以,讓 ChatGPT 實時進行學(xué)習非常困難,一種簡單直觀的方案就是每經(jīng)過一段時間就利用新的數(shù)據(jù)微調(diào) ChatGPT?;蛘卟捎糜|發(fā)機制,當多個用戶提交相同或相似反饋時觸發(fā)模型的參數(shù)更新,從而增強模型的動態(tài)學(xué)習能力。
本文作者張家俊是中國科學(xué)院自動化研究所研究員,原文鏈接:
?https://zhuanlan.zhihu.com/p/606478660?





























