南京博学建设集团网站,盐城网站建设制作方案,江门网站制作专业,网页设计与制作作业代码一、说明 在本文中#xff0c;我们将阅读有关Wasserstein GANs的信息。具体来说#xff0c;我们将关注以下内容#xff1a;i#xff09;什么是瓦瑟斯坦距离#xff1f;#xff0c;ii#xff09;为什么要使用它#xff1f;iii#xff09; 我们如何使用它来训练 GAN我们将阅读有关Wasserstein GANs的信息。具体来说我们将关注以下内容i什么是瓦瑟斯坦距离ii为什么要使用它iii 我们如何使用它来训练 GAN 二、Wasserstein距离概念 Wasserstein距离又称为Earth Movers Distance (EMD)是衡量两个概率分布之间的差异程度的一种数学方式。它考虑了分布之间的距离和它们之间的“传输成本”。 简单来说Wasserstein距离将两个分布看作“堆积在地图上的土堆”并计算将一个堆移到另一个的最小成本。这个距离度量的优点是它能够处理非均匀分布并且能够考虑分布的形状和结构。 Wasserstein距离在机器学习领域中应用非常广泛特别是在生成模型中用来评估生成器生成的图像与真实图像之间的差异。 图1学习区分两个高斯时的最优判别器和批评者[1]。 2.1 瓦瑟施泰因距离 Wasserstein 距离地球移动器的距离是给定度量空间上两个概率分布之间的距离度量。直观地说它可以被视为将一个分布转换为另一个分布所需的最小功其中功被定义为必须移动的分布的质量和要移动的距离的乘积。在数学上它被定义为 方程 1瓦瑟斯坦 分布P_r和P_g之间的距离。 在方程1中ΠP_rP_g是x和y上所有联合分布的集合使得边际分布等于P_r和P_g。 γx y可以看作是必须从x移动到y才能将P_r转换为P_g的质量量[1]。因此瓦瑟斯坦距离是最佳运输计划的成本。 2.2 瓦瑟斯坦距离 vs. 詹森-香农分歧 最初的GAN目标被证明是Jensen-Shannon分歧的最小化[2]。JS背离定义为 方程 2P_r 和 P_g 之间的 JS 背离 P_m P_r P_g/2 与JS相比Wasserstein距离具有以下优点 Wasserstein 距离是连续的几乎可以在任何地方微分这使我们能够训练模型达到最佳状态。随着鉴别器的变好JS散度局部饱和因此梯度变为零并消失。Wasserstein 距离是一个有意义的度量即当分布彼此靠近时它收敛到 0当它们越来越远时发散。作为目标函数的 Wasserstein 距离比使用 JS 散度更稳定。当使用Wasserstein距离作为目标函数时模式崩溃问题也得到了缓解。 从图 1 我们清楚地看到最佳GAN鉴别器饱和并导致梯度消失而优化Wasserstein距离的WGAN评论家在整个过程中具有稳定的梯度。 有关数学证明和更详细的研究请查看此处的论文 三、瓦瑟斯坦·GAN 现在可以清楚地看到优化 Wasserstein 距离比优化 JS 散度更有意义还需要注意的是方程 1 中定义的 Wasserstein 距离非常棘手[3]因为我们不可能计算所有 γ ∈ΠPr Pg 的下界最大下界。然而从坎托罗维奇-鲁宾斯坦二元性中我们有 公式31-利普希茨条件下的瓦瑟斯坦距离。 这里我们有 WP_r P_g 作为所有 1-Lipschitz 函数 f X → R 的上确界最低上限。 K-利普希茨连续性给定 2 个度量空间 X d_X 和 Y d_Y变换函数 f X → Y 是 K-利普希茨连续的如果 公式3K-Lipschitz连续性。 其中d_X和d_Y是各自度量空间中的距离函数。当一个函数是 K-Lipschitz 时从方程 2 开始我们最终得到 K ∙ WP_r P_g。 现在如果我们有一系列参数化函数 {f_w}其中 w∈W 是 K-Lipschitz 连续的我们可以有 公式 4 即w∈W 最大化方程 4 给出瓦瑟斯坦距离乘以一个常数。 四、WGAN评论家 为此WGAN引入了一个批评者而不是我们在GAN中了解到的鉴别器。批评者网络在设计上类似于判别器网络但通过优化找到将最大化方程 4 的 w* 来预测 Wasserstein 距离。为此批评家的客观功能如下 公式5批评家客观函数。 在这里为了在函数f上强制执行Lipschitz连续性作者诉诸于将权重w限制在一个紧凑的空间内。这是通过将砝码夹紧到一个小范围论文中的[-1e-21e-2][1]来完成的。 鉴别器和批评者之间的区别在于鉴别器经过训练以正确识别P_r样本和P_g样本批评家估计P_r和P_g之间的Wasserstein距离。 这是训练批评家的python代码。 for ix in n_critic_steps:opt_critic.zero_grad()real_images data[0].float().to(device)# * Generate imagesnoise sample_noise()fake_images netG(noise)# * though they are name so, they are not logits!real_logits netCritic(real_images)fake_logits netCritic(fake_images)# * max E_{x~P_X}[C(x)] - E_{Z~P_Z}[C(g(z))]loss -(real_logits.mean() - fake_logits.mean())loss.backward(retain_graphTrue)opt_critic.step()# * Gradient clipplingfor p in netCritic.parameters():p.data.clamp_(-self.c, self.c) 五、WGAN生成器目标 当然发电机的目标是最小化P_r和P_g之间的瓦瑟斯坦距离。生成器试图找到最小化P_g和P_r之间的 Wasserstein 距离的 θ*。为此生成器的目标函数如下 公式 6生成器目标函数。 在这里WGAN生成器和标准生成器之间的主要区别再次在于WGAN生成器试图最小化P_r和P_g之间的Wasserstein距离而标准生成器试图用生成的图像欺骗鉴别器。 以下是训练生成器的 python 代码 opt_gen.zero_grad()noise sample_noise()fake_images netG(noise)# again, these are not logits.
fake_logits netCritic(fake_images)# * - E_{Z~P_Z}[C(g(z))]
loss -fake_logits.mean().view(-1)loss.backward()
opt_gen.step() 六、培训结果 fig2WGAN训练的早期结果[3]。 图例.2显示了训练WGAN的一些早期结果。请注意图 2 中的图像是早期结果一旦确认模型按预期训练训练就会停止。 七、代码 Wasserstein GAN的完整实现可以在这里找到[3]。 八、结论 WGAN提供非常稳定的培训和有意义的培训目标。本文介绍并直观地解释了什么是 Wasserstein 距离Wasserstein 距离相对于标准 GAN 使用的 Jensen-Shannon 散度的优势以及如何使用 Wasserstein 距离来训练 WGAN。我们还看到了用于训练 Critic 和生成器的代码片段以及早期训练模型的大量输出。尽管WGAN比标准GAN具有许多优势但WGAN论文的作者明确承认权重裁剪不是执行Lipschitz连续性的最佳方法[1]。为了解决这个问题他们提出了带有梯度惩罚的Wasserstein GAN[4]我们将在后面的文章中讨论。 如果您喜欢这个请查看本系列的下一篇文章其中讨论了 WGAN-GP