# 第十一講:有關影像的生成式AI
>上課筆記
* 上課影片連結
* ==**[有關影像的生成式AI (上) — AI 如何產生圖片和影片 (Sora 背後可能用的原理)](https://youtu.be/5H2bVEmYDNg)**==
* ==**[有關影像的生成式AI (下) — 快速導讀經典影像生成方法 (VAE, Flow, Diffusion, GAN) 以及與生成的影片互動](https://youtu.be/OYN_GvAqv-A)**==
---
## 生成式 AI 與影像的關係
生成式 AI (Generative AI) 的核心是根據輸入的條件 (Condition) 生成對應的輸出。與影像相關的生成式 AI 主要可分為兩大類:
### 兩大類別
1. **以影像為輸入 (Condition)**:模型接收圖片或影片作為輸入,生成其他形式的輸出,例如根據圖片生成文字描述。
2. **以生成影像為目標**:模型接收某種條件 (如文字、草圖、聲音),生成對應的圖片或影片。

### 本堂課重點
本課程將聚焦於**第二類**,探討如何根據給定條件生成圖片或影片的生成式 AI 技術。
---
## 以影像為輸入的生成式 AI 範例:GPT-4o
目前如 GPT-4o 等模型已具備理解圖片的能力。
### 功能展示
* **圖片理解與比較**:可以輸入兩張圖片,詢問模型相關問題,例如比較圖中人物的風格或推測職業。模型能根據衣著、打扮等視覺線索進行分析與推論。
* 範例:輸入兩張風格不同的李宏毅照片,GPT-4o 能評論兩者的穿著風格 (時尚 vs. 專業),並根據此推測可能的職業領域 (娛樂創意 vs. 學術技術)。
* **影片理解 (延伸)**:雖然範例主要展示圖片,但同類技術也可擴展至理解影片內容。
### 模型審美與應對
* 模型經過大量 [RLHF (Reinforcement Learning from Human Feedback)](https://hackmd.io/@Jaychao2099/gen-ai-4#%E7%AC%AC%E4%B8%89%E9%9A%8E%E6%AE%B5%EF%BC%9A%E5%8F%83%E8%88%87%E5%AF%A6%E6%88%B0%EF%BC%8C%E6%89%93%E7%A3%A8%E6%8A%80%E5%B7%A7-Reinforcement-Learning-from-Human-Feedback---RLHF--%E5%9F%BA%E6%96%BC%E4%BA%BA%E9%A1%9E%E5%9B%9E%E9%A5%8B%E7%9A%84%E5%A2%9E%E5%BC%B7%E5%BC%8F%E5%AD%B8%E7%BF%92) 訓練,回答風格趨於謹慎客觀,避免主觀價值判斷 (如直接評論誰更帥)。
* 若被強迫選擇,模型仍可能基於其內部數據做出判斷,但會試圖以委婉、平衡的方式表達,兼顧各方優點。

---
## 以生成影像為目標的生成式 AI
這類 AI 的目標是根據輸入條件創造出新的圖片或影片。
### 文字生成影像:Sora
<style>
.two-column-layout {
column-count: 2;
column-gap: 10px;
max-width: 100%;
overflow: hidden;
}
</style>
* **模型介紹與連結**:由 OpenAI 開發的 [Sora](https://openai.com/sora) 模型,能夠根據文字描述生成高品質的影片。目前尚未公開釋出,多數展示來自 [OpenAI 的部落格](https://openai.com/research/video-generation-models-as-world-simulators)。
* **生成範例 (驚人效果)**:
* 能生成寫實或超現實的場景,例如飛翔的鯨魚、違反物理原則的杯子。
* 選擇非現實場景更能展示其創造力,而非僅從訓練資料中複製。
<div class="two-column-layout">
<video src="https://cdn.openai.com/sora/landing-page/md/014-9_20241122_1737_Whales%20Soaring%20Skyward_remix_01jdban9ykevctk8csk530rqmc.mp4.mp4" controls muted loop width=100%></video>
<video src="https://cdn.openai.com/tmp/s/discussion_0.mp4" controls muted loop width=100%></video>
</div>
* **生成瑕疵**:
* **物理不一致**:背景牆壁不自然移動。
* **物體變形/不穩定**:水生生物形態變化 (海龜變魚) 、狼幼崽數量增生、挖掘出的塑膠椅消失。
* 顯示現階段生成模型仍有其局限性。
### 影像生成影像
將輸入影片轉換為輸出影片,有多種應用:
* **影片續寫**:完成未完成的影片片段。
* **風格轉換**:改變影片風格,如黑白轉彩色 (可用於老電影修復)。
* **畫質提升**:提高低解析度影片的清晰度。

### 其他輸入生成影像
* **Talking Head**:
* **原理**:輸入一段錄音和一張人臉照片,生成該人說話時對應的口型與臉部動態影片。
* **應用**:可快速生成虛擬主播 (VTuber),結合大型語言模型 (LLM) 可實現全自動內容創作。
* **開源範例**:[AniPortrait](https://arxiv.org/abs/2403.17694), [Demo](https://huggingface.co/spaces/ZJYang/AniPortrait_official)

* **[ControlNet](https://arxiv.org/abs/2302.05543)**:
* 允許使用多種條件控制圖像生成,例如:
* 草圖 (Sketch) -> 精細圖像。
* 深度圖 (Depth map) -> 圖像。
* 邊緣圖 (Canny edge) -> 圖像。
* 人體姿勢 (Human pose) -> 對應人像。

---
## 影像與影片的基本構成與 AI 的表示方法
### 圖片:像素構成
* 圖片由像素 (Pixel) 組成,像素數量越多,解析度越高,圖像越清晰。
* 例如:1024x1024 像素的圖片比 16x16 像素的圖片清晰得多。

### 影片:幀 (Frame) 構成
* 影片由連續的圖片 (幀) 構成。
* **幀率 (Frame Per Second, FPS)**:每秒顯示的幀數。
* 足夠高的 FPS (如 YouTube 常用的 24 FPS) 使人眼感覺畫面流暢。
* 低 FPS (如 1 FPS) 會產生卡頓感。
* 遊戲等場景可能需要更高幀率 (如 60 FPS) 以達到絲滑流暢的效果。

### AI 如何看待影像:Patch 技術
現代 AI 模型通常不直接處理原始像素,而是採用基於 Patch 的表示法。
* **[圖片的 Patch 表示](https://arxiv.org/abs/2111.06377)**:
1. **Encoder (編碼器)**:
* 將輸入圖片切割成多個小塊 (Patch)。
* 對每個 Patch 進行壓縮,將其轉換為一個符號 (Token) 或一個低維度向量。
* 將所有 Patch 的表示拉平成一個序列。
2. **Decoder (解碼器)**:
* 接收 Patch 序列。
* 將序列還原回完整的圖片。
* **Encoder/Decoder 進階說明 (非單純降/升解析度)**:
* **Encoder/Decoder 組成**:通常是複雜的類神經網路 (如 Transformer)。
* **目標**:能在壓縮後有效還原出視覺上相似的圖片。
* Decoder 在還原時會考慮 Patch 及其鄰近 Patch 甚至全局資訊,進行複雜的重建,而不僅是簡單放大。
* 這種基於 Patch 的**特徵提取是由類神經網路自動學習的**,不同於傳統的人工設計特徵。
* **[影片的 Patch 表示](https://arxiv.org/abs/2103.15691)**:
* 影片比圖片多了一個**時間維度**,因此壓縮不僅在空間維度 (高、寬) 進行,也在時間維度進行。
* **做法**:
* 可能將相鄰幾幀 (Frame) 的對應位置 Patch 合併進行進一步壓縮,形成 Video Patch。
* 最終影片也被表示為一排 Patch 序列。
* **Sora 的 Patch 技術應用**:
* 根據 OpenAI 的圖示,Sora 也採用了類似的 Patch 技術,將影片通過 Encoder 轉換為包含時空資訊的 Patch 序列,再輸入到 Transformer 進行處理。

---
## 文字生成圖片 (Text-to-Image)
模型根據輸入的文字描述生成對應的圖片。
### 訓練資料:圖文配對
* **需求**:需要大量「圖片」及其對應「文字描述」的配對資料。
* **[LAION 資料集](https://laion.ai/blog/laion-5b/)**:
* **規模**:一個大規模的開源圖文配對資料集,最大版本包含 58 億張圖片。提供搜尋引擎供使用者探索。
* **來源**:主要從網路上爬取圖片及其附帶文字,經過濾 (如移除不當內容、低相關性配對) 後整理而成。
* **風險**:資料版權歸屬不明確。LAION 聲稱僅收集資料,不擁有版權。使用此類資料集訓練模型 (如 Stability AI 的 Stable Diffusion) 存在法律風險,已有畫家提起訴訟。OpenAI 等公司通常不公開其訓練數據來源。

### 訓練方法:Transformer 與 Patch 生成
* **早期:Patch 接龍 (Auto-regressive)**:
* 類似語言模型的文字接龍,模型根據文字和已生成的 Patch 依序生成下一個 Patch。
* 缺點:生成速度慢,圖片 Patch 數量遠超文字 Token 數量,效率不高,較少使用。

* **主流:平行生成 (Non-autoregressive) 與 Attention**:
* **概念**:模型一次性並行生成圖片中所有位置的 Patch。
* **架構**:通常使用 Transformer。輸入文字條件和代表各 Patch 位置的指示符,同時輸出所有 Patch。
* **Attention 機制**:Transformer 內部的 Attention 機制允許每個 Patch 在生成時參考其他 Patch 的生成過程,確保生成 Patch 之間的關聯性和圖像的整體一致性。

* **平行生成的實際做法與挑戰 (腦補問題)**:
* 實際上,模型 (如 Transformer) 會同時接收所有位置 (例如 1 到 16) 的生成請求,並一次性輸出所有 16 個 Patch。
* Attention 有助於協調,但仍難完全避免「腦補 (Hallucination/Averaging)」問題:若文字描述 (如 "奔跑的狗") 對應多種可能的圖像 (哈士奇 vs. 柴犬),模型可能在不同 Patch 位置試圖繪製不同的狗,導致圖像混亂或不協調。此問題會在後續方法中進一步探討。
### 評量方法:CLIP Score
如何量化評估生成圖片的好壞?
* **人類評估**:最可靠,但耗時費力。
* **[CLIP 模型](https://arxiv.org/abs/2103.00020)**:
* **原理**:訓練一個模型 (CLIP) 來判斷「圖片」和「文字描述」的匹配程度。訓練時,給予匹配的圖文對高分,不匹配的 (隨機組合的) 圖文對低分。
* **CLIP Score 應用**:將生成模型產生的圖片與輸入的文字描述一同餵給預訓練好的 CLIP 模型,得到的匹配分數即為 CLIP Score。分數越高,通常代表生成的圖片與文字描述越相關。這是目前衡量圖片生成模型性能的主流指標之一。
* **趨勢**:使用一個 AI 模型 (CLIP) 來評估另一個 AI 模型 (圖像生成模型) 的表現。

### 挑戰:文字難以完整描述圖像
* 「一圖勝千言」,許多視覺細節難以用文字精確捕捉。
* **範例**:嘗試用文字描述家中客廳的時鐘,即使不斷修改描述,生成的圖像與實物仍有差距。
### 解決方案:個人化圖像生成
允許模型學習特定的物體或風格。
* **原理 (S-Star 概念)**:
1. 選擇一個**獨特、平常不使用的符號** (如 $S^*$) 來代表想客製化的特定對象 (如一個特殊雕塑)。避免使用常用詞彙 (如 "狗") 以免污染模型。
2. 提供少量 (如 3-5 張) 該對象的圖片,微調 (Fine-tune) 文字生圖模型,讓模型學習 $S^*$ 對應到這個特定對象。
3. 微調後,即可在文字指令中使用 $S^*$ 來生成包含該客製化對象的圖像。
* **應用範例 ([Textual Inversion](https://arxiv.org/abs/2208.01618), [DreamBooth](https://arxiv.org/abs/2208.12242))**:
* 生成 $S^*$ 的油畫、$S^*$ 的App 圖標、$S^*$ 姿勢的 ELMO、針織版的 $S^*$。

---
## 文字生成影片 (Text-to-Video)
### 基本原理:生成更多 Patch
* 本質上與文字生圖類似,只是需要生成更多 Patch 來構成影片的多個幀。
* 模型 (如 Transformer) 接收文字條件,生成一個非常長的 Patch 序列,該序列通過 Decoder 還原成影片。
### 主要挑戰:運算量爆炸 (Attention)
* 影片包含大量 Patch,導致 Transformer 中的 Attention 計算量極大,使得直接生成長影片或高解析度影片非常困難。
* **計算示例**:
* **假設**:1 分鐘影片、24 FPS、每幀 64x64 個 Patch。
* **總 Patch 數**:24 (FPS) \* 60 (秒) \* 64 \* 64 ≈ 6 百萬個 Patch。
* **Attention 計算量** (每個 Patch 與其他所有 Patch 計算關聯):$(6 \times 10^6)^2 = 36 \times 10^{12}$ (36 兆次) 每次 Attention 計算。

### 解決方案一:改造 Attention 機制
減少 Attention 的計算量。
* **完整 Spatio-temporal Attention (3D)**:原始方式,每個 Patch 考慮影片中所有其他 Patch (跨時間和空間),計算量為 $O(N^2)$,其中 $N$ 是總 Patch 數。

* **簡化方案:Spatial (2D) + Temporal (1D) Attention (偽 3D)**:
* **Spatial Attention (空間注意力)**:每個 Patch 只與同一幀 (Frame) 內的其他 Patch 計算 Attention。確保單幀畫面內的一致性。
* **Temporal Attention (時間注意力)**:每個 Patch 只與其他幀中相同位置的 Patch 計算 Attention。確保時間上的連貫性。

* **結合**:將 Spatial Attention 和 Temporal Attention 交替堆疊使用,模擬 3D Attention 的效果。

* **運算量比較 (千倍差距)**:
* 假設條件同上 (1 分鐘, 24 FPS, 64x64 patches/frame)。
* **Spatial Attention (每幀獨立算)**:$(64 \times 64)^2 \times 1440 \approx 240$ 億次。
* **Temporal Attention (跨幀同位置算)**:$1440^2 \times (64 \times 64) \approx 85$ 億次。
* **偽 3D (兩者相加)**:約 325 億次。
* 相比於原始 3D Attention 的 36 兆次,計算量減少了約 1000 倍。這是目前影片生成模型常用的技術。
### 解決方案二:多階段生成 (Pipeline)
將複雜的生成任務分解為多個較簡單的步驟。
* **概念**:使用一系列生成模型,每個模型負責一部分任務,逐步提升影片品質。
* **解析度提升**:先生成低解析度影片,再通過後續模型逐步提高每一幀的解析度。
* **幀率提升**:先生成低幀率影片,再通過後續模型在現有幀之間插入新的幀 (Interpolation),提高幀率。

* **範例:[Imagen Video](https://arxiv.org/abs/2210.02303)**:
* Google 的 Imagen Video 模型採用了多階段流程:
1. 基礎模型生成極低解析度、低幀率的影片 (16x40x24, 3fps)。
2. 多個 Temporal Super-Resolution (TSR) 模型逐步提高幀率 (3->6->12->24fps)。
3. 多個 Spatial Super-Resolution (SSR) 模型逐步提高解析度 (40x24 -> ... -> 1280x768)。
* 每個階段的模型只需專注於特定任務,降低了單個模型的複雜度。

---
## 經典影像生成方法介紹
探討幾種歷史上重要且仍在使用的影像生成模型架構。
### 核心問題:一文對多圖的學習困難
* **問題重述**:同一個文字描述 (如 "奔跑的狗") 可能對應多種非常不同的圖像 (草原哈士奇 vs. 都市柴犬)。
* **學習困境**:若訓練數據包含多種可能的輸出,模型 (如 Transformer) 會無所適從,不知道該學習生成哪一種圖像,可能導致輸出混亂或模糊 (試圖平均所有可能性)。就像老闆指令反覆 (往東又往西),員工會無所適從。

### 解決思路:補充文字未描述的資訊 (腦補/Latent Variable)
* **想法**:文字本身不足以確定唯一的圖像,需要額外的「隨機性」或「隱藏資訊」 (稱為 Latent Variable 或 Noise) 來決定具體生成哪種可能的圖像。
* **類比**:就像人類畫畫,除了主題 (文字描述),還需要一些靈感或隨機的細節選擇 (Latent Variable) 才能完成獨一無二的作品。
* **實現**:設計模型架構,能夠在生成過程中引入這種 Latent Variable。

### [Autoencoder](https://hackmd.io/@Jaychao2099/imrobot9) (AE)
* **架構**:
* **Encoder (編碼器)**:輸入一張圖片,將其壓縮成一個低維度的 Latent Vector (潛在向量) $z$。這個 $z$ 應該捕捉圖片中文字難以描述的關鍵資訊。
* **Decoder (解碼器)**:輸入 Latent Vector $z$ (以及可能的文字條件),嘗試重建出原始圖片。
* **訓練目標**:共同訓練 Encoder 和 Decoder,目標是讓 Decoder 重建出的圖片與 Encoder 的輸入圖片盡可能相似 (最小化重建誤差)。
* **Latent Variable**:Encoder 輸出的 $z$ 就是 Latent Variable。它不需要是人類可讀的文字,只需是模型能理解的數值向量即可。向量的不同維度可能對應圖像的不同屬性 (如狗的品種、背景等)。

### Variational Autoencoder (VAE)
* **與 AE 的關係**:VAE 是 AE 的一種變體,特別強調 Latent Space 的良好機率分佈特性 (通常是高斯分佈)。
* **訓練**:類似 AE,訓練 Encoder 和 Decoder 使輸入與輸出盡量一致。Encoder 學習將圖片映射到一個機率分佈 (均值和變異數),Decoder 從這個分佈中採樣一個 Latent Vector $z$ 來重建圖片。

* **生成方式**:在生成新圖片時:
1. 不使用 Encoder。
2. 從預先定義好的機率分佈 (如標準高斯分佈) 中隨機採樣一個 Latent Vector $z$ (相當於擲骰子決定腦補資訊)。
3. 將採樣到的 $z$ 和文字條件一起輸入 Decoder,生成圖片。
* 不同的隨機 $z$ 會導致生成不同的圖片,即使文字條件相同,解決了一文對多圖的問題。

> 參考:[[2016 VAE 上課影片]](https://youtu.be/8zomhgKrsmQ)
### Flow-Based Model
* **與 VAE 的異同**:
* **相似**:也使用 Latent Variable (Noise) $z$ 來控制生成。
* **不同**:Flow-Based Model 的 Decoder 被設計成數學上「可逆 (Invertible)」的。這意味著存在一個反函數 $f^{-1}$,可以將圖片精確地映射回 Latent Vector $z$。

* **優點**:
* 這個 Decoder 的反函數 $f^{-1}$ 直接就可以作為 Encoder 使用。
* 因此,只需要訓練一個可逆的 Decoder $f$,就同時擁有了 Encoder $f^{-1}$,無需像 VAE 那樣訓練兩個獨立的網絡。
* **Noise 的資訊性 (人臉表情操控範例)**:
* Flow-Based Model (以及 VAE) 中的 Latent Vector $z$ (常稱為 Noise) 並非無意義的雜訊,而是包含了豐富的圖像資訊。

* **實驗**:
1. 將多張臭臉照片通過 Encoder ($f^{-1}$) 得到對應的 $z$,平均這些 $z$ 得到「臭臉向量」。
2. 同樣方法得到「笑臉向量」。
3. 對於一張輸入圖片,先通過 Encoder 得到其 $z$。
4. 修改 $z$:減去「臭臉向量」,加上「笑臉向量」。
5. 將修改後的 $z'$ 輸入 Decoder ($f$),生成的圖片中人物笑容會更燦爛。
* 證明可以直接操控 Latent Variable 來編輯圖像屬性。
> 參考:
> * [OpenAI - Glow: Better reversible generative models](https://openai.com/blog/glow/)
> * [[2019 Flow-Based 上課影片]](https://youtu.be/uXY18nzdSsM)
### Diffusion Model
目前非常主流的生成模型架構 (Sora 也使用)。

* **核心概念**:通過「反覆去噪 (Denoise)」的過程生成圖片。
* **生成過程 (Reverse Process)**:
1. 從一個**完全隨機的雜訊圖像**開始。
2. 反覆使用一個 Denoise 模組 (相當於 Decoder) 數百至數千次。
3. 在每一步,Denoise 模組根據當前帶噪圖像和文字條件,預測並去除一部分雜訊,使圖像逐漸變得清晰,最終形成目標圖像。

* **訓練方式 (Forward Process)**:
1. 獲取訓練資料中的**乾淨圖片**。
2. **人為地**、逐步地向圖片中添加隨機雜訊,直到圖片完全變成雜訊。這個過程稱為 Forward Process。
3. **訓練 Denoise 模組**:給定某一步加噪後的圖片和文字條件,讓模型學習預測出「被加上的雜訊」或者「加噪前的圖片」。
* **優點**:通常能生成品質非常高、細節豐富的圖像。
* **缺點**:生成速度較慢,因為需要多次迭代 Denoise 步驟。目前研究熱點是**如何減少迭代次數** (如 10 次、5 次甚至 1 次) 同時保持高品質。
* **[Diffusion Transformer (DiT)](https://arxiv.org/abs/2212.09748)**:
* 將 Diffusion Model 的 Denoise 模組用 Transformer 架構實現。
* 處理圖像時,輸入帶噪的 Patch 序列和文字條件,Transformer 預測去噪後的 Patch 序列。
* 這個過程重複 T 次。
* Sora 的論文/部落格中暗示使用了類似 DiT 的技術。

* **與 VAE/Flow 的類比**:
* **Decoder**:Diffusion 的 Reverse Process (反覆去噪)。
* **Encoder**:Diffusion 的 Forward Process (人為逐步加噪),這個過程不需要訓練模型。

> 參考:[[2023 Diffusion 上課影片系列]](https://youtube.com/playlist?list=PLJV_el3uVTsNi7PgekEUFsyVllAJXRsP-)
### Generative Adversarial Network (GAN)
[生成對抗網路](https://hackmd.io/@Jaychao2099/imrobot7),採用與上述模型不同的哲學。
* **核心概念**:包含兩個互相競爭的網路:
* **生成器 (Generator)**:試圖生成逼真的假圖片 (或影片)。
* **判別器 (Discriminator)**:試圖區分真實圖片和 Generator 生成的假圖片。
* **運作方式**:
1. **訓練 Discriminator**:給 Discriminator 看真實圖片 (來自訓練集) 和 Generator 生成的假圖片,教它區分真假 (類似 [CLIP](https://hackmd.io/@Jaychao2099/gen-ai-11#%E8%A9%95%E9%87%8F%E6%96%B9%E6%B3%95%EF%BC%9ACLIP-Score) 的訓練,但目標是判斷真偽而非圖文匹配)。通常假設真實圖片為好樣本,生成圖片為壞樣本。
2. **訓練 Generator**:Generator 生成圖片,將其餵給 Discriminator。Generator 的目標是生成能夠「騙過」Discriminator 的圖片,即使 Discriminator 認為其生成是「真」的。Generator 根據 Discriminator 的反饋調整參數。
3. **交替訓練**:Generator 和 Discriminator 交替訓練,互相促進,Generator 越能生成逼真圖片,Discriminator 越能精準判別,形成對抗提升。
* **優點**:
* 能**有效解決一文多圖問題**,因為 Generator 的目標不是匹配某個特定真圖,而是產生任何能讓 Discriminator 認為「好」 (逼真且符合條件) 的圖即可,沒有單一標準答案。
* 生成的圖像**通常比較銳利**。
* **是否需要 Noise 輸入?**:理論上,在有 Discriminator 指導的情況下,即使不給 Generator 輸入隨機雜訊,也可能訓練成功。但實務上多數 GAN 仍會給 Generator 輸入 Noise Vector $z$ 來增加生成的多樣性。
* **與 [RLHF](https://hackmd.io/@Jaychao2099/gen-ai-4#%E7%AC%AC%E4%B8%89%E9%9A%8E%E6%AE%B5%EF%BC%9A%E5%8F%83%E8%88%87%E5%AF%A6%E6%88%B0%EF%BC%8C%E6%89%93%E7%A3%A8%E6%8A%80%E5%B7%A7-Reinforcement-Learning-from-Human-Feedback---RLHF--%E5%9F%BA%E6%96%BC%E4%BA%BA%E9%A1%9E%E5%9B%9E%E9%A5%8B%E7%9A%84%E5%A2%9E%E5%BC%B7%E5%BC%8F%E5%AD%B8%E7%BF%92) 的類比**:
* GAN 的 **Discriminator** 扮演的角色類似於 RLHF 中的 **Reward Model**,都是對生成結果進行評分。
* **主要區別**:Reward Model 的學習依賴「人類標註」的好壞評分;而 Discriminator 的學習通常基於一個簡單假設:「真實數據=好,生成數據=壞」,不需要額外的人工標註。
* **GAN 作為外掛**:
* GAN 的對抗訓練機制可以被視為一種「強化」生成模型的方法。
* 它可以與 VAE、Flow-Based Model 或 Diffusion Model 結合使用。例如,可以在 VAE 的 Decoder 後面再加一個 Discriminator,用對抗損失來進一步提升生成圖片的品質和真實感。
* 範例論文:
* [VAE+GAN](https://arxiv.org/abs/1512.09300)
* [Flow+GAN](https://arxiv.org/abs/1705.08868)
* [Diffusion+GAN](https://arxiv.org/abs/2206.02262)
> 參考:
> * [[2018 GAN 上課影片系列]](https://youtube.com/playlist?list=PLJV_el3uVTsMq6JEFPW35BCiOQTsoqwNw)
> * [【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN)](https://hackmd.io/@Jaychao2099/imrobot7)
---
## 互動式影像生成:Genie
探索讓人類與生成影像進行即時互動的可能性。
### 目標:即時互動與操控
* **願景**:能否像玩遊戲一樣,實時控制生成式 AI 產生的影像內容?例如,用方向鍵控制 Sora 生成影片中的人物行走路徑,創造開放世界體驗。
<div class="two-column-layout">
<video src="https://cdn.openai.com/tmp/s/title_0.mp4" controls muted loop width=100%></video>
<video src="https://cdn.openai.com/tmp/s/simulation_7.mp4" controls muted loop width=100%></video>
</div>
### 模型:[Genie (Generated Interactive Environments)](https://arxiv.org/abs/2402.15391)
* Google 的研究,專注於生成可互動的 2D 橫向捲軸遊戲環境。
* **輸入**:當前遊戲畫面 (frame $t$) + 使用者動作 (action $t$)。
* **輸出**:下一個遊戲畫面 (frame $t+1$)。
* **運作流程**:模型根據當前畫面和玩家按下的按鈕 (如右、跳),預測並生成下一幀的畫面,實現遊戲的動態進程。

### 訓練挑戰:缺乏動作標籤資料
* **理想數據**:需要大量的 (frame $t$, action $t$, frame $t+1$) 三元組數據。
* **現實困境**:容易從網路上收集到大量遊戲影片 (只有 frame 序列),但很難獲知玩家在每一幀具體按下了哪個按鈕 (action)。

### 解決方案:Latent Action Model (類 Autoencoder)
* **概念**:既然缺少真實動作標籤,就訓練一個模型來「推斷」可能的動作。
* **架構**:
1. **動作抽取模型 (Action Extractor)**:輸入相鄰的兩幀遊戲畫面 (frame t, frame t+1),試圖推斷出導致畫面從 t 變到 t+1 的潛在動作 (Latent Action)。
2. **畫面生成模型 (Dynamics Model)**:輸入當前畫面 (frame t) 和由動作抽取模型推斷出的 Latent Action,生成預測的下一幀畫面 (predicted frame t+1)。
3. **聯合訓練**:同時訓練這兩個模型,目標是讓畫面生成模型產生的 predicted frame t+1 與真實的 frame t+1 盡可能相似。
* 如果最終能成功重建下一幀畫面,意味著動作抽取模型可能成功推斷出了有意義的 Latent Action。

* **Latent Action 的發現**:
* 模型學習到的 Latent Action (例如編號 1-8 的動作) 雖然沒有預先定義含義,但實驗發現它們確實對應了遊戲中一致的操控效果。
* 例如,輸入同一串 Latent Action 序列 (如 6, 6, 7, 6, 7, 6, 5, 5, 2, 7),在不同遊戲場景下,都會使角色做出類似「向右跳躍」的動作。
<div class="two-column-layout">


</div>
### 應用潛力:
* **即時遊戲生成**:可以將任意圖片 (如兒童塗鴉、真實照片) 作為初始畫面,利用 Genie 模型即時生成互動遊戲。
* **模擬器**:可應用於更複雜的場景,如:
* **駕訓模擬**:生成開放世界的駕駛環境,使用者通過模擬方向盤與之互動,無需真實路考即可練習。與傳統賽車遊戲不同,場景可由 AI 無限生成。
---
>## 延伸閱讀
> * **[Vision-Language Modeling 綜述論文](https://arxiv.org/abs/2405.17247)**
> * **[Video Diffusion Models 綜述論文](https://arxiv.org/abs/2405.03150)**
> * **相關課程影片**:
> * [VAE - 2016 機器學習](https://youtu.be/8zomhgKrsmQ)
> * [GAN 系列 - 【2018 機器學習及其深層與結構化】](https://youtube.com/playlist?list=PLJV_el3uVTsMq6JEFPW35BCiOQTsoqwNw)
> * [Flow-based - 【2019 機器學習】](https://youtu.be/uXY18nzdSsM)
> * [Diffusion 系列 - 【2023 生成式 AI 導論】](https://youtube.com/playlist?list=PLJV_el3uVTsNi7PgekEUFsyVllAJXRsP-)
> * [生成模型與潛在空間 (Generative Modelling in Latent Space) - by DeepMind](https://hackmd.io/@Jaychao2099/Gen-Latent-Space)
---
回[主目錄](https://hackmd.io/@Jaychao2099/aitothemoon/)