hi,我是熵減,見字如面。
本文是關于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
閱讀,思考,練習,分享,行日日不斷之功。
嗯,寫完了。
新的一天,加油哦 (? ??_??)?