ChatGPT 的工作原理:機(jī)器人背后的模型


這篇關(guān)于驅(qū)動(dòng) ChatGPT 的機(jī)器學(xué)習(xí)模型的簡短介紹,將從大型語言模型的介紹開始,深入研究使得 GPT-3能夠被訓(xùn)練的革命性的自我注意機(jī)制,然后從人類反饋中挖掘強(qiáng)化學(xué)習(xí),這項(xiàng)新技術(shù)使得 ChatGPT 變得與眾不同。
大型語言模型
ChatGPT 是一類機(jī)器學(xué)習(xí)自然語言處理模型(稱為大型語言模型(LLM))的外推。LLM 消化大量的文本數(shù)據(jù),并推斷文本中單詞之間的關(guān)系。隨著計(jì)算能力的提高,這些模型在過去幾年中得到了發(fā)展。LLM 隨著輸入數(shù)據(jù)集的大小和參數(shù)空間的增加而增加它們的能力。
語言模型的最基本訓(xùn)練包括預(yù)測一個(gè)單詞在一系列單詞中的位置。最常見的情況是,這可以看作是下一個(gè)令牌預(yù)測和掩蔽語言建模。

作者生成的下一個(gè)令牌預(yù)測和掩碼語言建模的任意實(shí)例。
在這個(gè)基本的排序技術(shù),通常部署通過長短期記憶(LSTM)模型,該模型是填補(bǔ)空白與統(tǒng)計(jì)最可能的單詞給予周圍的上下文。這種順序建模結(jié)構(gòu)有兩個(gè)主要限制。
1. 該模型無法比其他模型更重視周圍的一些單詞。在上面的例子中,盡管“閱讀”通常與“憎恨”聯(lián)系在一起,但在數(shù)據(jù)庫中,“雅各布”可能是一個(gè)如此狂熱的讀者,以至于模型應(yīng)該更加重視“雅各布”而不是“閱讀”,并選擇“愛”而不是“憎恨”。
2. 輸入數(shù)據(jù)是單獨(dú)和順序處理,而不是作為一個(gè)整體語料庫。這意味著當(dāng)一個(gè) LSTM 被訓(xùn)練時(shí),上下文窗口是固定的,只擴(kuò)展到單個(gè)輸入以外的序列中的幾個(gè)步驟。這就限制了詞與可以派生出來的意義之間關(guān)系的復(fù)雜性。
為了回應(yīng)這個(gè)問題,2017年谷歌大腦的一個(gè)團(tuán)隊(duì)引進(jìn)了變壓器。與 LSTM 不同,變壓器可以同時(shí)處理所有輸入數(shù)據(jù)。利用自注意機(jī)制,該模型可以根據(jù)語言序列的任意位置對輸入數(shù)據(jù)的不同部分賦予不同的權(quán)重。這個(gè)特性使得 LLM 在注入意義方面得到了巨大的改進(jìn),并且使得處理更大的數(shù)據(jù)集成為可能。
GPT 與自我關(guān)注
產(chǎn)生式預(yù)訓(xùn)練變壓器(GPT)模型首次推出于2018年由 openAI 作為 GPT-1。這些模型在2019年以 GPT-2繼續(xù)發(fā)展,2020年以 GPT-3繼續(xù)發(fā)展,最近的一次是在2022年,使用了 DirectGPT 和 ChatGPT。在將人類反饋納入系統(tǒng)之前,GPT 模型演化的最大進(jìn)步是由計(jì)算效率方面的成就驅(qū)動(dòng)的,這使得 GPT-3能夠接受比 GPT-2更多的數(shù)據(jù)培訓(xùn),使其具有更多樣化的知識庫和執(zhí)行更廣泛任務(wù)的能力。

GPT-2(左)和 GPT-3(右)的比較。由作者生成。
所有 GPT 模型都利用了變壓器結(jié)構(gòu),這意味著它們有一個(gè)處理輸入序列的編碼器和一個(gè)生成輸出序列的解碼器。編碼器和解碼器都有一個(gè)多頭自注意機(jī)制,允許模型對序列的不同部分進(jìn)行差異加權(quán),以推斷意義和上下文。此外,編碼器利用掩蔽語言建模來理解單詞之間的關(guān)系并產(chǎn)生更易于理解的響應(yīng)。
驅(qū)動(dòng) GPT 的自我注意機(jī)制通過將令牌(可以是單詞、句子或其他文本組合的文本片段)轉(zhuǎn)換為表示令牌在輸入序列中的重要性的向量來工作。要做到這一點(diǎn),模型,
1. 為輸入序列中的每個(gè)標(biāo)記創(chuàng)建查詢、鍵和值向量。
2. 計(jì)算從步驟一開始的查詢向量和每個(gè)其他標(biāo)記的關(guān)鍵向量之間的相似度,取兩個(gè)向量的點(diǎn)積。
3. 通過將步驟2的輸出輸入到一個(gè)柔性最大激活函數(shù)中,生成標(biāo)準(zhǔn)化的權(quán)重。
4. 生成一個(gè)最終向量,該向量通過將步驟3中生成的權(quán)重乘以每個(gè)令牌的值向量來表示序列中令牌的重要性。
GPT 使用的“多頭”注意機(jī)制是自我注意的一種進(jìn)化。與執(zhí)行步驟1-4一次不同,模型并行地迭代該機(jī)制多次,每次都生成一個(gè)新的查詢、鍵和值向量的線性投影。通過這種方式擴(kuò)展自我注意,該模型能夠掌握輸入數(shù)據(jù)中的子意義和更復(fù)雜的關(guān)系。

