机器学习周报第十一周

摘要

生成器(Generator)和鉴别器(Discriminator)是深度学习中的两个重要组件,它们在生成对抗网络(GAN)中起着关键作用。生成器旨在生成与真实数据分布相似的合成数据,而鉴别器则负责区分真实数据和生成器生成的数据。GAN的目标是通过不断的博弈过程,使生成器生成的数据变得越来越逼真,以至于鉴别器难以区分真伪。
Wasserstein GAN(WGAN)是GAN的一个变种,它引入了Wasserstein距离作为损失函数,用于衡量生成数据与真实数据分布之间的距离。与传统的GAN相比,WGAN更稳定且具有更好的训练性能。它解决了传统GAN中训练不稳定、模式崩溃等问题,并提供了更有意义的梯度信号,使训练更加可控。

Abstract

Generator and Discriminator are two important components in deep learning that play a key role in Generative Adversarial Networks (GAN). The Generator aims to generate synthetic data that is similar to the distribution of the real data, while the Discriminator is responsible for distinguishing between the real data and the data generated by the Generator.The goal of the GAN is to make the data generated by the Generator more and more realistic through a continuous gaming process, so that it is difficult for the Discriminator to distinguish between the real and the fake data.
Wasserstein GAN (WGAN) is a variant of GAN that introduces the Wasserstein distance as a loss function to measure the distance between the generated data and the real data distribution. WGAN is more stable and has better training performance than traditional GAN. It solves the problems of unstable training and pattern collapse in traditional GAN and provides more meaningful gradient signals to make training more controllable.

一、生成器(generator)

生成器(Generator)是生成对抗网络(GAN)中的一个关键组件,它负责生成合成数据或样本,旨在模拟真实数据的分布。生成器的主要任务是将随机噪声或输入数据转化为具有特定结构和规律的数据,使得这些数据在视觉、语言或其他领域上与真实数据难以区分。
生成器通常以深度神经网络的形式实现,可以采用不同的架构,如卷积神经网络(CNNs)或循环神经网络(RNNs),具体取决于生成的数据类型和任务。生成器网络会通过训练逐渐提高其性能,使得生成的合成数据逐渐趋向于真实数据的分布。
如下图所示,生成器的输入和输出与之前学到的网络架构有所区别。在输入中,除了特征x外,还需要输入一个分布Z,这个分布Z要求该分布较简单,我们知道这个分布的具体式子,并且能够从这个分布中取样。而输出y则从之前的数值或者分类变成了一个分布,即使输入的x相同,但是随着Z的变化,输出y也会产生相应的变化。
在这里插入图片描述
使用生成器作为网络的模型适用于需要一些创造力的案例。如下图所示,在画有红眼睛的动画人物和聊天机器人的实例中,都需要一定的创造力,生成的答案不是固定的,这时使用生成器,在输入中加入分布可以很好的解决问题。
在这里插入图片描述

二、生成式对抗网络(GAN)

2.1 案例:生成二次元人物的脸

如下图所示,使用unconditional generation作为模型。该模型的输入可以只是一个分布,输出是一个二次元人物的脸,即该模型需要将低维的输入转化成一个高维的输出。
在这里插入图片描述
鉴别器的训练目标是学习一个二进制分类器,以区分真实数据和生成数据。在训练过程中,生成器和鉴别器之间进行竞争和博弈。生成器试图生成越来越逼真的数据以欺骗鉴别器,而鉴别器则试图提高其识别真实数据的能力。这个过程通常通过对抗训练来实现,其中生成器和鉴别器交替训练,以不断提高模型的性能。
如下图所示,以一张图片作为鉴别器的输入,输出为一个数值,这个数值越大,代表输入的图片是真实的图片;数值越小,代表输入的图片是由生成器生成的图片。
在这里插入图片描述
生成器需要学习画出二次元的人物。这个学习的过程就是生成器和鉴别器相互“对抗”的过程。第一代的生成器它的参数是完全随机的,所以它根本就不知道怎么画二次元的人物,所以它画出来的东西就是一些杂讯。鉴别器接下来它学习的目标是要分辨生成器的输出跟真正的图片的不同,对鉴别器,图片里面有没有眼睛,有眼睛就是真正的二次元人物,没有眼睛就是生成器产生出来的东西。
接下来生成器就调整它的参数。它调整参数的目标,是为了要骗过鉴别器,假设鉴别器,判断一张图片是不是真实的依据,看的是有没有眼睛,那生成器就生成眼睛出来给鉴别器看。每一代进化的过程都是这样。
在这里插入图片描述

