当前位置: 首页 > news >正文

【笔记】对抗训练-GAN

对抗训练-GAN

  • 深度学习中 GAN 的对抗目标函数详解与最优解推导
    • 一、GAN 的基本对抗目标函数
    • 二、判别器与生成器的博弈目标
    • 三、判别器的最优解推导
    • 四、最优判别器的含义
    • 五、总结
    • 六、WGAN 的动机(为后续铺垫)


深度学习中 GAN 的对抗目标函数详解与最优解推导

生成对抗网络(GAN)是深度生成模型中的经典方法,其核心思想是两个网络之间的博弈:生成器 G G G 试图“伪造”样本,而判别器 D D D 尽力分辨真伪。本篇博客将从 GAN 的基本目标函数出发,逐步推导出判别器的最优形式,并分析其背后的数学含义。


一、GAN 的基本对抗目标函数

GAN 的原始目标是一个 min-max 游戏

min ⁡ G max ⁡ D ( E x ∼ P r [ log ⁡ D ( x ) ] + E z ∼ P z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] ) \min_G \max_D \left( \mathbb{E}_{x \sim P_r}[\log D(x)] + \mathbb{E}_{z \sim P_z}[\log(1 - D(G(z)))] \right) GminDmax(ExPr[logD(x)]+EzPz[log(1D(G(z)))])

其中:

  • P r ( x ) P_r(x) Pr(x) 表示真实数据的分布;
  • P z ( z ) P_z(z) Pz(z) 是先验噪声分布(如高斯);
  • G ( z ) G(z) G(z) 是生成器生成的假样本;
  • D ( x ) D(x) D(x) 是判别器输出 x x x 为真实样本的概率。

二、判别器与生成器的博弈目标

  • 判别器 D 的目标:让 D ( x ) D(x) D(x) 趋近于 1, D ( G ( z ) ) D(G(z)) D(G(z)) 趋近于 0,即正确分辨真实与生成样本。

    对应目标函数为最大化:

    E x ∼ P r [ log ⁡ D ( x ) ] + E z ∼ P z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathbb{E}_{x \sim P_r}[\log D(x)] + \mathbb{E}_{z \sim P_z}[\log(1 - D(G(z)))] ExPr[logD(x)]+EzPz[log(1D(G(z)))]

  • 生成器 G 的目标:生成样本让 D ( G ( z ) ) D(G(z)) D(G(z)) 尽量大,即“骗过”判别器。

    对应目标函数为最小化:

    E z ∼ P z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \mathbb{E}_{z \sim P_z}[\log(1 - D(G(z)))] EzPz[log(1D(G(z)))]

这是一个典型的零和对抗过程。


三、判别器的最优解推导

我们接下来推导:在固定生成器 G G G 的前提下,判别器 D D D 的最优形式是怎样的?

令目标函数为:

V ( D ) = ∫ x P r ( x ) log ⁡ D ( x ) + P g ( x ) log ⁡ ( 1 − D ( x ) )   d x V(D) = \int_x P_r(x) \log D(x) + P_g(x) \log(1 - D(x)) \, dx V(D)=xPr(x)logD(x)+Pg(x)log(1D(x))dx

对每个 x x x,令:

f ( D ( x ) ) = P r ( x ) log ⁡ D ( x ) + P g ( x ) log ⁡ ( 1 − D ( x ) ) f(D(x)) = P_r(x) \log D(x) + P_g(x) \log(1 - D(x)) f(D(x))=Pr(x)logD(x)+Pg(x)log(1D(x))

D ( x ) D(x) D(x) 求导并令导数为 0:

d f d D ( x ) = P r ( x ) D ( x ) − P g ( x ) 1 − D ( x ) = 0 \frac{d f}{d D(x)} = \frac{P_r(x)}{D(x)} - \frac{P_g(x)}{1 - D(x)} = 0 dD(x)df=D(x)Pr(x)1D(x)Pg(x)=0

解得最优判别器为:

D ∗ ( x ) = P r ( x ) P r ( x ) + P g ( x ) D^*(x) = \frac{P_r(x)}{P_r(x) + P_g(x)} D(x)=Pr(x)+Pg(x)Pr(x)


