解析ChatGPT背后的技術(shù)演進(jìn)
1、自然語(yǔ)言理解與語(yǔ)言模型
1.1 自然語(yǔ)言處理
自然語(yǔ)言處理 (NLP) 是人工智能 (AI) 的一個(gè)分支。它能夠使計(jì)算機(jī)理解、生成和處理人類語(yǔ)言,建立在機(jī)器語(yǔ)言和人類語(yǔ)言之間溝通的橋梁,以實(shí)現(xiàn)人機(jī)交流的目的,涉及到語(yǔ)言學(xué)、計(jì)算機(jī)科學(xué)以及人工智能等交叉學(xué)科。
回顧NLP的主要發(fā)展歷程,可大致分為三個(gè)階段:
- 上世紀(jì)80年代之前,人工智能萌芽階段,主要是基于規(guī)則的語(yǔ)言系統(tǒng);
- 80年代之后,從機(jī)器學(xué)習(xí)的興起到神經(jīng)網(wǎng)絡(luò)的引入,帶動(dòng)了NLP的快速發(fā)展和商業(yè)化;
- 2017年至今,基于Attention注意力機(jī)制構(gòu)建的Transformer模型開(kāi)啟了大語(yǔ)言模型時(shí)代;
自然語(yǔ)言處理
NLP可分為自然語(yǔ)言理解(Natural Language Understanding, NLU)和自然語(yǔ)言生成(Natural Language Generation, NLG)兩大部分。
自然語(yǔ)言理解(NLU)就是希望機(jī)器像人一樣,具備正常人的語(yǔ)言理解能力,由于自然語(yǔ)言在理解上有很多難點(diǎn)(多樣性、奇歧義性,知識(shí)依賴以及語(yǔ)言的上下文等),所以 NLU 是至今還遠(yuǎn)不如人類的表現(xiàn)。
自然語(yǔ)言生成(NLG)是為了跨越人類和機(jī)器之間的溝通鴻溝,將非語(yǔ)言格式的數(shù)據(jù)轉(zhuǎn)換成人類可以理解的語(yǔ)言格式,如文章、報(bào)告等。
自然語(yǔ)言處理是是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向,被譽(yù)為“人工智能皇冠上的明珠”。
NLP領(lǐng)域世界級(jí)大師
近幾年自然語(yǔ)言處理的發(fā)展迅猛,尤其是2017年Transformer提出后,在NLP領(lǐng)域得到了普遍應(yīng)用,都獲得了不錯(cuò)的效果。其實(shí),在人類尚未明了大腦是如何進(jìn)行語(yǔ)言的模糊識(shí)別和邏輯判斷的情況下,NLP要想有突破性的進(jìn)展,依然還有很長(zhǎng)的路要走。
NLP文本處理的多種困難
1.2 語(yǔ)言模型
2、語(yǔ)言模型的發(fā)展演進(jìn)
語(yǔ)言模型的研究范式變化是從規(guī)則到統(tǒng)計(jì),從統(tǒng)計(jì)機(jī)器學(xué)習(xí)到基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí),這同時(shí)也是自然語(yǔ)言處理(NLP)發(fā)展的歷史。
語(yǔ)言模型發(fā)展演進(jìn)
2.1 統(tǒng)計(jì)語(yǔ)言模型
從語(yǔ)言模型的鏈?zhǔn)蕉x公式來(lái)看,由于涉及到的參數(shù)量巨大,計(jì)算條件概率困難。隨后引入Markov Assumption,解決參數(shù)空間大的問(wèn)題。在詞語(yǔ)共現(xiàn)的長(zhǎng)度選擇做出了讓步,N-gram ML的定義為:
N較大時(shí):
- 提供了更多的上下文信息,語(yǔ)境更具區(qū)分性;
- 參數(shù)多,計(jì)算代價(jià)大,需要訓(xùn)練語(yǔ)料多,參數(shù)估計(jì)不可靠;
N較小時(shí):
- 上下文信息少,語(yǔ)境不具區(qū)分性;
- 參數(shù)少、計(jì)算代價(jià)小、需要訓(xùn)練語(yǔ)料少、參數(shù)預(yù)估可靠;
困惑度隨著N的變化而變化,N越大,參數(shù)量級(jí)以指數(shù)級(jí)增長(zhǎng),而困惑度越小。
2.2 神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型
NNLM模型結(jié)構(gòu):
神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型結(jié)構(gòu)圖
- 延續(xù)了Markov Assumption,即固定長(zhǎng)度的歷史詞;
- 詞映射到低維空間,解決了維度災(zāi)難問(wèn)題;
- 詞泛化能力提升(如:相似性、類比性);
- 相似性:“movie”、“film”和“video”詞語(yǔ)義相近;
- 類比性:“中國(guó)” + “北京” = “日本” + “東京”;
- 三層結(jié)構(gòu):Word Embedding Layer、Hidden Layer 和 Output Layer;
缺點(diǎn):
- 固定長(zhǎng)度的歷史,缺失long term的依賴;
另外,NNLM的出現(xiàn),直接催生了詞向量化工具word2vec,從此進(jìn)入詞的向量化階段。是將自然語(yǔ)言表示的單詞轉(zhuǎn)換為計(jì)算機(jī)能夠理解的向量形式的技術(shù)。有了一個(gè)詞的向量之后,各種基于向量的計(jì)算就可以實(shí)施,如用向量之間的相似度來(lái)度量詞之間的語(yǔ)義相關(guān)性。其基于的分布式假設(shè)就是出現(xiàn)在相同上下文的詞意思應(yīng)該相近。Word Embedding也有其局限性,比如:難以對(duì)詞組做分布式表達(dá);無(wú)法解決多義詞問(wèn)題。此外,Word Embedding對(duì)于應(yīng)用場(chǎng)景的依賴很強(qiáng),所以針對(duì)特殊的應(yīng)用場(chǎng)景可能需要重新訓(xùn)練,這樣就會(huì)很消耗時(shí)間和資源。
word2vec的網(wǎng)絡(luò)結(jié)構(gòu)與NNML類似,在目標(biāo)詞和上下文的預(yù)測(cè)上,分為倆種,分別為CBOW(上下文信息-> 中間詞)模型和Skip-gram(中間詞-> 上下文信息)模型。
word2vec技術(shù)原理
2.3 RNN
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)是一類以序列(sequence)數(shù)據(jù)為輸入,在序列的演進(jìn)方向進(jìn)行遞歸(recursion)且所有節(jié)點(diǎn)(循環(huán)單元)按鏈?zhǔn)竭B接的網(wǎng)絡(luò)結(jié)構(gòu)。
RNN網(wǎng)絡(luò)結(jié)構(gòu)圖
RNN設(shè)計(jì)上打破了神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的限制,認(rèn)為詞與詞上下文信息決定了詞的語(yǔ)義信息,而非像前饋神經(jīng)網(wǎng)絡(luò)同N-gram一樣,每個(gè)詞只依賴前個(gè)詞,從而限制了前饋神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的性能;
缺點(diǎn):
- 梯度消失或者爆炸(由多級(jí)偏導(dǎo)數(shù)連乘導(dǎo)致)
RNN在自然語(yǔ)言處理任務(wù)中,例如語(yǔ)音識(shí)別、語(yǔ)言建模、機(jī)器翻譯等領(lǐng)域有應(yīng)用,也被用于各類時(shí)間序列預(yù)報(bào)。
2.4 LSTM
長(zhǎng)短期記憶(Long short-term memory, LSTM),顧名思義,它具有記憶長(zhǎng)短期信息的能力的神經(jīng)網(wǎng)絡(luò)。在1997年由Hochreiter 和 Schmidhuber 提出,在深度學(xué)習(xí)在2012年興起后,LSTM又經(jīng)過(guò)了若干代大牛的迭代,形成了比較系統(tǒng)且完整的LSTM框架,并在很多領(lǐng)域得到了廣泛應(yīng)用。
LSTM提出的動(dòng)機(jī)是為了解決上面我們提到的RNN長(zhǎng)期依賴問(wèn)題,并解決長(zhǎng)序列訓(xùn)練過(guò)程中的梯度消失和梯度爆炸問(wèn)題。相比普通的RNN,LSTM能夠在更長(zhǎng)的序列中有更好的表現(xiàn)。從RNN模型的結(jié)構(gòu)看,隨著詞的增加,之前比較長(zhǎng)的時(shí)間片的特征會(huì)被覆蓋。因此,rnn喪失了學(xué)習(xí)連接較遠(yuǎn)的信息的能力。長(zhǎng)期依賴產(chǎn)生的原因是當(dāng)神經(jīng)網(wǎng)絡(luò)的節(jié)點(diǎn)經(jīng)過(guò)許多階段的計(jì)算后,特征信息被覆蓋造成的。
例如: “小李今天上午參加了一個(gè)有趣的班級(jí)活動(dòng),在哪里有許多有趣的朋友,大家一起暢聊學(xué)習(xí)生活,共同跳舞唱歌,他覺(jué)得非常開(kāi)心?!?,“他“指的就是“小李”,由于詞距離較遠(yuǎn),“小李”的語(yǔ)義信息已衰減,因此“小李”和“他”具有長(zhǎng)依賴問(wèn)題。
LSTM的核心是單元狀態(tài)(Cell State),由三個(gè)門(mén)機(jī)制來(lái)控制Cell狀態(tài),這三個(gè)門(mén)分別稱為遺忘門(mén)、輸入門(mén)和輸出門(mén)。LSTM是通過(guò)Gate機(jī)制控制特征的流通和損失;
LSTM網(wǎng)絡(luò)結(jié)構(gòu)如下:
LSTM網(wǎng)絡(luò)結(jié)構(gòu)圖
遺忘門(mén): LSTM的第一步就是決定Cell狀態(tài)需要丟棄哪些信息。這部分操作是通過(guò)一個(gè)稱為遺忘門(mén)的 sigmoid 單元來(lái)處理的。它通過(guò)和信息來(lái)輸出一個(gè) 0-1 之間的向量,該向量里面的 0-1 值表示單元狀態(tài)中的哪些信息保留或丟棄多少。0表示不保留,1表示都保留。 遺忘門(mén)如下圖所示。
LSTM-遺忘門(mén)
輸入門(mén): 用于更新單元狀態(tài)。首先,將先前的隱藏狀態(tài)和當(dāng)前輸入傳遞給 sigmoid 函數(shù)。這決定了通過(guò)將值轉(zhuǎn)換為0到1來(lái)更新哪些值。0表示不重要,1表示重要。還將隱藏狀態(tài)和當(dāng)前輸入傳遞給 tanh 函數(shù),將它們壓縮到-1和1之間以幫助調(diào)節(jié)網(wǎng)絡(luò)。然后將 sigmoid 輸出與 tanh 輸出相乘。如下圖所示:
LSTM-輸入門(mén)
??輸出門(mén): 輸出門(mén)決定下一個(gè)隱藏狀態(tài)是什么。隱藏狀態(tài)也用于預(yù)測(cè)。首先,將先前的隱藏狀態(tài)和當(dāng)前輸入傳遞給 sigmoid 函數(shù)。然后將新的單元狀態(tài)傳遞給 tanh 函數(shù)。將 tanh 輸出與 sigmoid 輸出相乘,以決定隱藏狀態(tài)應(yīng)攜帶的信息。它的輸出是隱藏狀態(tài)。然后將新的單元狀態(tài)和新的隱藏狀態(tài)傳遞到下一個(gè)時(shí)間步。如下圖所示:
LSTM-輸出門(mén)
缺點(diǎn):
- 超長(zhǎng)序列時(shí),LSTM的性能仍不理想;
- 計(jì)算效率低下;
LSTM長(zhǎng)短期神經(jīng)網(wǎng)絡(luò)的主要應(yīng)用于:
- 文本生成:訓(xùn)練語(yǔ)言模型,在給定一些前綴的情況下生成合理的文本;
- 語(yǔ)音識(shí)別:可以識(shí)別說(shuō)話人的聲音,也可以用來(lái)識(shí)別說(shuō)話的語(yǔ)音;
- 機(jī)器翻譯:seq2seq翻譯模型,可以把一種語(yǔ)言翻譯成另一種語(yǔ)言;
- 時(shí)間序列預(yù)測(cè):預(yù)測(cè)時(shí)間序列數(shù)據(jù),比如股票價(jià)格,天氣預(yù)報(bào)等;
2.5 ELMo
Word Embedding的杰出代表word2vec,本質(zhì)上是靜態(tài)的詞向量,即訓(xùn)練完單詞的語(yǔ)義就固定了,不會(huì)跟著上下文場(chǎng)景的變化而改變。為了解決這個(gè)問(wèn)題,出現(xiàn)了ELMO(Embedding from Language Models)的訓(xùn)練方案。ELMO采用了典型的兩階段過(guò)程,第一個(gè)階段利用語(yǔ)言模型進(jìn)行預(yù)訓(xùn)練;第二個(gè)階段是在做下游任務(wù)時(shí),從預(yù)訓(xùn)練網(wǎng)絡(luò)中提取對(duì)應(yīng)單詞的網(wǎng)絡(luò)各層的Word Embedding作為新特征補(bǔ)充到下游任務(wù)中。通過(guò)加入雙層雙向的LSTM網(wǎng)絡(luò)結(jié)構(gòu),ELMo引入上下文動(dòng)態(tài)調(diào)整單詞的embedding后,多義詞問(wèn)題得到了解決。另外,ELMo最早提出預(yù)訓(xùn)練機(jī)制。
ELMo模型結(jié)構(gòu)圖
損失函數(shù):
損失函數(shù)由倆部分組成,分別是前向的LSTM語(yǔ)言模型的損失函數(shù) 和 后向的LSTM語(yǔ)言模型的損失函數(shù)之和,認(rèn)為詞的語(yǔ)義信息是由詞以及詞的上下文信息來(lái)決定。
- 動(dòng)態(tài)詞向量的提出,多義詞方面的得到極大改善;
例如:"我中午吃了一個(gè)蘋(píng)果?!?和 “上周我買(mǎi)了一部蘋(píng)果手機(jī)。” 中的蘋(píng)果,相同的詞,但具有不同的語(yǔ)義。 - 較早提出預(yù)訓(xùn)練的概念;
缺點(diǎn):
- 特征抽取能力欠缺,ELMo使用了LSTM而不是Transformer(當(dāng)時(shí)transformer已經(jīng)被提出),Transformer提取特征的能力是要遠(yuǎn)強(qiáng)于LSTM;
- 訓(xùn)練時(shí)間長(zhǎng);
2.6 Transformer
Transformer是由谷歌公司提出的一種基于自注意力機(jī)制的神經(jīng)網(wǎng)絡(luò)模型,用于處理序列數(shù)據(jù)。在自然語(yǔ)言處理中,序列數(shù)據(jù)的輸入包括一系列文本、語(yǔ)音信號(hào)、圖像或視頻等。傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN、LSTM)模型已經(jīng)在這些任務(wù)中取得了很好的效果,但是該模型存在著兩個(gè)主要問(wèn)題:一是難以并行計(jì)算,需要訓(xùn)練時(shí)間長(zhǎng);二是難以捕捉長(zhǎng)距離依賴關(guān)系。為了解決這些問(wèn)題,Transformer模型應(yīng)運(yùn)而生。
??2017年,Google機(jī)器翻譯團(tuán)隊(duì)發(fā)表的經(jīng)典之作:《Attention is All You Need》中,完全拋棄了RNN和CNN等網(wǎng)絡(luò)結(jié)構(gòu),而僅僅采用Attention機(jī)制來(lái)進(jìn)行機(jī)器翻譯任務(wù),并且取得了很好的效果,隨后注意力機(jī)制也成為了研究與應(yīng)用熱點(diǎn)。
Transformer經(jīng)典論文:Attention Is All Your Need
在介紹Transformer之前,我們先了解一下Attention機(jī)制、Self-Attention以及殘差網(wǎng)絡(luò)等。
2.6.1 Attention機(jī)制
2014年,Bengio團(tuán)隊(duì)提出Attention機(jī)制,后來(lái)被廣泛應(yīng)用于深度學(xué)習(xí)中的各個(gè)領(lǐng)域。例如在計(jì)算機(jī)視覺(jué)方向用于捕捉圖像上的感受野、NLP中用于定位關(guān)鍵token或者特征、以及隨后的Bert與GPT系列模型,都在隨后的NLP任務(wù)中取得到 state-of-the-art 的效果。
Attention機(jī)制計(jì)算流程:
Attention機(jī)制的計(jì)算邏輯大致分為三步:
優(yōu)勢(shì):
- 可并行計(jì)算;
- 一步到位獲取全局與局部聯(lián)系,不像rnn有長(zhǎng)依賴的局限性;
- 參數(shù)少,模型復(fù)雜度低;
缺點(diǎn):
- 沒(méi)法捕捉位置信息,即沒(méi)法學(xué)習(xí)序列中的順序關(guān)系,為隨后 position embedding 的出現(xiàn)埋下來(lái)伏筆;
在transformer中,采用的是Self-Attention機(jī)制。在Attention機(jī)制中,當(dāng)Q=K=V時(shí),就是Self-Attention,主要體現(xiàn)輸入數(shù)據(jù)中的各部分的關(guān)聯(lián)。
2.6.2 殘差網(wǎng)絡(luò)(ResNet)
在深度網(wǎng)絡(luò)的學(xué)習(xí)中,網(wǎng)絡(luò)深度越深,能夠獲取的信息越多,而且特征也越豐富。但是現(xiàn)實(shí)中隨著網(wǎng)絡(luò)的加深,優(yōu)化效果反而越差,測(cè)試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)的準(zhǔn)確率反而降低了。這是由于網(wǎng)絡(luò)的加深會(huì)造成梯度爆炸和梯度消失的問(wèn)題。針對(duì)此類問(wèn)題,由微軟實(shí)驗(yàn)室中的何凱明等在2015年提出了ResNet網(wǎng)絡(luò),緩解了該問(wèn)題,并斬獲當(dāng)年ImageNet競(jìng)賽中分類任務(wù)第一名,目標(biāo)檢測(cè)第一名。獲得COCO數(shù)據(jù)集中目標(biāo)檢測(cè)第一名,圖像分割第一名。
??殘差網(wǎng)絡(luò)的特點(diǎn)是容易優(yōu)化,并且能夠通過(guò)增加相當(dāng)?shù)纳疃葋?lái)提高準(zhǔn)確率。其內(nèi)部的殘差塊使用了跳躍連接,緩解了在深度神經(jīng)網(wǎng)絡(luò)中增加深度帶來(lái)的梯度消失問(wèn)題。網(wǎng)絡(luò)結(jié)構(gòu)如下:
殘差網(wǎng)絡(luò)結(jié)構(gòu)
- 殘差網(wǎng)絡(luò)的輸出 = 直接映射部分 + 殘差部分
??
- 為什么有效?
- “寬而淺”
- “窄而深”,需要網(wǎng)絡(luò)優(yōu)化,避免梯度消失;
- 殘差連接使得信息前后向傳播更加順暢,解決梯度消失問(wèn)題;
- Ensemble model,降低方差;
2.6.3 Position Embedding
Transformer中的position embedding的作用是在序列模型中引入單詞位置信息,以幫助模型更好地理解序列中的單詞順序和位置關(guān)系,從而提高模型的性能和準(zhǔn)確性。
在Transformer中,使用的是Sinusoidal Position Embedding,屬于絕對(duì)位置編碼,優(yōu)點(diǎn)是編碼簡(jiǎn)單,不占用參數(shù)空間;缺點(diǎn)是限制了最大輸入長(zhǎng)度。針對(duì)絕對(duì)位置編碼的缺點(diǎn),在隨后的引入了相對(duì)位置編碼(Bert中應(yīng)用) 和 旋轉(zhuǎn)位置編碼(RoFormer中應(yīng)用)。
位置編碼:
- 絕對(duì)位置編碼:Sinusoidal Function(sin/cos),不隨著模型參數(shù)進(jìn)行學(xué)習(xí)更新;
- 相對(duì)位置編碼:位置ID的embedding編碼,在模型參數(shù)中,隨著梯度得以訓(xùn)練學(xué)習(xí);
- 旋轉(zhuǎn)位置編碼:RoPE等,結(jié)合了絕對(duì)位置編碼 和 相對(duì)位置編碼的有點(diǎn);
2.6.4 Transformer原理
Transformer與傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)和卷積神經(jīng)網(wǎng)絡(luò)(CNN)不同,Transformer僅使用自注意力機(jī)制(self-attention)來(lái)處理輸入序列和輸出序列。在模型中包含了多層encoder和decoder,每一層都由多個(gè)注意力機(jī)制模塊和前饋神經(jīng)網(wǎng)絡(luò)模塊組成。encoder用于將輸入序列編碼成一個(gè)高維特征向量表示,decoder則用于將該向量表示解碼成目標(biāo)序列。通過(guò)不斷堆疊多個(gè)自注意力層和前饋神經(jīng)網(wǎng)絡(luò)層,可以構(gòu)建出Transformer模型。在Transformer模型中,還使用了殘差連接和層歸一化等技術(shù)來(lái)加速模型收斂和提高模型性能。網(wǎng)絡(luò)結(jié)構(gòu)圖如下:
Transformer的encoder、decoder模塊
Multi-Head Attention
自注意力機(jī)制的計(jì)算過(guò)程包括三個(gè)步驟:
- 計(jì)算注意力權(quán)重:計(jì)算每個(gè)位置與其他位置之間的注意力權(quán)重,即每個(gè)位置對(duì)其他位置的重要性;
- 計(jì)算加權(quán)和:將每個(gè)位置向量與注意力權(quán)重相乘,然后將它們相加,得到加權(quán)和向量;
- 線性變換:對(duì)加權(quán)和向量進(jìn)行線性變換,得到最終的輸出向量;
對(duì)于Transformer模型的訓(xùn)練,通常采用無(wú)監(jiān)督的方式進(jìn)行預(yù)訓(xùn)練,然后再進(jìn)行有監(jiān)督的微調(diào)。在預(yù)訓(xùn)練過(guò)程中,通常采用自編碼器或者掩碼語(yǔ)言模型等方式進(jìn)行訓(xùn)練,目標(biāo)是學(xué)習(xí)輸入序列的表示。在微調(diào)過(guò)程中,通常采用有監(jiān)督的方式進(jìn)行訓(xùn)練,例如在機(jī)器翻譯任務(wù)中,使用平行語(yǔ)料進(jìn)行訓(xùn)練,目標(biāo)是學(xué)習(xí)將輸入序列映射到目標(biāo)序列的映射關(guān)系。
Transformer 中 Multi-Head Attention 中由多個(gè) Self-Attention的拼接,可以捕獲單詞之間多種維度上的相關(guān)系數(shù) attention score。
Transformer模型的缺點(diǎn):
- 需要較大的數(shù)據(jù)集來(lái)訓(xùn)練;
- 計(jì)算復(fù)雜度較高,需要更多的計(jì)算資源,比如GPU等;
- 可解釋性差;
在自然語(yǔ)言處理的任務(wù)中,Transformer模型真正改變了我們處理文本數(shù)據(jù)的方式,推動(dòng)了自然語(yǔ)言處理發(fā)展,包括Google的BERT、OpenAI的GPT系列模型都采用Transformer來(lái)提取特征。
2.7 BERT
BERT的全稱為Bidirectional Encoder Representation from Transformers,是一個(gè)預(yù)訓(xùn)練的語(yǔ)言表征模型。它強(qiáng)調(diào)了不再像以往一樣采用傳統(tǒng)的單向語(yǔ)言模型或者把兩個(gè)單向語(yǔ)言模型進(jìn)行淺層拼接的方法進(jìn)行預(yù)訓(xùn)練,而是采用新的masked language model(MLM),以致能生成深度的雙向語(yǔ)言表征。模型結(jié)構(gòu)圖如下:
BERT模型結(jié)構(gòu)圖
BERT的輸入構(gòu)成
- MLN 通過(guò)上文+下文 -> 中間詞,重在理解;而NSP重在生成;
- 12 Layers,hidden tokens: 1024;
- ”深而窄” 比 “淺而寬” 的模型更好;
- 采用雙向Transformers進(jìn)行預(yù)訓(xùn)練,生成深層的雙向語(yǔ)言表征,進(jìn)一步挖掘上下文所帶來(lái)的豐富語(yǔ)義;
- 預(yù)訓(xùn)練后,只需要對(duì)增加的輸出層進(jìn)行fine-tune,就可以在各種各樣的下游任務(wù)中取得 state-of-the-art 表現(xiàn);
- 開(kāi)啟了“預(yù)訓(xùn)練 + 參數(shù)微調(diào)”的研究范式;
值得一提的是論文發(fā)表時(shí)提及在11個(gè)NLP(Natural Language Processing,自然語(yǔ)言處理)任務(wù)中獲得了新的state-of-the-art的結(jié)果,尤其是在機(jī)器閱讀理解頂級(jí)水平測(cè)試SQuAD1.1中表現(xiàn)出驚人的成績(jī),全部?jī)蓚€(gè)衡量指標(biāo)上全面超越人類。
3、GPT系列模型簡(jiǎn)介
隨著ChatGPT火遍圈內(nèi)外,連微博熱搜都出現(xiàn)了它的身影。突然之間,好多許久未聯(lián)系的各行各業(yè)的同學(xué)好友都發(fā)來(lái)“問(wèn)候”:ChatGPT 是什么? 其實(shí),ChatGPT 的成功并非一朝一夕,而是 OpenAI長(zhǎng)達(dá)4年多持續(xù)努力、不懈追求取得的成果。從2018年的初代GPT-1開(kāi)始,到GPT-2、GPT-3、InstructGPT,GPT-4,到如今的GPT-4,每一步都是不可或缺的。所以,ChatGPT不是一次偉大創(chuàng)新的產(chǎn)物,而是許多個(gè)階段性創(chuàng)新持續(xù)疊加的結(jié)果。
GPT系列模型的發(fā)展過(guò)程
3.1 GPT-1
2018年6月,OpenAI公司發(fā)布了GPT模型的初代版本,GPT-1運(yùn)用了Transformer的Decoder框架中MaskSelf-attention機(jī)制。GPT-1在訓(xùn)練方式上仍依賴于數(shù)據(jù)標(biāo)注和模型微調(diào),同時(shí)GPT-1的語(yǔ)言泛化能力仍然不足,因此可以說(shuō)GPT-1更接近于處理特定語(yǔ)言任務(wù)的專家模型,而非通用的語(yǔ)言模型。GPT-1的模型訓(xùn)練采取的是二段式的訓(xùn)練模式,第一階段利用無(wú)監(jiān)督學(xué)習(xí)進(jìn)行預(yù)訓(xùn)練,使用未標(biāo)記的數(shù)據(jù)生成語(yǔ)言模型;第二階段則根據(jù)特定的下游任務(wù)來(lái)對(duì)模型進(jìn)行人工微調(diào),比如分類任務(wù)、自然語(yǔ)言推理、語(yǔ)義相似度、問(wèn)答和常識(shí)推理等任務(wù)。因此相較于此前NLP模型,GPT-1實(shí)際上還是一個(gè)半監(jiān)督式學(xué)習(xí)的語(yǔ)言模型。GPT-1在多種語(yǔ)言任務(wù)方面都有不錯(cuò)的效果,在自然語(yǔ)言推理、分類、問(wèn)答、對(duì)比相似度的多種測(cè)評(píng)中均超越了之前的模型。同時(shí),GPT-1的語(yǔ)言泛化能力仍然不足,無(wú)法解決通用的語(yǔ)言任務(wù),且和同時(shí)代的BERT模型比較的話,GPT-1在能力上要遜色于BERT。
GPT-1的模型結(jié)構(gòu)
模型結(jié)構(gòu):
- 12層 transformer decoder + 768維隱向量
- Optimizer: Adam
- Tokens:1024
損失函數(shù):
優(yōu)勢(shì):
- 特征抽取器首次使用了強(qiáng)大的 Transformer,能夠捕捉到更長(zhǎng)的記憶信息;
- Auto-regressive Language Model,根據(jù)當(dāng)前信息生成下一刻的信息,適用于自然語(yǔ)言生成任務(wù)(NLG);
- 預(yù)訓(xùn)練(無(wú)監(jiān)督)+ finetune(有監(jiān)督);
- GPT為基于預(yù)訓(xùn)練的自然語(yǔ)言處理模型的發(fā)展提供了新的思路和方法;
劣勢(shì)
- 模型泛化能力欠缺;
- Fine-tune 需要數(shù)據(jù)量大,耗時(shí)耗力,難快速擴(kuò)展;
- GPT-1 最大的問(wèn)題就是同傳統(tǒng)的語(yǔ)言模型是一樣是單向的;
3.2 GPT-2
2019年2月,GPT-2正式發(fā)布,相較于GPT-1,GPT-2舍棄了模型微調(diào),直接通過(guò)大規(guī)模數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練,讓模型開(kāi)始具備解決多種語(yǔ)言任務(wù)的能力,實(shí)現(xiàn)一個(gè)泛化能力更強(qiáng)的語(yǔ)言模型,這也開(kāi)始讓模型的通用性得以充分展現(xiàn)。盡管此前GPT-1在特定任務(wù)上已經(jīng)取得了不錯(cuò)的效果,但實(shí)際上這類模型都需要針對(duì)單個(gè)語(yǔ)言任務(wù)使用大量的標(biāo)注數(shù)據(jù)和模型微調(diào),因此也只能在解決特定語(yǔ)言任務(wù)時(shí)才能發(fā)揮作用。而GPT-2的泛化能力就體現(xiàn)在,能夠讓模型應(yīng)用到不同的任務(wù),而不需要做專門(mén)的訓(xùn)練。這也更符合人腦處理語(yǔ)言信息的過(guò)程,因?yàn)槿四X既可以讀小說(shuō),也可以看新聞,能執(zhí)行不同的語(yǔ)言處理任務(wù),而且這種能力是相互關(guān)聯(lián)的。而人腦在獲取一個(gè)語(yǔ)句的信息時(shí),這個(gè)信息是通用的,因此我們所期望的一個(gè)通用的語(yǔ)言模型,既可用于分類任務(wù),也可以用于問(wèn)答和常識(shí)推理等任務(wù)。
GPT-1和GPT-2的網(wǎng)絡(luò)結(jié)構(gòu)對(duì)比:
GPT-1和GPT-2的網(wǎng)絡(luò)結(jié)構(gòu)對(duì)比
模型參數(shù)
- 48層transformer decoder + 1600維隱向量
- Optimizer:Adam
- 字典大?。?0257
- tokens:1024
- 在每一個(gè)self-attention之后都添加了Layer Normalization
- 殘差層的初始化值用1/sqrt(N)進(jìn)行縮放,N為殘差層個(gè)數(shù)
損失函數(shù):
從損失函數(shù)可以看出,相比與GPT-1拋棄了對(duì)task的有監(jiān)督微調(diào)損失部分,損失函數(shù)只針對(duì)語(yǔ)言模型的生成部分,開(kāi)啟了NLG的新篇章。
優(yōu)勢(shì):
- 更多的訓(xùn)練語(yǔ)料;
- 通用化設(shè)計(jì):不定義模型應(yīng)該做什么任務(wù),模型會(huì)自動(dòng)識(shí)別出來(lái)需要做什么任務(wù);
- 提出了zero-shot learning;
劣勢(shì)
- 模型學(xué)習(xí)遠(yuǎn)遠(yuǎn)不夠,人類學(xué)習(xí)是不需要大量樣本的,且有能力做到融會(huì)貫通;
- 不支持fine-tune;
3.3 GPT-3
2020年5月,GPT-3正式發(fā)布,GPT-3在訓(xùn)練方式上創(chuàng)新性的引入了In-context學(xué)習(xí)(上下文學(xué)習(xí)),即在訓(xùn)練模型時(shí),在輸入的文本中加入一個(gè)或多個(gè)示例,引導(dǎo)模型輸出相對(duì)應(yīng)內(nèi)容。比如:“請(qǐng)把以下中文翻譯成英文:蘋(píng)果=>apple;自然語(yǔ)言處理的發(fā)展歷程”就是一個(gè)典型的帶有一個(gè)示例的輸入文本。而In-context學(xué)習(xí)包含了三種模式,分別為Zero-shotLearning(零樣本學(xué)習(xí))、One-shotLearning(單樣本學(xué)習(xí))和Few-shotLearning(少樣本學(xué)習(xí)),zero-shot就是沒(méi)有示例只給提示,one-shot是只給一個(gè)范例,few-shot則給多個(gè)范例,實(shí)際上zero-shot在表達(dá)方式上已經(jīng)接近于人類的語(yǔ)言表達(dá)方式。In-context學(xué)習(xí)的優(yōu)點(diǎn)在于,輸入規(guī)范化的語(yǔ)言模板,從人類的例子和類比中去學(xué)習(xí),無(wú)需進(jìn)行模型微調(diào)和數(shù)據(jù)標(biāo)注,特別是大量的標(biāo)注數(shù)據(jù)需要很高的人工成本。引入In-context學(xué)習(xí)后,從最終實(shí)際效果來(lái)看,GPT-3在few-shot上有非常強(qiáng)勁的表現(xiàn),但同時(shí)one-shot和zero-shot的效果還不夠優(yōu)秀。
GPT-3在Few-shot上有很好的表現(xiàn)
GPT-3參數(shù)量相較于GPT-2提升了兩個(gè)數(shù)量級(jí),達(dá)到了1750億,數(shù)據(jù)集在處理前容量達(dá)到了45TB,成了真正意義上的超大語(yǔ)言模型。GPT-3在許多NLP任務(wù)上相較于GPT-2及其他語(yǔ)言模型有更多出色表現(xiàn),特別是機(jī)器翻譯、聊天問(wèn)答和文本填空。同時(shí)是在海量參數(shù)和訓(xùn)練數(shù)據(jù)的支撐下,GPT-3的開(kāi)始能夠完成一些比較困難的NLP任務(wù),比如GPT-3也可以生成新聞報(bào)道和撰寫(xiě)文章,并且很難將機(jī)器寫(xiě)的文章與人類寫(xiě)的辨別開(kāi)來(lái),甚至GPT-3在編寫(xiě)SQL查詢語(yǔ)句,React或者JavaScript代碼也有十分優(yōu)異的表現(xiàn)。而在GPT-3強(qiáng)大能力的背后是對(duì)算力的巨大消耗,GPT-3的計(jì)算量達(dá)到了BERT-base的上千倍,根據(jù)OpenAI公司披露數(shù)據(jù),GPT-3的訓(xùn)練費(fèi)用超過(guò)1200萬(wàn)美元,因此到這一階段就能看出,大語(yǔ)言模型逐漸成為了只有巨頭才能參與的游戲。
GPT-3 網(wǎng)絡(luò)結(jié)構(gòu)圖:
GPT-3模型網(wǎng)絡(luò)結(jié)構(gòu)圖
損失函數(shù)為:
- 預(yù)訓(xùn)練(無(wú)監(jiān)督) + Fine-tune;
- Meta-learning + 增加參數(shù)模型;
- Sparse attention;
- prompt learning,One-shot
- Few-shot;
- 典型代表模型:Davinci、Curie、Babbage、Ada;
- 優(yōu)先使用內(nèi)置模型,one-shot、few-shot提升可靠性;
Zero-shot、One-shot和Few-shot的區(qū)別
缺點(diǎn):
- 生成長(zhǎng)文本時(shí)存在自相矛盾、不合邏輯,在一些任務(wù)上沒(méi)有體現(xiàn)理解能力;
- 模型太大,訓(xùn)練不高效,缺乏解釋性,存在偏見(jiàn);
GPT-3 應(yīng)用到了更大的訓(xùn)練數(shù)據(jù),參數(shù)模型更是達(dá)到了1750億,并對(duì)GPT-3生成的多個(gè)結(jié)果進(jìn)行人工標(biāo)注,用強(qiáng)化學(xué)習(xí)將標(biāo)注的結(jié)果進(jìn)行再次學(xué)習(xí),得到更加相對(duì)一致、準(zhǔn)確的生成結(jié)果。
GPT-3引入人工標(biāo)注結(jié)果
GPT-1、GPT-2和GPT-3的訓(xùn)練數(shù)據(jù)和參數(shù)量級(jí)對(duì)比
3.4 ChatGPT
OpenAI公司在GPT-3與ChatGPT之間發(fā)布了多個(gè)迭代版本,其中包括:2021年7月推出了Codex系列;2022年1月,引入RLHF(基于人工反饋的強(qiáng)化學(xué)習(xí))得到了InstructGPT;2022下半年,推出了融合Codex和InstructGPT的ChatGPT,使用了基于人類反饋的強(qiáng)化學(xué)習(xí)的版本指令微調(diào)模型。ChatGPT相較于GPT-3,不僅是在文本生成等方面展現(xiàn)出了非常強(qiáng)大的能力,與人類對(duì)話的智能感大幅提升,而且海量數(shù)據(jù)和參數(shù)的支撐下,模型在邏輯推理與思維鏈等方面能力開(kāi)始涌現(xiàn)。ChatGPT可以完成許多相對(duì)復(fù)雜的語(yǔ)言任務(wù),可以完成包括自動(dòng)文本生成、自動(dòng)問(wèn)答、多輪對(duì)話等,并且能夠主動(dòng)承認(rèn)錯(cuò)誤,質(zhì)疑不正確的問(wèn)題等。此外,ChatGPT還能編寫(xiě)和調(diào)試計(jì)算機(jī)程序。
ChatGPT訓(xùn)練流程
強(qiáng)化學(xué)習(xí)訓(xùn)練流程
- 來(lái)源于兄弟模型InstructGPT;
- ChatGPT核心技術(shù)HFRL(Human Feedback Reinforcement Learning),本質(zhì)就是如何把機(jī)器的知識(shí)與人的知識(shí)對(duì)齊;
- 讓具備豐富世界知識(shí)的大模型,學(xué)習(xí)“人類偏好”;
- 標(biāo)注人員明顯感覺(jué) InstructGPT 的輸出比 GPT-3 的輸出更好,更可靠;
- PPO:Proximal Policy Optimization;
- Prompt模式較Fine-tune更具生命力;
缺點(diǎn):
- 結(jié)果不穩(wěn)定;
- 推理能力有限;
- 知識(shí)更新困難;
目前ChatGPT的應(yīng)用主要包括:
- 聊天機(jī)器人,可以使用ChatGPT來(lái)自由對(duì)話,使機(jī)器人能夠向用戶做出自然的回應(yīng);
- 編寫(xiě)和調(diào)試計(jì)算機(jī)程序;
- 文學(xué)、媒體相關(guān)領(lǐng)域的創(chuàng)作,包括創(chuàng)作音樂(lè)、電視劇、童話故事、詩(shī)歌和歌詞等;
- 教育、考試、回答測(cè)試問(wèn)題;
- 通過(guò)API結(jié)構(gòu)集成到其他應(yīng)用中,ChatGPT在推出后僅兩個(gè)月活躍用戶就達(dá)到了一個(gè)億,成為了史上用戶增長(zhǎng)速度最快的消費(fèi)級(jí)應(yīng)用程序;
3.5 GPT-4
GPT-4于2023年3月份發(fā)布,相較于之前版本的GPT模型,在推理、文本生成、對(duì)話等方面有了大幅提升之外,GPT-4邁出了從語(yǔ)言模型向多模態(tài)模型進(jìn)化的第一步。GPT-4最大的變化即能夠接受圖像的輸入,并且能夠生成文本語(yǔ)言,并且在看圖能力方面有讓人驚喜的表現(xiàn)的。同時(shí)可以處理超過(guò)25000字長(zhǎng)文本,以及寫(xiě)作能力的大幅提升,能夠編歌曲、寫(xiě)劇本、學(xué)習(xí)用戶寫(xiě)作風(fēng)格,同時(shí)包括GRE、SAT等考試能力也有大幅提升。在基于機(jī)器學(xué)習(xí)模型設(shè)計(jì)的各項(xiàng)基準(zhǔn)上評(píng)估GPT-4,GPT-4明顯優(yōu)于現(xiàn)有的大型語(yǔ)言模型,以及大多數(shù)SOTA模型。
GPT-4訓(xùn)練過(guò)程主要分為三個(gè)階段,如下圖:
- 第一階段:構(gòu)建交叉注意力架構(gòu)預(yù)訓(xùn)練模型,收集數(shù)據(jù)并進(jìn)行有監(jiān)督策略精調(diào);
GPT-4模型是基于GPT-3.5構(gòu)建的,增加了視覺(jué)語(yǔ)言模型組件(在圖形Transformer階段完成的視覺(jué)預(yù)訓(xùn)練模型)。為了預(yù)訓(xùn)練模型在多模態(tài)領(lǐng)域進(jìn)行初步調(diào)優(yōu),首先會(huì)在文本數(shù)據(jù)集和多模態(tài)數(shù)據(jù)集中抽取問(wèn)題,由人類標(biāo)注員,給出高質(zhì)量答案,然后用這些人工標(biāo)注好的數(shù)據(jù)來(lái)精調(diào)GPT-4初始模型。
- 第二階段:訓(xùn)練獎(jiǎng)勵(lì)模型(RRM)和 基于規(guī)則的獎(jiǎng)勵(lì)模型(RBRM);
首先基于安全規(guī)則設(shè)計(jì)基于規(guī)則的獎(jiǎng)勵(lì)模型并完成驗(yàn)證。這一模型與傳統(tǒng)NLP領(lǐng)域的規(guī)則模型設(shè)計(jì)方法一致。 然后在數(shù)據(jù)集中抽取問(wèn)題,使用第一階段生成的模型,對(duì)于每個(gè)問(wèn)題,生成多個(gè)不同的回答。人類標(biāo)注者對(duì)這些結(jié)果綜合考慮給出排名順序。接下來(lái),使用這個(gè)排序結(jié)果數(shù)據(jù)來(lái)訓(xùn)練GPT-4的獎(jiǎng)勵(lì)模型。對(duì)多個(gè)排序結(jié)果,兩兩組合,形成多個(gè)訓(xùn)練數(shù)據(jù)對(duì)。RM模型接受一個(gè)輸入,給出評(píng)價(jià)回答質(zhì)量的分?jǐn)?shù)。這樣,對(duì)于一對(duì)訓(xùn)練數(shù)據(jù),調(diào)節(jié)參數(shù)使得高質(zhì)量回答的打分比低質(zhì)量的打分要高。這一過(guò)程類似于教練或老師輔導(dǎo)。
- 第三階段:采用PPO強(qiáng)化學(xué)習(xí)來(lái)優(yōu)化策略;
PPO的核心思路在于將Policy Gradient中On-policy的訓(xùn)練過(guò)程轉(zhuǎn)化為Off-policy,即將在線學(xué)習(xí)轉(zhuǎn)化為離線學(xué)習(xí),這個(gè)轉(zhuǎn)化過(guò)程被稱之為Importance Sampling。這一階段利用第二階段訓(xùn)練好的獎(jiǎng)勵(lì)模型和基于規(guī)則的獎(jiǎng)勵(lì)模型,靠獎(jiǎng)勵(lì)打分來(lái)更新預(yù)訓(xùn)練模型參數(shù)。在GPT-4數(shù)據(jù)集中抽取問(wèn)題,使用PPO模型生成回答,并用上一階段訓(xùn)練好的RM+RBRM模型給出質(zhì)量分?jǐn)?shù)。把回報(bào)分?jǐn)?shù)依次傳遞,由此產(chǎn)生策略梯度,通過(guò)強(qiáng)化學(xué)習(xí)的方式以更新PPO模型參數(shù)。
4、結(jié)語(yǔ)
大語(yǔ)言模型的出現(xiàn),為我們提供了一種新的思路,即通過(guò)大規(guī)模預(yù)訓(xùn)練和微調(diào)技術(shù),讓模型具備更強(qiáng)大的語(yǔ)言理解能力,從而能夠應(yīng)用于更多的NLP任務(wù)。未來(lái),我們可以期待更加智能、靈活、高效的語(yǔ)言模型的出現(xiàn),它們將會(huì)給我們帶來(lái)更多新的可能性和優(yōu)秀的應(yīng)用場(chǎng)景。
大語(yǔ)言模型發(fā)展時(shí)間軸
隨著Transformer的提出,近幾年大語(yǔ)言模型的發(fā)展迅猛,優(yōu)秀代表如GPT系列模型的出現(xiàn),將語(yǔ)言模型的發(fā)展提升到一個(gè)前所未有的高度。模型參數(shù)量級(jí)也在陡增,帶來(lái)了模型效果提升的同時(shí),也引入了其他的問(wèn)題。
- 在未經(jīng)大量語(yǔ)料訓(xùn)練的領(lǐng)域缺乏“人類常識(shí)”和一本正經(jīng)的“胡說(shuō)八道”;
- 無(wú)法處理復(fù)雜冗長(zhǎng)或者專業(yè)性很強(qiáng)的語(yǔ)言結(jié)構(gòu);
- 需要大量的算力來(lái)支持其訓(xùn)練和預(yù)測(cè);
- 訓(xùn)練成本極高,無(wú)法實(shí)時(shí)的融入新知識(shí)到大模型;
- “黑盒模型”,對(duì)其能否產(chǎn)生攻擊性或者傷害性的表述,無(wú)法做出保證;
- 存在幻覺(jué)和推理錯(cuò)誤;
- 泄露隱私的可能;
- 事實(shí)檢索性和復(fù)雜計(jì)算性效果差,無(wú)法實(shí)現(xiàn)一些實(shí)時(shí)性、動(dòng)態(tài)變化性的任務(wù);
業(yè)界大佬對(duì)大模型的發(fā)展也都各持不同的觀點(diǎn)。
5 、[1] A Neural Probabilistic Language Model
- [2] Recurrent Neural Network Regularization
- [3] Long Short-Term Memory
- [4] Deep Contextual Word Embeddings
- [5] Attention Is All Your Need
- [6] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
- [7] Improving Language Understanding by Generative Pre-Training
- [8] Language Models are Unsupervised Multitask Learners
- [9] Language Models are Few-shot Learners
- [10] Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing
- [11] Training language models to follow instructions with human feedback
- [12] Proximal Policy Optimization Algorithms
- [13] ChatGPT: Optimizing Language Models for Dialogue
- [14] Deep Residual Learning for Image Recognition