无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

DL:生成對抗網絡的基本原理與 PyTorch 實現

0
分享至

生成對抗網絡(Generative Adversarial Network,GAN)是深度學習中非常重要的一類生成模型。與分類模型、回歸模型不同,GAN 的目標不是根據輸入判斷類別,也不是預測一個連續數值,而是學習真實數據的分布,并生成看起來像真實數據的新樣本。

例如:

? 生成一張手寫數字圖片

? 生成一張看起來真實的人臉圖像

? 修復圖像缺失區域

? 提升圖像分辨率

? 把一種圖像風格轉換為另一種風格

? 根據條件信息生成指定類型的樣本

GAN 的核心思想可以概括為:讓兩個神經網絡相互競爭,一個負責生成假樣本,另一個負責判斷樣本真假。通過這種對抗過程,生成器逐漸學會生成越來越接近真實數據的樣本。

一、為什么需要生成對抗網絡


圖 1:從判別模型到生成模型

在很多深度學習任務中,我們訓練的是判別模型(Discriminative Model)。判別模型的目標是根據輸入判斷結果。

例如:

? 輸入圖像 → 判斷是貓還是狗

? 輸入評論 → 判斷是正面還是負面

? 輸入房屋信息 → 預測房價

這類模型關注的是:給定輸入 x,預測目標 y。

可以寫成:

其中:

? x 表示輸入數據

? y 表示目標標簽

? p(y|x) 表示在給定 x 的條件下,y 出現的概率

但是,生成模型(Generative Model)關注的是另一個問題:數據本身是如何產生的?

它希望學習真實數據的分布,并從這個分布中生成新樣本。

可以簡單寫為:

其中:

? x 表示數據樣本

? p(x) 表示數據樣本出現的概率分布

例如,如果模型學習的是手寫數字圖像分布,那么它應該能夠生成新的手寫數字圖片;如果模型學習的是人臉圖像分布,那么它應該能夠生成新的人臉圖像。

GAN 的特別之處在于:它不直接寫出一個明確的數據分布公式,而是通過兩個網絡的對抗訓練,讓生成器逐漸逼近真實數據分布。

可以簡單理解為:

? 判別模型:學習如何判斷

? 生成模型:學習如何創造

GAN 通過“生成—辨別”的對抗過程學習生成。

二、GAN 的基本結構

GAN 通常由兩個神經網絡組成:

? 生成器

? 判別器

生成器(Generator)負責“生成假樣本”,判別器(Discriminator)負責“判斷真假”。二者在訓練過程中相互競爭、共同變化。

圖 2:GAN 的基本結構

1、生成器:從隨機噪聲生成樣本

生成器的輸入通常是一個隨機噪聲向量 z。這個 z 可以來自或均勻分布。

生成器把 z 映射為一個假樣本:

其中:

? z 表示隨機噪聲向量

? G 表示生成器

? G(z) 表示生成器輸出的假樣本

? x? 表示生成樣本

如果任務是生成手寫數字圖像,那么 G(z) 就是一張模型生成的手寫數字圖片。

生成器的目標是:讓生成樣本盡可能像真實樣本,使判別器難以分辨真假。

2、判別器:判斷樣本是真是假

判別器接收一個樣本 x,并輸出它是真實樣本的概率:

其中:

? D 表示判別器

? x 表示輸入樣本

? D(x) 表示判別器認為 x 來自真實數據的概率

如果 D(x) 接近 1,表示判別器認為樣本很可能是真實樣本。

如果 D(x) 接近 0,表示判別器認為樣本很可能是生成器偽造的樣本。

判別器的目標是:盡可能把真實樣本判斷為真,把生成樣本判斷為假。

3、生成器與判別器的對抗關系

GAN 的訓練過程類似一個“生成者”和“鑒別者”的博弈:

? 生成器 G:盡量生成更逼真的假樣本

? 判別器 D:盡量分辨真實樣本和生成樣本

隨著訓練進行:

? 判別器會越來越擅長識別真假

? 生成器會根據判別器反饋不斷改進

? 當生成器足夠強時,判別器很難區分真假樣本

理想情況下,生成器學到的數據分布會逐漸接近真實數據分布。

三、GAN 的對抗訓練目標

GAN 的核心是對抗訓練。它不是訓練一個網絡,而是同時訓練生成器 G 和判別器 D。

判別器希望真實樣本被判斷為真,生成樣本被判斷為假;生成器則希望生成樣本被判別器判斷為真。


