人人看得懂的ChatGPT技術原理解析

語言: CN / TW / HK

人人看得懂的ChatGPT技術原理解析

編者按:自ChatGPT面世以來,我們在熱切挖掘其豐富應用的同時,也在孜孜探求其背後的工作原理。

今天我們為大家帶來的文章,深入淺出地闡釋了ChatGPT背後的技術原理,沒有NLP或演算法經驗的小夥伴,也可以輕鬆理解ChatGPT是如何工作的。

以下是譯文,Enjoy!

作者 | Molly Ruby

編譯 | 嶽揚

這是對支撐ChatGPT工作的機器學習模型的一段簡略的介紹:以大型語言模型為基礎,然後深入研究使GPT-3能夠被訓練的自注意力機制,再從人類的反饋中進行強化學習,這就是使ChatGPT與眾不同的新技術。

大型語言模型 Large Language Models

ChatGPT是一種機器學習自然語言處理模型的擴充套件,稱為大語言模型(LLMs)。LLMs能夠讀取學習大量文字資料,並推斷文字中單詞之間的關係。隨著計算能力的進步,大語言模型在過去幾年中得到不斷髮展。隨著輸入資料集和引數空間(parameter space)的增加,LLMs的能力也會隨之增加。

語言模型最基本的訓練涉及預測詞單詞序列中的單詞。在一般情況下,這樣就可以觀察到next-token-prediction(模型被給定一個詞序列作為輸入,並被要求預測序列中的下一個詞)和masked-language-modeling(其輸入句子中的一些詞被替換為特殊 token,例如[MASK],模型被要求預測應該插入到 [MASK] 位置的正確的詞)。

作者任意列舉的關於next-token-prediction和masked-language-modeling的一個例子

在這種基本的序列建模技術中,通常是以長短期記憶網路(LSTM)模型來部署的,模型根據語境,用統計意義上最有可能的詞來填補空缺的片語。這種序列建模結構主要有兩種限制:

1.  這種模型不能讓某些詞比其他詞的權重更高。在上述例子中,雖然‘reading’可能最常與‘hates’聯絡在一起。但在資料庫中,‘Jacob’可能是一個熱愛閱讀的閱讀者,以至於模型應該給‘Jacob’更多的權重而不是‘reading’,並選擇‘love’而不是‘hates’。

2.  輸入的資料都是獨立地和按順序進行處理的,而不是作為一個整體語料庫進行處理。這意味著,當LSTM被訓練時,上下文(context)的視窗是固定的,只擴充套件到序列中幾個步驟的單個輸入之外。這就會限制單詞之間關係的複雜性以及可以匯出的含義。

在2017年,為了應對這個問題,Google Brain的一個團隊推出了transformers。與LSTMs不同,transformers可以同時處理所有輸入資料。利用自注意力機制(self-attention mechanism),該模型可以根據語言序列的任何位置給輸入資料的不同部分賦予不同的權重。這一特性讓LLMs具有更大的成長空間,並能夠處理更大的資料集。

GPT和自注意力 GPT and Self-Attention

Generative Pre-training Transformer(GPT)模型在2018年首次由openAI推出,其名為GPT-1。隨後在2019年推出了GPT-2、2020年推出了GPT-3以及最近在2022年的InstructGPT和ChatGPT。在將人類的反饋整合到系統中之前,GPT模型演進的最大進步是由計算效率方面的成就推動的,這使得GPT-3能夠在比GPT-2多得多的資料上進行訓練,使其擁有更多樣化的知識庫和執行更多樣任務的能力。

GPT-2(左)和GPT-3(右)的比較,該圖由作者製作

所有的GPT模型都利用了 Transformer 架構,這意味著它們有一個編碼器來處理輸入序列,一個解碼器來生成輸出序列。編碼器和解碼器都有多頭自注意力機制,允許模型對序列的各個部分分配有差異的權重,以推斷詞義(meaning)和語境(context)。此外,編碼器利用masked-language-modeling來理解單詞之間的關係,併產生更容易理解的迴應。

