自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

零基礎(chǔ)也能看懂的ChatGPT等大模型入門解析!

人工智能
近兩年,大語言模型LLM(Large Language Model)越來越受到各行各業(yè)的廣泛應(yīng)用及關(guān)注。對于非相關(guān)領(lǐng)域研發(fā)人員,雖然不需要深入掌握每一個細(xì)節(jié),但了解其基本運作原理是必備的技術(shù)素養(yǎng)。

近兩年,大語言模型LLM(Large Language Model)越來越受到各行各業(yè)的廣泛應(yīng)用及關(guān)注。對于非相關(guān)領(lǐng)域研發(fā)人員,雖然不需要深入掌握每一個細(xì)節(jié),但了解其基本運作原理是必備的技術(shù)素養(yǎng)。本文筆者結(jié)合自己的理解,用通俗易懂的語言對復(fù)雜的概念進(jìn)行了總結(jié),與大家分享~

什么是ChatGPT?

GPT 對應(yīng)的是三個關(guān)鍵概念:生成式(Generative)、預(yù)訓(xùn)練(Pre-Training)和Transformer。

生成式(Generative):是指通過學(xué)習(xí)歷史數(shù)據(jù)來生成全新的數(shù)據(jù)。當(dāng)使用ChatGPT回答問題時,是逐字(或三四個字符一起)生成的。在生成過程中,每一個字(或詞,在英文中可能是詞根)都可以被稱作一個 token。

預(yù)訓(xùn)練(Pre-Training):是指預(yù)先訓(xùn)練模型。舉個簡單的例子,我們想讓一個對英語一竅不通的同學(xué)去翻譯并總結(jié)一篇英語技術(shù)文章,首先需要教會這個同學(xué)英語的26個字母、以及單詞語法等基礎(chǔ)知識,然后讓他了解文章相關(guān)的技術(shù)內(nèi)容,最后才能完成任務(wù)。相比之下,如果讓一個精通英語的同學(xué)來做這個任務(wù)就簡單多了,他只需要大致了解文章的技術(shù)內(nèi)容,就能很好地總結(jié)出來?!高@就是預(yù)訓(xùn)練的作用——提前訓(xùn)練出一些通用能力。在人工智能中,預(yù)訓(xùn)練是通過不斷調(diào)整參數(shù)來實現(xiàn)的。」如果我們可以提前將這些通用能力相關(guān)的參數(shù)訓(xùn)練好,那么在特定場景中,只需要進(jìn)行簡單的參數(shù)微調(diào)即可,從而大幅減少每個獨立訓(xùn)練任務(wù)的計算成本。

Transformer:這是ChatGPT的核心架構(gòu),是一種神經(jīng)網(wǎng)絡(luò)模型。后文將對其進(jìn)行詳細(xì)的說明。

綜上,ChatGPT就是一個采用了預(yù)訓(xùn)練的生成式神經(jīng)網(wǎng)絡(luò)模型,能夠模擬人類的對話。

ChatGPT核心任務(wù)

ChatGPT核心任務(wù)就是生成一個符合人類書寫習(xí)慣的下一個合理的內(nèi)容。具體實現(xiàn)邏輯就是:根據(jù)大量的網(wǎng)頁、數(shù)字化書籍等人類撰寫內(nèi)容的統(tǒng)計規(guī)律,推測接下來可能出現(xiàn)的內(nèi)容。

逐字/逐詞推測

在使用ChatGPT時,如果細(xì)心觀察會發(fā)現(xiàn)它回答問題時是逐字或逐詞進(jìn)行的。這正是ChatGPT的本質(zhì):根據(jù)上下文對下一個要出現(xiàn)的字或詞進(jìn)行推測。例如,假設(shè)我們要讓ChatGPT預(yù)測“今天天氣真好”,它的運行步驟如下:

  1. 輸入“今”這個字,輸出可能是“天”,“日”,“明”這三個字,其中結(jié)合上下文概率最高的是“天”字。
  2. 輸入“今天”這兩個字,輸出可能是“天”,“好”,“氣”這三個字,其中結(jié)合上下文概率最高的是“氣”字。
  3. 輸入“今天天”這三個字,輸出可能是“氣”,“好”,“熱”這三個字,其中結(jié)合上下文概率最高的是“氣”字。
  4. 輸入“今天天氣”這四個字,輸出可能是“真”,“好”,“熱”這三個字,其中結(jié)合上下文概率最高的是“真”字。
  5. 輸入“今天天氣真”這五個字,輸出可能是“好”,“熱”,“美”這三個字,其中結(jié)合上下文概率最高的是“好”字。

