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

【学习】对抗训练-WGAN

WGAN

  • Wasserstein GAN(WGAN)详解:从优化目标到 Lipschitz 约束
    • 一、Wasserstein 距离是啥?
    • 二、WGAN 的目标函数形式
    • 三、为什么要 1-Lipschitz 约束?
      • 什么是 Lipschitz 连续?
    • 四、WGAN 如何实现 Lipschitz 约束?
      • 1. **WGAN with weight clipping(原始 WGAN)**
      • 2. **WGAN-GP(Gradient Penalty)**
    • 五、WGAN 的优势
    • 六、总结

Wasserstein GAN(WGAN)详解:从优化目标到 Lipschitz 约束

在原始 GAN 中,由于使用了 JS 散度,训练过程常常出现 梯度消失模式崩溃(mode collapse)。为了解决这些问题,Wasserstein GAN(WGAN)应运而生,它用更稳定、更有意义的分布距离 —— Wasserstein 距离 来替代 JS 散度。


一、Wasserstein 距离是啥?

Wasserstein-1 距离(又叫地球移动者距离,Earth Mover’s Distance)定义为:

W ( P r , P g ) = inf ⁡ γ ∈ Π ( P r , P g ) E ( x , y ) ∼ γ [ ∥ x − y ∥ ] W(P_r, P_g) = \inf_{\gamma \in \Pi(P_r, P_g)} \mathbb{E}_{(x, y) \sim \gamma}[\|x - y\|] W(Pr,Pg)=γΠ(Pr,Pg)infE(x,y)γ[xy]

  • 直观解释:把一个堆土( P g P_g Pg)变成另一个堆土( P r P_r Pr)所需要“最小的工作量”;
  • 优点:即使 P r P_r Pr P g P_g Pg 的支持集没有重叠,Wasserstein 距离依然是有意义的(不像 JS 或 KL)。

二、WGAN 的目标函数形式

根据 Kantorovich-Rubinstein 对偶形式,WGAN 把距离 W ( P r , P g ) W(P_r, P_g) W(Pr,Pg) 转化为如下形式进行优化:

max ⁡ f ∈ F E x ∼ P r [ f ( x ) ] − E x ∼ P g [ f ( x ) ] \max_{f \in \mathcal{F}} \mathbb{E}_{x \sim P_r}[f(x)] - \mathbb{E}_{x \sim P_g}[f(x)] fFmaxExPr[f(x)]ExPg[f(x)]

其中 F \mathcal{F} F 是所有 1-Lipschitz 连续函数的集合。

在实际训练中,WGAN 把判别器 D D D 称为 critic(判别器不再输出概率,而是任意实数),优化目标变为:

min ⁡ G max ⁡ D ∈ Lip-1 E x ∼ P r [ D ( x ) ] − E z ∼ P z [ D ( G ( z ) ) ] \min_G \max_{D \in \text{Lip-1}} \mathbb{E}_{x \sim P_r}[D(x)] - \mathbb{E}_{z \sim P_z}[D(G(z))] GminDLip-1maxExPr[D(x)]EzPz[D(G(z))]


三、为什么要 1-Lipschitz 约束?

因为只有在 D D D 属于 1-Lipschitz 函数的前提下,才能保证:

E x ∼ P r [ D ( x ) ] − E x ∼ P g [ D ( x ) ] = W ( P r , P g ) \mathbb{E}_{x \sim P_r}[D(x)] - \mathbb{E}_{x \sim P_g}[D(x)] = W(P_r, P_g) ExPr[D(x)]ExPg[D(x)]=W(Pr,Pg)

什么是 Lipschitz 连续?

一个函数 f f f 满足:

∣ f ( x ) − f ( y ) ∣ ≤ K ⋅ ∥ x − y ∥ |f(x) - f(y)| \leq K \cdot \|x - y\| f(x)f(y)Kxy

