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