ChatGPT通俗講義一

閱讀本文前需要理解幾個名詞:
自然語言:通常是指一種自然地隨文化演化的語言。例如,漢語、英語、日語都是自然語言的例子,這一種用法可見于自然語言處理一詞中。自然語言是人類交流和思維的主要工具。 自然語言是人類智慧的結(jié)晶,自然語言處理是人工智能中最為困難的問題之一,而對自然語言處理的研究也是充滿魅力和挑戰(zhàn)的,也是各國人表達的方法其中之一。
AI語言模型:將自然語言通過技術(shù)手段轉(zhuǎn)化為機器能夠理解的數(shù)字語言,并使得機器能夠?qū)W習(xí)到預(yù)研中表達的語義的模型。
作為本科和研究生階段一直學(xué)習(xí)AI的學(xué)生來說,對其一直都有很濃厚的興趣,今天有機會就來通俗的聊聊自己對ChatGPT的理解。
ChatGPT目前可以說是在全世界最火的人工智能模型之一,它是由名人工智能研究機構(gòu)OpenAI于2022年11月30日發(fā)布的一個大型語言預(yù)訓(xùn)練模型。他的核心在于能夠在理解人類的自然語言的邏輯基礎(chǔ)上,并能實現(xiàn)使用貼近人類語言風(fēng)格的方式進行輸出回復(fù)的功能。
模型開放使用以來,在人工智能領(lǐng)域引起了巨大的轟動,也成功火出了技術(shù)圈。從數(shù)據(jù)上看,ChatGPT用戶數(shù)在5天內(nèi)就達到了100萬,2個月就達到了1億;另外,在很多非人工智能領(lǐng)域,已經(jīng)有機構(gòu)在嘗試用ChatGPT去做一些智能生成的事。
本文通過以下幾個部分來大概講講自己對ChatGPT的了解:
1、ChatGPT是什么
2、ChatGPT的核心要素
3、ChatGPT能做什么
4、ChatGPT不能什么
一、ChatGPT是什么
ChatGPT是一個大型語言預(yù)訓(xùn)練模型(即Large Language Model,LLM)。LLM是指需要利用大量文本數(shù)據(jù)來訓(xùn)練的語言模型,這種模型可以學(xué)習(xí)出語言關(guān)聯(lián)性,能夠理解文章的上下文信息并抽取保存。下圖展示了LLM在模型參數(shù)量和學(xué)習(xí)數(shù)據(jù)量上的訓(xùn)練結(jié)果情況,其中數(shù)據(jù)量圖例展示的是模型在預(yù)訓(xùn)練過程中會吃到的token數(shù)量,對于中文來說一個token就相當(dāng)于一個中文字符,其中圖例引用文章《The Promise and Perils of Large Language Models》。從圖中我們可以看到語言模型的參數(shù)量和數(shù)據(jù)量會朝著越來越大的方向發(fā)展。