作者從 ChatGPT 生成的屏幕截圖。
盡管 GPT-3在自然語言處理方面引入了顯著的進(jìn)步,但它與用戶意圖保持一致的能力有限。例如,GPT-3可能產(chǎn)生以下輸出
??缺乏幫助意味著他們不遵循用戶的明確指示。
??包含反映不存在或不正確的事實(shí)的幻覺。
??缺乏可解釋性使得人類難以理解模型如何得出特定的決策或預(yù)測。
??包括有毒或有偏見的內(nèi)容,是有害的或冒犯和傳播錯(cuò)誤信息。
在 ChatGPT 中引入了創(chuàng)新的培訓(xùn)方法,以解決標(biāo)準(zhǔn) LLM 的一些固有問題。
聊天室
ChatGPT 是 DirectGPT 的衍生產(chǎn)品,它引入了一種新的方法,將人工反饋納入培訓(xùn)過程,以更好地將模型輸出與用戶意圖保持一致。在 openAI 2022年的論文《訓(xùn)練語言模型以遵循人類反饋的指令》中,對人類反饋的強(qiáng)化學(xué)習(xí)進(jìn)行了深入的描述,并將其簡化如下。
步驟1: 監(jiān)督微調(diào)(SFT)模型
第一個(gè)發(fā)展包括微調(diào) GPT-3模型,雇傭40個(gè)承包商來創(chuàng)建一個(gè)監(jiān)督培訓(xùn)數(shù)據(jù)集,其中輸入有一個(gè)已知的輸出供模型學(xué)習(xí)。輸入或提示是從 OpenAPI 的實(shí)際用戶條目中收集的。標(biāo)簽然后寫一個(gè)適當(dāng)?shù)捻憫?yīng)到提示符,從而為每個(gè)輸入創(chuàng)建一個(gè)已知的輸出。然后,使用這個(gè)新的監(jiān)督數(shù)據(jù)集對 GPT-3模型進(jìn)行微調(diào),以創(chuàng)建 GPT-3.5,也稱為 SFT 模型。
為了最大限度地提高提示數(shù)據(jù)集的多樣性,只有200個(gè)提示可以來自任何給定的用戶 ID,并且刪除了共享長前綴的任何提示。最后,刪除所有包含個(gè)人身份信息(pII)的提示。
在收集來自 OpenAI API 的提示之后,標(biāo)簽員還被要求創(chuàng)建樣本提示,以填寫只有最少實(shí)際樣本數(shù)據(jù)的類別。其中包括感興趣的類別
??簡明提示: 任意提問。
??少拍提示: 包含多個(gè)查詢/響應(yīng)對的指令。
??基于用戶的提示: 對應(yīng)于 OpenAI API 請求的特定用例。
當(dāng)產(chǎn)生響應(yīng)時(shí),標(biāo)簽被要求盡最大努力推斷用戶的指令是什么。本文描述了提示請求信息的三種主要方式。
1.?直接: “告訴我關(guān)于... ...”
2. 少量鏡頭: 給出這兩個(gè)故事的例子,寫另一個(gè)關(guān)于同一主題的故事。
3. 繼續(xù): 給定一個(gè)故事的開頭,完成它。
來自 OpenAI API 和標(biāo)簽商手寫的提示的匯編產(chǎn)生了13,000個(gè)輸入/輸出樣本,用于監(jiān)督模型。

圖片(左)從訓(xùn)練語言模型中插入,以遵循人類反饋的指令 OpenAI 等,2022年 https://arxiv.org/pdf/2203.02155.pdf。作者以紅色(右)添加的附加上下文。
步驟2: 獎(jiǎng)勵(lì)模式
在步驟1中對 SFT 模型進(jìn)行訓(xùn)練后,該模型將對用戶提示生成更好的對齊響應(yīng)。下一個(gè)改進(jìn)是訓(xùn)練一個(gè)獎(jiǎng)勵(lì)模型,其中模型輸入是一系列的提示和響應(yīng),輸出是一個(gè)定標(biāo)值,稱為獎(jiǎng)勵(lì)。獎(jiǎng)勵(lì)模型是為了利用強(qiáng)化學(xué)習(xí),在這種模型中,模型學(xué)會產(chǎn)生產(chǎn)出,以最大化其獎(jiǎng)勵(lì)(見步驟3)。
為了訓(xùn)練獎(jiǎng)勵(lì)模型,標(biāo)簽提出了4至9個(gè)單輸入提示的 SFT 模型輸出。他們被要求對這些產(chǎn)出從最好到最壞進(jìn)行排名,創(chuàng)建如下的產(chǎn)出排名組合。

