一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

OpenAI聯(lián)合創(chuàng)始人親自上場科普GPT,讓技術(shù)小白也能理解最強(qiáng)AI

 天承辦公室 2023-05-30 發(fā)布于江蘇
機(jī)器之心報(bào)道
機(jī)器之心編輯部
在近日舉辦的微軟開發(fā)者大會(huì) Microsoft Build 2023 上,OpenAI 聯(lián)合創(chuàng)始人 Andrej Karpathy 做了一個(gè)題為《State of GPT》演講,其中他首先直觀地介紹了 GPT 的訓(xùn)練流程的各個(gè)階段,然后展示了如何使用 GPT 來完成任務(wù)并給出了直觀的示例,最后他還給出了一些非常具有實(shí)際意義的使用建議。機(jī)器之心詳細(xì)整理了該演講,以饗讀者。

圖片

視頻地址:https:///bZQun8Y4L2A

如何訓(xùn)練 GPT?

首先,我們概括性地看看 GPT 大模型的訓(xùn)練流程。要記住,這是個(gè)新領(lǐng)域,變化很快。現(xiàn)在的流程是這樣,以后新技術(shù)出現(xiàn)時(shí)可能會(huì)不一樣。

圖片

可以看到,GPT 的訓(xùn)練流程可粗略分為四個(gè)階段:預(yù)訓(xùn)練、監(jiān)督式微調(diào)、獎(jiǎng)勵(lì)建模、強(qiáng)化學(xué)習(xí)。

這四個(gè)階段按順序進(jìn)行。每個(gè)階段都有各自的數(shù)據(jù)集,每個(gè)階段也有各自用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的算法。第三行是所得到的模型。最后底部有一些備注信息。

在所有階段中,預(yù)訓(xùn)練階段所需的計(jì)算量是最大的,可以說 99% 的訓(xùn)練計(jì)算時(shí)間和浮點(diǎn)運(yùn)算量都集中在這個(gè)階段。因?yàn)檫@一階段需要處理超大規(guī)模的互聯(lián)網(wǎng)數(shù)據(jù)集,可能需要數(shù)千 GPU 構(gòu)成的超級計(jì)算機(jī)工作幾個(gè)月時(shí)間。其它三個(gè)階段都算是微調(diào)(fine tuning)階段,所需的 GPU 數(shù)量和訓(xùn)練時(shí)間都少得多。

下面我們將分階段詳解 GPT 的整個(gè)訓(xùn)練流程。

預(yù)訓(xùn)練階段

預(yù)訓(xùn)練階段的目標(biāo)是得到一個(gè)基礎(chǔ)模型。

首先第一步:數(shù)據(jù)收集。這一階段需要海量的數(shù)據(jù),下面給出了一個(gè)例子,這是來自 Meta 的 LLaMA 模型的數(shù)據(jù)混合(data mixture)方法:

圖片

可以看到,LLaMA 的預(yù)訓(xùn)練數(shù)據(jù)按不同比例混用了多個(gè)不同類型的數(shù)據(jù)集,其中比例最大的是爬取自互聯(lián)網(wǎng)的 CommonCrawl 以及基于 CommonCrawl 構(gòu)建的 C4,此外還有 GitHub、維基百科等數(shù)據(jù)集。

收集到這些數(shù)據(jù)之后,還需要對它們進(jìn)行預(yù)處理,這一步也被稱為「token 化」。簡單來說,這就是一個(gè)轉(zhuǎn)譯過程,即把原始文本轉(zhuǎn)譯成某種整數(shù)序列,因?yàn)檫@種整數(shù)序列就是 GPT 實(shí)際工作時(shí)所操作的本地表征。

圖片

這種從文本到 token 和整數(shù)的轉(zhuǎn)譯過程是無損的,而具體執(zhí)行這一過程的算法有好幾種。舉個(gè)例子,如上圖所示,我們可以使用一種名為字節(jié)對編碼(byte pair encoding)的技術(shù),其工作方式是迭代式地合并短文本塊并將它們分組成 token。最后實(shí)際輸入 Transformer 的就是那些整數(shù)序列。

下面來看兩個(gè)示例模型 GPT-3 和 LLaMA 在預(yù)訓(xùn)練階段需要考慮的一些主要的超參數(shù)。Karpathy 表示由于他們還沒有發(fā)布有關(guān) GPT-4 的相關(guān)信息,因此在演講中使用了 GPT-3 的數(shù)據(jù)。

圖片

可以看到,詞匯庫的大小通常是 10000 數(shù)量級的;上下文長度通常為 2000 或 4000 左右,而現(xiàn)在更是有長達(dá) 10 萬的。上下文長度決定著 GPT 在預(yù)測序列的下一個(gè)整數(shù)時(shí)所查看的最大整數(shù)數(shù)量。

對于參數(shù)數(shù)量,可以看到 GPT-3 的為 1750 億,而 LLaMA 的為 650 億,但實(shí)際上 LLaMA 的性能表現(xiàn)遠(yuǎn)勝于 GPT-3。原因何在?因?yàn)?LLaMA 訓(xùn)練的 token 要長得多,達(dá)到了 1.4 萬億,而 GPT-3 僅有大約 3000 億。因此,評價(jià)一個(gè)模型時(shí),光看參數(shù)數(shù)量是不夠的。

上圖中部的表格中給出了 Transformer 神經(jīng)網(wǎng)絡(luò)中一些需要設(shè)定的超參數(shù),比如頭的數(shù)量、維度大小、學(xué)習(xí)率、層數(shù)等等。

