深入探究ChatGPT的工作原理
這篇文章主要探討了ChatGPT的工作原理。ChatGPT是基于OpenAI開發(fā)的GPT-4架構(gòu)的大型語言模型。首先,文章介紹了GPT的基本概念,即生成預(yù)測性網(wǎng)絡(luò)模型。GPT模型利用大量的文本數(shù)據(jù)進(jìn)行訓(xùn)練,從而學(xué)會在各種情境中生成連貫的文本。
接著,文章詳細(xì)闡述了訓(xùn)練過程,分為預(yù)訓(xùn)練和微調(diào)兩個階段。在預(yù)訓(xùn)練階段,模型學(xué)習(xí)理解文本數(shù)據(jù),包括詞匯、語法、事實(shí)等;在微調(diào)階段,模型使用具有限制性任務(wù)的數(shù)據(jù)集來調(diào)整,以獲得更準(zhǔn)確的輸出。作者還提到了訓(xùn)練數(shù)據(jù)的來源,強(qiáng)調(diào)了在大量網(wǎng)絡(luò)文本數(shù)據(jù)中獲取知識的重要性。
在解釋輸出生成時(shí),文章提到了一個關(guān)鍵技術(shù):集束搜索(Beam Search)。這是一種啟發(fā)式搜索策略,用于選擇最優(yōu)文本序列。此外,作者強(qiáng)調(diào)了解決生成內(nèi)容問題的策略,包括設(shè)置過濾器和調(diào)整溫度參數(shù)。
最后,文章討論了ChatGPT的局限性,例如處理輸入數(shù)據(jù)時(shí)可能會產(chǎn)生偏見,或無法回答一些問題。盡管如此,作者指出ChatGPT是一個強(qiáng)大的工具,能夠在各種任務(wù)中提供有價(jià)值的幫助。
像ChatGPT這樣的大型語言模型實(shí)際上是如何工作的?嗯,它們既非常簡單又極其復(fù)雜。

你可以將模型視為根據(jù)某些輸入計(jì)算輸出概率的工具。在語言模型中,這意味著給定一系列單詞,它們會計(jì)算出序列中下一個單詞的概率,就像高級自動完成一樣。

要理解這些概率的來源,我們需要談?wù)撘恍┙凶?strong>神經(jīng)網(wǎng)絡(luò)的東西。這是一個類似網(wǎng)絡(luò)的結(jié)構(gòu),數(shù)字被輸入到一側(cè),概率被輸出到另一側(cè)。它們比你想象的要簡單。

想象一下,我們想要訓(xùn)練一臺計(jì)算機(jī)來解決在3x3像素顯示器上識別符號的簡單問題。我們需要像這樣的神經(jīng)網(wǎng)絡(luò):
- 一個輸入層
- 兩個隱藏層
- 一個輸出層。

我們的輸入層由9個稱為神經(jīng)元的節(jié)點(diǎn)組成,每個像素一個。每個神經(jīng)元將保存從1(白色)到-1(黑色)的數(shù)字。我們的輸出層由4個神經(jīng)元組成,每個神經(jīng)元代表可能的符號之一。它們的值最終將是0到1之間的概率。

在這些之間,我們有一些神經(jīng)元的排列,稱為**“隱藏”層**。對于我們簡單的用例,我們只需要兩個。每個神經(jīng)元都通過一個權(quán)重與相鄰層中的神經(jīng)元相連,該權(quán)重的值可以在-1和1之間。

當(dāng)一個值從輸入神經(jīng)元傳遞到下一層時(shí),它會乘以權(quán)重。然后,該神經(jīng)元簡單地將其接收到的所有值相加,將該值壓縮在-1和1之間,并將其傳遞給下一層中的每個神經(jīng)元。

最后一個隱藏層中的神經(jīng)元執(zhí)行相同的操作,但將值壓縮在0和1之間,并將其傳遞到輸出層。輸出層中的每個神經(jīng)元都保存一個概率,最高的數(shù)字是最可能的結(jié)果。

當(dāng)我們訓(xùn)練這個網(wǎng)絡(luò)時(shí),我們向它提供一個我們知道答案的圖像,并計(jì)算答案與網(wǎng)絡(luò)計(jì)算的概率之間的差異。然后我們調(diào)整權(quán)重以接近預(yù)期結(jié)果。但是我們?nèi)绾沃廊绾握{(diào)整權(quán)重呢?

我們使用稱為梯度下降和反向傳播的巧妙數(shù)學(xué)技術(shù)來確定每個權(quán)重的哪個值會給我們最低的誤差。我們不斷重復(fù)這個過程,直到我們對模型的準(zhǔn)確性感到滿意。

這被稱為前饋神經(jīng)網(wǎng)絡(luò) - 但這種簡單的結(jié)構(gòu)不足以解決自然語言處理的問題。相反,LLM傾向于使用一種稱為Transformer的結(jié)構(gòu),它具有一些關(guān)鍵概念,可以釋放出很多潛力。

首先,讓我們談?wù)剢卧~。我們可以將單詞分解為 token ,這些 token 可以是單詞、子單詞、字符或符號,而不是將每個單詞作為輸入。請注意,它們甚至包括空格。

