首页 > 编程知识 正文

featuretools自动特征工程,adversariality

时间:2023-05-05 02:04:39 阅读:134139 作者:3224

除了增强学习之外,生成式对抗网络无监控深度学习还主要包括BM、自动编码器AE和GAN领域。

一种深度学习模型,是近年来复杂分布无监督学习最有前景的方法之一。

它由生成模型(Generative Model )和判别模型(Discriminative Model )这2对网络联合工作,两者的游戏学习产生相当好的输出。 GAN中包括生成网络和判别网络两者,但本质上GAN的目的还是生成模型。

在原始的GAN理论中,g和d都不需要神经网络,只要是能与之配合生成判别的函数即可。 但是,在实用上一般将深度神经网络作为g和d来使用。 优秀的GAN应用需要良好的训练方法,否则由于神经网络模型的自由性可能导致输出不理想。

判断网络输入是训练数据还是网络生成的,准确区分数据来源的能力构成了生成网络错误级别表示的一部分。 这样,在判别器越来越擅长区分实际数据和生成数据的同时,生成器也在不断学习,成为难以区分判别器的竞争形式。 这种机制即使在相当复杂的类噪声模式下也最终可以预测,但有时是有效的,因为与输入数据特征相似的生成数据更难区分。

参考资料: http://geek.csdn.net/news/detail/230599

发展历史2014年Ian Goodfellow提出的

基本原理在这里以生成图像的例子进行说明。 假设您有两个网络: g (生成器)和d (分布器)。 正如其名称所暗示的那样,各自的功能如下。

g是生成图像的网络,在其输入时会产生随机的噪声z,从噪声中生成图像,用g(z )表示。

d是判别一张图像是否“真实”的判别网络。 其输入参数为x,x表示一张图像,输出d(x )表示x是真图像的概率,如果为1则表示100%是真图像,如果输出为0则表示不是真图像。

在训练过程中,生成网络g的目标是尽量生成真实图像欺骗判别网络d。 D的目标是尽量将g生成的图像和实际图像分离。 这样,g和d构成了动态的“游戏过程”。

最后的游戏结果是什么? 在最理想的状态下,g可以生成足以“以假乱真”的图像g(z )。 D的情况下,很难判定g生成的图像是否是真的,所以D(G(Z ) )=0.5。

训练原理下面的照片很好地描述了这个过程:

第一步,假设g已经被训练,只训练d。 D希望v(g,d )越大越好,所以加上梯度。

步骤2,假设d已经被训练,只训练g。 v(g,d )越小越好,减去梯度。

两个阶段的训练过程交替进行。

公式如下。

1 .整个公式由两项组成。 x表示实际图像,z表示输入至g网络的噪声,g(z )表示由g网络产生的图像。

2.d ) x )表示D网络判断实际图像是否真实的概率(由于x是真实的,对d来说这个值越接近1越好)。 d(g )-z ) )是判断d网络由g生成的图像是否真实的概率。

3.G的目的:如上所述,D(G ) z )是d网络确定g生成的图像是否是真实的概率,g应该希望自己生成的图像“越接近真实的越好”。 也就是说,g想尽量增大d(g ) z ),但此时v ) d、g )会变小。 因此,可知公式开头的符号是min_G。

4.D的目的: d的能力越高,D(X )应该越大,D(X ) x )应该越小。 此时v(d,g )变大。 因此,公式对d来说求出最大(max_D )。

GAN在训练中遇到的困难1 ) GAN很难训练——。 不仅要平衡两个网络(可能各自都有问题),还要很好地平衡动态情况。 如果预测或生成某一方比另一方强,该GAN就会不收敛而直接发散。

2 )生成器和鉴别器的loss无法指示训练过程。 训练的过程不稳定。

3 )模式崩溃的) collapse mode )问题,即样本生成缺乏多样性。

如何解决难以训练的困难1 ) GAN虽然难以训练,但修正了目标函数。 原Jensen-Shannon方差目标的简单修正:最小二乘法、absolute deviation with margin、还有Wasserstein距离;

2 ) Leaky ReLU,popularfordcgannetworksandforsmalldatasets,

3 ) Cycle GAN的d采用该方法将Loss变为L2 Loss,训练稳定性提高,优于传统的cross-entropy loss。

4 )训练员有很多技巧,如如何测量发生器和判别器的强弱控制一方的能力等,在判别器中加入minibatch,测量更多的样本,丰富生成多样性的网络深度和参数这些trick确实提高了GAN的训练稳定性和生成上的多样性,但GAN的问题是不可避免的。

应用1 )图像生成)目前GAN最常用的是超分辨率任务、语义分割等图像生成。

  2)数据增强:用GAN生成的图像来做数据增强。对于小数据集,数据量不足, 如果能生成一些就好了。

如果GAN生成了图片?怎么给这些数据label呢?因为他们相比原始数据也不属于预定义的类别。

  先用原始数据(即使只有2000张图)训练一个GAN,然后生成图片,加入到训练集中。 总结一下就是:
  1)GAN 生成数据是可以用在实际的图像问题上,且性能都有提升。
  2)GAN 数据有三种给pseudo label的方式(假设我们做五分类):
a)把生成的数据都当成新的一类, 六分类,那么生成图像的 label 就可以是 (0, 0, 0, 0, 0, 1) 这样给。
b)按照置信度最高的 动态去分配,那个概率高就给谁 比如第三类概率高(0, 0, 1, 0, 0)
c)既然所有类都不是,那么可以参考inceptionv3,搞label smooth,每一类置信度相同(0.2, 0.2, 0.2, 0.2, 0.2)。

  3)虽然得出的结论是没有明显的证据说明其他GAN比原始GAN好,但就生成高清图像来说,还是BEGAN和wgan-gp用的更多一些。

与VAE的比较

  1)AE中生成的loss是基于重建误差的。而只基于重建误差的图像生成,都或多或少会有图像模糊的缺点,因为误差通常都是针对全局。
  例如:真实数据分布在一个U形的流形上,而MSE系的方法因为loss的形式往往会得到一个接近平均值所在的位置。

  2)GAN在这方面则完爆其他方法,因为目标分布在流形上。所以只要大概收敛了,就算生成的图像都看不出是个啥,清晰度常常是有保证的。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。