下方則是一些訓(xùn)練超參數(shù);比如為了訓(xùn)練 650 億參數(shù)的 LLaMA 模型,Meta 使用 2000 個(gè) GPU 訓(xùn)練了大約 21 天,資金成本大約為 500 萬美元。這大概能體現(xiàn)出預(yù)訓(xùn)練階段各項(xiàng)成本的數(shù)量級。

接下來看實(shí)際的預(yù)訓(xùn)練過程究竟會(huì)發(fā)生什么。大致來說,首先會(huì)把 token 分批組成 data batch。這些分配數(shù)據(jù)構(gòu)成數(shù)組,再被輸入到 Transformer 中。這些數(shù)組的大小為 B×T;其中 B 是分批大小,即堆疊的獨(dú)立樣本的行數(shù);T 是最大上下文長度。下圖給出了一個(gè)示例。

圖片

在圖中示例中,上下文長度 T 僅為 10,但實(shí)際模型的 T 可達(dá)到 2000 或 4000 乃至更長。也就是說,實(shí)際模型的一行數(shù)據(jù)可以非常長,比如一整個(gè)文檔。我們可以將許多文檔打包到各行中,并用這些特殊的文本結(jié)束 token <|endoftext|> 來分隔它們。簡單來說,這些 token 是告訴 Transformer 新文檔開始的位置。比如圖中的 4 行文檔就轉(zhuǎn)換成了底部的 4×10 的數(shù)組。

現(xiàn)在,需要將這些數(shù)字輸入到 Transformer。這里我們僅看其中一個(gè)單元格(綠色),而實(shí)際上每個(gè)單元格都會(huì)經(jīng)歷同樣的處理流程。

圖片

這個(gè)綠色單元格會(huì)查看其之前的所有 token,即所有黃色單元格的 token。我們要將這里的全部上文輸入到 Transformer 神經(jīng)網(wǎng)絡(luò),Transformer 則需要預(yù)測出該序列的下一個(gè) token,即圖中的紅色 token。

為了給出準(zhǔn)確的預(yù)測,神經(jīng)網(wǎng)絡(luò)需要調(diào)整其上百億個(gè)參數(shù)。每次調(diào)整后,神經(jīng)網(wǎng)絡(luò)對每個(gè)單元格 token 的預(yù)測分布就會(huì)不同。舉個(gè)例子,如果詞匯庫的大小為 50257 個(gè) token,那么我們就需要同樣多的數(shù)字,以便得到下一個(gè) token 的概率分布,其預(yù)測了下一個(gè) token 的可能值及相應(yīng)概率。

在圖中的示例中,下一個(gè)單元格應(yīng)該是 513,因此就可以將其用作監(jiān)督源來更新 Transformer 的權(quán)重。我們可以并行地對每個(gè)單元格采取同樣的操作。我們不斷更換數(shù)據(jù)批,努力讓 Transformer 有能力正確地預(yù)測序列的下一個(gè) token。

下面再看一個(gè)更具體的示例。這是《紐約時(shí)報(bào)》用莎士比亞作品訓(xùn)練的一個(gè)小型 GPT。這里給出了莎士比亞作品中的一小段以及在其上訓(xùn)練 GPT 的情況。

圖片

首先,在 GPT 初始化時(shí),權(quán)重是完全隨機(jī)的,所以其輸出結(jié)果也是完全隨機(jī)的。隨著時(shí)間推移,訓(xùn)練時(shí)間越來越長,GPT 不斷迭代,模型給出的結(jié)果樣本也就越來越連貫通順了。最后,可以看到 Transformer 學(xué)到了一些有關(guān)詞的東西,也知道應(yīng)該在哪些地方放置空格了。

在實(shí)際預(yù)訓(xùn)練過程中,要通過一些量化指標(biāo)來確定模型迭代中的表現(xiàn)變化。一般來說,研究者監(jiān)測是損失函數(shù)。損失低說明 Transformer 更可能給出正確預(yù)測,即序列中下一個(gè)整數(shù)是正確值的概率更高。

圖片


預(yù)訓(xùn)練其實(shí)就是一個(gè)語言建模過程,這個(gè)過程的訓(xùn)練時(shí)間可長達(dá)一個(gè)月。之后,GPT 學(xué)到了一個(gè)非常強(qiáng)大的通用型語言表征。然后我們可以針對具體的下游任務(wù)高效地對其進(jìn)行微調(diào)。

圖片


舉個(gè)例子,如果下游任務(wù)是情緒分類。過去,你采用的方法可能是收集大量標(biāo)注好「正面」或「負(fù)面」情緒的樣本,然后訓(xùn)練一個(gè) NLP 模型。但現(xiàn)在的新方法不需要預(yù)先做情緒分類了,你只需要拿一個(gè)預(yù)訓(xùn)練過的大型語言模型,然后只需要少量示例樣本,就能非常高效地針對你的具體任務(wù)對模型進(jìn)行微調(diào)。

這對實(shí)際應(yīng)用來說非常有用。那么為什么預(yù)訓(xùn)練后的大型語言模型(LLM)只需要簡單微調(diào)就能用呢?這是因?yàn)檎Z言建模過程本身就已經(jīng)涵蓋了大量任務(wù) —— 模型為了預(yù)測下一個(gè) token,必須理解文本的結(jié)構(gòu)以及其中內(nèi)含的各種不同概念。

這就是 GPT-1。

現(xiàn)在來看 GPT-2。人們注意到 GPT-2 甚至可以不用微調(diào)就能非常有效地讓這些模型執(zhí)行 prompt。這些語言模型的訓(xùn)練目標(biāo)是完成文檔,因此用戶實(shí)際上只需通過編排適當(dāng)?shù)奶摷傥臋n,就可以誘導(dǎo)模型執(zhí)行具體任務(wù)。下面給出了一個(gè)例子。