就像我們的模型中將像素值表示為0到1之間的數(shù)字一樣,這些token也需要表示為數(shù)字。我們可以為每個標(biāo)記分配一個唯一的數(shù)字并稱之為一天,但還有另一種表示它們的方式,可以添加更多上下文。

我們可以將每個 token 存儲在一個多維向量中,指示它與其他標(biāo)記的關(guān)系。為簡單起見,想象一下在二維平面上繪制單詞位置。我們希望具有相似含義的單詞彼此靠近。這被稱為 embedding 嵌入。

embedding 有助于創(chuàng)建相似單詞之間的關(guān)系,但它們也捕捉類比。例如,單詞“dog”和“puppy”之間的距離應(yīng)該與“cat”和“kitten”之間的距離相同。我們還可以為整個句子創(chuàng)建 embedding 。

transformer 的第一部分是將我們的輸入單詞編碼為這些 embedding。然后將這些嵌入饋送到下一個過程,稱為 attention ,它為 embedding 添加了更多的上下文。attention 在自然語言處理中非常重要。

Embedding 難以捕捉具有多重含義的單詞??紤] bank 這個詞的兩個含義。人類根據(jù)句子的上下文推斷出正確的含義。Money 和 River 在每個句子中都是與 bank相關(guān)的重要上下文。

attention 的過程會回顧整個句子,尋找提供詞匯背景的單詞。然后重新調(diào)整 embedding 權(quán)重,使得單詞“river”或“money”在語義上更接近于“word bank”。

這個 attention 過程會多次發(fā)生,以捕捉句子在多個維度上的上下文。在所有這些過程之后,上下文 embedding 最終被傳遞到神經(jīng)網(wǎng)絡(luò)中,就像我們之前提到的簡單神經(jīng)網(wǎng)絡(luò)一樣,產(chǎn)生概率。
這是一個大大簡化了的LLM(像ChatGPT這樣的語言模型)工作原理的版本。為了簡潔起見,本文省略或略過了很多內(nèi)容。
編輯中可能存在的bug沒法實(shí)時(shí)知道,事后為了解決這些bug,花了大量的時(shí)間進(jìn)行l(wèi)og 調(diào)試,這邊順便給大家推薦一個好用的BUG監(jiān)控工具 Fundebug。
以上就是深入探究ChatGPT的工作原理的詳細(xì)內(nèi)容,更多關(guān)于ChatGPT工作原理的資料請關(guān)注腳本之家其它相關(guān)文章!
- macbook安裝環(huán)境chatglm2-6b的詳細(xì)過程
- ChatGPT平替-?ChatGLM多用戶并行訪問部署過程
- ChatGPT平替-ChatGLM環(huán)境搭建與部署運(yùn)行效果
- ChatGLM?集成LangChain工具詳解
- 基于prompt?tuning?v2訓(xùn)練好一個垂直領(lǐng)域的chatglm-6b
- ChatGPT將批量文檔翻譯成中文的方法
- 一文帶你快速梳理ChatGPT、GPT4 和OpenAPI的關(guān)系
- 在小程序中實(shí)現(xiàn)ChatGPT?聊天打字兼自動滾動效果
- linux環(huán)境部署清華大學(xué)大模型最新版 chatglm2-6b 圖文教程
相關(guān)文章
網(wǎng)站統(tǒng)計(jì)中的數(shù)據(jù)收集原理及實(shí)現(xiàn)
目前主流的數(shù)據(jù)收集方式基本都是基于javascript的。本文將簡要分析這種數(shù)據(jù)收集的原理,并一步一步實(shí)際搭建一個實(shí)際的數(shù)據(jù)收集系統(tǒng)2013-09-09
踩坑記錄關(guān)于"authentication failed "的解決方法
今天給大家分享我的踩坑記錄關(guān)于報(bào)錯 authentication failed,這個報(bào)錯的原因是“身份驗(yàn)證失敗”,本文給大家分享我的解決方法,感興趣的朋友跟隨小編一起看看吧2023-01-01
idea日常報(bào)錯之UTF-8不可映射的字符的實(shí)現(xiàn)
本文主要介紹了在使用Maven編譯Java項(xiàng)目時(shí)遇到“UTF-8不可映射的字符”錯誤的解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2025-02-02
基于Token的身份驗(yàn)證之JWT基礎(chǔ)教程
JWT(json web token)是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標(biāo)準(zhǔn)。下面這篇文章主要給大家介紹了關(guān)于基于Token的身份驗(yàn)證之JWT的基礎(chǔ)相關(guān)資料,文中通過示例代碼的非常詳細(xì),需要的朋友可以參考下2018-09-09
RabbitMQ隊(duì)列中間件消息持久化?確認(rèn)機(jī)制?死信隊(duì)列原理
這篇文章主要介紹了消息隊(duì)列中間件之RabbitMQ消息的持久化、確認(rèn)機(jī)制、死信隊(duì)列原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
C++,C#,Rust,Go,Java,Python,JavaScript的性能對比全面講解
這篇文章主要介紹了C++,C#,Rust,Go,Java,Python,JavaScript性能對比全面講解的相關(guān)資料,這些語言各有特點(diǎn),適用于不同的開發(fā)需求,C++和Rust在系統(tǒng)級和高性能任務(wù)中表現(xiàn)出色,而Python和JavaScript則更適合快速原型和Web開發(fā),需要的朋友可以參考下2025-12-12

