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