圖 3:GAN 的對抗訓練目標

1、判別器的目標

對于真實樣本 x,判別器希望:

對于生成樣本 G(z),判別器希望:

因此,判別器希望最大化:

其中:

? D(x) 表示判別器認為真實樣本為真的概率

? D(G(z)) 表示判別器認為生成樣本為真的概率

? log D(x) 鼓勵真實樣本被判斷為真

? log(1 ? D(G(z))) 鼓勵生成樣本被判斷為假

從直觀角度看,判別器在學習:

? 真實樣本 → 1

? 生成樣本 → 0

2、生成器的目標

生成器希望自己的輸出 G(z) 被判別器判斷為真,也就是希望:

在原始 GAN 目標中,生成器試圖最小化:

但在實際訓練中,常用非飽和形式,讓生成器最大化:

等價地,可以最小化:

其中:

? G(z) 表示生成器生成的假樣本

? D(G(z)) 表示判別器認為該假樣本為真的概率

? ?log D(G(z)) 越小,說明生成器越容易騙過判別器

這種寫法在訓練早期通常能提供更強的梯度信號。

3、GAN 的極小極大目標

原始 GAN 的總體目標可以寫為:

其中:

? G 表示生成器

? D 表示判別器

? p_data(x) 表示真實數據分布

? p_z(z) 表示噪聲分布

? x ~ p_data(x) 表示真實樣本來自真實數據分布

? z ~ p_z(z) 表示噪聲來自預設噪聲分布

? E 表示期望

這個目標的含義是:

? 判別器 D 盡量最大化真假區分能力

? 生成器 G 盡量最小化判別器對生成樣本的識別能力

這也是 GAN 名稱中“對抗”的來源。

四、GAN 的訓練過程

GAN 的訓練通常不是一次性同時更新兩個網絡,而是交替更新判別器和生成器。

一個典型訓練流程如下:

1. 從真實數據集中取一批真實樣本

2. 從噪聲分布中采樣一批隨機向量

3. 生成器根據噪聲生成一批假樣本

4. 用真實樣本和假樣本訓練判別器

5. 再采樣一批噪聲,生成假樣本

6. 固定判別器,用判別器反饋訓練生成器

7. 重復多輪訓練


讀取中... 讀取中...

圖 4:GAN 的訓練閉環

1、訓練判別器

訓練判別器時,需要同時使用真實樣本和生成樣本。

真實樣本的標簽設為 1:

真實樣本 → 標簽 1

生成樣本的標簽設為 0:

生成樣本 → 標簽 0

判別器損失可以寫為:

其中:

? L_D 表示判別器損失

? m 表示批量大小

? x? 表示第 i 個真實樣本

? z? 表示第 i 個噪聲向量

? G(z?) 表示第 i 個生成樣本

? D(x?) 表示判別器認為真實樣本為真的概率

? D(G(z?)) 表示判別器認為生成樣本為真的概率

訓練判別器時,生成器通常不更新。

在 PyTorch 中,常用 .detach() 阻斷生成樣本到生成器的梯度傳播:

fake_images = generator(z).detach()

這樣判別器訓練時只更新判別器參數,不會更新生成器參數。

2、訓練生成器

訓練生成器時,生成器希望判別器把生成樣本判斷為真。

生成器損失常寫為:

其中:

? L_G 表示生成器損失

? z? 表示第 i 個噪聲向量

? G(z?) 表示生成器生成的假樣本

? D(G(z?)) 表示判別器認為假樣本為真的概率

訓練生成器時,判別器參與前向計算,但判別器參數不更新;它主要為生成器提供梯度信號,告訴生成器如何調整輸出,使生成樣本更容易被判別為真。

從直觀角度看:

? 判別器訓練:提高辨別真假能力

? 生成器訓練:提高欺騙判別器能力

這兩個過程交替進行,就形成了 GAN 的對抗訓練。

五、GAN 為什么能生成數據

GAN 能生成數據的關鍵,在于生成器不是直接復制訓練樣本,而是學習把隨機噪聲映射到數據空間。


圖 5:從噪聲空間到數據空間的映射

可以把生成器理解為一個函數:

其中:

? z 表示低維隨機噪聲

? x? 表示生成樣本

? G 表示從噪聲空間到數據空間的映射

訓練開始時,G(z) 通常像隨機噪聲,沒有明顯結構。隨著訓練進行,判別器不斷指出生成樣本與真實樣本之間的差異,生成器則通過梯度更新逐漸修正自己的輸出。