驅動GPT的自注意力機制是通過將tokens(文字片段,可以是一個詞、一個句子或其他文字組)轉換為代表該tokens在輸入序列中的重要性的向量。為了做到這一點,該模型:

1.  為輸入序列中的每個token建立一個query、key和value向量。

2.  通過取兩個向量的點積,計算步驟1中的query向量與其他每個token的key向量之間的相似性。

3.  通過將第2步的輸出輸入一個softmax函式[1],生成歸一化權重。

4.  通過將步驟3中產生的權重與每個token的value向量相乘,產生一個final向量,代表該token在序列中的重要程度。

GPT使用的“多頭”注意力機制是自注意力的進化產物。模型不是一次性執行步驟1-4,而是並行迭代這種機制幾次,每次生成query、key和value向量的新線性投影(linear projection)。通過以這種方式擴充套件自注意力(Self-Attention),模型能夠抓住輸入資料中的子含義和更復雜的關係。

作者擷取的關於ChatGPT迴應的圖片

儘管GPT-3在自然語言處理方面取得了顯著地進步,但它理解使用者意圖的能力有限。例如,GPT-3可能會產生以下這些情況的輸出:

● 缺乏協助性意味著他們不遵循使用者的明確指示。

● 包含反映不存在或不正確事實的內容。

● 模型缺乏可解釋性使得人類很難理解模型是如何做出特定決定或預測的。

● 包含有害或冒犯性的、有毒或有偏見的內容,並傳播虛假資訊。

ChatGPT中引入了創新性的訓練方法來解決常規LLMs存在的一些固有問題。

ChatGPT

ChatGPT是InstructGPT的衍生產品,它引入了一種新的方法,將人類反饋納入訓練過程中,使模型的輸出與使用者的意圖更好地結合。來自人類反饋的強化學習(RLHF)在openAI的2022年論文《Training language models to follow instructions with human feedback》中進行了深入描述,在下文我們將進行簡單的介紹。

第一步:監督微調(SFT)模型

第一個開發步驟涉及微調GPT-3模型,先是需要僱傭40個承包商建立一個有監督的訓練資料集,其中的輸入有一個已知的輸出供模型學習。輸入或提示(prompts)是從實際使用者輸入到 Open API中收集的。然後標註人員根據提示(prompts)寫一個適當的回覆,從而為每個輸入建立一個已知的輸出。然後使用這個有監督的新資料集對GPT-3模型進行微調,從而建立GPT-3.5,也稱為SFT模型。

為了最大化提示(prompts)資料集的多樣性,任何給定的使用者ID只能有200個提示(prompts),並且任何共享長公共字首的提示(prompts)都被刪除了。並且所有包含個人識別資訊(PII)的提示(prompts)都被刪除了。

在彙總來自OpenAI API的提示(prompts)後,標註師需要建立示例提示(prompts)以填寫只有最少真實樣本資料的類別。這些類別包括:

● 簡單提示(prompts):任意詢問。

● 小樣本提示(prompts):包含多個查詢/響應對的指令。

● 基於使用者的提示(prompts):向OpenAI API請求的特定用例。

在生成迴應內容時,要求標註者盡最大努力推斷使用者的指令是什麼。下面提供了提示(prompts)請求迴應資訊的三種主要方式:

● 直接請求:“告訴我……”

● 小樣本(Few-shot)請求:給定這兩個故事的例子,再寫一個關於同一主題的故事。

● 持續請求:給定一個故事的開始,完成它。

來自OpenAI API的提示(prompts)和標註員輸入的提示(prompts)彙總產生了13,000個輸入/輸出樣本,可用於監督模型。

圖片來自論文 Training language models to follow instructions with human feedback OpenAI et al., 2022 https://arxiv.org/pdf/2203.02155.pdf. Additional context added in red (right) by the author.

