# 【生成式AI】淺談圖像生成模型 Diffusion Model 原理
本講主要介紹 **Diffusion Model**(擴散模型)的核心運作機制,特別聚焦於經典的 **DDPM (Denoising Diffusion Probabilistic Model)** 架構。內容涵蓋了圖像生成的「反向過程 (Reverse Process)」、模型內部的「雜訊預測器 (Noise Predictor)」設計理由、訓練資料的構建方式(Forward Process),以及如何引入文字條件(Text Conditioning)來實現文生圖功能。同時也探討了支撐現代 AI(如 Stable Diffusion, DALL-E)背後的龐大數據集(LAION)。
<br>
## 01. 擴散模型的推論過程 (Inference / Reverse Process)
### 01-01. 核心概念與知名應用
* **核心定位**:Diffusion Model 是目前影像生成領域的主流技術,知名的系統如 DALL-E、Google Imagen、Stable Diffusion 皆基於類似的原理(主要是 DDPM 的變形)。
* **生成起點**:生成一張圖片的第一步是從 **Gaussian Distribution (常態分佈)** 中採樣出一個全是雜訊的向量 (Vector)。
* **維度對應**:採樣出的向量維度必須與目標圖片大小一致(例如:若要生成 $256 \times 256$ 的圖片,就要採樣 $256 \times 256$ 的雜訊矩陣)。
### 01-02. 去噪過程 (Denoise)
* **運作機制**:將雜訊向量輸入一個 **Denoise Network**,它會濾除部分雜訊。重複多次後,原本的雜訊圖會逐漸浮現出物體輪廓(如貓的形狀),最終變成清晰圖片。
* **步驟編號 (Step ID)**:
1. 整個去噪過程是分步驟進行的,我們給每個步驟一個編號。
2. 編號通常從大到小排列(例如從 Step 1000 到 Step 1),Step 1000 代表剛開始全是雜訊,Step 1 代表最後一步,接近完成圖。

* **術語定義**:這個從「雜訊」還原回「圖片」的過程稱為 **Reverse Process**。
:::info
💡 **舉例:米開朗吉羅的雕刻哲學**
講者引用米開朗吉羅的名言:「雕像本來就在大理石裡面,我只是把不要的部分拿掉。」
* **類比**:Diffusion Model 做的事情一模一樣。圖片本來就藏在雜訊裡,模型只是負責把「構成雜訊」的部分濾除。
* **講者實測**:講者曾嘗試用 Midjourney 畫出「大衛像藏在石頭裡」的意境,但因詠唱(Prompting)技巧不足,未能完美呈現,這也側面說明了文字與圖像對應的複雜性。
:::
<br>
## 02. 去噪模型的內部架構 (Denoise Model Architecture)
### 02-01. 模型的共用與條件輸入
* **單一模型重複使用**:在整個 Reverse Process 中,我們使用的是**同一個** Denoise Model,並非每個步驟用不同模型。
* **輸入差異問題**:由於 Step 1000(純雜訊)與 Step 1(微小雜訊)的輸入差異極大,單一模型難以直接處理。
* **解決方案**:模型除了接收「當前的圖片」外,還必須接收一個 **Step ID (Time Step)**。
1. 輸入 `1000`:告訴模型現在雜訊非常嚴重。
2. 輸入 `1`:告訴模型現在雜訊很小,只需微調。

### 02-02. 核心組件:雜訊預測器 (Noise Predictor)
* **運作邏輯**:Denoise Model 內部並非直接輸出「去噪後的乾淨圖」,而是包含一個 **Noise Predictor**。
1. **輸入**:(1) 含雜訊的圖片 + (2) Step ID。
2. **輸出**:預測這張圖裡「包含了什麼樣的雜訊」。
3. **最終計算**:`去噪結果 = 原圖 - 預測出的雜訊`。