圖片


其中給出了一篇文章,用戶想完成的任務(wù)是做相關(guān)的問答。因此,只需要在文章后面加幾個(gè)有答案的問答(這被稱為 few-shot prompt),然后再提問,那么由于 Transformer 的目標(biāo)是完成這個(gè)文檔,也就相當(dāng)于回答了問題。這個(gè)例子是用 prompt 來調(diào)教基礎(chǔ)模型,使其相信它在模仿一個(gè)文檔,結(jié)果卻完成了問答任務(wù)。

Karpathy 認(rèn)為,以提供 prompt 替代微調(diào)的方式昭示著大型語言模型的新時(shí)代。這讓基礎(chǔ)模型本身就足以應(yīng)對許多不同類型的任務(wù)。

也因此,相關(guān)領(lǐng)域的研究前沿就轉(zhuǎn)向了基礎(chǔ)模型的進(jìn)化。各大研究機(jī)構(gòu)和企業(yè)都在打造自己的基礎(chǔ)大模型。不過這些模型并不都是公開可用的,比如 OpenAI 一直沒有發(fā)布 GPT-4 基礎(chǔ)模型。我們通過 API 調(diào)用的 GPT-4 模型其實(shí)并不是基礎(chǔ)模型,而是一個(gè)助理模型(assistant model)。

圖片


GPT-3 基礎(chǔ)模型可通過 DaVinci API 使用,GPT-2 基礎(chǔ)模型也是公開的,用戶甚至可以在 GitHub 上找到其參數(shù)權(quán)重配置:https://github.com/openai/gpt-2 。不過總體而言,目前最開放的基礎(chǔ)模型還是 Meta 的 LLaMA 系列模型,但該系列也沒有授權(quán)給商業(yè)使用。

現(xiàn)在需要指出一點(diǎn):基礎(chǔ)模型不等于助理模型?;A(chǔ)模型不會(huì)回答用戶提問,它們只會(huì)完成文檔。所以如果你對基礎(chǔ)模型說:「寫一首關(guān)于面包和奶酪的詩」,你可能不會(huì)如愿 —— 它只會(huì)把你的要求看成一個(gè)文檔,然后試圖完成它。

圖片


但是,你可以通過適當(dāng)?shù)?prompt 誘導(dǎo)基礎(chǔ)模型寫詩,如上圖右側(cè)所示。

當(dāng)然,你也可以誘導(dǎo)模型變成助理。為此,你需要?jiǎng)?chuàng)建一些特定的少樣本 prompt,使其看起來像是人類與助理交換信息的交互過程的文檔。如下圖所示,然后你只需要在文檔結(jié)尾處附上你的提問,基礎(chǔ)模型就能在一定程度上化身為一個(gè)有用的助理,給出某個(gè)答案。但這個(gè)過程并不非??煽?,實(shí)踐效果也不好。

圖片


因此,為了打造出真正的 GPT 助理,需要另外的方法,即監(jiān)督式微調(diào)(supervised fine tuning,即 SFT)。

監(jiān)督式微調(diào)階段

在監(jiān)督式微調(diào)階段,需要收集少量但高質(zhì)量的數(shù)據(jù)集。OpenAI 的方法是以人工方式收集由 prompt 和理想響應(yīng)構(gòu)成的數(shù)據(jù)。這些數(shù)據(jù)需要不少,一般需要幾萬個(gè)。

然后,繼續(xù)在這些數(shù)據(jù)上執(zhí)行語言建模。算法不變,只是換了訓(xùn)練數(shù)據(jù)集:從大量低質(zhì)量的互聯(lián)網(wǎng)文檔換成了少量高質(zhì)量的問答式「prompt - 響應(yīng)」數(shù)據(jù)。

這個(gè)訓(xùn)練過程完成后,就得到了一個(gè) SFT 模型。部署這些模型就能得到助理,它們已經(jīng)能完成一定程度的工作。

依然來看個(gè)例子。這是人類合同工寫出的數(shù)據(jù),其中有一個(gè) prompt,然后人類再寫出理想的響應(yīng)。

圖片


理想的響應(yīng)自然不能讓人隨意發(fā)揮,而是需要遵循許多規(guī)則(如上右圖),其中有格式上的要求并且要保證給出的答案有用、真實(shí)可信且無害。

接下來還需要基于人類反饋的強(qiáng)化學(xué)習(xí)(RLHF),其中包含獎(jiǎng)勵(lì)建模階段和強(qiáng)化學(xué)習(xí)階段。

獎(jiǎng)勵(lì)建模階段

在這一階段,需要將數(shù)據(jù)收集轉(zhuǎn)變成比較的形式。這里給出了一個(gè)示例。對于同樣的 prompt,即要求助理寫一個(gè)能檢查給定字符串是否為回文的程序或函數(shù)。再使用已經(jīng)訓(xùn)練好的 SFT 模型生成多個(gè)結(jié)果,這里給出了三個(gè)。然后再讓人類給這些結(jié)果排名。

圖片


這件事做起來可并不簡單,畢竟要是讓人類來完成一個(gè) prompt,可能需要耗費(fèi)幾個(gè)小時(shí)時(shí)間。現(xiàn)在假設(shè)排名完成了,然后就需要在這些結(jié)果的所有可能配對上執(zhí)行類似二元分類的操作。