由于ChatGPT學(xué)習(xí)了大量人類現(xiàn)有的各種知識,它可以進(jìn)行各種各樣的預(yù)測。這就是Transformer模型最終做的事情,但實際原理要復(fù)雜得多。

AI基礎(chǔ)知識

在介紹 ChatGPT 的原理之前,先學(xué)習(xí)一下人工智能的一些基礎(chǔ)知識:

機器學(xué)習(xí) (Machine Learning, ML)

機器學(xué)習(xí)是指從有限的觀測數(shù)據(jù)中學(xué)習(xí)(或“猜測”)出具有一般性的規(guī)律,并將這些規(guī)律應(yīng)用到未觀測數(shù)據(jù)樣本上的方法。主要研究內(nèi)容是學(xué)習(xí)算法。基本流程是基于數(shù)據(jù)產(chǎn)生模型,利用模型預(yù)測輸出。目標(biāo)是讓模型具有較好的泛化能力。

舉一個經(jīng)典的例子,我們挑西瓜的時候是如何判斷一個西瓜是否成熟的呢?每個人一開始都是不會挑選的,但是隨著我們耳濡目染,看了很多挑西瓜能手是怎么做的,發(fā)現(xiàn)可以通過西瓜的顏色、大小、產(chǎn)地、紋路、敲擊聲等因素來判斷,這就是一個學(xué)習(xí)的過程。

神經(jīng)網(wǎng)絡(luò)

與人腦的類比

神經(jīng)網(wǎng)絡(luò)的設(shè)計靈感來源于人腦的工作方式。當(dāng)信息進(jìn)入大腦時,神經(jīng)元的每一層或每一級都會完成其特殊的工作,即處理傳入的信息,獲得洞見,然后將它們傳遞到下一個更高級的層。神經(jīng)網(wǎng)絡(luò)模仿了這一過程,通過多層結(jié)構(gòu)來處理和轉(zhuǎn)換輸入數(shù)據(jù)。

基本形式的人工神經(jīng)網(wǎng)絡(luò)

最基本形式的人工神經(jīng)網(wǎng)絡(luò)通常由三層組成:

  • 輸入層:這是數(shù)據(jù)進(jìn)入系統(tǒng)的入口點。每個節(jié)點代表一個特征或?qū)傩裕缭陬A(yù)測房價的例子中,輸入層可能包含房屋面積、臥室數(shù)量、浴室數(shù)量等特征。
  • 隱藏層:這是處理信息的地方。隱藏層可以有多個,每一層中的節(jié)點會對來自前一層的數(shù)據(jù)進(jìn)行加權(quán)求和,并通過激活函數(shù)(如 ReLU、Sigmoid 或 Tanh)進(jìn)行非線性變換。隱藏層的數(shù)量和每層的節(jié)點數(shù)可以根據(jù)任務(wù)復(fù)雜度進(jìn)行調(diào)整。
  • 輸出層:這是系統(tǒng)根據(jù)數(shù)據(jù)決定如何繼續(xù)操作的位置。輸出層的節(jié)點數(shù)量取決于任務(wù)類型。例如,在分類任務(wù)中,輸出層可能對應(yīng)于不同類別的概率分布;在回歸任務(wù)中,輸出層可能直接給出預(yù)測值。