则称它是 K K K-Lipschitz 连续函数。特别地,当 K = 1 K=1 K=1 时,就是我们 WGAN 所要求的 1-Lipschitz 函数。


四、WGAN 如何实现 Lipschitz 约束?

WGAN 提出了几种做法:

1. WGAN with weight clipping(原始 WGAN)

将判别器的参数强制约束在某一范围内,如 [ − 0.01 , 0.01 ] [-0.01, 0.01] [0.01,0.01],即:

for p in D.parameters():
    p.data.clamp_(-0.01, 0.01)

但这种方法会限制模型表达能力,容易导致训练不稳定。

2. WGAN-GP(Gradient Penalty)

改进做法,引入梯度惩罚项:

E x ^ ∼ P x ^ [ ( ∥ ∇ x ^ D ( x ^ ) ∥ 2 − 1 ) 2 ] \mathbb{E}_{\hat{x} \sim P_{\hat{x}}} \left[ \left( \|\nabla_{\hat{x}} D(\hat{x})\|_2 - 1 \right)^2 \right] Ex^Px^[(x^D(x^)21)2]

其中 x ^ \hat{x} x^ 是在真实数据和生成数据之间插值得到的。

最终优化目标:

E x ∼ P r [ D ( x ) ] − E x ∼ P g [ D ( G ( z ) ) ] + λ ⋅ GP \mathbb{E}_{x \sim P_r}[D(x)] - \mathbb{E}_{x \sim P_g}[D(G(z))] + \lambda \cdot \text{GP} ExPr[D(x)]ExPg[D(G(z))]+λGP

WGAN-GP 是目前最广泛使用的 WGAN 版本。


五、WGAN 的优势

原始 GANWGAN
使用 JS 散度,训练易不稳定使用 Wasserstein 距离,更稳定
判别器输出为概率值判别器输出为实数
可能梯度消失保持梯度非零,更容易训练
Mode collapse 严重缓解 mode collapse

六、总结

WGAN 提供了更合理的 GAN 训练方法,其核心在于:

  • 用 Wasserstein 距离替代 JS;
  • 强制判别器满足 1-Lipschitz 连续性;
  • 使用梯度惩罚等方法约束判别器行为。

相关文章:

  • RTT添加一个RTC时钟驱动,以DS1307为例
  • C语言超详细指针知识(三)
  • Java设计模式实战:装饰模式在星巴克咖啡系统中的应用
  • 【JavaScript】二十、电梯导航栏的实现
  • C++之二叉搜索树
  • arcgis几何与游标(1)
  • 【NLP】 自然语言处理笔记
  • Spring-AI-alibaba 结构化输出
  • 技术视界 | 人形机器人运动控制框架详解:解锁智能机器人的“灵动”密码
  • 如何使用maxscale实现mysql读写分离
  • Java 反序列化之 XStream 反序列化
  • [c语言日记]轮转数组算法(力扣189)
  • JavaScript中的运算符与语句:深入理解编程的基础构建块
  • CentOS下,Xftp中文文件名乱码的处理方式
  • 【第42节】windows双机调试环境搭建和SEH原理剖析
  • RadioMaster POCKET遥控器进入ExpressLRS界面一直显示Loading的问题解决方法
  • 【科普】轨道交通信号系统相关名词解释
  • 基础贪心算法集合2(10题)
  • flutter-Text等组件出现双层黄色下划线的问题
  • android-根据java文件一键生成dex文件脚本
  • 新东方:2025财年前三季度净利增29%,第四财季海外业务将承压
  • 一季度沪苏浙皖GDP增速均快于去年全年,新兴动能持续壮大
  • 特朗普激发加拿大爱国热情:大选提前投票人数创纪录,魁北克分离情绪被冲淡
  • 白宫称中美贸易协议谈判取得进展,外交部回应
  • 外贸50城,谁在“扛大旗”?
  • 石中英已任新成立的清华大学教育学院院长