2.1.1 训练鉴别器

首先初始化生成器和鉴别器的参数。训练鉴别器的话,需要将生成器的参数固定,然后更新鉴别器的参数。接下来拿真正的二次元人物头像跟生成器产生出来的结果,去训练鉴别器,鉴别器它训练的目标是要分辨,真正的二次元人物,跟生成器产生出来的二次元人物,它们之间的差异。把这些真正的人物都标1,生成器产生出来的图片都标0。
接下来对于鉴别器来说,这就是一个分类的问题,或者是regression的问题。
如果是分类的问题,就把真正的人脸当作类别1,Generator产生出来的,这些图片当作类别2,然后训练一个classifier就结束了。
或者把它当作regression的问题,那就教你的discriminator看到这些图片你就输出1,看到这些图片你就输出0。
在这里插入图片描述

2.1.2 训练生成器

训练生成器就是将鉴别器的参数固定,从而对生成器的参数进行更新。有一个generator,generator吃一个向量作输入,从gaussian distribution sample,出来的向量作输入,然后产生一个图片。再把这个图输入Discriminator里,Discriminator会给这个图片一个分数,generator根据这个分数来进行参数更新。Discriminator的输出值越大越好,因为Discriminator它本来训练的目标它就是看到好的图片就给它大的分数,如果generator可以调整参数之后,输出来的图片Discriminator,会给予高分,那意味著generator产生出来的图片是比较真实的。
在这里插入图片描述

三、理论介绍与WGAN

在生成器的训练中,假设Generator 的 Input 是一个一维的向量,Generator 的 Output 也是一维的向量,真正的 Data 也是一维的向量。其中,输出的分布记为 P G P_G PG,真实的分布记为 P d a t a P_{data} Pdata,则计算两个分布之间的最小值就是计算两个分布的divergence。一般情况下,两个分布之间的divergence很难直接通过公式计算出来,但是只要 P G P_G PG P d a t a P_{data} Pdata的分布能够被取样,那么可以通过其他的方法来计算 P G P_G PG P d a t a P_{data} Pdata的divergence的值。
在这里插入图片描述
根据 Real 的 Data 跟 Generative 的 Data,去训练一个 Discriminator,它的训练的目标是看到 Real Data,就给它比较高的分数;看到 Generative 的 Data,就给它比较低的分数。如下图所示, V ( D , G ) V(D,G) V(D,G)的值随着 D ( y ) D(y) D(y)的变化而变化,当y是从 P d a t a P_{data} Pdata中取样的时候,希望 D ( y ) D(y) D(y)的值越大越好,当y是从 P G P_G PG中取样的时候,希望 D ( y ) D(y) D(y)的值越小越好。
在这里插入图片描述
这里可以将maxV(D,G)等价成 P G P_G PG P d a t a P_{data} Pdata的divergence。当两者有较小的divergence的时候,maxV(D,G)的值也会变小,当 P G P_G PG P d a t a P_{data} Pdata的divergence很大的时候,两者的maxV(D,G)也会变大,此时鉴别器可以轻松的区分。
在这里插入图片描述
当两个分布之间没有重叠的部分的时候,JS divergence的值一直为log2。
在这里插入图片描述
为了解决以上问题,可以使用Wasserstein distance来解决。想象一台挖掘机,将P和Q想象成两个土堆,将P推到Q所需要用的平均距离就是Wasserstein distance。Wasserstein距离(也称为Wasserstein度量或Earth Mover’s Distance)是一种用于衡量两个概率分布之间的距离或差异的数学度量方法。它的主要思想是将一个分布转化为另一个分布所需的最小成本,其中成本可以用不同区域之间的“距离”来表示。Wasserstein距离通常用于衡量两个连续分布之间的距离,尤其在概率论、信息论、数值分析和机器学习等领域中有广泛应用。与传统的度量方法(如KL散度或JS散度)不同,Wasserstein距离考虑了分布之间的空间结构和距离,因此对于具有多个峰值或非均匀分布的情况更加鲁棒。
在这里插入图片描述
使用Wasserstein distance可以解决JS divergence的问题,如下图所示。
在这里插入图片描述

总结

生成器、鉴别器、GAN和WGAN是深度学习中用于生成数据和度量生成数据质量的关键概念。它们在图像生成、自然语言处理等领域具有广泛的应用,为生成逼真数据和提高模型性能提供了有效的方法和工具。下周,我将继续GAN的学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值