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