如下圖所示,具體的做法是這樣的:將 prompt 按行排列;這里的三行 prompt 是一樣的,但完成的結(jié)果不同,即圖中黃色 token(來自 SFT 模型)。然后在其后添加一個(gè)特殊的獎(jiǎng)勵(lì)讀出 token。這樣,只需要在綠色 token 位置對 Transformer 執(zhí)行監(jiān)督,就能使 Transformer 預(yù)測出某個(gè)獎(jiǎng)勵(lì),從而判斷 prompt 的完成結(jié)果是否優(yōu)良。

圖片


這基本上就是讓 Transformer 猜測每個(gè)完成結(jié)果的質(zhì)量。當(dāng)其猜測完每個(gè)不同結(jié)果的質(zhì)量后,開發(fā)者就可以動(dòng)用已有的基本真值(ground truth)強(qiáng)行讓某些結(jié)果的質(zhì)量分?jǐn)?shù)高于其它結(jié)果,從而使模型的獎(jiǎng)勵(lì)預(yù)測結(jié)果與人工給出的基本真值保持一致。這個(gè)過程可以通過一個(gè)損失函數(shù)完成。

有了獎(jiǎng)勵(lì)模型之后,GPT 依然還不能成為一個(gè)有用的助理,但獎(jiǎng)勵(lì)模型卻對后面的強(qiáng)化學(xué)習(xí)階段很有用,因?yàn)楠?jiǎng)勵(lì)模型可以評估任意給定 prompt 的任意完成結(jié)果的質(zhì)量。

強(qiáng)化學(xué)習(xí)階段

強(qiáng)化學(xué)習(xí)階段做的事情就是基于獎(jiǎng)勵(lì)模型,使用強(qiáng)化學(xué)習(xí)算法對大量 prompt 對應(yīng)的結(jié)果進(jìn)行評分。

這里以一個(gè) prompt 為例,將 SFT 模型完成的結(jié)果(黃色)排列成行,然后在后面加上獎(jiǎng)勵(lì) token(綠色)。這些獎(jiǎng)勵(lì)來自獎(jiǎng)勵(lì)模型,并且已經(jīng)固定不變。

圖片


現(xiàn)在使用同樣的語言建模損失函數(shù),只是現(xiàn)在是在黃色 token 上訓(xùn)練,并根據(jù)獎(jiǎng)勵(lì)模型指示的獎(jiǎng)勵(lì)來重新權(quán)衡語言建模目標(biāo)。

比如在第一行,獎(jiǎng)勵(lì)模型認(rèn)為這個(gè)完成結(jié)果的評分相當(dāng)高。因此,模型在第一行采樣的所有 token 都會(huì)得到強(qiáng)化,也就是在未來會(huì)有更高的概率被采用。對比之下,獎(jiǎng)勵(lì)模型不喜歡第二個(gè)完成結(jié)果,給出了負(fù)分評價(jià),因此該行的所有 token 在未來出現(xiàn)的概率就會(huì)降低。

如此這般在許多 prompt 上操作一遍又一遍,經(jīng)過許多數(shù)據(jù)批次,就能得到一個(gè)創(chuàng)建黃色 token 的策略。依照這個(gè)策略,所有完成結(jié)果都能被獎(jiǎng)勵(lì)模型給予高分。

這就是 RLHF 的訓(xùn)練流程。最后得到的模型就可以部署成應(yīng)用了。

ChatGPT 就是一個(gè) RLHF 模型,而其它一些模型則可能是 SFT 模型,比如 Claude 等。

那么 OpenAI 為什么要使用 RLHF 呢?Karpathy 表示,原因很簡單,使用 RLHF 能讓模型表現(xiàn)更好。根據(jù) OpenAI 之前做的一些實(shí)驗(yàn),可以看到使用了 PPO(近端策略優(yōu)化)算法的 RLHF 模型整體上都更好一些。當(dāng)把結(jié)果提供給人類時(shí),相比于 SFT 模型和通過 prompt 化身為助理的基礎(chǔ)模型,人類也基本更喜歡來自 RLHF 模型的 token。

圖片


那 RLHF 為什么能讓模型更好呢?目前 AI 研究界還沒有找到一個(gè)得到大家認(rèn)可的理論,但 Karpathy 還是給出了自己的見解。他認(rèn)為這可能與比較和生成的計(jì)算難度之間的不對稱性有關(guān)。

舉個(gè)例子說明一下:假設(shè)我們要讓一個(gè)模型寫一首關(guān)于回形針的俳句。如果你是一位正努力創(chuàng)建訓(xùn)練數(shù)據(jù)的合同工,正在為 SFT 模型收集數(shù)據(jù)。那么你該怎樣寫出一首關(guān)于回形針的好俳句呢?而你可能并不是一位優(yōu)秀的俳句詩人。但是,如果給你幾首俳句,你卻有能力辨別它們中哪首更好一些。也就是說,比起創(chuàng)建一個(gè)好樣本,判斷哪個(gè)樣本更好是簡單得多的任務(wù)。因此,這種不對稱性可能使得比較是一種更好的方法 —— 能更好地利用人類的判斷來創(chuàng)造出好一些的模型。

圖片


現(xiàn)在來看另一個(gè)方面:RLHF 并不總是會(huì)為基礎(chǔ)模型帶來提升。在某些情況下,RLHF 模型會(huì)失去一些熵,也就是說它們會(huì)輸出更加單調(diào)、變化更少的結(jié)果。而基礎(chǔ)模型的熵更高,可以輸出更加多樣化的結(jié)果。

圖片


