目錄
一、核心架構:Transformer Decoder
1. 核心組件:僅解碼器(Decoder-Only)的堆疊
2. 輸入表示:Token + 位置
3. 輸出
二、訓練過程:兩階段范式
階段一:預訓練(Pre-training) - 海量數據“讀書”
階段二:微調(Fine-tuning) - 特定任務“輔導”
三、損失函數
1. 數學定義和公式
2. 一個具體的計算例子
3. 為什么這個損失函數如此有效?
4. 在訓練流程中的位置
四、總結與特點
GPT(Generative Pre-trained Transformer)的架構和訓練過程。是一個非常核心的現代人工智能主題,尤其在大語言模型(LLM)領域。
首先,要明確一點:“GPT”已經成為一個系列,從最初的GPT-1到現在的GPT-4,其核心架構思想一脈相承,但規模和能力天差地別。下面的介紹將以經典的GPT-3的架構和訓練為藍本,因為它奠定了當前范式的基礎。
與Deepseek的對比:
DeepSeek模型架構和損失函數介紹-CSDN博客https://blog.csdn.net/qq_54708219/article/details/151335530?sharetype=blogdetail&sharerId=151335530&sharerefer=PC&sharesource=qq_54708219&spm=1011.2480.3001.8118
一、核心架構:Transformer Decoder
GPT的架構基于Transformer模型,但它只使用了Transformer的Decoder部分,并進行了一些修改。這與使用整個Encoder-Decoder結構的模型(如T5)或使用Encoder的模型(如BERT)有顯著區別。以下是其架構的核心組成部分:
1. 核心組件:僅解碼器(Decoder-Only)的堆疊
GPT由N個(對于GPT-3,N=96)完全相同的Transformer Decoder塊堆疊而成。每個塊包含兩個核心子層:
-
掩碼自注意力層(Masked Self-Attention):
-
自注意力(Self-Attention): 允許序列中的每個位置(單詞)同時關注到序列中的所有其他位置,從而捕獲豐富的上下文信息。
-
掩碼(Masking): 這是關鍵!為了確保模型在生成文本時只能“看到”當前位置之前的信息(即過去的詞),而不能“偷看”未來的詞,在計算注意力時會將未來位置的信息屏蔽掉(通常設置為負無窮,經Softmax后變為0)。這保證了模型的自回歸(Autoregressive)?特性,即一個一個地生成下一個詞。
-
-
前饋神經網絡層(Feed-Forward Network, FFN):
-
一個簡單的多層感知機(通常包含一個隱藏層和激活函數,如GELU),對每個位置的表示進行獨立處理和非線性變換。
-
-
殘差連接(Residual Connection)和層歸一化(Layer Normalization):
-
每個子層(注意力、FFN)都被一個殘差連接所包裹,并進行層歸一化。這有助于穩定深度網絡的訓練,防止梯度消失。
-
2. 輸入表示:Token + 位置
模型接收一串單詞(或子詞,即Token)作為輸入,例如 ["The", "robot", "ate", "the"]。這些Token被轉換為模型可以處理的數值形式:
-
Token嵌入(Token Embedding): 一個可學習的查找表,將每個Token映射為一個高維向量(例如,GPT-3是12288維)。
-
位置嵌入(Positional Embedding): 由于自注意力機制本身沒有位置信息,需要額外添加可學習的位置編碼向量,告訴模型每個詞在序列中的位置。
Token嵌入向量 + 位置嵌入向量 = 模型的輸入表示。
3. 輸出
序列經過所有Decoder層后,會為序列中的每個位置輸出一個高維向量。最終,這個向量會通過一個線性投影層(Vocabulary Projection)?和一個Softmax層,轉換為整個詞表上的概率分布。
-
例如,在輸入 ["The", "robot", "ate", "the"] 后,模型會輸出下一個詞的概率分布("apple"的概率可能是0.6,"banana"的概率是0.3,等等)。
-
模型根據這個概率分布選擇下一個詞(通過采樣或選擇概率最高的詞),并將其追加到輸入中,繼續生成下一個詞,如此循環。
二、訓練過程:兩階段范式
GPT的訓練遵循一個非常成功的兩階段范式:1. 預訓練(Pre-training)?和?2. 微調(Fine-tuning)。這也被稱為“自監督學習”。
階段一:預訓練(Pre-training) - 海量數據“讀書”
目標: 讓模型學習語言的通用知識、語法、事實和推理能力。這是最耗時、最耗費計算資源的階段。
-
數據: 使用極其龐大的、來自互聯網的文本數據集(如CommonCrawl, WebText, 書籍、期刊等)。GPT-3的訓練數據高達近5000億個Token。
-
任務:?自回歸語言建模?或?下一個Token預測。
-
過程:
-
從數據集中隨機抽取一段文本(例如:“人工智能是未來的趨勢。”)。
-
輸入模型的是這段文本的前N個詞(例如:“人工智能是未來的”)。
-
要求模型預測下一個詞(目標是“趨勢”)。
-
將模型的預測(一個概率分布)與真實的下一個詞(“趨勢”的one-hot編碼)進行對比,計算交叉熵損失(Cross-Entropy Loss)。
-
通過反向傳播和優化器(如AdamW)更新模型的所有參數,讓模型在下一次預測時更準確。
-
-
本質: 這是一個無監督學習過程,不需要人工標注。數據本身(下一個詞是什么)就是標簽。通過這個過程,模型學會了語言的統計規律、世界知識以及強大的上下文表示能力。
階段二:微調(Fine-tuning) - 特定任務“輔導”
目標: 讓預訓練好的通用模型適應特定的下游任務(如問答、翻譯、摘要、情感分析等)。
-
數據: 相對小得多的、高質量人工標注的數據集。例如,對于“情感分析”任務,數據集可能是 {句子:情感標簽} 的配對,如 (“這部電影太精彩了”, “正面”)。
-
過程:
-
取預訓練好的GPT模型。
-
在其輸出層之上添加一個任務特定的頭(例如,對于分類任務,添加一個線性分類器)。
-
使用標注數據,以比預訓練小得多的學習率對整個模型(或部分層)進行繼續訓練。
-
此時的目標函數仍然是交叉熵損失,但標簽是任務特定的(如正面/負面)。
-
-
創新(Instruction Tuning & RLHF):
-
對于ChatGPT這樣的對話模型,微調過程更加精細。它采用了指令微調(Instruction Tuning)?和基于人類反饋的強化學習(RLHF)。
-
指令微調: 使用大量(指令,期望回復)的數據對來訓練模型,教會它如何理解和遵循人類的指令。
-
RLHF:
-
收集人類標注者對于模型多個回復的偏好排序(哪個回復更好)。
-
訓練一個獎勵模型(Reward Model)?來學習人類的偏好。
-
使用強化學習(如PPO算法)以獎勵模型為指引,進一步優化語言模型的策略,使其生成更符合人類喜好的、更有幫助、更安全的回復。
-
-
三、損失函數
GPT訓練的損失函數是標準的交叉熵損失(Cross-Entropy Loss),更具體地說,是用于自回歸語言建模的交叉熵損失。它的核心思想非常簡單:懲罰模型在預測下一個詞時犯的錯誤。模型預測的分布與真實分布差異越大,損失值就越高。
1. 數學定義和公式
對于一個給定的序列(例如一句話),其中
?是序列中的第 t?個詞元(token)。
訓練目標: 基于之前的所有詞元 ,最大化真實下一個詞元
?出現的概率。
損失函數?是這個目標的負數對數似然(Negative Log-Likelihood)。
對于單個時間步 t?的損失是:
其中:
-
?是模型在時間步 t?根據上文計算出的、對于詞元?
的預測概率。
-
?代表模型的所有參數。
-
?是自然對數。取對數是數學上的標準做法,可以將連乘轉化為求和,并且懲罰模型對其預測的“不確定性”(即概率很低時,
?值會很大)。
整個序列的總損失是所有這些時間步損失的平均值:
這里 ?是
的簡寫。
重要提示: 在計算時,模型是并行地處理整個序列,并通過掩碼(Mask)確保在計算位置 t?的注意力時,只能看到 t?之前的位置。因此,雖然計算是并行的,但其數學原理與上述自回歸公式完全等價。
2. 一個具體的計算例子
假設我們有一個非常簡單的序列:["貓", "吃", "魚"]
,對應的 token ID 是?[231, 792, 583]
。
-
輸入 (Input): 模型接收整個序列?
[231, 792, 583]
。 -
目標 (Target): 訓練時,我們希望模型能正確地將輸入序列“偏移一位”進行預測。即:
-
當輸入是?
[231]
?時,應預測下一個詞是?792
?(吃)。 -
當輸入是?
[231, 792]
?時,應預測下一個詞是?583
?(魚)。 -
初始 token 沒有上一個 token,所以從 t=2?開始計算損失。
-
-
模型輸出:
-
在經過最后的 Linear 層和 Softmax 后,模型會在整個詞表(例如 50,257 個詞)上為每個位置輸出一個概率分布。
-
假設在位置 t=2(即需要預測“魚”的時刻),模型對正確 token?
583
?(“魚”) 預測的概率是,而對某個錯誤 token(例如“肉”)的概率是
。
-
-
計算該時間步的損失:
這個損失值很小,因為模型做出了一個高置信度的正確預測。
-
如果預測錯誤:如果模型在 t=2?時預測
,而
,那么損失會是:
。這個損失值很大,因為模型做出了一個高置信度的錯誤預測。
-
整個序列的損失:
我們需要計算 t=2(預測“吃”)和 t=3(預測“魚”)兩個時間步的損失,然后求平均。 -
3. 為什么這個損失函數如此有效?
-
直接的代理目標: 能夠準確預測下一個詞,需要模型掌握語法、句法、常識、邏輯推理甚至風格模仿等幾乎所有語言能力。因此,最小化這個損失函數間接地迫使模型學習到了這些豐富的知識。
-
可微性(Differentiability): 整個計算過程——從嵌入層到多個Transformer塊,再到最后的線性投影和Softmax——都是完全可微的。這意味著可以通過反向傳播(Backpropagation)?算法,精確地計算出損失函數對模型中每一個參數的梯度,從而通過梯度下降來有效地更新參數。
-
信息密集的梯度: 每一次預測錯誤都會產生一個較大的損失信號,這個信號會通過反向傳播有效地分配給了模型中那些導致預測錯誤的參數。這種“責任分配”機制非常高效。
4. 在訓練流程中的位置
這個損失函數是GPT?預訓練(Pre-training)?階段的核心驅動力。它的流程可以概括為:
-
從海量文本語料庫中采樣一個批次(batch)的序列。
-
將序列輸入模型,獲得模型對所有位置下一個詞的預測分布。
-
將模型的預測分布與真實的下一個詞(即目標序列)進行比較,計算整個批次的平均交叉熵損失。
-
通過反向傳播計算損失相對于所有模型參數的梯度。
-
使用優化器(如AdamW)根據梯度更新模型參數。
-
重復這個過程數百萬乃至數十億次,直到模型收斂。
微調(Fine-tuning)?階段同樣使用交叉熵損失,但目標不同。例如,在指令微調中,輸入是指令,目標是期望的回復,損失函數計算的是模型生成“回復”部分每個詞時的交叉熵,而“指令”部分的損失通常會被掩碼掉,不參與計算。
特性 | 描述 |
---|---|
名稱 | 交叉熵損失(Cross-Entropy Loss) |
類型 | 自回歸語言建模損失 |
核心思想 | 最小化模型預測的下一個詞概率分布與真實分布(一個one-hot向量)之間的差異。 |
數學公式 | |
為何有效 | 是學習語言知識的完美代理任務;完全可微,便于梯度下降優化。 |
階段 | 主要驅動預訓練,也用于監督微調。 |
總而言之,GPT的損失函數是一個簡潔、優雅而強大的目標,它通過“猜下一個詞”這個簡單游戲,驅動模型學習并掌握了人類語言的復雜規律。
四、總結與特點
特性 | 描述 |
---|---|
架構 | Transformer Decoder-Only,使用掩碼自注意力實現自回歸生成。 |
核心能力 | 生成(Generative),根據上文預測下一個詞。 |
訓練范式 | 兩階段:1.?預訓練(海量無標注數據,下一個詞預測);2.?微調(少量標注數據,適應特定任務/對齊人類偏好)。 |
規模定律 | 模型性能強烈依賴于模型參數量、數據量和計算量的同步 scaling up。GPT系列的進化史就是一部規模擴大史。 |
上下文學習 | GPT-3展現出的強大能力:在不更新參數的情況下,僅通過向模型提供幾個示例(Few-shot)和任務描述,它就能完成新任務。 |