每一層的每一個節(jié)點都會對模型的某個參數(shù)進(jìn)行調(diào)整計算。在大部分情況下,每個當(dāng)前節(jié)點與上層的所有節(jié)點都是相連的,這種連接方式被稱為全連接(fully connected)。然而,在某些特定的應(yīng)用場景下,完全連接的網(wǎng)絡(luò)可能會顯得過于復(fù)雜,因此需要采用更高效的網(wǎng)絡(luò)結(jié)構(gòu)。

卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNNs)

在處理圖像等具有特定已知結(jié)構(gòu)的數(shù)據(jù)時,使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)會更加高效。CNN 的設(shè)計是為了捕捉局部模式和空間關(guān)系,其特點包括:

  • 卷積層:卷積層中的神經(jīng)元布置在類似于圖像像素的網(wǎng)格上,并且僅與網(wǎng)格附近的神經(jīng)元相連。這種方式減少了參數(shù)數(shù)量,同時保留了重要的局部信息。
  • 池化層:用于降低特征圖的空間維度,減少計算量并防止過擬合。常見的池化方法包括最大池化(Max Pooling)和平均池化(Average Pooling)。
  • 全連接層:通常位于網(wǎng)絡(luò)的末端,用于將提取到的特征映射到最終的輸出類別或預(yù)測值。

參數(shù)/權(quán)重

所有的AI都有一個模型,這個模型可以簡單地被理解為我們數(shù)學(xué)里的一個公式,比如一個線性公式:。參數(shù)(權(quán)重)就是  和 。在 ChatGPT 中,3.0 版本已經(jīng)有了 1750 億個參數(shù),4.0 的參數(shù)規(guī)模未公布,但可以猜測只會比 3.0 版本更多。因此,在這樣巨大的參數(shù)規(guī)模中進(jìn)行調(diào)參訓(xùn)練是一個非常耗費計算資源(如 GPU)的工作,所以需要大量的資金和機房支持。

監(jiān)督學(xué)習(xí) / 無監(jiān)督學(xué)習(xí)

「監(jiān)督學(xué)習(xí)」:簡單的理解就是給算法模型一批已經(jīng)標(biāo)記好的數(shù)據(jù)。例如,我們提前給模型提供 1000 個西瓜,并且標(biāo)記好這 1000 個西瓜是否已經(jīng)成熟,然后由模型自己不斷去學(xué)習(xí)調(diào)整,計算出一組最擬合這些數(shù)據(jù)的函數(shù)參數(shù)。這樣我們在拿到一個全新的西瓜時,就可以根據(jù)這組參數(shù)來進(jìn)行比較準(zhǔn)確的預(yù)測。

無監(jiān)督學(xué)習(xí):就是我們?nèi)咏o模型 1000 個西瓜,由算法自己去學(xué)習(xí)它們的特征,然后把相似的類逐漸聚合在一起。在理想情況下,我們希望聚合出 2 個類(成熟和不成熟)。

過擬合 / 欠擬合

在模型進(jìn)行訓(xùn)練時,最終的目的就是訓(xùn)練出一組參數(shù)來最大限度地擬合訓(xùn)練數(shù)據(jù)的特征。但是訓(xùn)練的過程總會出現(xiàn)各種問題,比較經(jīng)典的就是過擬合和欠擬合。其中,

直接舉例說明更直接一點,如下圖,我們希望模型能盡量好的來匹配我們的訓(xùn)練數(shù)據(jù),理想狀態(tài)下模型的表現(xiàn)應(yīng)當(dāng)和中間的圖一致,但實際訓(xùn)練中可能就會出現(xiàn)左右兩種情況。左邊的欠擬合并并沒有很好的擬合數(shù)據(jù),預(yù)測一個新數(shù)據(jù)的時候準(zhǔn)確率會比較低,而右側(cè)看起來非常好,把所有的數(shù)據(jù)都成功擬合了進(jìn)去,但是模型不具有泛化性,也沒有辦法對新的數(shù)據(jù)進(jìn)行準(zhǔn)確預(yù)測。


那么怎么解決過擬合和欠擬合的問題呢?可以根據(jù)模型訓(xùn)練中的實際表現(xiàn)情況來進(jìn)行正則化處理、降低復(fù)雜度處理等方法,這一點可以自行查閱相關(guān)資料。