比如下面的任務(wù)可能就更適合使用基礎(chǔ)模型,即生成與已有的 n 個(gè)示例相似的東西。這里的示例任務(wù)是生成更多寶可夢名字。首先,用戶向模型提供了 7 個(gè)寶可夢名字,然后讓基礎(chǔ)模型完成文檔?;A(chǔ)模型生成了大量寶可夢名字。這些名字都是虛構(gòu)的,畢竟寶可夢并不真實(shí)存在。Karpathy 認(rèn)為這類任務(wù)使用基礎(chǔ)模型會(huì)得到更好的結(jié)果,因?yàn)榛A(chǔ)模型的熵更高,給出的結(jié)果既與之前的示例相似,又更加多樣化和炫酷。

圖片


現(xiàn)在,用戶可以使用的助理模型已有不少了。伯克利有個(gè)團(tuán)隊(duì)正對許多助理模型進(jìn)行排名并給出了基本的 ELO 評分。當(dāng)然,現(xiàn)目前最好的模型是 GPT-4;Claude 和 GPT-3.5 緊隨其后。有些模型公開提供模型權(quán)重,比如 Vicuna、Koala 等。在這個(gè)榜單中,前三名都是 RLHF 模型,其它模型基本都是 SFT 模型。

圖片


上面就是訓(xùn)練模型的方式。下面調(diào)轉(zhuǎn)方向,看看我們可以怎么將 GPT 助理模型應(yīng)用于實(shí)際問題。

如何使用 GPT? 

下面會(huì)通過實(shí)際示例來展示如何最好地使用 GPT。假設(shè)你在寫一篇文章,需要在結(jié)尾加上這樣一句:「California’s population is 53 times that of Alaska.」(加州的人口是阿拉斯加州的 53 倍)。但現(xiàn)在你不知道這兩個(gè)州的人口數(shù)據(jù),你需要智能助理來幫你。

人類會(huì)怎樣完成這個(gè)任務(wù)呢?大致推想,人類很可能會(huì)經(jīng)歷一連串的思考過程,如下圖所示:首先會(huì)想到為了得到結(jié)果,需要比較人口數(shù)量,那么就需要查詢?nèi)丝跀?shù)據(jù);然后使用查詢工具查一下 —— 在維基百科上找到了加州和阿拉斯加的人口數(shù)據(jù);接下來很顯然需要做個(gè)除法運(yùn)算,可能會(huì)需要計(jì)算器;然后得到倍數(shù)結(jié)果 53;然后我們的大腦可能會(huì)用經(jīng)驗(yàn)理智快速檢驗(yàn)一下 ——53 倍感覺挺合理的,畢竟加州是美國人口最多的州。

圖片


信息有了之后,就進(jìn)入了創(chuàng)造性寫作的部分。你可能首先會(huì)寫下:「California has 53x times greater」,然后你想一下感覺又不太合適,又刪了重新想哪種表達(dá)更合適一點(diǎn),最終得到你滿意的句子表達(dá)。

簡單來說,為了寫這樣一句話,你的內(nèi)心會(huì)經(jīng)歷大量獨(dú)白式的思考。那么 GPT 在生成這樣一句話時(shí)又會(huì)經(jīng)歷什么呢?

GPT 處理的都是 token 序列。不管是閱讀還是生成,它都是按部就班地一塊塊地進(jìn)行,其中每一塊都是針對一個(gè) token,計(jì)算工作量也都一樣。這些 Transformer 的層數(shù)不少,足有 80 個(gè)推理層,但話說回來 80 也不是非常多。Transformer 會(huì)通過這些來盡力模仿寫作,但其思考過程和人類的大不相同。

圖片


也就是說與人類不同,GPT 沒有什么內(nèi)心獨(dú)白,它只會(huì)檢視每一個(gè) token 并在每個(gè) token 上投入同等的計(jì)算量,僅此而已。它們就像是 token 模擬器 —— 它們不知道自己知道什么或不知道什么,只是模仿地寫出下一個(gè) token;它們也不會(huì)反思,內(nèi)心不會(huì)思考結(jié)果是否合理;它們寫錯(cuò)了也不會(huì)反過來修改。它們只是按序列采樣 token。

但即便如此,Karpathy 認(rèn)為 GPT 依然具有某種形式的認(rèn)知能力優(yōu)勢,比如它們具備非常廣博的事實(shí)知識(shí),涵蓋許多不同領(lǐng)域,因?yàn)樗鼈償?shù)以百億計(jì)的參數(shù),足以儲(chǔ)存大量事實(shí)。同時(shí)它們還有相對來說很大且完美的工作記憶。只要能填入 Transformer 的上下文窗口,它就能通過其內(nèi)部自注意機(jī)制來加以利用。也就是說 GPT 能以無損的方式記住能嵌入其上下文窗口的任何內(nèi)容。

Karpathy 表示:人類通過 prompt 使用 GPT 的過程本質(zhì)上是大腦和 LLM 這兩種不同的認(rèn)知架構(gòu)互相配合的過程。

用 GPT 執(zhí)行推理

再來看 Transformer 在實(shí)踐中表現(xiàn)相當(dāng)好的一種用例:推理。

如果只有單個(gè) token,當(dāng)然不能指望 Transformer 推理出什么。推理的執(zhí)行需要涉及更多 token。比如,你不能向 Transformer 提一個(gè)非常復(fù)雜的問題,然后指望它通過單個(gè) token 就找到答案。Transformer 需要通過 token 來「思考」。

圖片


上圖右側(cè)給出了一個(gè)例子??梢栽谳敵鼋Y(jié)果中看到 Transformer 為了解答問題而進(jìn)行的「思考」。如果你提供了一些示例(上方) ,那么 Transformer 就會(huì)模仿那個(gè)模板,結(jié)果看起來相當(dāng)不錯(cuò)。當(dāng)然,你也可以通過說「Let’s think step by step」(請按步驟解答)引導(dǎo) Transformer 給出類似的輸出 —— 這在某種程度上展示了其工作過程。而且由于它有點(diǎn)像是進(jìn)入了工作過程展示模式,那么其在每個(gè)單獨(dú) token 上投入的計(jì)算量就會(huì)少一點(diǎn)。這樣一來,它執(zhí)行的就是一個(gè)速度更慢的推理過程,也就更可能成功得到正確答案。