在理想情況下:

其中:

? p_g(x) 表示生成器學到的生成分布

? p_data(x) 表示真實數據分布

? ≈ 表示兩者逐漸接近

此時,從噪聲 z 中采樣,再輸入生成器,就可以得到看起來像真實數據的新樣本。

六、GAN 的主要問題

GAN 的思想非常優雅,但訓練并不容易。相比普通分類網絡,GAN 更容易出現不穩定現象。


圖 6:GAN 的主要問題:訓練不穩定與模式崩塌

1、訓練不穩定

GAN 中有兩個網絡同時博弈。如果判別器太強,生成器可能得不到有效梯度;如果生成器變化太快,判別器又可能跟不上。

這會導致訓練過程震蕩,很難像普通監督學習那樣穩定下降。

2、模式崩塌

模式崩塌(Mode Collapse)是 GAN 中非常經典的問題。它指的是生成器只學會生成少數幾種樣本,而沒有覆蓋真實數據分布中的多樣性。

例如,在手寫數字生成任務中,生成器可能只生成類似數字 1 或 7 的圖像,而很少生成其他數字。

從直觀角度看:真實數據有很多種模式,生成器只學會了其中少數模式。

這會導致生成結果看似逼真,但多樣性不足。

3、評價困難

分類模型可以用準確率、精確率、召回率等指標評價;回歸模型可以用 MSE、MAE、R2 等指標評價。

但生成模型的評價更復雜,因為我們不僅關心生成樣本是否清晰,還關心:

? 是否真實

? 是否多樣

? 是否覆蓋真實數據分布

? 是否與條件輸入一致

? 是否具有語義合理性

因此,GAN 的評價通常比普通監督學習任務更困難。

4、對超參數敏感

GAN 對學習率、網絡結構、優化器、批量大小、歸一化方法等都比較敏感。不同設置可能導致訓練效果差異很大。

常見改進方法包括:

? 使用更穩定的損失函數

? 使用歸一化技巧

? 調整生成器和判別器的更新頻率

? 使用梯度懲罰

? 使用更合理的網絡結構

七、PyTorch 實現:使用 GAN 生成手寫數字

下面使用 PyTorch 構建一個簡單 GAN,用于生成 MNIST 風格的手寫數字圖像。


圖 7:GAN 生成手寫數字的訓練與輸出流程

為了突出 GAN 的基本訓練流程,這里使用全連接網絡實現生成器和判別器。真實圖像生成任務中,通常會使用卷積結構,例如 DCGAN。

1、導入庫

這里使用:

? DataLoader 按批量加載數據

? torchvision.datasets 加載 MNIST 數據集

? torchvision.transforms 進行圖像預處理

2、設置超參數

MNIST 圖像大小為 28 × 28,因此展平后大小為:

3、準備 MNIST 數據集

這里將圖像標準化到大致 ?1 到 1 的范圍。后面生成器最后使用 Tanh(),輸出范圍也是 ?1 到 1,這樣輸入輸出尺度更匹配。

4、定義生成器

生成器接收隨機噪聲 z,輸出一張展平后的圖像。

        

生成器結構可以概括為:

隨機噪聲 z → 全連接層 → ReLU → 全連接層 → ReLU → 全連接層 → Tanh → 生成圖像

其中:

? 輸入是長度為 latent_dim 的隨機噪聲

? 輸出是長度為 784 的向量

? Tanh 使輸出范圍接近 ?1 到 1

? 輸出向量可以 reshape 為 1 × 28 × 28 的圖像

5、定義判別器

判別器接收一張圖像,并輸出它是真實圖像的概率。

        

判別器結構可以概括為:

圖像向量 → 全連接層 → LeakyReLU → 全連接層 → LeakyReLU → 全連接層 → Sigmoid → 真假概率

其中:

? 輸入是長度為 784 的圖像向量

? 輸出是 0 到 1 之間的概率

? 越接近 1,表示越像真實圖像

? 越接近 0,表示越像生成圖像

這里為了便于初學者理解,判別器最后顯式使用 Sigmoid(),損失函數使用 BCELoss()。在更穩定的工程寫法中,也可以讓判別器輸出 logits,并使用 BCEWithLogitsLoss()。

6、創建模型、損失函數和優化器

其中:

? generator 表示生成器

? discriminator 表示判別器

? BCELoss 表示二元交叉熵損失

? optimizer_G 用于更新生成器

? optimizer_D 用于更新判別器