有監(jiān)督微調(diào)(Supervised Fine-Tuning, SFT)

有監(jiān)督微調(diào)是一種用于機器學(xué)習(xí)的超參數(shù)調(diào)整方法,它可以使用從未見過的數(shù)據(jù)來快速準(zhǔn)確地調(diào)整神經(jīng)網(wǎng)絡(luò)的權(quán)重參數(shù),以獲得最佳的性能。它可以幫助機器學(xué)習(xí)模型快速地從訓(xùn)練數(shù)據(jù)中學(xué)習(xí),而不需要重新訓(xùn)練整個網(wǎng)絡(luò)。

強化學(xué)習(xí)模型(Proximal Policy Optimization, PPO)

強化學(xué)習(xí)模型(PPO)是一種強化學(xué)習(xí)算法,可以使智能體通過最大化獎勵信號來學(xué)習(xí)如何與環(huán)境進(jìn)行交互。它使用剪裁目標(biāo)函數(shù)和自適應(yīng)學(xué)習(xí)率來避免大的策略更新。PPO 還具有學(xué)習(xí)可能不完全獨立和等分布數(shù)據(jù)的優(yōu)勢。

人類反饋強化學(xué)習(xí)(Reinforcement Learning with Human Feedback, RLHF)

人類反饋強化學(xué)習(xí)(RLHF)是訓(xùn)練 GPT-3.5 系列模型而創(chuàng)建的一種方法。主要包括三個步驟,旨在通過人類反饋來優(yōu)化語言模型的輸出質(zhì)量。

  1. 「使用監(jiān)督學(xué)習(xí)訓(xùn)練語言模型」:首先通過大量標(biāo)記數(shù)據(jù)訓(xùn)練一個基礎(chǔ)語言模型。
  2. 「根據(jù)人類偏好收集比較數(shù)據(jù)并訓(xùn)練獎勵模型」:生成多個輸出并讓人類評估其質(zhì)量,訓(xùn)練一個獎勵模型來預(yù)測這些輸出的質(zhì)量分?jǐn)?shù)。
  3. 「使用強化學(xué)習(xí)針對獎勵模型優(yōu)化語言模型」:通過獎勵模型優(yōu)化語言模型,使其生成更符合人類偏好的輸出。

舉個例子,假設(shè)我們要訓(xùn)練一個能夠生成高質(zhì)量對話的LLM,RLHF具體步驟如下:

  1. 預(yù)訓(xùn)練和微調(diào):使用大量的對話數(shù)據(jù)對 LLM 進(jìn)行預(yù)訓(xùn)練和微調(diào),使其能夠生成連貫的對話文本。
  2. 生成多個輸出:
  • 給 LLM 提供一個提示,例如:“今天天氣怎么樣?”
  • LLM 生成多個響應(yīng),例如:
  • 響應(yīng)1:今天天氣真好。
  • 響應(yīng)2:不知道,我沒有查看天氣預(yù)報。
  • 響應(yīng)3:今天天氣晴朗,適合外出。
  1. 人工評估:讓人類評估這些響應(yīng)的質(zhì)量,并為每個響應(yīng)分配一個分?jǐn)?shù)。
  • 響應(yīng)1:3
  • 響應(yīng)2:1
  • 響應(yīng)3:4
  1. 訓(xùn)練獎勵模型:使用這些人工評估的數(shù)據(jù)來訓(xùn)練一個獎勵模型。獎勵模型學(xué)習(xí)如何預(yù)測 LLM 生成文本的質(zhì)量分?jǐn)?shù)。
  2. 強化學(xué)習(xí)循環(huán):
  • 創(chuàng)建一個強化學(xué)習(xí)循環(huán),LLM 的副本成為 RL 代理。

  • 在每個訓(xùn)練集中,LLM 從訓(xùn)練數(shù)據(jù)集中獲取多個提示并生成文本。

  • 將生成的文本傳遞給獎勵模型,獎勵模型提供一個分?jǐn)?shù)來評估其與人類偏好的一致性。

  • 根據(jù)獎勵模型的評分,更新 LLM 的參數(shù),使其生成的文本在獎勵模型上的得分更高。