再看一例。如下圖所示,人類寫作時(shí)會(huì)寫不好,類似地,Transformer 在選擇下一個(gè) token 時(shí)可能會(huì)出錯(cuò),但不同于人類可以及時(shí)停下進(jìn)行修改,Transformer 會(huì)繼續(xù)生成,一錯(cuò)到底,最終得到錯(cuò)誤答案。

圖片


但類似于人類寫作時(shí)沒寫好可以重來一樣,Transformer 也可以多次采樣,然后我們可以使用某個(gè)過程找到其中較好的。這被稱為自我一致性(self-consistency)。

有趣的是,通過讓模型反思(reflection),可以發(fā)現(xiàn)模型其實(shí)能知道自己出錯(cuò)了。舉個(gè)例子,如果讓 GPT-4 生成一首不押韻的詩然后它生成的詩卻押韻了。然后你只需要問它「你完成任務(wù)了嗎?」它就會(huì)知道自己沒有完成任務(wù),然后為你重新完成任務(wù)。

圖片


但如果你不給出那樣的 prompt,它就不知道自己錯(cuò)了。它并不會(huì)自己去回顧,畢竟它只是一個(gè) token 模擬器。你必須通過 prompt 讓它回顧。

Karpathy 表示可以按照目的將 AI 模型分為兩種:一類系統(tǒng)(System 1)和二類系統(tǒng)(System 2)。一類系統(tǒng)的處理過程速度快并且是自動(dòng)化的,對應(yīng)于只是采樣 token 的大型語言模型。而二類系統(tǒng)的速度慢一些,會(huì)反復(fù)思考進(jìn)行規(guī)劃。

圖片


現(xiàn)在有很多人在通過設(shè)計(jì) prompt 來讓 LLM 表現(xiàn)出類似人類大腦的思維過程。如上左圖 (d) 所示,這是近期一篇論文提出的 Tree of Thought(思維樹)。該論文提出為任意給定 prompt 維持多個(gè)完成結(jié)果,然后對這些結(jié)果進(jìn)行評分,保留得分較好的結(jié)果。

要做到這一點(diǎn),不只要用一個(gè) prompt,而是需要用 Python Glue 代碼將多個(gè) prompt 組合到一起。這實(shí)質(zhì)上是維持多個(gè) prompt,還需要執(zhí)行某個(gè)樹搜索算法來找到可擴(kuò)展的 prompt??梢哉f這是 Python Glue 代碼與各個(gè) prompt 組成的共生體。

Karpathy 在這里類比了 AlphaGo。AlphaGo 的每一步都是下接下來的一步棋,其策略的訓(xùn)練方式最初是模仿人類。但除了這個(gè)策略之外,它還會(huì)執(zhí)行蒙特卡洛樹搜索。由此造成的結(jié)果是,AlphaGo 會(huì)在頭腦里嘗試大量不同的可能性然后對它們進(jìn)行評估,最后僅保留其中效果好的。思維樹就有點(diǎn)像是 AlphaGo 下圍棋時(shí)的思維過程,只不過處理的是文本。

不只是思維樹,現(xiàn)在也有更多人在實(shí)驗(yàn)讓 LLM 完成比簡單問答更加復(fù)雜的任務(wù),但很多都像是 Python Glue 代碼,將許多 prompt 連接起來。

圖片


上圖給出了兩個(gè)例子。其中右圖的論文提出了 ReAct,研究者是將 prompt 的答案構(gòu)造成一個(gè)思維、動(dòng)作、觀察構(gòu)成的序列,其中在動(dòng)作部分,模型還能使用工具。這就像是某種回答查詢的思維過程。

左圖則是 AutoGPT。這個(gè)項(xiàng)目最近有些炒作,但也確實(shí)是很有趣的研究。AutoGPT 能夠保存一個(gè)任務(wù)清單并遞歸式地分解這些任務(wù)。目前來說這種做法的效果并不很好,Karpathy 也不建議人們將其用于實(shí)際應(yīng)用,但他表示從研究角度看,這種方法還是很有啟發(fā)性。

以上就是創(chuàng)造二類系統(tǒng)思維方式的一些研究成果。

Karpathy 接下來談到了 LLM 的另一個(gè)有趣現(xiàn)象,他說:「LLM 就好像有種心理怪癖。它們不想成功,只想模仿。」你想要它給出正確答案,你就要明確要求它。這是因?yàn)?Transformer 的訓(xùn)練數(shù)據(jù)集中數(shù)據(jù)并不總是正確的,也存在低質(zhì)量的數(shù)據(jù)。

舉個(gè)例子,假如有某個(gè)物理問題,數(shù)據(jù)集中可能有某個(gè)學(xué)生給出的錯(cuò)誤答案,同時(shí)也會(huì)有某個(gè)專家給出的正確答案。而 Transformer 不知道該模仿哪個(gè)或者說它都想模仿,畢竟它們的訓(xùn)練目標(biāo)是語言建模,不是分辨對錯(cuò)。因此在使用和測試時(shí),如果你想要正確答案,你就要明確提出要求。

圖片