* **設計理由**:為什麼不直接預測乾淨圖 (End-to-End)?
1. 直接畫出一隻貓(生成圖片)很難。
2. 但從雜訊圖中「預測雜訊長什麼樣」相對簡單。
3. 目前學界主流作法多採用 Noise Predictor,因為訓練難度較低。
:::info
💡 **舉例:任務難度的差異**
* **End-to-End**:就像要求你在一張白紙上直接畫出一隻完美的貓。
* **Noise Predictor**:就像給你看一張充滿雜點的貓,問你「哪些點是雜點?」,你只需要把這些點挑出來即可。後者顯然比無中生有更容易學習。
:::
<br>
## 03. 模型的訓練方法 (Training / Forward Process)
### 03-01. 訓練資料的製造 (Diffusion Process)
* **需求**:訓練 Noise Predictor 需要「有雜訊的圖」當輸入,以及「該雜訊的真值 (Ground Truth)」當標準答案。
* **Forward Process (擴散過程)**:
1. 從資料庫拿出一張乾淨圖片。
2. 隨機從 Gaussian Distribution 採樣雜訊加入圖片。
3. 重複加噪,直到圖片變成完全無法辨識的純雜訊。

* **資料成對 (Pairing)**:
1. **Input**:加噪後的圖片 + Step ID (例如第 2 步)。
2. **Ground Truth (Label)**:剛剛「加進去的那組雜訊」。

### 03-02. 訓練目標
* 告訴模型:「當你看到這張加噪圖 (Input) 且知道現在是第幾步 (Step ID) 時,你要吐出這個雜訊 (Output)。」
* 透過一般的 Network Training 流程(如 Minimize Loss)進行訓練。
<br>
## 04. 文字生成圖片 (Text-to-Image)
### 04-01. 數據集的規模與重要性 (Dataset Scale)
* **成對資料需求**:要訓練文生圖模型,必須擁有大量的「圖片-文字」成對資料。
* **ImageNet vs. LAION**:
1. **ImageNet**:約 100 萬張圖,僅有類別標籤(如 "Cat"),缺乏詳細描述。
2. **LAION**:現代模型(Stable Diffusion, Midjourney)的主要數據來源。
* 擁有 **58.5 億 (5.85 Billion)** 張圖片。
* 包含多語言對應(中、日、英等)及各種內容(包括名人照片)。

* **現象解釋**:為何模型認得川普或看得懂中文?因為 LAION 數據集裡什麼都有,模型在訓練時已經看過這些關聯。
### 04-02. 整合文字條件 (Text Conditioning)
* **推論階段 (Inference)**:
1. Denoise Model 增加第三個輸入:**文字敘述 (Text Prompt)**。

3. Noise Predictor 根據 (1) 圖片、(2) Step ID、(3) 文字,來預測雜訊。

* **訓練階段 (Training)**:
1. 準備含有文字描述的圖片數據。
2. 對圖片做 Forward Process 加噪。
3. **輸入**:加噪圖 + Step ID + **對應的文字**。
4. **目標**:預測雜訊。

* **總結**:DDPM 的演算法本質上就是「預測雜訊並扣除」,加入文字只是多了一個參考條件 (Condition)。

<br>
## 🎯 總結與行動 (Key Takeaways)
* **關鍵術語表**:
1. **Reverse Process**:從雜訊逐步還原成圖片的過程(推論/生成)。
2. **Forward Process (Diffusion Process)**:對乾淨圖逐步加噪以製造訓練資料的過程。
3. **Noise Predictor**:Diffusion Model 的核心神經網路,負責預測圖片中的雜訊分佈,而非直接生成圖片。
4. **LAION**:包含 58.5 億張圖文對應的超大規模數據集,是現代生成式 AI 的基石。
* **一句話總結**:Diffusion Model 透過學習「如何預測並去除雜訊」(Reverse Process),並利用龐大的圖文數據集(如 LAION)作為知識庫,將隨機雜訊一步步雕刻成符合文字描述的清晰影像。