生成對抗網絡(GAN)基礎原理深度解析:從直觀理解到形式化表達

摘要

本文詳細解析 生成對抗網絡(GAN)核心原理,從通俗類比入手,結合印假鈔與警察博弈的案例闡述生成器判別器對抗機制;通過模型結構示意圖,解析 噪聲采樣樣本生成判別流程;基于公式推導目標函數的數學本質,剖析 判別器生成器優化邏輯;最后對比 GAN 目標函數交叉熵損失 的關聯差異。本文結合公式推導與概念對比,助力讀者建立 GAN 基礎理論體系

關鍵詞:生成對抗網絡 GAN 生成器 判別器 目標函數 交叉熵損失


一、通俗理解:對抗博弈中的生成與判別

在生成對抗網絡(GAN)的世界里,生成器(Generator)與 判別器(Discriminator)的博弈構成了核心邏輯。正如論文原作者的經典類比:生成器如同試圖制造逼真假鈔的“犯罪分子”,而 判別器 則是努力識別假鈔的“警察”。二者在持續對抗中不斷進化——犯罪分子提升偽造技術,警察強化鑒別能力,最終達到“假鈔足以以假亂真”的平衡狀態。

以圖像生成任務為例,生成器 的目標是從隨機噪聲中生成盡可能逼真的圖像,而 判別器 則需準確區分輸入圖像是真實樣本還是生成樣本。這種對抗過程并非單向優化,而是動態博弈:生成器 通過優化使生成圖像更接近真實分布,判別器 則通過優化提升區分能力,最終形成“生成 - 判別 - 再生成 - 再判別”的循環進化

二、模型結構:從噪聲到樣本的生成判別鏈路

在這里插入圖片描述

GAN 的形式化模型可通過圖1直觀表示生成器(G)以高斯分布采樣的隨機噪聲作為輸入,通過神經網絡映射生成假樣本(如偽造圖像);判別器(D)則接收真實樣本與生成樣本的混合輸入,輸出樣本為真實樣本的概率值。

關鍵流程解析
  1. 噪聲采樣生成器 輸入為服從高斯分布 ( p z ( z ) p_z(z) pz?(z) ) 的隨機噪聲 ( z ),通過非線性變換 ( G(z) ) 生成假樣本 ( h a t ( x ) hat(x) hat(x) )。
  2. 樣本混合:真實樣本 ( x s i m p d a t a ( x ) x sim p_{data}(x) xsimpdata?(x) ) 與生成樣本 ( h a t x hat{x} hatx ) 隨機混合后輸入 判別器
  3. 概率判別判別器 對輸入樣本輸出概率值 ( D(x) )(取值范圍0 - 1),其中 ( D(x) ) 越接近1表示樣本越可能為真實樣本,越接近0則為生成樣本。

此過程中,“對抗”特性體現在:生成器 試圖最小化 E z ~ p z ( z ) [ l o g ( 1 ? D ( G ( z ) ) ) ] E z~pz(z)[log(1?D(G(z)))] Ezpz(z)[log(1?D(G(z)))]
即讓 判別器 誤判生成樣本為真實樣本,

判別器 試圖最大化 E x ~ p d a t a [ log ? D ( x ) ] + E z ~ p z [ log ? ( 1 ? D ( G ( z ) ) ) ] {E}_{x \sim p_{data}} [\log D(x)] + \mathbb{E}_{z \sim p_z} [\log(1 - D(G(z)))] Expdata??[logD(x)]+Ezpz??[log(1?D(G(z)))] 即正確區分兩類樣本。

三、目標函數:對抗優化的數學本質

GAN目標函數 設計是理解其原理的核心。完整 目標函數 定義為:

min ? G max ? D V ( D , G ) = E x ~ p d a t a [ log ? D ( x ) ] + E z ~ p z [ log ? ( 1 ? D ( G ( z ) ) ) ] \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{data}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))] Gmin?Dmax?V(D,G)=Expdata??[logD(x)]+Ezpz??[log(1?D(G(z)))]

1. 判別器 的優化目標(最大化 ( V(D, G) ))

對于真實樣本 ( x ),判別器 希望 ( D(x) ) 盡可能接近1,因此 ( log D(x) ) 趨近于0(最大值);對于生成樣本 ( G(z) ),判別器 希望 ( D(G(z)) ) 盡可能接近0,此時 ( log ? ( 1 ? D ( G ( z ) ) ) \log(1 - D(G(z))) log(1?D(G(z))) ) 趨近于0(最大值)。判別器 通過最大化 ( V(D, G) ),實現對兩類樣本的最優區分。

2. 生成器 的優化目標(最小化 ( m a x D V ( D , G ) max_D V(D, G) maxD?V(D,G) ))

生成器 的目標是讓 判別器 無法區分生成樣本與真實樣本,即最小化 判別器 目標函數 的最大值。從數學本質看,此時生成數據分布 ( p g p_g pg? ) 與真實數據分布 ( p d a t a p_{data} pdata? ) 的 JS散度(Jensen - Shannon Divergence) 最小化。JS散度 用于度量兩個分布的相似性,值越小表示分布越接近。

