ChatGPT 背後核心技術的白話版

2023-02-09 18:06:44

本文是關於ChatGPT 背後核心技術實現的一個通俗白話版,不涉及到的AI具體實現的技術細節哦。

在編排上增加了一些分割,內容具體如下:

LLMs(大型語言模型)

如果將ChatGPT比作是動物,它就像一隻飢餓的毛毛蟲一樣,毛毛蟲喜歡啃食樹葉,並不斷的長大。

LLMs(大型語言模型)也喜歡吞噬大量的文字資料,並利用這些資料來學習,然後變得更加的聰明,更加的強大。LLMs消耗的文字資料越多,它們對語言和詞語之間的關係的理解就越深。

就如同自然界內,毛毛蟲要變成美麗的蝴蝶一樣,LLMs也會進化為強大的語言模型,它也可以理解並生成類似人類的反應。

語言模型被訓練來預測一個序列中的下一個詞,有兩種常見的方法:下一個標記預測(next-token-prediction)和掩碼語言建模(masked-language modeling)。

Next-token-prediction模型的樣本,比如:

"The cat sat on the...."

Next-token-prediction模型將被訓練來預測 「The cat sat on the....」之後的下一個單詞。給定輸入「The cat sat on the....」,模型可以預測「mat」、「couch」或「chair」。

Masked-language-modeling模型的樣本為:

The quick brown [MASK] jumps over the lazy dog.

在這種情況下,模型將嘗試預測缺失的單詞「cat」。它通過使用周圍單詞的上下文來做到這一點,比如「quick」和「brown」,來理解它們之間的關係,並做出預測。Masked-language-modeling模型的目標是,訓練模型以一種有意義,且語法正確的方式來填充句子中缺失的單詞。

使用Long-Short-Term-Memory(LSTM)模型進行序列建模,只是預測序列中單詞的一種方法,但它也有其侷限性。

例如,模型不能給上下文中不同的單詞賦予不同的權重,即使有時,就像在我們可愛的貓咪的例子中,一個單詞可能比另一個單詞更重要。而且輸入資料是一步一步處理的,這意味著單詞之間的關係可能是有限的。

Transformers

這就是為什麼在2017年,Google Brain的一些聰明人想出了transformers。 Transformers與LSTM不同,因為它們可以一次處理所有的輸入資料。他們使用了一種很酷的方法,稱為 Self-attention,這意味著模型可以給輸入資料的不同部分,賦予不同的權重。這使得單詞之間的關係更加複雜,含義也更加的豐富。

GPT和Self-Attention GPT-1是openAI在2018年製作的第一個生成式預訓練變壓器模型。它在接下來的幾年裡不斷髮展,變成了GPT-2, GPT-3, InstructGPT,最後是ChatGPT。

在人類開始向ChatGPT提供反饋之前,GPT模型最大的變化是它們變得越來越快,這使得它們可以接受越來越多的資料訓練。這讓他們更有知識,能夠做更廣泛的任務。

像ChatGPT這樣的GPT模型使用Transformer, Transformer有一個「編碼器(encoder)」來處理輸入,一個「解碼器(decoder)」 來生成輸出。編碼器和解碼器都使用 multi-head self-attention 理解單詞和產生更準確的反應之間的關係。

Multi-head self-attention 就像給了機器人一種超能力,可以同時關注多個事情。

Self-attention 通過為每個令牌建立查詢、鍵和值向量,然後使用softmax函數生成規範化權重,將令牌轉換為表示其在輸入序列中的重要性的向量。multi-head 機制來執行多次self-attention,使模型能夠掌握輸入資料中的複雜關係。

儘管GPT-3在自然語言處理方面帶來了如此驚人的進步,但它在與使用者意圖一致方面仍有侷限性。它可能會產生缺乏幫助的輸出,對不存在或不正確的事實產生幻覺,缺乏可解釋性,甚至有有毒或有偏見的內容,就像一個喝醉了的小機器人。

ChatGPT

ChatGPT是InstructGPT的衍生產品,它引入了一種將人類反饋納入訓練的新方法,以更好地使模型的輸出與使用者的意圖保持一致。

