GPT:Generative Pre-Training Transformer
Generative 生成式雖然我們已經(jīng)習(xí)慣了話嘮的機(jī)器人絮絮叨叨的說(shuō)個(gè)不停,,但這只是眾多的人工智能模型的一種方式,。比如還有識(shí)別類的(Congnition):人臉識(shí)別,車牌識(shí)別這些,,還有語(yǔ)音識(shí)別,,文字識(shí)別各種識(shí)別任務(wù)。(在提到模型的時(shí)候,也常常被叫做判別模型,,discriminative),。Generative 這個(gè)大的種類里面有幾個(gè)小分支,DALLE 的畫圖的用的是對(duì)抗網(wǎng)絡(luò)方式 GAN (這個(gè)晚些可以分析),,現(xiàn)在最火的Stable Diffusion,, MidJourney 走向了另外一個(gè)分支,叫做 Difusion,,而 ChatGPT 又是一個(gè)分支,,就是轉(zhuǎn)換器 Transformer。
而 Transformer Generative 的語(yǔ)言模型的核心,,通俗的說(shuō)就是「順口溜」,。
當(dāng)看了足夠多的文本以后,發(fā)現(xiàn)有一些語(yǔ)言模式是反復(fù)出現(xiàn)的,。它之所以可以準(zhǔn)確的填補(bǔ)「鋤禾日當(dāng)__ 」的空格,,不是因?yàn)樗谧约旱拇竽X子里面重構(gòu)了一副農(nóng)民勞動(dòng)的場(chǎng)景,僅僅是不過(guò)腦子,,順口溜出來(lái)的,。
你問它: 3457 * 43216 = ,它回答 149575912 (這是錯(cuò)的,。正確結(jié)果是 149397712),。之所以結(jié)果的 2 是對(duì)的,僅僅因?yàn)樗x了太多的文字資料以后,,隱約感覺到
7 結(jié)尾的文字, 乘號(hào),, 6 結(jié)尾的文字,,和 2 結(jié)尾的文字比較「 押韻」
從語(yǔ)感上比較像一首詩(shī),所以它就學(xué)會(huì)了這樣的文字,,而不是學(xué)會(huì)了計(jì)算,。
生成式模型努力解決的問題,就是給定一些字,,預(yù)測(cè)如果是人類會(huì)寫什么字,。
在 BERT 那個(gè)年代,為了訓(xùn)練,,大家常常把一句話中隨機(jī)幾個(gè)單詞遮起來(lái),,讓計(jì)算機(jī)用現(xiàn)有的模型預(yù)測(cè)那幾個(gè)單詞,如果預(yù)測(cè)準(zhǔn)了,,就繼續(xù)加強(qiáng),,如果預(yù)測(cè)錯(cuò)了,就調(diào)整模型,,直到上百萬(wàn)上億次訓(xùn)練之后越來(lái)越準(zhǔn),。只不過(guò) ChatGPT 的 Generative 的部分,,不僅僅把文字,還把上下文,、intention(意圖)也放進(jìn)去做訓(xùn)練和預(yù)測(cè),。
Pre-Training 預(yù)訓(xùn)練
以前很多的人工智能模型都是為了一個(gè)目標(biāo)訓(xùn)練的。比如給我 1000 張貓的照片,,我就很容易的可以訓(xùn)練出來(lái)一個(gè)模型,,判斷一個(gè)圖片是有貓還是沒有貓。這些都是專用的模型,。
而 Pre-Training 模型不是為了特定的目標(biāo)訓(xùn)練,,而是預(yù)先訓(xùn)練一個(gè)通用的模型。如果我有特定的需求,,我可以在這個(gè)基礎(chǔ)上進(jìn)行第二次訓(xùn)練,,基于原來(lái)已經(jīng)預(yù)訓(xùn)練的模型,進(jìn)行微調(diào)(Fine- Tuning),。
這事兒就像家里請(qǐng)了個(gè)阿姨,,她已經(jīng)被勞務(wù)公司預(yù)訓(xùn)練了整理家務(wù)的知識(shí),在此之前已經(jīng)被小學(xué)老師預(yù)訓(xùn)練了中文對(duì)話,,到了我家里面我只要稍微 fine tune 一些我家里特定的要求就好了,,而不需要給我一個(gè)「空白」的人,讓我從教漢語(yǔ)開始把她徹底教一遍才能讓她干活,。
ChatGPT 的預(yù)訓(xùn)練就是給了我們所有人(尤其是創(chuàng)業(yè)者,,程序員)一個(gè)預(yù)先訓(xùn)練好的模型。這個(gè)模型里面語(yǔ)言是強(qiáng)項(xiàng),,它提供的內(nèi)容無(wú)論多么的胡說(shuō)八道,,至少我們必須承認(rèn)它的行文通暢程度無(wú)可挑剔。這就是他 pre-training 的部分,,而回答的內(nèi)容部分,,正是我們需要 fine tuning 的。我們不能買了個(gè) Apache 服務(wù)器回來(lái),,不灌內(nèi)容,,就說(shuō)他輸出的內(nèi)容不夠呀。
Transformer 轉(zhuǎn)換器
變電器就是一種 transformer:220伏電進(jìn),,12伏出,。
語(yǔ)言的轉(zhuǎn)換器就是把語(yǔ)言的序列作為輸入,然后用一個(gè)叫做編碼器 encoder 的東西變成數(shù)字的表現(xiàn)(比如 GPT 就用 1536 個(gè)浮點(diǎn)數(shù)(也叫 1536 維向量)表示任何的單詞,,或者句子,,段落,篇章等),然后經(jīng)過(guò)轉(zhuǎn)化,,變成一串新的序列,,最后再用 decoder 把它輸出。這個(gè)轉(zhuǎn)換器,,是這個(gè)自然語(yǔ)言處理的核心,。
比如如果給 ChatGPT 輸入「Apple」這個(gè)詞,它給你返回
1,、[ 2,、0.0077999732, 3、-0.02301609, 4,、-0.007416143, 5,、 -0.027813964, 6、 -0.0045648348, 7,、0.012954261, 8,、..... 9、0.021905724, 10,、-0.012022103, 11,、-0.013550568, 12、 -0.01565478, 13,、0.006107009]
這 1536 個(gè)浮點(diǎn)數(shù)字來(lái)表示 Apple(其中一個(gè)或著多個(gè)維度的組合表達(dá)了「 甜」的含義,,另外一堆表達(dá)了「 圓」的含義,還有一大堆共同表達(dá)了「 紅」等等屬性組合,,至于具體哪些表達(dá)了這些,,不得而知)
然后這堆數(shù)字,再交給 decoder,,并且限定中文的話,,它會(huì)解碼成為「 蘋果」,限定西班牙語(yǔ)的話,,它會(huì)解碼成「 manzana」,限定為 emoji 的話,,就輸出「 🍎」,。總之,,通過(guò)編碼,,轉(zhuǎn)換,解碼,,它就完成了從 Apple 到目標(biāo)輸出語(yǔ)言的轉(zhuǎn)化,。
ChatGPT 所做的事情遠(yuǎn)遠(yuǎn)多于翻譯。但核心上,它就是把一個(gè)語(yǔ)言序列,,轉(zhuǎn)換為了另外一堆語(yǔ)言序列,,這個(gè)任務(wù)完成得如此的好,以至于讓人產(chǎn)生了它有思想的錯(cuò)覺,。
GPT 生成式預(yù)訓(xùn)練轉(zhuǎn)化器
把上面三段話加在一起,,GPT 就是
一個(gè)預(yù)先訓(xùn)練好的,用生成的方式,,把輸入文字轉(zhuǎn)化成輸出文字的翻譯
除了這個(gè)以外的各種能力和各種定義,,大多數(shù)是這個(gè)翻譯官的應(yīng)用場(chǎng)景而不是它本身。
ChatGPT 是啥,?
剛才解釋了 GPT,,那 ChatGPT 呢?
OpenAI 用這個(gè)名字描述他們正在做的這個(gè)模型,,歷史的版本包括 GPT-1,, GPT-2(這個(gè)模型是開源的),GPT-3(這個(gè)就是傳說(shuō)中 175B 參數(shù)的大模型),。而這些都是生成式的,,也就是給的 prompt(提示詞),它負(fù)責(zé)補(bǔ)全(completion),。但是這個(gè)東西用于聊天不是很好用,,因?yàn)楸緛?lái)就不是為聊天這個(gè)場(chǎng)景準(zhǔn)備的。
所以在 GPT-3 基礎(chǔ)上發(fā)展出了下一代模型 InstructGPT,,專注于讓這個(gè)模型可以聽懂指令,。在上面繼續(xù)發(fā)展出了 ChatGPT,就是對(duì)于對(duì)話場(chǎng)景,,比如多輪對(duì)話,,還有一些安全邊界設(shè)定等,進(jìn)行了加強(qiáng),。但這個(gè)模型是基于 GPT-3 上面的,,可以說(shuō)嚴(yán)格意義是 GPT-3 模型上面的一個(gè)微調(diào)(Fine Tuning)的產(chǎn)物。
希望這樣梳理可以幫助大家了解這個(gè)奇怪的名字背后的思考,。從這個(gè)角度來(lái)說(shuō),,這是少有的幾個(gè)準(zhǔn)確的描述了它是什么的一個(gè)名字!
|