四、與 交叉熵損失 的關聯與差異

判別器 目標函數 轉換為離散形式:
V ( D , G ) = ? 1 m s u m i = 1 m log ? D ( x i ) ? 1 m s u m i = 1 m log ? ( 1 ? D ( z i ) ) V(D, G) = -\frac{1}{m} sum_{i=1}^m \log D(x^i) - \frac{1}{m} sum_{i=1}^m \log(1 - D(z^i)) V(D,G)=?m1?sumi=1m?logD(xi)?m1?sumi=1m?log(1?D(zi))
可見其與 交叉熵損失 函數形式一致。判別器 的優化等價于最小化 交叉熵損失(即正確分類真實樣本與生成樣本),而 生成器 的優化目標則與 交叉熵損失 無直接關聯——其本質是通過對抗訓練最小化 JS散度,這是 GAN 與傳統分類模型(如邏輯回歸)的核心區別。

五、核心概念總結與實踐啟示

  1. 對抗機制生成器判別器 的動態博弈是 GAN 實現高質量樣本生成的關鍵,二者需保持“勢均力敵”。若 判別器 過強,生成器 可能因梯度消失無法優化;若過弱,則生成樣本質量難以提升。
  2. 數學本質目標函數 的極小極大優化(( m i n G m a x D min_G max_D minG?maxD? ))本質是求解生成分布與真實分布的 JS散度 最小化問題,這為后續 WGAN 等改進模型提供了理論切入點(如用 Wasserstein距離 替代 JS散度)。
  3. 模型局限:原始 GAN 存在 模式崩塌(Mode Collapsing) 等問題,生成樣本可能缺乏多樣性,需通過改進 目標函數(如 LSGAN)或網絡結構(如多 生成器 架構)優化。

通過上述解析可見,GAN 的核心魅力在于將樣本生成問題轉化為對抗博弈問題,其理論框架既包含直觀的物理類比,又蘊含深刻的數學原理。理解基礎概念,是進一步探索 GAN 變體(如 CGANCycleGAN)及復雜應用(如圖像翻譯、文本生成)的必要前提。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83604.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83604.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83604.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OptiStruct結構分析與工程應用:無限元法介紹

13.3 無限元方法 本節將詳細闡述如何利用無限元方法求解外聲場分析,具體包括無限元方法基本理論,無限單元介紹、無限元分析建模指南及檢查,最后以一個實例講解整個分析設置過程。 13.3.1 無限元分析基礎理論 無限元求解外聲場的基本原理如…

判斷:有那種使用了局部變量的遞歸過程在轉換成非遞歸過程時才必須使用棧

這道題的關鍵在于理解遞歸轉非遞歸與 “是否用棧” 的本質邏輯,和 “局部變量” 無關,核心看遞歸的調用上下文是否需要保存。 一、遞歸的本質:依賴 “調用棧” 遞歸函數執行時,系統會用調用棧保存: 每層遞歸的參數、…

leetcode1443. 收集樹上所有蘋果的最少時間-medium

1 題目:收集樹上所有蘋果的最少時間 官方標定難度:中 給你一棵有 n 個節點的無向樹,節點編號為 0 到 n-1 ,它們中有一些節點有蘋果。通過樹上的一條邊,需要花費 1 秒鐘。你從 節點 0 出發,請你返回最少需…

MySQL 索引底層原理剖析:B+ 樹結構、索引創建維護與性能優化策略全解讀

引言 在 MySQL 數據庫的世界里,索引是提升查詢性能的關鍵利器。然而,很多開發者雖然知道索引的重要性,但對于索引背后的底層原理卻知之甚少。本文將深入 MySQL 索引的底層實現,剖析 B 樹的結構特點,以及如何利用這些知…

【Delphi】實現在多顯示器時指定程序運行在某個顯示器上

在多顯示器時代,經常會出現期望將程序運行在某個指定的顯示器上,特別是在調試程序的時候,期望切換分辨率,單步調試時,此時容易導致互相卡住,非常不方便,但是通過指定程序運行在不同的顯示器上就…

不動產登記區塊鏈系統(Vue3 + Go + Gin + Hyperledger Fabric)

好久沒有介紹過新項目的制作了,之前做的一直都是Fisco Bcos的項目,沒有介紹過Hyperledger Fabric的項目,這次來給大家分享下。 系統概述 不動產登記與交易平臺是一個基于Hyperledger Fabric的綜合性管理系統,旨在實現不動產登記…

論文閱讀筆記——Large Language Models Are Zero-Shot Fuzzers

TitanFuzz 論文 深度學習庫(TensorFlow 和 Pytorch)中的 bug 對下游任務系統是重要的,保障安全性和有效性。在深度學習(DL)庫的模糊測試領域,直接生成滿足輸入語言(例如 Python )語法/語義和張量計算的DL A…

cocos3.X的oops框架oops-plugin-excel-to-json改進兼容多表單導出功能

