反向传播算法和生成对抗网络的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反向传播算法和生成对抗网络的区别相关的知识,希望对你有一定的参考价值。

参考技术A 机器学习
生成式对抗网络(GANs)及变体

HheeFish
原创
关注
0点赞·1334人阅读

生成式对抗网络GANs及变体
1.基础GAN
2.条件生成对抗网络(cGAN)
3.Wasserstein GAN (WGAN)
WAN-GP (improved WGAN)
3.Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks (DCGANs)
4.Progressive Growing of GANs for Improved Quality, Stability, and Variation (ProGAN)
5.Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets (InfoGAN)
6.Image-to-Image Translation with Conditional Adversarial Networks (pix2pix)
7.Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks(CycleGAN)
8.A Style-Based Generator Architecture for Generative Adversarial Networks(StyleGAN)
9.Recurrent GAN (RGAN) and Recurrent Conditional GAN (RCGAN)
10.LSGAN(Least Square GAN)
1.基础GAN
生成式对抗网络是Ian Goodfellow等人在2014年开发的。GANs属于生成模型。GANs是基于最小最大值和零和博弈理论。为此,GANs由两个神经网络组成:一个是Generator,另一个是Discriminator。生成器的目标是学习生成虚假的样本分布来欺骗鉴别器,而鉴别器的目标是学习区分生成器生成的真实分布和虚假分布。
GAN的总体结构由生成器和鉴别器组成,如图1所示。生成器(G)将一些随机噪声向量Z作为输入,然后

反向传播和反向模式 autodiff 有啥区别?

【中文标题】反向传播和反向模式 autodiff 有啥区别?【英文标题】:What is the difference between backpropagation and reverse-mode autodiff?反向传播和反向模式 autodiff 有什么区别? 【发布时间】:2018-09-30 06:13:07 【问题描述】:

通过这个book,我熟悉了以下内容:

对于每个训练实例,反向传播算法首先生成一个 预测(前向传递),测量误差,然后遍历每个 反向层以测量每个层的误差贡献 连接(反向传递),最后稍微调整连接 权重以减少误差。

但是我不确定这与 TensorFlow 的反向模式 autodiff 实现有何不同。

据我所知,反向模式 autodiff 首先正向遍历图形,然后在第二遍中计算输出相对于输入的所有偏导数。这与传播算法非常相似。

反向传播与反向模式 autodiff 有何不同?

【问题讨论】:

【参考方案1】:

感谢 David Parks 的有效贡献和有用链接的回答,但是我已经找到了本书作者本人对这个问题的回答,这可能会提供更简洁的答案:

反向传播是指使用多个反向传播步骤训练人工神经网络的整个过程,每个反向传播步骤计算梯度并使用它们执行梯度下降步骤。 相比之下,反向模式自动差异只是一种用于有效计算梯度的技术,它恰好被反向传播使用。

【讨论】:

这是一种递归定义:反向传播由多个反向传播步骤组成。我会说这是一个相当糟糕的定义。【参考方案2】:

反向传播和反向模式 AD 之间最重要的区别是,反向模式 AD 从 R^n -> R^m 计算向量值函数的向量-雅可比积,而反向传播从 R^n -> R 计算标量值函数的梯度。因此,反向传播是反向模式 AD 的子集。

当我们训练神经网络时,我们总是有一个标量值损失函数,所以我们总是使用反向传播。由于反向传播是反向模式 AD 的子集,所以我们在训练神经网络时也使用反向模式 AD。

反向传播是否采用更一般的反向模式 AD 定义应用于标量损失函数,或者更具体的反向模式 AD 定义应用于标量损失函数用于训练神经网络 是个人喜好问题。这是一个在不同语境中含义略有不同的词,但在机器学习社区中最常用于谈论使用标量损失函数计算神经网络参数的梯度。

为了完整性:有时反向模式 AD 可以在一次反向传递中计算完整的雅可比,而不仅仅是向量雅可比积。此外,向量为向量 [1.0] 的标量函数的向量雅可比积与梯度相同。

【讨论】:

聚会有点晚了,但这是一个很好的解释!【参考方案3】:

自动微分不同于标准微积分课程中教授的关于如何计算梯度的方法,并且在某些特性上有所不同,例如它采用数据结构的梯度的本机能力,而不仅仅是一个定义明确的数学函数。我不够专业,无法进一步详细说明,但这是一个很好的参考资料,可以更深入地解释它:

https://alexey.radul.name/ideas/2013/introduction-to-automatic-differentiation/

这是我刚刚找到的另一个看起来很不错的指南。

https://rufflewind.com/2016-12-30/reverse-mode-automatic-differentiation

我相信反向传播可能正式指的是用于计算梯度的手动微积分算法,至少它最初是这样派生的,并且是在该主题的课堂上教授的方式。但在实践中,反向传播与上述指南中描述的自动微分方法可以互换使用。因此,将这两个术语分开在语言学中可能与数学一样多。

我还注意到这篇关于反向传播算法的好文章,以便与上述关于自动微分的指南进行比较。

https://brilliant.org/wiki/backpropagation/

【讨论】:

以上是关于反向传播算法和生成对抗网络的区别的主要内容,如果未能解决你的问题,请参考以下文章

生成对抗网络(GAN)详细介绍及数字手写体生成应用仿真(附代码)

50行PyTorch代码实现生成对抗网络(GANs)

(转) 简述生成式对抗网络

机器学习算法 之DCGAN

一文看懂「生成对抗网络 - GAN」基本原理+10种典型算法+13种应用

一种基于生成对抗网络的无人机图像去雾算法