? betas=(0.5, 0.999) 是 GAN 中常見的 Adam 參數設置

7、訓練 GAN

GAN 的訓練通常分為兩步:

? 先訓練判別器

? 再訓練生成器

訓練代碼如下:

     

這段代碼體現了 GAN 的核心訓練閉環。

訓練判別器時:

? 真實圖像希望被判為 1

? 生成圖像希望被判為 0

? 使用 fake_images.detach() 避免更新生成器

訓練生成器時:

? 生成器希望生成圖像被判別器判為 1

? 判別器參與前向計算,但目標是更新生成器參數

? 生成器通過判別器反饋改進生成圖像

8、生成并查看圖像

訓練完成后,可以從隨機噪聲生成圖像:

其中:

? z 是隨機噪聲

? generator(z) 生成圖像向量

? view(-1, 1, 28, 28) 把向量還原為圖像形狀

? (fake_images + 1) / 2 把圖像從 ?1 到 1 轉回 0 到 1

八、GAN 的適用場景、局限與擴展方向

GAN 是生成式深度學習的重要代表模型之一。它在圖像生成、圖像編輯、風格遷移等任務中具有重要影響。


圖 8:GAN 的適用場景、局限與擴展方向

1、適用場景

GAN 的常見應用包括:

? 圖像生成

? 圖像修復

? 圖像超分辨率

? 圖像風格遷移

? 數據增強

? 圖像到圖像轉換

? 人臉生成與編輯

例如,超分辨率任務可以利用 GAN 生成更清晰、更自然的細節;圖像到圖像轉換任務可以把草圖轉換為真實圖像,或把白天場景轉換為夜晚場景。

2、主要優勢

GAN 的主要優勢包括:

? 生成樣本通常較清晰

? 能學習復雜數據分布

? 不需要顯式寫出數據分布公式

? 適合圖像生成和圖像編輯任務

? 對抗訓練思想具有很強啟發性

GAN 的重要價值不僅在于某一個具體模型,也在于它提出了一種新的訓練范式:通過兩個網絡的競爭推動生成能力提升。

3、主要局限

GAN 的主要局限包括:

? 訓練不穩定

? 容易出現模式崩塌

? 評價指標不如監督學習直觀

? 對超參數和網絡結構敏感

? 訓練過程需要平衡生成器和判別器

? 在復雜任務中調試成本較高

這些問題使 GAN 的訓練通常比普通分類模型更困難。

4、擴展方向

從基礎 GAN 出發,可以繼續學習以下模型:

? DCGAN:使用卷積結構改進圖像生成

? CGAN:加入條件信息控制生成結果

? WGAN:改進訓練穩定性

? WGAN-GP:加入梯度懲罰,進一步穩定訓練

? CycleGAN:用于無配對圖像到圖像轉換

? StyleGAN:高質量人臉與圖像生成的重要代表

? Pix2Pix:用于有配對圖像到圖像轉換

近年來,擴散模型(Diffusion Model)在許多生成任務中表現非常突出,但 GAN 仍然是理解生成建模和對抗訓練思想的重要基礎。

小結

生成對抗網絡通過生成器和判別器的對抗訓練學習數據分布。生成器從隨機噪聲生成樣本,判別器判斷樣本真假,二者交替優化,使生成結果逐漸接近真實數據。GAN 在圖像生成和圖像編輯中影響深遠,但也存在訓練不穩定、模式崩塌和評價困難等問題。

點贊有美意,贊賞是鼓勵

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
5000萬砸懵乒壇!張本一家全入編,國乒根基被抄了?

5000萬砸懵乒壇!張本一家全入編,國乒根基被抄了?

八卦阿彌
2026-06-11 12:09:42
好消息!網約車車等人時間改了,等滿3分鐘就能取消訂單

好消息!網約車車等人時間改了,等滿3分鐘就能取消訂單

呼呼歷史論
2026-06-13 01:00:48
墻倒眾人扶!被人民日報點名的李維剛,再次證明真誠才是必殺技

墻倒眾人扶!被人民日報點名的李維剛,再次證明真誠才是必殺技

舊事別提
2026-06-12 07:09:01
“墨西哥吳鎮宇”比肩梅西C羅 奧喬亞六戰世界杯

“墨西哥吳鎮宇”比肩梅西C羅 奧喬亞六戰世界杯

大象新聞
2026-06-12 08:33:18
新一輪人事調整!涉及福建多家醫院領導崗位

新一輪人事調整!涉及福建多家醫院領導崗位

