深入探究ChatGPT的工作原理
這篇文章主要探討了ChatGPT的工作原理。ChatGPT是基于OpenAI開發(fā)的GPT-4架構(gòu)的大型語言模型。首先,文章介紹了GPT的基本概念,即生成預測性網(wǎng)絡模型。GPT模型利用大量的文本數(shù)據(jù)進行訓練,從而學會在各種情境中生成連貫的文本。
接著,文章詳細闡述了訓練過程,分為預訓練和微調(diào)兩個階段。在預訓練階段,模型學習理解文本數(shù)據(jù),包括詞匯、語法、事實等;在微調(diào)階段,模型使用具有限制性任務的數(shù)據(jù)集來調(diào)整,以獲得更準確的輸出。作者還提到了訓練數(shù)據(jù)的來源,強調(diào)了在大量網(wǎng)絡文本數(shù)據(jù)中獲取知識的重要性。
在解釋輸出生成時,文章提到了一個關鍵技術:集束搜索(Beam Search)。這是一種啟發(fā)式搜索策略,用于選擇最優(yōu)文本序列。此外,作者強調(diào)了解決生成內(nèi)容問題的策略,包括設置過濾器和調(diào)整溫度參數(shù)。
最后,文章討論了ChatGPT的局限性,例如處理輸入數(shù)據(jù)時可能會產(chǎn)生偏見,或無法回答一些問題。盡管如此,作者指出ChatGPT是一個強大的工具,能夠在各種任務中提供有價值的幫助。
像ChatGPT這樣的大型語言模型實際上是如何工作的?嗯,它們既非常簡單又極其復雜。
你可以將模型視為根據(jù)某些輸入計算輸出概率的工具。在語言模型中,這意味著給定一系列單詞,它們會計算出序列中下一個單詞的概率,就像高級自動完成一樣。
要理解這些概率的來源,我們需要談論一些叫做神經(jīng)網(wǎng)絡的東西。這是一個類似網(wǎng)絡的結(jié)構(gòu),數(shù)字被輸入到一側(cè),概率被輸出到另一側(cè)。它們比你想象的要簡單。
想象一下,我們想要訓練一臺計算機來解決在3x3
像素顯示器上識別符號的簡單問題。我們需要像這樣的神經(jīng)網(wǎng)絡:
- 一個輸入層
- 兩個隱藏層
- 一個輸出層。
我們的輸入層由9個稱為神經(jīng)元的節(jié)點組成,每個像素一個。每個神經(jīng)元將保存從1(白色)到-1(黑色)的數(shù)字。我們的輸出層由4個神經(jīng)元組成,每個神經(jīng)元代表可能的符號之一。它們的值最終將是0到1之間的概率。
在這些之間,我們有一些神經(jīng)元的排列,稱為**“隱藏”層**。對于我們簡單的用例,我們只需要兩個。每個神經(jīng)元都通過一個權(quán)重與相鄰層中的神經(jīng)元相連,該權(quán)重的值可以在-
1和1
之間。
當一個值從輸入神經(jīng)元傳遞到下一層時,它會乘以權(quán)重。然后,該神經(jīng)元簡單地將其接收到的所有值相加,將該值壓縮在-1和1之間,并將其傳遞給下一層中的每個神經(jīng)元。
最后一個隱藏層中的神經(jīng)元執(zhí)行相同的操作,但將值壓縮在0和1之間,并將其傳遞到輸出層。輸出層中的每個神經(jīng)元都保存一個概率,最高的數(shù)字是最可能的結(jié)果。
當我們訓練這個網(wǎng)絡時,我們向它提供一個我們知道答案的圖像,并計算答案與網(wǎng)絡計算的概率之間的差異。然后我們調(diào)整權(quán)重以接近預期結(jié)果。但是我們?nèi)绾沃廊绾握{(diào)整權(quán)重呢?
我們使用稱為梯度下降和反向傳播的巧妙數(shù)學技術來確定每個權(quán)重的哪個值會給我們最低的誤差。我們不斷重復這個過程,直到我們對模型的準確性感到滿意。
這被稱為前饋神經(jīng)網(wǎng)絡 - 但這種簡單的結(jié)構(gòu)不足以解決自然語言處理的問題。相反,LLM傾向于使用一種稱為Transformer
的結(jié)構(gòu),它具有一些關鍵概念,可以釋放出很多潛力。
首先,讓我們談談單詞。我們可以將單詞分解為 token
,這些 token
可以是單詞、子單詞、字符或符號,而不是將每個單詞作為輸入。請注意,它們甚至包括空格。
就像我們的模型中將像素值表示為0到1之間的數(shù)字一樣,這些token
也需要表示為數(shù)字。我們可以為每個標記分配一個唯一的數(shù)字并稱之為一天,但還有另一種表示它們的方式,可以添加更多上下文。
我們可以將每個 token 存儲在一個多維向量中,指示它與其他標記的關系。為簡單起見,想象一下在二維平面上繪制單詞位置。我們希望具有相似含義的單詞彼此靠近。這被稱為 embedding 嵌入。
embedding 有助于創(chuàng)建相似單詞之間的關系,但它們也捕捉類比。例如,單詞“dog”和“puppy”之間的距離應該與“cat”和“kitten”之間的距離相同。我們還可以為整個句子創(chuàng)建 embedding 。
transformer
的第一部分是將我們的輸入單詞編碼為這些 embedding
。然后將這些嵌入饋送到下一個過程,稱為 attention ,它為 embedding 添加了更多的上下文。attention 在自然語言處理中非常重要。
Embedding 難以捕捉具有多重含義的單詞??紤] bank
這個詞的兩個含義。人類根據(jù)句子的上下文推斷出正確的含義。Money
和 River
在每個句子中都是與 bank
相關的重要上下文。
attention 的過程會回顧整個句子,尋找提供詞匯背景的單詞。然后重新調(diào)整 embedding 權(quán)重,使得單詞“river”或“money”在語義上更接近于“word bank”。
這個 attention
過程會多次發(fā)生,以捕捉句子在多個維度上的上下文。在所有這些過程之后,上下文 embedding 最終被傳遞到神經(jīng)網(wǎng)絡中,就像我們之前提到的簡單神經(jīng)網(wǎng)絡一樣,產(chǎn)生概率。
這是一個大大簡化了的LLM(像ChatGPT這樣的語言模型)工作原理的版本。為了簡潔起見,本文省略或略過了很多內(nèi)容。
編輯中可能存在的bug沒法實時知道,事后為了解決這些bug,花了大量的時間進行l(wèi)og 調(diào)試,這邊順便給大家推薦一個好用的BUG監(jiān)控工具 Fundebug。
以上就是深入探究ChatGPT的工作原理的詳細內(nèi)容,更多關于ChatGPT工作原理的資料請關注腳本之家其它相關文章!
相關文章
UUencode 編碼,UU編碼介紹、UUencode編碼轉(zhuǎn)換原理與算法
這篇文章主要介紹了UUencode 編碼,UU編碼介紹、UUencode編碼轉(zhuǎn)換原理與算法,需要的朋友可以參考下2016-06-06Typora配置PicGo時提示Failed?to?fetch的問題解決(typora圖像問題)
這篇文章主要介紹了Typora配置PicGo時提示Failed?to?fetch的問題解決(typora圖像問題),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04大數(shù)據(jù)HelloWorld-Flink實現(xiàn)WordCount
這篇文章主要介紹了大數(shù)據(jù)HelloWorld-Flink實現(xiàn)WordCount的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08本地化部署 DeepSeek 全攻略(linux、windows、mac系統(tǒng)部署)
本文詳細介紹了在Linux、Windows和Mac系統(tǒng)上本地部署DeepSeek模型的步驟,包括硬件要求、軟件環(huán)境、模型下載和部署步驟、以及優(yōu)化與注意事項,感興趣的朋友一起看看吧2025-02-02使用selenium自動控制瀏覽器找不到Chromedriver問題
這篇文章主要介紹了ChromeDriver安裝與配置問題的解決方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02JetBrains 學生認證教程(Pycharm,IDEA… 等學生認證教程)
這篇文章主要介紹了JetBrains 學生認證教程(Pycharm,IDEA… 等學生認證教程)文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09