比如在上圖的論文中,研究者嘗試了多種不同的 prompt,發(fā)現(xiàn)對于同一問題,不同 prompt 得到的輸出結(jié)果準(zhǔn)確度竟然不一樣!可以看到,如果在 prompt 中明確要求模型一步步推理并給出正確結(jié)果,其準(zhǔn)確度會(huì)高一些,因?yàn)檫@樣 Transformer 就不必再為低質(zhì)量解答分配概率了。

因此,如果你想要正確答案,就大聲說出來!像是在 prompt 中添加「你是某領(lǐng)域的專家」或「假設(shè)你的 IQ 為 120」。但是也不要太過了,比如要求模型假設(shè)自己的 IQ 為 400,這樣的話你的問題可能會(huì)超出數(shù)據(jù)的分布或者雖在分布中但結(jié)果卻很科幻 —— 這樣模型可能就會(huì)開始扮演什么科幻角色了。

讓 LLM 使用工具 / 插件

針對具體問題,使用合適的工具往往能事半功倍。對 LLM 來說也是如此。根據(jù)具體任務(wù)的不同,我們可能希望 LLM 能使用計(jì)算器、代碼解釋器、搜索引擎等工具。

圖片


但首先我們需要記住一點(diǎn):Transformer 默認(rèn)情況下可能并不知道它們無法做到某些事情。用戶甚至可能需要在 prompt 中明確告知 Transformer:「你不擅長心算,如果要做大數(shù)運(yùn)算,請使用這個(gè)計(jì)算器,這是使用這個(gè)計(jì)算器的方法?!鼓惚仨毭鞔_要求它使用某個(gè)工具,因?yàn)槟P妥陨聿恢雷约荷瞄L或不擅長什么。

檢索是能極大提升 LLM 性能的重要工具。因?yàn)?LLM 是專精于記憶的(memory only),因此專精于檢索的搜索引擎能為 LLM 提供極大補(bǔ)充。實(shí)踐也證明,能使用檢索工具的 LLM 的實(shí)用性會(huì)大大提升。

圖片


之前已經(jīng)提到,Transformer 的上下文窗口就是其工作記憶范圍。如果能在其工作記憶中載入與當(dāng)前任務(wù)相關(guān)的信息,那么模型的表現(xiàn)就會(huì)更好,因?yàn)槟P湍軌蛄⒓醋x取所有記憶。實(shí)際上用檢索增強(qiáng)生成也是很多人感興趣的課題。上圖下方展示了 LlamaIndex,其中有一個(gè)連接大量不同類型數(shù)據(jù)的數(shù)據(jù)連接器。這個(gè)工具可以索引各種數(shù)據(jù)并將它們提供給 LLM 使用。

現(xiàn)在時(shí)興的做法是:選取相關(guān)文檔,然后將其分成文本塊,再執(zhí)行嵌入操作,得到表示那些數(shù)據(jù)的嵌入向量。這些嵌入向量會(huì)被保存起來。當(dāng)使用模型時(shí),我們可以向存儲(chǔ)的向量發(fā)出查詢,從中取用與當(dāng)前任務(wù)相關(guān)的文本塊。然后將這些文本塊加入到 prompt,再讓 LLM 生成。這種做法在實(shí)踐中的效果很好。

這其實(shí)與人類完成任務(wù)的方法類似。人也可以僅靠自己的記憶做事,但如果能檢索到與任務(wù)相關(guān)的資料,做起事來也自然會(huì)更容易。Transformer 雖然記憶廣博,但也能從檢索中受益。

在 prompt 中添加約束條件

在 prompt 中設(shè)定約束條件能迫使 LLM 按特定模板輸出結(jié)果。下圖給出了微軟幫助用戶更好使用 LLM 的 Guidance 工具,具體可訪問 https://github.com/microsoft/guidance 。在這里給出的例子中,LLM 輸出的結(jié)果會(huì)是 JSON 格式。這是可以得到保證的,因?yàn)?prompt 會(huì)調(diào)整 Transformer 輸出不同 token 的概率,而這些 token 的輸出位置受限了,即只能填補(bǔ)文本中的空缺位置。這樣就實(shí)現(xiàn)了對文本留空處的嚴(yán)格限制。帶約束條件的采樣對某些任務(wù)來說非常有用。

圖片


微調(diào)

通過設(shè)計(jì) prompt 能讓 LLM 模型完成更多不同任務(wù),但我們其實(shí)也能通過微調(diào)來做到這一點(diǎn)。

對模型進(jìn)行微調(diào)是指改變模型的權(quán)重分布。這種事情做起來不難,因?yàn)楝F(xiàn)在已經(jīng)有 LLaMA 等開源的大模型以及一些用于微調(diào)的軟件庫。

圖片


比如 LoRA 等參數(shù)高效型微調(diào)技術(shù)讓用戶可以僅訓(xùn)練模型中少量稀疏的部分。使用該技術(shù)時(shí),基礎(chǔ)模型的大部分都保持不變,而某些部分可以變化。在實(shí)踐中,這種技術(shù)用起來很不錯(cuò),能讓人以很低的成本對模型做少量調(diào)整。同時(shí),因?yàn)槟P痛蟛糠侄际枪潭ú蛔兊?,所以可以使用非常低精度的推理來?jì)算那些部分,因?yàn)樘荻认陆挡粫?huì)更新它們。由此,整體的微調(diào)效率就能非常高。

不過需要記住,微調(diào)需要專業(yè)技術(shù),而且多半還需要相應(yīng)的專業(yè)領(lǐng)域知識(shí),畢竟不管是雇傭人類專家來編寫數(shù)據(jù)集還是通過自動(dòng)方法合成數(shù)據(jù)都非常復(fù)雜,而這也會(huì)拉長迭代周期。