福建衛生報
2026-06-10 12:14:49
中學生深夜看色情網站 上千部隱晦內容已吸引上億次觀看!

中學生深夜看色情網站 上千部隱晦內容已吸引上億次觀看!

閃電新聞
2026-06-12 07:10:35
王守業貪污1.6億,2005年“雙規”后卻被放出,他叫囂:我擺平了

王守業貪污1.6億,2005年“雙規”后卻被放出,他叫囂:我擺平了

帝哥說史
2026-06-02 21:40:03
生育率的“回旋鏢”還是呼啦啦來了

生育率的“回旋鏢”還是呼啦啦來了

新浪財經
2026-05-18 07:42:35
貴州女子剛生產完,丈夫沖到產房將其腦袋砍下:她死有余辜

貴州女子剛生產完,丈夫沖到產房將其腦袋砍下:她死有余辜

莫地方
2026-06-04 01:45:03
日媒:赴日留學生人數突破40萬人!中國大陸占近1/3

日媒:赴日留學生人數突破40萬人!中國大陸占近1/3

隨波蕩漾的漂流瓶
2026-06-12 12:08:35
周末風雨上線,下周雨日增多,梅雨倒計時了?

周末風雨上線,下周雨日增多,梅雨倒計時了?

上海預警發布
2026-06-12 17:14:05
央媒發聲:4400萬電車或將開征養路費

央媒發聲:4400萬電車或將開征養路費

月下守候
2026-06-12 15:54:55
為什么在世界杯的廣告牌上,你幾乎看不到汽車品牌?

為什么在世界杯的廣告牌上,你幾乎看不到汽車品牌?

電科技網
2026-06-10 18:14:17
借錢創業的深圳4人組,干出個全球第一

借錢創業的深圳4人組,干出個全球第一

最商業Plus
2026-06-12 12:14:45
前TVB女星官宣兒子出生,正式成為媽媽,嫁給富商后淡出娛樂圈

前TVB女星官宣兒子出生,正式成為媽媽,嫁給富商后淡出娛樂圈

看盡落塵花q
2026-06-13 03:34:34
這很科學:89%的人幻想過同時和多人發生性行為,算精神出軌嗎?

這很科學:89%的人幻想過同時和多人發生性行為,算精神出軌嗎?

宇宙時空
2026-05-26 18:20:10
電訊報:韓國vs捷克官宣上座率98.5%,但大片空位讓FIFA尷尬

電訊報:韓國vs捷克官宣上座率98.5%,但大片空位讓FIFA尷尬

懂球帝
2026-06-12 17:20:12
一語成讖是一種怎樣的體驗?網友:她的兒子永遠停留在了十七歲

一語成讖是一種怎樣的體驗?網友:她的兒子永遠停留在了十七歲

夜深愛雜談
2026-06-11 22:23:29
南通數十米長“巨無霸”預制件運輸中移位,砸壞兩車并截斷馬路,警方:致1人受傷

南通數十米長“巨無霸”預制件運輸中移位,砸壞兩車并截斷馬路,警方:致1人受傷

極目新聞
2026-06-12 21:59:05
79歲林子祥和老婆上海購物,葉蒨文打扮貴氣,脖子上掛著幾串珍珠

79歲林子祥和老婆上海購物,葉蒨文打扮貴氣,脖子上掛著幾串珍珠

一盅情懷
2026-06-12 19:26:34
2026-06-13 06:15:00
MediaTea
MediaTea
專業的數字媒體、新媒體技術
1888文章數 80關注度
往期回顧 全部

科技要聞

剛剛,人類歷史上首位萬億美元富豪誕生!

頭條要聞

SpaceX上市首日收漲19% 總市值報2.1萬億美元

頭條要聞

SpaceX上市首日收漲19% 總市值報2.1萬億美元

體育要聞

歐洲恐韓?肉德維德?

娛樂要聞

一天4個瓜,肖戰熱巴最意外

財經要聞

萬億美元順差背后,透露這些信號

汽車要聞

標配激光雷達/雙動力可選 昊鉑S600限時售17.99萬起

態度原創

房產
藝術
本地
教育
公開課

房產要聞

海南最賺錢行業曝光!最快4年半,海口全款買三房!

藝術要聞

砸了640億,再賠160億!沙特“The Line”項目徹底涼了?

本地新聞

AK劉彰邂逅河北南大港濕地

教育要聞

唐尚珺第17次寫高考作文:不后悔放棄中國政法大學,為救治父親

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關懷版