在使用oops框架的過程中,它的導出數據并生成數據結構的插件oops-plugin-excel-to-json有些小的坑點,為滿足我個人習慣,對此部分進行了一個小的修改,有需要的拿去用,記錄下供大家參考; 一、配置:…

解決IDE編譯JAVA項目時出現的OOM異常問題

出現的異常如圖: java.lang.0utOfMemoryError:Java heap space 解決方案: 文件 --> 設置 搜索 編譯器(就點擊編譯器這行),找到構建進程,共享堆大小,設置大一些,例如 2048 MB。 …

【Linux內核】設備模型之udev技術詳解

目錄 1. udev技術概述 2. 技術層次分析 2.1 內核層交互 2.2 規則引擎層 2.3 用戶空間實現 3. 關鍵技術要點 3.1 動態設備節點管理 3.2 熱插拔處理 3.3 模塊化規則系統 3.3.1. 變量替換功能 3.3.2. 條件判斷能力 3.3.3. 實現機制 3.3.4 應用場景 3.3.5 擴展能力 4…

群論在現代密碼學中的應用探索與實踐 —— 從理論到C語言實現

1. 引言:數字時代的信息安全挑戰 隨著互聯網和數字技術的快速發展,信息安全問題變得日益嚴峻。無論是個人隱私保護,還是企業數據安全,乃至國家安全,都依賴于有效的加密技術保障信息的機密性和完整性。網絡攻擊、數據泄…

前端開發處理‘流式數據’與‘非流式數據’,在接收完整與非完整性數據時應該如何渲染和使用

在前端開發中,處理 非流式數據 和 流式數據 的方式不同。根據是否完整接收數據、是否實時渲染的需求,可以分為以下四種典型場景: 一、四類常見場景總結 類型數據完整性是否實時渲染適用技術/方法A完整數據(一次性返回&#xff09…

thymeleaf直接調用Spring Bean中定義的方法

thymeleaf中可以使用表達式工具對象&#xff0c;通過符號直接調Spring Bean中定義的方法 Spring Bean Component public class InvokeMethodBean {public String fun() { return "fun";} }thymeleaf中調用 <div th:text"${invokeMethodBean.fun()}"&…

虛擬斯德哥爾摩癥候群:用戶為何為缺陷AI辯護?

當韓國用戶美咲連續第七次為虛擬男友的算法錯誤辯解&#xff1a;“他只是太累了才會說傷人的話”&#xff0c;心理醫生在診斷書上寫下“數字依賴伴隨認知失調”。這種現象并非孤例——斯坦福2024年研究顯示&#xff0c;62%長期使用情感AI的用戶會主動為系統缺陷尋找合理化解釋&…

tryhackme——Abusing Windows Internals(進程注入)

文章目錄 一、Abusing Processes二、進程鏤空三、線程劫持四、DLL注入五、Memory Execution Alternatives 一、Abusing Processes 操作系統上運行的應用程序可以包含一個或多個進程&#xff0c;進程表示正在執行的程序。進程包含許多其他子組件&#xff0c;并且直接與內存或虛…

[藍橋杯]密碼脫落

密碼脫落 題目描述 X 星球的考古學家發現了一批古代留下來的密碼。 這些密碼是由 A、B、C、D 四種植物的種子串成的序列。 仔細分析發現&#xff0c;這些密碼串當初應該是前后對稱的&#xff08;也就是我們說的鏡像串&#xff09;。 由于年代久遠&#xff0c;其中許多種子…

Python繪圖庫及圖像類型

折線圖&#xff08;plot&#xff09; 繪圖庫介紹 Python中繪制折線圖的全面指南_python繪制折線圖-CSDN博客https://blog.csdn.net/2301_81064905/article/details/139689644 核心作用說明趨勢分析揭示數據隨時間推移的上升/下降趨勢、周期性波動或轉折點變化對比在單一圖表…

4種常見Python設計愛心創意實現方法

在Python中設計愛心創意有多種實現方式&#xff0c;以下介紹4種常見方法&#xff0c;并附上完整代碼&#xff1a; 方法1&#xff1a;使用數學方程繪制&#xff08;Matplotlib&#xff09; ??原理??&#xff1a;使用參數方程繪制心形曲線 ??效果??&#xff1a;光滑的數…

【Unity】R3 CSharp 響應式編程 - 使用篇(二)

一、通用的事件監聽用法 using System;using R3;using UnityEngine;namespace Aladdin.Standard.Observable.Common{public class CommonObservable : MonoBehaviour{// 默認會調用1次public SerializableReactiveProperty<int> serializableReactiveProperty;…

【原理解析】為什么顯示器Fliker dB值越大,閃爍程度越輕?

顯示器Fliker 1 顯示器閃爍現象說明2 Fliker量測方法2.1 FMA法2.2 JEITA法問題答疑&#xff1a;為什么顯示器Fliker dB值越大&#xff0c;閃爍程度越輕&#xff1f; 3 參考文獻 1 顯示器閃爍現象說明 當一個光源閃爍超過每秒10次以上就可在人眼中產生視覺殘留&#xff0c;此時…