四、最优判别器的含义

  1. D ∗ ( x ) D^*(x) D(x) 的输出值反映了 样本 x x x 来自真实分布的概率

    • 如果 P r ( x ) = P g ( x ) P_r(x) = P_g(x) Pr(x)=Pg(x),则 D ∗ ( x ) = 1 2 D^*(x) = \frac{1}{2} D(x)=21
    • 如果 P r ( x ) ≫ P g ( x ) P_r(x) \gg P_g(x) Pr(x)Pg(x),则 D ∗ ( x ) ≈ 1 D^*(x) \approx 1 D(x)1
    • 如果 P g ( x ) ≫ P r ( x ) P_g(x) \gg P_r(x) Pg(x)Pr(x),则 D ∗ ( x ) ≈ 0 D^*(x) \approx 0 D(x)0
  2. D ∗ D^* D 代入 GAN 原始目标函数:

    V ( D ∗ ) = E x ∼ P r [ log ⁡ D ∗ ( x ) ] + E x ∼ P g [ log ⁡ ( 1 − D ∗ ( x ) ) ] V(D^*) = \mathbb{E}_{x \sim P_r}[\log D^*(x)] + \mathbb{E}_{x \sim P_g}[\log(1 - D^*(x))] V(D)=ExPr[logD(x)]+ExPg[log(1D(x))]

    可推导出最终目标:

    min ⁡ G V ( D ∗ ) = − log ⁡ 4 + 2 ⋅ JS ( P r ∥ P g ) \min_G V(D^*) = -\log 4 + 2 \cdot \text{JS}(P_r \parallel P_g) GminV(D)=log4+2JS(PrPg)

    即:GAN 实质上是在最小化真实分布 P r P_r Pr 与生成分布 P g P_g Pg 之间的 Jensen-Shannon 散度


五、总结

内容含义
D ∗ ( x ) = P r ( x ) P r ( x ) + P g ( x ) D^*(x) = \frac{P_r(x)}{P_r(x) + P_g(x)} D(x)=Pr(x)+Pg(x)Pr(x)判别器在每个样本点处的最优输出
GAN 的优化目标最小化 JS 散度
最优时的结果 P r = P g P_r = P_g Pr=Pg 时,GAN 达到最优, D ( x ) = 0.5 D(x)=0.5 D(x)=0.5,分不出真假

六、WGAN 的动机(为后续铺垫)

由于 Jensen-Shannon 散度在 P r P_r Pr P g P_g Pg 没有交集时不连续(导致梯度消失),Wasserstein GAN(WGAN)改用 Wasserstein 距离替代 JS 散度,并要求判别器满足 1-Lipschitz 条件,这会在后续单独展开讲解。

相关文章:

  • 论文精度:双分支图Transformer网络:视频驱动的3D人体网格重建新突破
  • 记一次某网络安全比赛三阶段webserver应急响应解题过程
  • Spring Cloud主要组件介绍
  • 解密Oracle数据库RAC技术原理:构建高可用、可扩展的集群数据库
  • sward安装及入门指南
  • 揭秘大数据 | 20、软件定义数据中心
  • ELK+Filebeat 深度部署指南与实战测试全解析
  • MySQL聚合查询
  • 利用 限制torch线程数与异步方法提升声纹识别效率
  • 旧版 VMware 虚拟机迁移至 KVM 平台-案例2
  • 动手强化学习之马尔可夫决策(机器人篇)
  • keil如何创建一个工程
  • STM32单片机入门学习——第36节: [11-1] SPI通信协议
  • C++中extern关键字
  • 【微信开发者工具】解决微信开发工具的调试器加载错误,从任务栏打开工具可能导致该问题,请不要从任务栏启动工具
  • Redis 常问知识
  • MCP的另一面
  • Spark-SQL
  • 贪心算法(18)(java)距离相等的条形码
  • Docker实战:从零构建高可用的MySQL主从集群与Redis集群
  • 31年前失踪的男孩与家人在重庆一派出所团聚:人像比对后DNA鉴定成功
  • 马上评|治理计量不准确收费不规范,水电气要有明白账
  • 护航民营企业出海,上海设37家维权工作站、建立近百人专家团队
  • 大家聊中国式现代化|权衡:在推进中国式现代化中当好龙头
  • 湖南平江发生一起意外翻船事件,6人不幸溺亡
  • 比起追逐爆款,动画行业更需要打开思路“重塑肉身”