OpenAI在2022年的論文中詳細介紹了從人類反饋中強化學習(RLHF),並在這裡進行了簡化:

第1步:監督下的微調(SFT)模型

第1步是對GPT-3模型進行微調,僱用40個承包商來建立一個有監督的訓練資料集,其中的輸入有一個已知的輸出,供模型學習。 從使用者進入開放API的條目中收集提示資訊,標註員寫出適當的迴應,以建立一個已知的輸出。 然後用這個新的資料集對GPT-3模型進行微調,成為GPT-3.5,也被稱為SFT模型。

為了最大限度地提高提示資料集的多樣性,每個使用者ID只允許有200個提示,任何帶有長的普通字首的提示都被刪除。 此外,出於隱私安全的考慮,所有帶有個人身份資訊的提示都被刪除。

標註員還被要求用最少的實際樣本資料為類別建立範例提示,包括:

  • 簡單的提示:任何隨機的問題。
  • 少樣本提示:具有多個查詢/響應對的指令。
  • 基於使用者的提示:對應於OpenAI API所請求的特定用例。

在生成響應時,標註員盡力推斷使用者的指令。論文稱,提示請求資訊主要有三種方式:

  • 直接:「跟我說說……」
  • 寫一篇相同主題的文章,並舉例說明。
  • 延續:完成一個故事的開頭。

通過OpenAI API的提示和標籤師的手寫,監督模型有13000個輸入/輸出樣本可以使用!

第2步:獎勵模型

在這個過程的第2步中,模型被賦予了一種待遇。 訓練一個獎勵模型,以便它能學會如何對使用者的提示做出最好的反應。 這個獎勵模型將提示和響應作為輸入,並給我們一個稱為獎勵的可愛的小縮放器值,作為輸出。 有了這個獎勵模型,我們就可以進行強化學習,讓模型變得更棒,這就是強化學習。

為了訓練獎勵模型,我們請一些可愛的標註員們,將SFT模型的輸出從最好到最差進行排序。我們把所有這些排名放在一起來訓練模型,這樣它就不會被所有的資訊弄糊塗了。

我們曾經把每個組合作為一個單獨的資料點,但這導致了過度擬合。 過度擬合就像一個只想玩自己的玩具的孩子,而不會注意其他東西。 為了防止過度擬合,我們給模型一個獎勵,把資料點歸為一個批次的資料點,這樣它就能學會更靈活地適應新的情況啦。

第3步:強化學習模型

在第三步,是時候讓強化學習模型大放異彩了。給模型一個提示,它就會搖尾巴來產生響應。響應是在模型在第2步中學習到的「策略」的幫助下做出的。這個策略就像一個祕密策略,模型想出了得到更多的獎勵(又名最大化獎勵)。然後根據步驟2中建立的獎勵模型對模型進行獎勵。這種獎勵有助於模型的成長和進化,就像獎勵讓狗狗開心一樣。

2017年,一些名叫Schulman等人的聰明人引入了一種有趣的方法來更新模型的策略,稱為近端策略優化(PPO)。它使用SFT模型中稱為每個令牌的Kullback-Leibler (KL)懲罰。KL發散就像比較兩種不同的食物,它有助於確保響應與人類意圖資料集沒有太大差異,這樣模型就不會因為追逐自己的尾巴而分心。

該模型在訓練過程中通過將一些從未見過的資料放在一邊進行評估。測試資料被用來檢驗該模型是否比舊的GPT-3模型更好。他們檢查了它有多大幫助,有多真實,以及在多大程度上避免了刻薄。他們發現人們在85%的情況下更喜歡它,當被告知要友善時,它更真實,而不是刻薄。但當它被告知要刻薄時,它比GPT-3更刻薄。

寫在最後

這就是你可愛的小朋友ChatGPT,產生的全部過程啦。

備註:本文翻譯之外網,具體地址如下。

原文:https://medium.com/@anixlynch/behind-the-scenes-the-tech-behind-chatgpt-super-friendly-ver-2a214c4dc284