GPT:Generative Pre-Training Transformer
Generative 生成式雖然我們已經(jīng)習(xí)慣了話嘮的機(jī)器人絮絮叨叨的說個(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ǔ)言模型的核心,,通俗的說就是「順口溜」,。
當(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)景,,僅僅是不過腦子,順口溜出來的,。
你問它: 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è)單詞遮起來,讓計(jì)算機(jī)用現(xiàn)有的模型預(yù)測(cè)那幾個(gè)單詞,,如果預(yù)測(cè)準(zhǔn)了,,就繼續(xù)加強(qiáng),如果預(yù)測(cè)錯(cuò)了,,就調(diào)整模型,,直到上百萬上億次訓(xùn)練之后越來越準(zhǔn)。只不過 ChatGPT 的 Generative 的部分,,不僅僅把文字,,還把上下文、intention(意圖)也放進(jìn)去做訓(xùn)練和預(yù)測(cè),。
Pre-Training 預(yù)訓(xùn)練
以前很多的人工智能模型都是為了一個(gè)目標(biāo)訓(xùn)練的,。比如給我 1000 張貓的照片,我就很容易的可以訓(xùn)練出來一個(gè)模型,,判斷一個(gè)圖片是有貓還是沒有貓,。這些都是專用的模型。
而 Pre-Training 模型不是為了特定的目標(biāo)訓(xùn)練,,而是預(yù)先訓(xùn)練一個(gè)通用的模型,。如果我有特定的需求,我可以在這個(gè)基礎(chǔ)上進(jìn)行第二次訓(xùn)練,基于原來已經(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)容無論多么的胡說八道,,至少我們必須承認(rèn)它的行文通暢程度無可挑剔,。這就是他 pre-training 的部分,而回答的內(nèi)容部分,,正是我們需要 fine tuning 的,。我們不能買了個(gè) Apache 服務(wù)器回來,不灌內(nèi)容,,就說他輸出的內(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)過轉(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ù)字來表示 Apple(其中一個(gè)或著多個(gè)維度的組合表達(dá)了「 甜」的含義,,另外一堆表達(dá)了「 圓」的含義,,還有一大堆共同表達(dá)了「 紅」等等屬性組合,至于具體哪些表達(dá)了這些,,不得而知)
然后這堆數(shù)字,,再交給 decoder,并且限定中文的話,,它會(huì)解碼成為「 蘋果」,,限定西班牙語(yǔ)的話,它會(huì)解碼成「 manzana」,,限定為 emoji 的話,,就輸出「 🍎」�,?傊�,,通過編碼,轉(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è)就是傳說中 175B 參數(shù)的大模型),。而這些都是生成式的,也就是給的 prompt(提示詞),,它負(fù)責(zé)補(bǔ)全(completion),。但是這個(gè)東西用于聊天不是很好用,因?yàn)楸緛砭筒皇菫榱奶爝@個(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 上面的,,可以說嚴(yán)格意義是 GPT-3 模型上面的一個(gè)微調(diào)(Fine Tuning)的產(chǎn)物,。
希望這樣梳理可以幫助大家了解這個(gè)奇怪的名字背后的思考。從這個(gè)角度來說,,這是少有的幾個(gè)準(zhǔn)確的描述了它是什么的一個(gè)名字,!
|