通過這種方式,RLHF 能夠顯著提高 LLM 的輸出質(zhì)量,使其生成的文本更符合人類的偏好和期望。

Transformer架構(gòu)

對于像ChatGPT這樣的大語言模型,Transformer架構(gòu)是其核心。與傳統(tǒng)的RNN和LSTM不同,Transformer完全依賴于自注意力機制(self-attention mechanism),允許模型并行處理長序列數(shù)據(jù),而不需要逐個處理時間步。Transformer的主要組成部分包括:

  • 編碼器(Encoder):負(fù)責(zé)將輸入序列轉(zhuǎn)換為上下文表示。每個編碼器層包含一個多頭自注意力機制(Multi-Head Self-Attention Mechanism)和一個前饋神經(jīng)網(wǎng)絡(luò)(Feed-Forward Neural Network),兩者之間通過殘差連接(Residual Connection)和層歸一化(Layer Normalization)連接。
  • 解碼器(Decoder):負(fù)責(zé)生成輸出序列。解碼器層不僅包含自注意力機制和前饋神經(jīng)網(wǎng)絡(luò),還包括一個編碼器-解碼器注意力機制(Encoder-Decoder Attention Mechanism),用于關(guān)注輸入序列中的相關(guān)信息。
  • 位置編碼(Positional Encoding):由于Transformer沒有內(nèi)在的時間/順序概念,位置編碼被添加到輸入嵌入中,以提供關(guān)于單詞相對位置的信息。

Transformer基本原理

第一步:Embedding

在Transformer架構(gòu)中,embedding的過程可以簡單理解為將輸入的詞(token)映射成向量表示。這是因為神經(jīng)網(wǎng)絡(luò)處理的是數(shù)值型數(shù)據(jù),而文本是由離散的符號組成的。因此,需要一種方法將這些符號轉(zhuǎn)換為模型能夠理解和處理的連續(xù)向量形式。

Token Embedding

每個輸入的token通過一個查找表(lookup table)被映射到一個固定維度的稠密向量空間中。這個查找表實際上是一個可訓(xùn)練的參數(shù)矩陣,其中每一行對應(yīng)于詞匯表中的一個token。例如,在GPT-2中,每個token會被轉(zhuǎn)化為長度為768的embedding向量;而在更大型的模型如ChatGPT所基于的GPT-3中,embedding向量的長度可能達(dá)到12288維。

Positional Encoding

由于Transformer沒有像RNN那樣的內(nèi)在順序處理機制,它無法直接感知序列中元素的位置信息。為了彌補這一點,引入了位置編碼(positional encoding),它為每個位置添加了一個唯一的標(biāo)識符,使得模型能夠在處理過程中考慮到token的相對或絕對位置。位置編碼通常也是通過一個固定的函數(shù)生成,或者是作為額外的可學(xué)習(xí)參數(shù)加入到模型中。

Token和Position Embedding的結(jié)合

最終的embedding是通過將token embedding和position embedding相加得到的。具體來說:

這種相加的方式并不是隨意選擇的,而是經(jīng)過大量實驗驗證后被認(rèn)為有效的方法之一。其背后的原因在于:

  • 保持原始信息:通過簡單地相加,既保留了token本身的語義信息,又引入了位置信息。
  • 允許自適應(yīng)調(diào)整:即使初始設(shè)置不是最優(yōu)的,隨著訓(xùn)練的進(jìn)行,模型可以通過梯度下降等優(yōu)化算法自動調(diào)整這些embedding,以更好地捕捉數(shù)據(jù)中的模式。
  • 簡化計算:相比于其他復(fù)雜的組合方式,簡單的相加操作更加高效,并且不會增加太多額外的計算負(fù)擔(dān)。