第二步:獎勵模型 Reward Model

在第一步中訓練完SFT模型後,模型能夠對使用者提示詞(prompts)進行更好的匹配響應。下一個改進是訓練獎勵模型的形式,其中模型輸入是一系列提示(prompts)和響應(responses),輸出是一個縮放值,稱為獎勵(reward)。為了利用強化學習(Reinforcement Learning),獎勵模型是必需的,在強化學習中模型會學習如何產生輸出以最大化其獎勵(見第三步)。

為了訓練獎勵模型,為單個輸入提示詞(input prompt)提供4到9個SFT模型輸出。他們被要求對這些輸出從最佳到最差進行排名,得到如下的輸出排名組合。

迴應的排序組合示例。由作者生成。

將每個組合作為一個單獨的資料點納入模型,會導致過擬合(無法推斷出所見資料之外的內容)。為了解決這個問題,我們建立了一個模型,把每組排名作為一個單獨的資料點。

圖片來自Training language models to follow instructions with human feedback OpenAI et al., 2022 <https: arxiv.org pdf 2203.02155.pdf>. 紅色文字由作者標註新增。

第三步:強化學習模型

在最後階段,模型會出現一個隨機的提示詞(prompt),並返回一個迴應(response)。迴應(response)是使用模型在第二步學到的“策略”產生的。產生了這個“策略”代表了機器已經學會用來實現其目標的策略——在這種情況下,就是將其獎勵(reward)最大化。基於第二步開發獎勵模型,然後為提示(prompt)和響應(response)對確定一個縮放獎勵值,然後將獎勵反饋到模型中以演變策略。

圖片來自Training language models to follow instructions with human feedback OpenAI et al., 2022 <https: arxiv.org pdf 2203.02155.pdf>. 紅色文字由作者標註新增。

該過程的第二、三步可以重複進行,儘管這並沒有得到廣泛實踐證明。

作者擷取的關於ChatGPT迴應的圖片

模型評估

模型評估是通過使用訓練期間留出的未用於模型訓練的測試集來執行的。在測試集上進行一系列評估,以確定模型是否比其前身GPT-3更好地匹配。

● 實用性:即模型推理和遵循使用者指令的能力。標註人員在85±3%的時間裡更喜歡InstructGPT的輸出。

● 真實性:即模型的“幻覺”傾向。當使用TruthfulQA資料集進行評估時,PPO模型產生的輸出表現出真實性和資訊量略有增加。

● 無害性:即模型避免輸出不當、貶損和詆譭內容的能力。可以使用RealToxityPrompts資料集測試無害性。該測試需要分別在以下三種情況下進行:

1.  指示模型提供具有尊重的迴應(responses):導致“有毒”迴應(responses)顯著減少。

2.  指示模型提供一般的迴應(responses):毒性沒有明顯變化。

3.  指示模型提供“有毒”的迴應(responses):迴應(responses)實際上比GPT-3模型毒性更大。

有關建立ChatGPT和InstructGPT所用方法的更多資訊,請閱讀OpenAI Training language models to follow instructions with human feedback, 2022 <https: arxiv.org pdf 2203.02155.pdf.>

作者擷取的關於ChatGPT迴應的圖片

參考文獻

1.  <https: deepai.org machine-learning-glossary-and-terms softmax-layer>

2.  <https: openai.com blog chatgpt />

3.  <https: arxiv.org pdf 2203.02155.pdf>

4.  <https: www.assemblyai.com blog how-chatgpt-actually-works />

5.  <https: towardsdatascience.com proximal-policy-optimization-ppo-explained-abed1952457b>

本文經原作者授權,由Baihai IDP編譯。如需轉載譯文,請聯絡獲取授權。

原文連結:https://towardsdatascience.com/how-chatgpt-works-the-models-behind-the-bot-1ce5fca96286