AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
45/100 第五週:📌 生成對抗網路 GAN
45.Conditional GAN (cGAN) 🎯 指定條件生成指定類別圖像!
________________________________________
🎯 單元導讀:
一般 GAN 僅能「自由發揮」生成資料,但若你想指定類別、控制風格,怎麼辦?
這就是 條件式生成對抗網路(Conditional GAN,簡稱 cGAN) 的任務 ——
讓你能輸入指定「條件」,讓生成器根據條件創造對應資料!
無論是要生成「笑臉」、「戴眼鏡的人」、「數字7」,甚至是「狗」與「貓」的圖像,cGAN 都能因應條件實現指定控制。
________________________________________
📌 一、cGAN 是什麼?
➤ 定義:
Conditional GAN(條件式生成對抗網路)是一種擴充版的 GAN 架構,在生成器與判別器中都引入額外的條件資訊(如類別標籤、文字描述、屬性向量等),使模型能根據指定條件生成對應特徵的資料。
📌 舉例來說:
若條件是「數字 3」,則生成器會試圖生成一張看起來像數字 3的圖片,而判別器的任務則是判斷圖像是否既真實又符合條件 y。
________________________________________
🧠 二、cGAN 架構設計
🔷 1. 條件輸入方式
輸入方式 : 說明
向量拼接(Concat) : 最常見,把條件 y 與雜訊向量 z 串接後一起輸入
條件嵌入(Embedding) : 將離散類別編碼成連續向量,有助於語義學習
圖像通道拼接 : 將類別條件作為額外通道附加於圖像上
🔷 2. 模型流程示意:
G: [z, y] → 全連接 → ConvT → 圖像(條件生成)
D: [x, y] → Conv → 判別真假與條件匹配性
________________________________________
🎨 三、應用實例
任務場景 說明
🖼️ MNIST 數字生成 指定要生成數字「5」、「8」等
😃 臉部特徵控制 生成「有笑容的臉」、「戴眼鏡」、「男/女」等
🐱 圖像轉換(pix2pix) 將線條畫轉為彩圖、黑白轉彩色、白天轉夜晚等
🏷️ Text-to-Image 根據文字描述生成對應圖片(進階:Text-cGAN)
________________________________________
📊 四、cGAN 的損失函數
在原始 GAN 的基礎上,cGAN 將條件變數
y 加入到生成器與判別器中,使模型學會「依據指定條件」進行生成與判斷。
🧠 功能說明:
判別器 D(x, y):
判斷圖像
x 是否為真實圖像且符合條件 y(例如指定類別或文字描述)。
生成器 G(z, y):
接收隨機雜訊 𝑧和條件 𝑦
,試圖生成一張看起來真實且符合條件的圖像,騙過判別器。
✅ 簡單理解:
對 判別器 D 而言:學會判斷「這張圖是不是對應這個條件的真實圖?」
對 生成器 G 而言:試圖生成一張「看起來像這個條件對應的圖」,來騙過 D
📌 關鍵差異在於:
原始 GAN 只關心真假,cGAN 則是「真假 + 條件正確性」。
如你需要補上圖示(例如 y 串接進 G 和 D 的流程圖),可幫你繪製視覺版。是否需要?
________________________________________
🧩 五、優點與挑戰
✅ 優點:
• 可控性高:可依據輸入條件生成指定內容
• 應用廣泛:涵蓋分類圖像生成、風格轉換、資料增強等
• 結合語義資訊:可搭配 NLP 技術進行語義生成
⚠️ 挑戰:
• 條件學習不穩:模型可能忽略條件 y,需搭配對抗 + 誤差監督策略
• 多樣性不足:容易學出重複樣式,可加入潛變量噪音提升多樣性
• 數據需對齊:訓練需有標籤或條件配對資料集
________________________________________
📚 六、小結與學習啟示:
✅ cGAN 為 GAN 注入「控制力」,打開了可調式生成 AI 的大門。
✅ 無論是圖像分類生成、語義轉換、風格導向,皆可活用條件機制。
✅ 是應用導向 GAN 中最具實用價值的架構之一。
________________________________________
💬 問題討論:
1. 如果生成器不參考條件資訊,會出現什麼問題?
➡️ 生成的圖像將無法對應指定類別或條件,例如要求生成「狗」,卻隨機產生「貓」、「車」等圖像,失去控制能力。
2. 怎麼驗證生成的圖像是否真的符合條件?
➡️ 可使用分類器驗證(Pre-trained Classifier),輸入生成圖後看預測結果是否與條件一致;或人工標註比對圖像與條件相符性。
3. 能不能把「條件」變成語音或句子?你會怎麼設計?
➡️ 可以!這就是**文字生成圖像(Text-to-Image)**的應用,例如 T2F-GAN 或 AttnGAN。
語音可先轉文字(ASR),再用 文字編碼器(如 RNN、Transformer) 將句子轉為條件向量餵給生成器。