以字符串“天氣”為例,假設(shè)我們使用GPT-2模型來處理:

  1. Token Embedding:首先,“天”和“氣”這兩個字符分別被映射到它們對應(yīng)的768維向量。
  2. Positional Encoding:然后,根據(jù)它們在句子中的位置(第一個位置和第二個位置),分別為這兩個字符生成相應(yīng)的位置編碼向量。
  3. 相加生成最終的embedding:最后,將上述兩個步驟得到的向量相加以形成最終的embedding向量序列。

如上圖,第一張圖中展示了token embedding,其中縱向一列表示一個向量,依次排列的是“天”和“氣”的embedding向量。第二張圖則顯示了位置的embedding,反映了這兩個字符的位置信息。將這兩者相加后,我們就得到了包含語義和位置信息的完整embedding序列。

第二步:Attention

在Transformer架構(gòu)中,Attention機制是核心組件之一,它使得模型能夠并行處理長序列數(shù)據(jù),并且有效地捕捉輸入序列中的依賴關(guān)系。Attention機制的核心思想是讓模型關(guān)注輸入序列的不同部分,從而更好地理解上下文信息。

自注意力(Self-Attention)

自注意力(也稱為內(nèi)部注意力)是Transformer中的一種特殊形式的Attention,它允許每個位置的token與序列中的所有其他位置進(jìn)行交互。這意味著每個token都可以根據(jù)整個序列的信息來調(diào)整自己的表示,而不僅僅是依賴于前一個或后一個token。

Attention Head

每個“注意力塊”(Attention Block)包含多個獨立的Attention Heads,這些Head可以看作是不同視角下的Attention計算。每個Head都會獨立地作用于embedding向量的不同子空間,這樣可以捕捉到更多樣化的信息。例如,在GPT-3中有96個這樣的注意力塊,每個塊中又包含多個Attention Heads。

Q、K、V 的生成

對于每個token的embedding向量,我們通過線性變換(即乘以三個不同的可訓(xùn)練矩陣、和)將其轉(zhuǎn)換為三個向量:Query (Q)、Key (K) 和 Value (V)。這三個向量分別代表查詢、鍵和值。具體來說:

其中,X是輸入的embedding向量,、和是隨機初始化并在訓(xùn)練過程中學(xué)習(xí)得到的權(quán)重矩陣。

Attention分?jǐn)?shù)的計算

接下來,我們需要計算每個token與其他所有token之間的Attention分?jǐn)?shù)。這一步驟使用了Scaled Dot-Product Attention公式:

這里,是Key向量的維度大小,用于縮放點積結(jié)果以穩(wěn)定梯度。Softmax函數(shù)確保輸出的概率分布加起來等于1,這樣可以突出最重要的部分。

以上就是 Transformer 的大致原理,用一張圖來表示上面的步驟,如下所示。

責(zé)任編輯:華軒 來源: 小喵學(xué)AI
相關(guān)推薦

2025-02-17 13:00:00

ChatGPT大模型AI

2020-11-16 16:38:30

人工智能AI

2017-02-22 15:04:52

2021-11-01 15:15:37

Context項目代碼

2022-07-04 08:31:42

GitOpsGit基礎(chǔ)設(shè)施

2020-02-15 17:16:05

Kubernetes容器

2019-11-18 10:38:03

線程池Java框架

2019-10-10 11:10:04

SpringBoot異步編程

2018-12-24 08:46:52

Kubernetes對象模型

2013-09-22 10:34:08

碼農(nóng)機器學(xué)習(xí)算法

2019-03-26 11:15:34

AI機器學(xué)習(xí)人工智能

2018-05-16 10:07:02

監(jiān)控報警系統(tǒng)

2024-11-01 05:10:00

2017-11-02 12:08:56

2021-09-27 13:50:13

Python裝飾器函數(shù)

2018-03-06 10:38:23

云計算大數(shù)據(jù)人工智能

2020-02-28 08:00:35

單點登錄系統(tǒng)

2024-01-19 13:39:00

死鎖框架排查

2020-01-21 10:16:15

Kubernetes教程容器

2020-12-01 09:03:22

分庫分表MySQL
點贊
收藏

51CTO技術(shù)棧公眾號