另外,Karpathy 還指出,對用戶來說,監(jiān)督式微調(diào)(SFT)還是可以做到的,因?yàn)檫@其實(shí)就是繼續(xù)執(zhí)行語言建模任務(wù);但 RLHF 是還需進(jìn)一步研究的課題,實(shí)現(xiàn)難度就大多了,因此不建議初學(xué)者來做。

Karpathy 的 GPT 使用建議

為了幫助人們更好使用 GPT,Karpathy 給出了一些建議。在使用 GPT 來完成任務(wù)時(shí),可以將任務(wù)分成兩個(gè)部分:一,取得最佳結(jié)果;二,依照指定順序優(yōu)化結(jié)果。

圖片


對于第一部分,首先是選模型,目前最強(qiáng)的模型是 GPT-4。有了模型后,當(dāng)執(zhí)行具體任務(wù)時(shí),你需要把 prompt 設(shè)計(jì)得足夠詳細(xì),其中要包含任務(wù)的背景、相關(guān)信息和說明。你要想一想人類會(huì)怎么完成這一任務(wù),但你同時(shí)也要明白人類有內(nèi)心獨(dú)白、能夠自省,LLM 卻不行。了解 LLM 的工作方式對設(shè)計(jì) prompt 大有裨益。你可以檢索一些相關(guān)背景和信息并將其添加到 prompt 中。網(wǎng)上已有不少人分享過相關(guān)經(jīng)驗(yàn)和技術(shù)。 

你不用急于讓 LLM 一步到位完成你的任務(wù)??梢远嘧鰩状螌?shí)驗(yàn),測試一下各種可能性。你可以向 LLM 提供一些例子,讓它真正理解你的意圖。

對于原生 LLM 難以解決的問題,可以將其交給工具和插件處理。你要想想如何將工具整合進(jìn)來,這當(dāng)然無法通過單個(gè) prompt 問答就可以解決。你需要多做幾次實(shí)驗(yàn),實(shí)踐出真知。

最后,如果你成功搞出了適合自己的 prompt 設(shè)計(jì)方案,你可以再繼續(xù)堅(jiān)持一下,看看可以如何對模型進(jìn)行微調(diào)以更好地服務(wù)你的應(yīng)用;但要明白微調(diào)模型的速度會(huì)更慢,也需要投入更多。對于想要使用 RLHF 的研究型專家來說,雖然如果真能用起來,RLHF 目前是會(huì)比 SFT 好一些,但成本也會(huì)更高。為了節(jié)省成本,探索性研究可以使用性能更低的模型或更短的 prompt。

Karpathy 強(qiáng)調(diào)用 LLM 解決用例時(shí)可能會(huì)出現(xiàn)一些問題,比如結(jié)果可能有偏見、編造出幻覺信息、推理錯(cuò)誤、無法理解應(yīng)用類型(比如拼寫相關(guān)任務(wù))、知識(shí)隔斷(GPT-4 的訓(xùn)練數(shù)據(jù)截止于 2021 年 9 月)、可能會(huì)被攻擊(比如 prompt 注入攻擊、越獄攻擊、數(shù)據(jù)毒化攻擊)……

圖片


Karpathy 建議用戶目前僅在低風(fēng)險(xiǎn)程度的應(yīng)用中使用 LLM 并且要搭配人工監(jiān)督一起使用。LLM 可以作為靈感和建議來源,讓它們輔助我們而不是完全自主地替代我們工作。

結(jié)語

Karpathy 在總結(jié)時(shí)說:「GPT-4 是了不起的造物。我很感激它存在于世而且它很美麗?!顾哂蟹欠驳哪芰Γ軒椭脩艚獯鹨蓡?、編寫代碼等等。圍繞它的生態(tài)系統(tǒng)也正在蓬勃發(fā)展。

圖片


最后,Karpathy 向 GPT-4 提了一個(gè)問題:「如果要激勵(lì) Microsoft Build 2023 的觀眾,你會(huì)說點(diǎn)什么?」

圖片

GPT-4 給出了如下回答:

圖片

筆者也在這里取巧,請 ChatGPT 將這段話翻譯成了漢語:

圖片

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    99热九九热这里只有精品| 俄罗斯胖女人性生活视频| 99久久精品午夜一区二区| 激情国产白嫩美女在线观看| 亚洲av专区在线观看| 富婆又大又白又丰满又紧又硬| 国产精品视频一级香蕉| 麻豆在线观看一区二区| 亚洲一区二区三区三区| 99久久精品国产麻豆| 国产精品推荐在线一区| 色一欲一性一乱—区二区三区| 日韩在线中文字幕不卡| 成人三级视频在线观看不卡| 中文字幕有码视频熟女| 久久久精品日韩欧美丰满 | 成人精品日韩专区在线观看| 欧美日本道一区二区三区| 色婷婷视频国产一区视频| 亚洲国产av国产av| 人人爽夜夜爽夜夜爽精品视频| 一区二区在线激情视频| 免费一级欧美大片免费看| 欧美午夜一级艳片免费看| 五月婷婷综合缴情六月| 亚洲日本久久国产精品久久| 欧美黄色黑人一区二区| 国产水滴盗摄一区二区| 成年午夜在线免费视频| 国产一区二区不卡在线视频| 亚洲色图欧美另类人妻| 偷拍偷窥女厕一区二区视频| 午夜福利激情性生活免费视频| 在线观看免费视频你懂的| 成人免费观看视频免费| 国产又大又黄又粗又免费| 不卡免费成人日韩精品| 视频在线观看色一区二区| 隔壁的日本人妻中文字幕版| 日韩不卡一区二区在线| 欧美在线观看视频免费不卡|