為什么語言模型的參數(shù)量和數(shù)據(jù)量會朝著越來越大的方向發(fā)展呢?在早些時間的一些研究已經(jīng)證明,隨著參數(shù)量和訓(xùn)練數(shù)據(jù)量的增大,語言模型的能力會隨著參數(shù)量的指數(shù)增長而線性增長,這種現(xiàn)象被稱為Scaling Law。但是在2022年之后,隨著進來對大模型的深入研究,人們發(fā)現(xiàn)當(dāng)模型的參數(shù)量大于一定程度的時候,模型能力會突然暴漲,模型會突然擁有一些突變能力(Emergent Ability),如推理能力、零樣本學(xué)習(xí)能力等。
ChatGPT真正強大的地方在于他除了能夠充分理解我們?nèi)祟惖膯栴}需求外,還能夠用流暢的自然語言進行應(yīng)答,這是以前的語言模型不能實現(xiàn)的。下面,本文將ChatGPT一分為二,分別從GPT和Chat兩個維度來介紹ChatGPT的機理。值得說明的是:當(dāng)前OpenAI并未放出ChatGPT相關(guān)的訓(xùn)練細節(jié)和論文,也沒有開源代碼,只能從其技術(shù)BLOG上獲取其大致的訓(xùn)練框架和步驟。
GPT
GPT全稱Generative Pre-training Transformer,由Google在2018年提出的一種預(yù)訓(xùn)練語言模型。他的核心是一個Transformer結(jié)構(gòu),主要基于注意力機制來建模序列中不同位置之間的關(guān)聯(lián)關(guān)系,最后可用于處理序列生成的任務(wù)。通過使用大量的文本數(shù)據(jù),GPT可以生成各種各樣的文本,包括對話、新聞報道、小說等等。上面提到了很多次語言模型,這里簡單給出語言模型主要的涵義:
給定已知的token序列N_t(對中文來說是字符,對英文來說可能是單詞或者詞根),通過語言模型來預(yù)測t+1位置上的token是什么。實際上模型輸出的是所有token在t+1位置上的概率向量,然后根據(jù)概率最大的準則選擇token。大家在使用ChatGPT的時候,一定有發(fā)現(xiàn)機器人在生成回復(fù)的時候是一個字一個字的順序,背后的機制就是來自于這邊。
對語言模型來說,可能大家之前更熟悉的是BERT,BERT是Google在2018年發(fā)布的一種雙向語言模型,發(fā)布后,其在不同語言理解類任務(wù)(如文本分類,信息抽取,文本相似度建模)中都達到了當(dāng)期時間節(jié)點的最好效果。BERT與上述語言模型的機理有所不同,其訓(xùn)練任務(wù)相當(dāng)于讓模型去做完形填空任務(wù)(官方稱為Masked Language Model任務(wù),下文簡稱MLM),并不是遵循文本一個接一個預(yù)測的順序,其模型機制與人類溝通表達的習(xí)慣不太符合。圖中左半部分是BERT的示意圖,右半部是GPT的示意圖,Trm為一個Transformer模型組件,E為輸入的token序列,T為模型生成的token序列。其中,實線部分為該位置的Trm能夠看到哪些其他位置token的上下文知識??梢钥吹剑瑢τ贐ERT來說,每個位置上的Trm都能看到任意位置的上下文知識,因此其在具體的自然語言理解任務(wù)上會有不錯的效果。而GPT則是遵循傳統(tǒng)語言模型的模式,例如index=1位置的Trm是無法看到index>1的知識的,因此它在自然語言理解任務(wù)上的效果不如BERT,但是在生成任務(wù)上會更符合人類的直覺。業(yè)界把BERT中的MLM模式稱為自編碼形式(auto-encoding),把GPT的模式稱為自回歸形式(auto-regressive)。
大家從BERT和GPT的對比中可以看到,BERT在語言理解上似乎更具優(yōu)勢,那為何現(xiàn)在ChatGPT的模型基座是GPT呢?這就涉及到最近兩年逐漸清晰的NLP任務(wù)大一統(tǒng)趨勢了。
NLP任務(wù)大一統(tǒng)
基于MLM訓(xùn)練范式得到的BERT模型雖然在很多語言理解類任務(wù)上有不錯的效果下游任務(wù),之后整個業(yè)界在處理NLP任務(wù)的時候通常會遵循預(yù)訓(xùn)練模型→下游任務(wù)finetune的流程:
這種方式與傳統(tǒng)的training from scratch相比,對下游任務(wù)數(shù)據(jù)的需求量更少,得到的效果也更優(yōu)。不過,上述方式還是存在一些問題:
處理一個新的任務(wù)就需要標注新的語料,對語料的需求比較大,之前已經(jīng)做過的任務(wù)語料無法高效利用。即使是信息抽取下面的不同任務(wù)(如實體識別和關(guān)系抽取兩個任務(wù))也無法通用化。
處理一個新的任務(wù)需要針對任務(wù)特性設(shè)計整體模型方案,雖然BERT模型的底座已經(jīng)確定,但還是需要一定的設(shè)計工作量。例如文本分類的任務(wù)和信息抽取的任務(wù)的模型方案就完全不同。
對于要走向通用人工智能方向的人類來說,這種范式很難達到通用,對每個不同任務(wù)都用單獨的模型方案和數(shù)據(jù)來訓(xùn)練顯然也是低效的。因此,為了讓一個模型能夠盡量涵蓋更多的任務(wù),業(yè)界嘗試了幾種不同的路徑來實現(xiàn)這個目標。
對BERT中的MLM進行改造,如引入一些特殊的Mask機制,使其能夠同時支持多種不同任務(wù),典型的模型如UniLM(https://arxiv.org/abs/1905.03197)
引入額外的Decoder,將BERT優(yōu)化改造成能做生成式的模型,典型的工作有BART(https://arxiv.org/abs/1910.13461),T5(https://arxiv.org/pdf/1910.10683.pdf),百度的UIE(將任務(wù)設(shè)計生成text-to-structure的形式實現(xiàn)信息抽取的大一統(tǒng) )。我對T5比較熟悉,之前也寫過相關(guān)的分析,這個工作算是比較早地嘗試將不同任務(wù)通過文本生成的方式進行大一統(tǒng)。如圖所示,T5訓(xùn)練時直接輸入了不同下游NLP任務(wù)的標注數(shù)據(jù),通過在原始文本的前端添加任務(wù)的提示文本,來讓模型學(xué)習(xí)不同任務(wù)的特性。如翻譯任務(wù)可以是”translate English to German”,分類任務(wù)可以是跟具體分類目標有關(guān)如”cola sentence”,也可以是一種摘要任務(wù)”summarize”。
怎么樣,是不是覺得跟ChatGPT的模式有相似的地方?
這種方式可以同時利用多種NLP任務(wù)相關(guān)的公開數(shù)據(jù)集,一下子就把預(yù)訓(xùn)練任務(wù)從語言模型擴展到了更多任務(wù)類型中,增強了模型的通用性以及對下游任務(wù)的理解能力。
除了上面兩種方式外,還有其他改造BERT的方法就不窮舉了,如蘇神通過Gibbs采樣來實現(xiàn)BERT模型的文本生成等。(https://kexue.fm/archives/8119)
雖然有很多大一統(tǒng)的路徑,但是OpenAI一直堅持著GPT的方向不斷演化著,2019年他們發(fā)布了GPT2,這個模型相對于GPT來說,主要是擴大了參數(shù)量,擴大了訓(xùn)練語料,在構(gòu)建語料的時候隱式地包含了multitask或者multidomain的特質(zhì),最后在二階段驗證模型的時候并不是直接做有監(jiān)督的finetune,而是繼續(xù)用下游數(shù)據(jù)做無監(jiān)督的訓(xùn)練,最后的效果居然還不錯,證明了只要模型夠大,就能學(xué)到足夠的知識用于處理一些下游任務(wù)。從它的論文名字就可以看出來與其核心思想:Language models are unsupervised multitask learners?。不過彼時,BERT及其各種變種在領(lǐng)域中的應(yīng)用還是更廣的,真正讓GPT系列模型驚艷眾人的工作還是要數(shù)2020年發(fā)布的GPT-3模型。(https://arxiv.org/abs/2005.14165)
引用內(nèi)容:
https://baike.baidu.com/item/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80/4146019?fr=aladdin
https://www.vinayiyengar.com/2022/08/04/the-promise-and-perils-of-large-language-models/
https://web.stanford.edu/class/cs224n/slides/cs224n-2023-lecture11-prompting-rlhf.pdf