生成对抗网络
生成对抗网络 GAN
- 模型
-
GAN由生成器和判别机构成, 需要同步训练两个组件, 其中利用噪声变量能合成假的数据样本. 判据则需能辨别输入图像究竟是来自真实数据集还是由合成模型制造出来的假图像, 合成模型的目标是尽力欺骗鉴別机(使鉴別机无法分辨图像来源), 而鉴別机则努力识别图像的真实归属. 这是一个涉及双方博弈机制的问题.
-
为了研究生成模型对数据分布p_g的学习能力, 定义输入噪声服从先验分布p_z(z), 用符号G(z;\theta_g)表示此生成模型.
-
判別机用于分类判断样本是否来自真实数据集或虚假图像, 记作D(x;\theta_d).
-
基於上述组件与机制, 训練过程包括以下内容:
-
为了训练判别器D以区分生成器产生的样本与真实数据集中的样本。
-
同时在优化过程中也会训练生成器G使其能够最小化对应的损失函数\log(1 - D(G(z)))。
-
损失函数被定义为\min_G\max_D V(D, G) = \mathbb{E}_{x \sim p_{data}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)}[\log (1 - D(G(z)))]。
2. 损失推导
2.1.1 最大似然估计
其中p_{data}(x)表示数据分布。
我们的目标是最接近地逼近真实的数据分布p_{data}。
生成模型由参数θ定义的概率分布p_G(x;θ)需要尽可能地贴近真实的数据分布p_{data}。
ML估计如下:
由上式可以看出,极大似然估计的本质
2.2.2 GAN
生成器G接受输入z并生成x
判别器D接收输入x并判断其是否来自真实数据的分布P_data(x)
损失函数:
\mathcal{L} = \mathbb{E}_{x\sim P_{data}(X)}[\log D(x)] + \mathbb{E}_{z\sim P_{Z}(Z)}[\log(1 - D(G(z)))]
深入分析一下,在基于判别器D的情况下:
当给定生成器G时,
公式\mathop{max}_DV(G,D)表征了分布P_G与分布P_{data}之间的距离,
给定x,我们对 l = P_{data}(x)logD(x)+P_G(x)log(1-D(x))进行求导
可得:
代入 :
为了解决生成器D的参数优化问题,在训练过程中采用梯度下降算法。在实际训练过程中,基于一批采样样本进行数据处理
训练D时,采用交叉熵,最小化交叉熵
-
训练步骤
-
for num of training iterations:
- for k steps do
-
-
按照分布p_g(z)生成m个mini-batch的噪声样本集合\{z^{(1)},...,z^{(m)}\};
-
按照数据分布生成一批包含m个样本的mini-batch集合\{x^{(1)},...,x^{(m)}\};
-
使用随机梯度上升算法更新参数D
- 从分布采样m个mini-batch 噪音样本
- 随机梯度下降更新生成器G
- Wasserstein GAN
4.1 存在一些问题
该方法在训练过程中不够稳定,在实现判别器与生成器动态平衡方面存在挑战
该模型容易陷入collapse mode现象,在这种情况下生成样本缺乏多样性
关于JS散度的方法也存在问题:当真实分布与生成分布的重叠区域过小时或完全无重叠区域时,JS散度会接近常数值log2(1),导致梯度消失;如果判别器过于优秀,则真实分布与生成分布完全无重叠区域;如果判别能力不足,则会导致生成器梯度计算出现偏差,在优化过程中可能偏离正确的方向;而当判别能力处于最佳状态时(既不能太好也不能太差),很难找到一个合适的平衡点来避免梯度消失的问题
4.2 Wasserstein距离
其中
将上式改成GAN
设计一个神经网络结构作为判别器D,在确保其输出值在该范围内变动的前提下控制其参数规模不超过设定上限。通过这种设计方法,在计算生成模型与真实数据之间的Wasserstein距离时能够实现对这一关键指标的最大化逼近。
WGAM做的是回归问题,尽可能拟合Wasserstein距离
4.3 改进Wasserstein距离
当一个函数Lipschitz连续时,则其梯度范数的模长不大于1:
近似表达W距离
实际上无需在整个分布中满足Lispschitz条件,在某些特定直线上即可满足这些要求;此外,在实践中也不应选择最大值,因为梯度过小可能会影响优化效果
