大模型的前世今生
在本文中,通過(guò)深入淺出的方式,為讀者提供了對(duì)大模型技術(shù)全面而深入的理解,同時(shí)也強(qiáng)調(diào)了理性看待大模型的重要性。
為什么要聊這個(gè)話題?
原因有三:
- 讀懂歷史才能預(yù)測(cè)未來(lái)。我們了解一個(gè)新事物最快速的方式就是從它歷史出發(fā),更能清楚的知道它從哪里來(lái)要到哪里去;
- 知其然更要知其所以然。了解大模型生成能力背后的運(yùn)作方式,才能更好地結(jié)合我們自有的一些業(yè)務(wù)來(lái)提升效率。
- 祛魅。相信我們大家也都看過(guò)很多鼓吹大模型的一些文章,當(dāng)然也有一些diss大模型的一些文章。知道它的原理、流程之后,我們就更能夠理解大模型的能力邊界,更理性地看待這一場(chǎng)大模型的風(fēng)波。
一、大模型之前的人工智能——弱人工智能(Weak AI)
在大模型之前的人工智能,屬于弱人工智能,你可以把它理解為它就是一個(gè)專(zhuān)才,它是服務(wù)于某個(gè)專(zhuān)業(yè)領(lǐng)域的一個(gè)技術(shù)人員。即使是強(qiáng)者如阿爾法狗,它是在這個(gè)地球上最強(qiáng)的一個(gè)下圍棋的智能體。但是它除了圍棋之外,其他領(lǐng)域依舊是一個(gè)小白。
但大模型是一個(gè)通才。因?yàn)樗邮芰舜罅康母鞣N領(lǐng)域的數(shù)據(jù)訓(xùn)練,像語(yǔ)文、數(shù)學(xué)、圍棋等等,ChatGPT也在兩個(gè)月的時(shí)間突破了一億的用戶(hù),也超過(guò)了之前tiktok 9個(gè)月創(chuàng)下的記錄。
那為什么它在這個(gè)時(shí)間點(diǎn)橫空出世呢?以下是三個(gè)必不可少的一個(gè)因素,而且這三個(gè)因素也是訓(xùn)練大模型的一些核心要素,也就是數(shù)據(jù)、算法以及算力。
數(shù)據(jù)的話貫徹了字節(jié)的大力出奇跡,把模型的參數(shù)量還有訓(xùn)練數(shù)據(jù)搞的無(wú)限量大,然后就出現(xiàn)了某種程度上的智能,也叫涌現(xiàn),也就是他可以執(zhí)行他之前沒(méi)有預(yù)料到的一些任務(wù);
第二個(gè)就是算法,目前國(guó)際上以及國(guó)內(nèi)的主流的大模型都是transformer作為底層的模型架構(gòu);
第三個(gè)就是算力,有一篇論文就是在講訓(xùn)練大模型的時(shí)候,用GPU來(lái)訓(xùn)練大模型會(huì)比CPU訓(xùn)練的效率更好。所以我們就開(kāi)始用GPU來(lái)進(jìn)行訓(xùn)練大模型,后來(lái)也造就了英偉達(dá)目前兩兆億美元的市值。
二、大模型是通往強(qiáng)人工智能(strong AI)/通用人工智能(AGI)之路嗎?
剛才說(shuō)到像大模型這樣的通才,更符合我們對(duì)于人工智能的想象,我們的想象可能就像是鋼鐵俠里面的他的助手賈維斯一樣,他是跟我們?nèi)丝梢赃@種這種可以自在流暢的一個(gè)交流,而不是像siri或小愛(ài)同學(xué),某種程度上它是有點(diǎn)像人工智障。因?yàn)樗沁@種關(guān)鍵詞的一個(gè)匹配,觸發(fā)到某個(gè)關(guān)鍵詞,它就會(huì)有對(duì)應(yīng)的回復(fù)。我們想象中的這種人工智能,我們也把它稱(chēng)為強(qiáng)人工智能(strong AI),或者就是通用人工智能(AGI)。
AGI時(shí)代的大模型是一個(gè)通才,是一個(gè)無(wú)所不知的一個(gè)一種能力,它也是AGI時(shí)代機(jī)器人的大腦,給它裝上四肢后,他就是一個(gè)機(jī)器人。所以大模型也帶火了另一個(gè)產(chǎn)業(yè),就叫具身智能(Embodied AI),這個(gè)賽道我也很看好。
三、大語(yǔ)言模型與 AGI 的關(guān)系
那大模型和人工智能之間是什么樣的關(guān)系呢?
通用人工智能是我們?cè)谧穼さ囊粋€(gè)目標(biāo),機(jī)器學(xué)習(xí)和深度學(xué)習(xí),它都是我們想去實(shí)現(xiàn)這個(gè)目標(biāo)的一個(gè)手段。
生成式人工智能其實(shí)是通用人工智能的目標(biāo)之一,但是因?yàn)槟壳拔覀兊纳墒饺斯ぶ悄芏际怯蒙疃葘W(xué)習(xí)這樣的技術(shù)來(lái)去實(shí)現(xiàn)的,所以我們把它歸到深度學(xué)習(xí)里面。大模型是生成式人工智能的一個(gè)技術(shù)之一。
因?yàn)榇笳Z(yǔ)言模型是目前非常多,像主流的國(guó)內(nèi)主流的像文心言、kimi、通義千問(wèn),國(guó)際上ChatGPT、llama、gemini,但他們的原理都是很類(lèi)似的,這里講解主要用ChatGPT作為例子。
那什么是機(jī)器學(xué)習(xí)呢?我們剛才有提到機(jī)器學(xué)習(xí)和深度學(xué)習(xí),機(jī)器學(xué)習(xí)其實(shí)就是在去再去從一堆資料當(dāng)中去找一個(gè)方程式。相信我們大家都會(huì)解這樣的一個(gè)方程式:y=ax+b
給定X1多少,Y1是多少,然后X2是多少,Y2是多少,那我們就可以把這個(gè)未知數(shù)a和b給求出來(lái),也就是兩個(gè)已知條件,兩個(gè)未知數(shù)。那時(shí)候我們叫未知數(shù)a、b,在機(jī)器學(xué)習(xí)當(dāng)中他們就叫參數(shù)。ChatGPT中介紹的那種參數(shù),千億級(jí)別的或者10億級(jí)別的,其實(shí)就是這邊的一個(gè)參數(shù)量,目前普遍的定義是大于10億的參數(shù)量才叫大語(yǔ)言模型,小于10億的它就不叫大語(yǔ)言模型。有了這樣的一組參數(shù)之后,我們給他一個(gè)輸入,他是就會(huì)有一個(gè)輸出了,這也就是ChatGPT在做事情。
四、ChatGPT在做的事:預(yù)測(cè)下一個(gè)字的文字接龍游戲
那ChatGPT它其實(shí)就是一個(gè)大于10億參數(shù)量的方程式。給模型一批訓(xùn)練資料,從這些訓(xùn)練資料去把數(shù)10億參數(shù)給找出來(lái),這個(gè)過(guò)程就叫訓(xùn)練,或者我們要叫學(xué)習(xí)過(guò)程。訓(xùn)練好之后,給它一個(gè)輸入,它有一個(gè)輸出,這個(gè)使用的過(guò)程叫推理,或者叫測(cè)試的階段。
我們?cè)谫I(mǎi)GPU的時(shí)候,廠商就會(huì)介紹說(shuō),這樣的GPU是適合訓(xùn)練階段的,還是適合推理階段的。可以理解為推理就是我們直接使用這樣的一個(gè)大語(yǔ)言模型,訓(xùn)練的階段就是要把它訓(xùn)練成我們想要的這種大語(yǔ)言模型的樣子。
ChatGPT在做的事情就是預(yù)測(cè)下一個(gè)字的文字接龍的游戲。比如說(shuō)一個(gè)輸入(比如:保護(hù)地)給它,在其內(nèi)部有多個(gè)可以選擇的選項(xiàng)以及概率,這時(shí)候就擲骰子,看看他最有可能出現(xiàn)哪一個(gè)。像圖片中概率最高“球”,那它就是50%,它就大概率用輸出球。所以ChatGPT的輸出是那種流式的那種結(jié)構(gòu),一個(gè)字一個(gè)字的吐出來(lái),它其實(shí)就是在預(yù)測(cè)下一個(gè)字。
五、大模型訓(xùn)練三階段
大模型訓(xùn)練就是分為三個(gè)階段,第一個(gè)就是預(yù)訓(xùn)練,ChatGPT的P就是pretrain,就是預(yù)訓(xùn)練的意思。這個(gè)階段可以理解為是ChatGPT它使用網(wǎng)絡(luò)上面的大量的數(shù)據(jù)自己來(lái)學(xué)習(xí),是積累實(shí)力的過(guò)程。第二個(gè)階段就是微調(diào)的階段,微調(diào)成我們?nèi)祟?lèi)想要它成為的樣子,第三個(gè)階段是人類(lèi)反饋強(qiáng)化學(xué)習(xí)。
1. 預(yù)訓(xùn)練(Pre-train)
我們?cè)僖来蝸?lái)簡(jiǎn)單介紹一下這三個(gè)階段。第一個(gè)階段預(yù)訓(xùn)練,參數(shù)量可以理解為模型的復(fù)雜度,也可以理解為這個(gè)模型的它的一個(gè)天資。ChatGPT 1的參數(shù)量是117M,大概在一億多一點(diǎn)。其實(shí)也算不上大語(yǔ)言模型,因?yàn)槌^(guò)10億才算大語(yǔ)言模型。
訓(xùn)練數(shù)據(jù)量就是給到他,讓他去把這個(gè)參數(shù)量給計(jì)算出來(lái)的,就是用來(lái)拿文字學(xué)習(xí)文字接龍的一個(gè)資料量,也就是他后天的努力。在ChatGPT 1這個(gè)時(shí)候,只有7000本書(shū)的量。
高手的話其實(shí)就是有非常高的天資,也就是說(shuō)“大力出奇跡”的參數(shù)量要大,且它的訓(xùn)練數(shù)據(jù)比較大時(shí),那就有可能會(huì)出現(xiàn)非常牛的一些大語(yǔ)言模型。
對(duì)比ChatGPT 1到3,它的一個(gè)訓(xùn)練量和和參數(shù)量。2018年的時(shí)候,1億多個(gè)參數(shù)量,2019年的ChatGPT 2就變成了15個(gè)億多的一個(gè)參數(shù)量,這個(gè)階段已經(jīng)算是大語(yǔ)言模型的一個(gè)陣列了,到了ChatGPT 3的時(shí)候,一下擴(kuò)充到了一百多倍,也就是1750億個(gè)參數(shù)的量,訓(xùn)練數(shù)據(jù)也達(dá)到了580G。
2. 找參數(shù)的過(guò)程——最佳化(optimization)
剛才講到就是再去算那些未知數(shù),也就是說(shuō)算參數(shù)的這樣一個(gè)過(guò)程,這個(gè)過(guò)程叫最佳化。也就是這些訓(xùn)練資料丟給大模型,然后它會(huì)自動(dòng)會(huì)計(jì)算出這些參數(shù)。計(jì)算參數(shù)其實(shí)還有一個(gè)關(guān)鍵因素就是叫超參數(shù)。這個(gè)超參數(shù)是可以輔助他找參數(shù)的一個(gè)計(jì)算,可以理解為你要寫(xiě)一篇作文的話,我們給你一個(gè)范例這種感覺(jué)。
但是在算這個(gè)參數(shù)的時(shí)候,他是有可能失敗的。那什么叫失敗呢?失敗的話也就是說(shuō)我們給他一個(gè)輸入,他沒(méi)有符合我們的訓(xùn)練資料,或者是沒(méi)有符合我們的測(cè)試集。比如說(shuō)我們現(xiàn)在給他輸入“床前明月光”,那他下面輸入它不是“疑是地上霜”,那這樣的話他參數(shù)就找錯(cuò)了,對(duì)不對(duì)?那參數(shù)找錯(cuò)怎么辦呢?我們就要重新再來(lái)一遍,要調(diào)整這個(gè)超參數(shù),讓他重新再把這些訓(xùn)練資料再丟給他,讓他重新再找一遍參數(shù)。
這個(gè)過(guò)程它是非常痛苦的,需要去調(diào)參數(shù),重新再去跑這個(gè)流程。所以在這個(gè)流程當(dāng)中,它是需要非常消耗算力的,算力其實(shí)就硬件資源就是GPU。這也就是為什么英偉達(dá)顯卡賣(mài)那么貴,英偉達(dá)的市值那么高的一個(gè)其中很大的原因。
3. 訓(xùn)練三階段之指令微調(diào)(instruction fine-turning)
在第二個(gè)階段就是指令微調(diào),這個(gè)部分其實(shí)就是人工去標(biāo)注一些數(shù)據(jù),去給到模型進(jìn)行訓(xùn)練。你可以看到它標(biāo)注的大概的流程就是用戶(hù)的問(wèn)題及產(chǎn)出的答案,由于這個(gè)需要人力的介入,也叫監(jiān)督學(xué)習(xí)。
這個(gè)階段也是要進(jìn)行找參數(shù)的,所以也是要有這樣最佳化找參數(shù)的過(guò)程。預(yù)訓(xùn)練時(shí)候的參考參數(shù)它是叫超參數(shù),參考參數(shù)它可以直接用預(yù)訓(xùn)練結(jié)束時(shí)的參數(shù),所以只做了預(yù)訓(xùn)練的模型也叫基座模型,在此開(kāi)源模型基礎(chǔ)上再做微調(diào),比如現(xiàn)在我們國(guó)內(nèi)一般就調(diào)通義千問(wèn)了的開(kāi)源的接口去做的微調(diào)訓(xùn)練模型。借助于預(yù)訓(xùn)練基座模型的參數(shù)做的微調(diào),參數(shù)不會(huì)和第一階段的參數(shù)差太多,所以也是這個(gè)階段叫微調(diào)的其中的一個(gè)原因。
業(yè)界常用的一個(gè)微調(diào)手段是Laura,舉一個(gè)例子來(lái)講,如果我們現(xiàn)在想要ChatGPT去寫(xiě)一個(gè)公文的風(fēng)格的一篇文章,那其實(shí)他的輸出的這種形式很大程度上是要取決于他之前的訓(xùn)練數(shù)據(jù)是怎樣的,但是他訓(xùn)練的數(shù)據(jù)跟我想要的,這時(shí)候就想對(duì)他進(jìn)行微調(diào)。就是人工標(biāo)注數(shù)據(jù)對(duì),給他輸入是怎么樣的,輸出是怎么樣子。微調(diào)后產(chǎn)出的文章,就會(huì)符合具體的業(yè)務(wù)場(chǎng)景。
這個(gè)在底層的原理就是對(duì)于原本的這個(gè)參數(shù)不改變,只不過(guò)是在這個(gè)參數(shù)的基礎(chǔ)上再去加一些參數(shù)。所以它的好處就是第一個(gè)減少了運(yùn)算量。從而就不需要那么大的一個(gè)算力支出;第二個(gè)就是新的參數(shù)跟初始參數(shù)是類(lèi)似的,因?yàn)樗窃谠镜幕A(chǔ)上再加的,所以就保證模型的質(zhì)量就不會(huì)太差。
4. 人類(lèi)反饋強(qiáng)化學(xué)習(xí)(IReinforcement Learning from Human Feedback, RLHF)
模型訓(xùn)練的最后一個(gè)階段,也就是人類(lèi)反饋的強(qiáng)化學(xué)習(xí),我們也稱(chēng)之為RLHF。之前都是相當(dāng)于是給一個(gè)輸入和輸出的一個(gè)過(guò)程,RLHF是輸出結(jié)果的對(duì)比。它的一個(gè)原理就是問(wèn)答結(jié)果概率的提升或下降,比如說(shuō)一個(gè)問(wèn)題是中國(guó)最美的城市在哪?一個(gè)上海一個(gè)北京。你如果給上海點(diǎn)了點(diǎn)贊,那他以后就會(huì)提高輸出上海的一個(gè)概率,然后從而降低北京的輸出的這樣的一個(gè)概率,這就是它的一個(gè)最基本的一個(gè)原理。
在ChatGPT中也可以找到這樣的一個(gè)入口,相當(dāng)于我們每個(gè)人也為ChatGPT做這樣的一個(gè)步驟。比如說(shuō)你輸入:中國(guó)最美城市,然后點(diǎn)擊重新生成。在第二次生成的一個(gè)回答當(dāng)中就會(huì)有這樣的一個(gè)入口是詢(xún)問(wèn)你我現(xiàn)在這個(gè)回答是相較于第一個(gè)回答是更好了,更差了還是一樣?那你這個(gè)如果做出反饋的話,你這筆數(shù)據(jù)就會(huì)給ChatGPT去做第三步RLHF。
5. 訓(xùn)練三階段對(duì)比
再對(duì)比一下這三個(gè)階段。第一個(gè)階段就是預(yù)訓(xùn)練,第二個(gè)階段就是微調(diào),第三個(gè)階段也就是RLHF。在第一個(gè)階段我們也稱(chēng)之為訓(xùn)練基座模型,第二階段和第三階段我們稱(chēng)之為對(duì)齊。那么對(duì)齊的是什么?也就是我們?nèi)祟?lèi)的一個(gè)需求,以及我們?nèi)祟?lèi)的一些偏好。
同時(shí)他的訓(xùn)練數(shù)據(jù)上面也會(huì)有略有一些區(qū)別,第一個(gè)階段他訓(xùn)練數(shù)據(jù)就是我在網(wǎng)絡(luò)上面能抓到什么樣的資料,然后都都丟進(jìn)去掉。所以他是自己在學(xué)習(xí)的,是self supervisor learning自監(jiān)督的一個(gè)學(xué)習(xí);第二個(gè)階段它的一個(gè)輸入輸出的資料是有這種user和AI這種標(biāo)識(shí)符的,它是由人類(lèi)進(jìn)行一個(gè)介入的一個(gè)學(xué)習(xí)的,所以叫監(jiān)督學(xué)習(xí);第三個(gè)階段它其實(shí)是這個(gè)回答的一個(gè)對(duì)比,他就是算是一個(gè)增強(qiáng)式學(xué)習(xí),哪個(gè)回答更好一點(diǎn),哪個(gè)回答更差一點(diǎn)這樣子。
六、Chatgpt可以做什么?
我們訓(xùn)練好之后,ChatGPT可以用來(lái)做什么?我們把這個(gè)問(wèn)題丟給ChatGPT,可以看他的回答一下。然后他的回答是他覺(jué)得他自己的核心能力有對(duì)話信息檢索、文本理解,像這個(gè)圖片生成,代碼編寫(xiě)等等。
Chatgpt能做挺多的,我覺(jué)得它比較牛的一些功能是,第一個(gè)是編程。編程可能不僅僅是把如何編的給你展示出來(lái),更重要是它是有集成一個(gè)python的一個(gè)編輯器。然后是可以直接直接去把這個(gè)代碼給編譯出來(lái),然后去把最終結(jié)果也生成出來(lái)。當(dāng)然你也可以通過(guò)寫(xiě)代碼形式去生成一些圖之類(lèi)的。
然后第二個(gè)就是通過(guò)prompt的一些角色扮演。比如我們就他預(yù)設(shè),他是一個(gè)面試的一個(gè)專(zhuān)家。然后我們把面試的一些文字的記錄丟給他,然后他就會(huì)根據(jù)我們這些記錄去給我們一些面試相關(guān)的一些建議。然后通過(guò)這種方式來(lái)進(jìn)行面試復(fù)盤(pán),這個(gè)方式也是非常有效的。
還有非常多其他的功能,比如說(shuō)像通過(guò)ChatGPT可以生成文字云,然后也可以總結(jié)文章的重點(diǎn),寫(xiě)工作總結(jié),繪制圖表,分類(lèi)新聞等。
分類(lèi)新聞這一點(diǎn)其實(shí)也挺厲害的,這個(gè)點(diǎn)是我們之現(xiàn)在接觸的一個(gè)業(yè)務(wù)上面,你給它預(yù)設(shè)幾個(gè)新聞?lì)悇e,我們現(xiàn)在的文章我們可能有八卦、財(cái)經(jīng)、政治等等,然后你現(xiàn)在就是輸入一篇文章,說(shuō)去幫我根據(jù)以上我的一些所定義的分類(lèi),把這篇這個(gè)新聞給我一個(gè)分類(lèi),它屬于哪一類(lèi)。然后他就會(huì)跟你講,這個(gè)就直接把之前那個(gè)需要一些開(kāi)發(fā)的一些流程就給就給省略掉了。
七、ChatGPT的缺陷
ChatGPT也不是萬(wàn)能的,它也有它自己的一些缺陷:
- 幻覺(jué)(胡說(shuō)八道的能力)。最大的缺陷我認(rèn)為是他的幻覺(jué),也就是胡說(shuō)八道的能力。其實(shí)你了解ChatGPT的原理,你就可以理解為它為什么會(huì)有這樣的一個(gè)胡說(shuō)八道的。因?yàn)樗举|(zhì)上它是在預(yù)測(cè)下一個(gè)字的文字接龍游戲,他是在做這樣的一個(gè)事情,所以它是不保證下一個(gè),不保證我們整體的一個(gè)真實(shí)性的。我只保證我下一個(gè)字的一個(gè)概情況,對(duì)不對(duì)?所以就出現(xiàn)像律師他用ChatGPT來(lái)寫(xiě),就是有一些假的一些案例。那像馬斯克也說(shuō),我們需要的是說(shuō)真話的GPT。
- 過(guò)時(shí)的數(shù)據(jù)。訓(xùn)練是有時(shí)間差的,ChatGPT3.5的數(shù)據(jù)只更新到2022年11月份,到現(xiàn)在基本上兩年的gap,當(dāng)然這個(gè)部分也可以通過(guò)一些聯(lián)網(wǎng),RAG知識(shí)庫(kù)的一些方式來(lái)部分的解決,我覺(jué)得聯(lián)網(wǎng)這部分kimi做的挺好的。
- 有限的上下文窗口。ChatGPT3.5的上下文只支持大概3000個(gè)詞的信息,也就是說(shuō)你跟他聊著天,我們之前聊天信息突然忘記了,他是一個(gè)健忘的朋友或者助手。
當(dāng)然,AI一天,人間十年,假以時(shí)日,以上三點(diǎn)缺陷我相信在未來(lái)的某個(gè)時(shí)間點(diǎn),它都可以一定程度上進(jìn)行突破!
本文由人人都是產(chǎn)品經(jīng)理作者【圈圈】,微信公眾號(hào):【lovepm】,原創(chuàng)/授權(quán) 發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于 CC0 協(xié)議。
- 目前還沒(méi)評(píng)論,等你發(fā)揮!