---
# System prepended metadata

title: ChatGPT 的原理與學習過程
tags: [LLM]

---

## 介紹 ChatGPT
ChatGPT 是由 OpenAI 開發的生成式人工智慧語言模型，採用了 Transformer 架構，這是一種基於注意力機制的神經網路模型，能夠有效地處理序列數據，並在自然語言處理任務中取得了顯著的成果，其自注意力機制允許模型在生成每個詞彙時，考慮輸入序列中所有其他詞彙的影響，從而捕捉長距離的語義關聯。

## ChatGPT 學習三階段，分別為預訓練、微調、強化學習
1. 預訓練（Pre-training）：ChatGPT 從海量網路文本中學習語言規則和知識，並完成「文字接龍」的任務，使其能夠理解語法、語意及詞之間的關聯；而 BERT 在預訓練階段完成「文字填空」的任務。 
2. 微調（Fine-tuning）：透過有標籤的資料進行進一步訓練，讓模型能更好地應用於特定任務上。
3. 強化學習（Reinforcement Learning）：模型根據人類回饋（例如評分好壞）調整參數，以提升未來回應的質量與符合人類偏好的能力。。

### 預訓練 (Pre-training)
在預訓練階段，ChatGPT 會從海量網路文本中學習語言規則、語法和邏輯結構，無需昂貴且耗時的人類標註工作，這個過程稱為自督導式學習（Self-supervised Learning）。

以下三項因素密切影響預訓練效果
![image](https://hackmd.io/_uploads/H1CBXQHTyx.png)


模型的核心任務是進行文字接龍（Next-token Prediction），即根據輸入文本預測下一個最可能出現的詞，舉例來說，當輸入「台灣的最高山是？」時，模型可能先輸出「玉」，再將「台灣的最高山是？玉」作為輸入，最後輸出「山」。
![image](https://hackmd.io/_uploads/HJk1Nl-tJg.png)

:::info
研究者觀察到，在預訓練的資料集中，將部分資料進行多種改寫，對比完全沒有做任何改寫，模型在測試時的正確率會有顯著的提升。

* 模型 從預訓練階段就已經內化了某些知識。
* 多樣改寫的語料（如千早愛音）對模型理解有強化效果。

![image](https://hackmd.io/_uploads/rJ7ShzB61x.png)
:::

### 微調 (Fine-tuning)
在預訓練階段，語言模型已學會基本的語法和語意，但這並不足以讓模型在真實世界中提供準確、實用的回應，因此，ChatGPT 進一步進行微調（Fine-tuning），模型會在更聚焦的數據集上進行訓練，這些數據集通常包含人類對話的範例，旨在讓模型生成更符合人類習慣的回應。

![image](https://hackmd.io/_uploads/H12G2xbK1g.png)

這一過程中，開發者會使用有標籤的資料集來指導模型，讓它學會針對特定問題提供符合期望的答案，例如給模型「世界第一高峰是什麼山？」的問題及「喜馬拉雅山」作為答案，而避免學習網路上一些不可靠或無益的資訊，這種方式不僅提升了模型的實用性，也能降低偏差和錯誤資訊的風險。

### 強化學習 (Reinforcement learning)
在強化學習中，模型不依賴固定的答案資料集，而是透過人類的回饋來調整自身的行為，這個過程稱為人類回饋強化學習（Reinforcement Learning with Human Feedback, RLHF）。

![image](https://hackmd.io/_uploads/BJ9geW-tke.png)

步驟 1：生成多個回應
* ChatGPT 針對同一問題產生多個不同版本的回答。

步驟 2：人類標註者評分
* 人類訓練師會根據回答的準確性、相關性和流暢度進行排序，例如：
最佳回應 > 次佳回應 > 不太適合 > 完全錯誤

步驟 3：建立獎勵模型
* 根據人類的評分結果，建立一個獎勵模型（Reward Model），讓 ChatGPT 學習什麼樣的回應更符合人類偏好。

步驟 4：策略優化（Policy Optimization）
* 使用近端策略優化（Proximal Policy Optimization, PPO） 來調整模型，使其未來的回應更符合人類期待。

:::info
這種方法的優點在於，它不需要人類逐一提供所有可能問題的正確答案，而是透過評分機制動態優化模型。
:::

## 補充一：Alignment （微調、強化學習）前後模型實際行為差異不大
圖中的範例使用句子 “How are you? I am ...” 作為提示，觀察模型回應「fine」的機率分布是否在 Alignment 前後出現明顯差異。
分為三種可能情形：

* Unshift（未偏移）：模型在 Alignment 前後的行為完全一致，機率分布沒有變化，這說明模型本來就能自然生成正確回答，對齊對這些輸出沒有實質影響。
* Marginal（輕微偏移）：輸出還是相同（例如仍然回答 "fine"），但背後的機率分布略有調整，表示對齊後模型傾向於選擇「fine」的信心稍微受到影響。
* Shifted（偏移）：對齊後模型產生不同的輸出，這才是對齊造成實質內容變化的情形，但這種情況反而是最少見的。

![image](https://hackmd.io/_uploads/HJGL17Spyl.png)

大多數輸出並未因 Alignment 而「改變答案」，而只是微調了傾向性或語氣風格。

## 補充二：Alignment 常見的四種做法
![image](https://hackmd.io/_uploads/Hk-igQHpJg.png)
### Instruction Tuning
這種方法是最普遍使用的對齊方式，它將訓練目標設定為：給定一段指令 （instruction），模型要輸出對應的回應（response），訓練過程中會大量使用人類撰寫的指令資料對（如 FLAN、OpenAI 的 InstructGPT 資料），強化模型對語言指令的理解與回應能力，進而提升與人類互動的品質。

### Response Tuning
這種方法甚至不需要明確標示指令（instruction）內容，只需直接餵模型對應的回答（response）作為訓練目標，令人驚訝的是，這種方式也能訓練出一個「可遵循指令」的模型，因為許多回答本身隱含著任務目標與語用意圖。

### Single-Task Tuning
儘管它只被訓練在一種固定格式的輸入輸出上，但結果卻顯示模型仍能泛化學會其他任務的指令結構。

### Rule-Based Adapter
在基礎語言模型（Base LM）上，當模型生成的第一個 token 為 <|user|> 就使用某個策略，否則使用另一種策略，這類邏輯可以直接調整模型的概率分布，讓模型看起來像是「懂得回應指令」。

---
:::info
以上就是這篇文章「ChatGPT 的原理與學習過程」的所有內容，第一次看的人會花比較多時間消化吸收，這是很正常的事情，若有任何問題，歡迎在下方與我聯繫、討論，接下來也會繼續分享相關文章，敬請期待。