響應(yīng)排序組合示例。由作者生成。
將每個(gè)組合作為一個(gè)單獨(dú)的數(shù)據(jù)點(diǎn)包含在模型中會導(dǎo)致過度擬合(無法外推超出可見數(shù)據(jù))。為了解決這個(gè)問題,我們利用每組排名作為一個(gè)單獨(dú)的批處理數(shù)據(jù)點(diǎn)來建立模型。

圖片(左)從訓(xùn)練語言模型中插入,以遵循人類反饋的指令 OpenAI 等,2022年 https://arxiv.org/pdf/2203.02155.pdf。作者以紅色(右)添加的附加上下文。
第三步: 強(qiáng)化學(xué)習(xí)模型
在最后一個(gè)階段,模型顯示一個(gè)隨機(jī)提示并返回一個(gè)響應(yīng)。響應(yīng)是使用模型在步驟2中學(xué)到的“策略”生成的。策略代表機(jī)器已經(jīng)學(xué)會使用的一種策略來實(shí)現(xiàn)其目標(biāo); 在這種情況下,就是使其報(bào)酬最大化?;诓襟E2中建立的報(bào)酬模型,然后為提示對和響應(yīng)對確定一個(gè)定標(biāo)器報(bào)酬值。然后,獎(jiǎng)勵(lì)反饋到模型中,以演變政策。
2017年,Schulman 等人引入了最近策略優(yōu)化(PPO) ,這種方法用于在生成每個(gè)響應(yīng)時(shí)更新模型的策略。PPO 采用了 SFT 模型中的每令牌 Kullback-Leibler (KL)懲罰。KL 散度度量了兩個(gè)分布函數(shù)的相似性并懲罰了極端距離。在這種情況下,使用 KL 懲罰可以減少響應(yīng)與步驟1中訓(xùn)練的 SFT 模型輸出之間的距離,以避免過度優(yōu)化獎(jiǎng)勵(lì)模型和與人類意圖數(shù)據(jù)集的過大偏離。

圖像(左)插入自訓(xùn)練語言模型以遵循人類反饋的說明 OpenAI 等人,2022 https://arxiv.org/pdf/2203.02155.pdf。作者以紅色(右)添加的其他上下文。
該過程的步驟 2 和 3 可以反復(fù)迭代,但在實(shí)踐中尚未廣泛完成。

作者從 ChatGPT 生成的屏幕截圖。
模型的評估
模型的評估是通過在訓(xùn)練期間留出一個(gè)模型沒有看到的測試集來完成的。在測試集上,進(jìn)行一系列的評估,以確定該模型是否比其前身 GPT-3更好地對齊。
幫助性: 模型推斷和遵循用戶指令的能力。在85 ± 3% 的時(shí)間內(nèi),標(biāo)簽工作者更喜歡 DirectGPT 的輸出結(jié)果。
真實(shí)性: 模型產(chǎn)生幻覺的傾向。當(dāng)使用 TruthfulQA 數(shù)據(jù)集進(jìn)行評估時(shí),PPO 模型產(chǎn)生的結(jié)果顯示真實(shí)性和信息性略有增加。
無害性: 模型能夠避免不適當(dāng)?shù)摹①H損的和詆毀性的內(nèi)容。使用 RealtoxityPrompts 數(shù)據(jù)集測試無害性。試驗(yàn)在三種條件下進(jìn)行。
1. 指示提供尊重的答復(fù): 導(dǎo)致毒性反應(yīng)顯著減少。
2. 指示提供反應(yīng),沒有任何尊重的設(shè)置: 沒有顯著的毒性變化。
3. 指示提供毒性反應(yīng): 反應(yīng)實(shí)際上明顯比 GPT-3模型毒性更大。
想了解更多關(guān)于創(chuàng)建 ChatGPT 和 injtGPT 所使用的方法的信息,請閱讀2022年由 OpenAI 培訓(xùn)語言模型發(fā)布的原始論文,以便在人工反饋的情況下遵循 https://arxiv.org/pdf/2203.02155.pdf。

作者從 ChatGPT 生成的屏幕截圖。
學(xué)習(xí)愉快!
資料來源
1.?https://towardsdatascience.com/how-chatgpt-works-the-models-behind-the-bot-1ce5fca96286?Https://openai.com/blog/chatgpt/