Ian Goodfellow:生成对抗网络 GAN 的公式是怎样推导出来的

简介: 昨天,谷歌大脑研究科学家、生成对抗网络GAN的提出者Ian Goodfellow在Twitter推荐了他最喜欢的两个机器学习的Theory Hacks,利用这两个技巧,他在著名的GAN论文中推导了公式。

昨天,谷歌大脑研究科学家、《深度学习》的作者之一Ian Goodfellow在Twitter推荐了他最喜欢的两个机器学习“黑魔法”(Theory Hack)。Ian Goodfellow还是生成对抗网络GAN的提出者,利用这两个技巧,他在著名的GAN论文中推导了一个公式。

a6ed7505beca239050eb8d2ef4492d51821b1fc9

很多时候,我们想用代数/微积分来分析神经网络的最优行为。神经网络模型通常非常复杂,用代数方法来实现权重衰减或许可行,但想用代数方法来解决神经网络中大多数函数的参数优化问题就会太过复杂。

为了得到一个不那么复杂的模型,一个常见的直觉方法是使用线性模型。线性模型很好,因为它能很好的解决凸优化问题。但线性模型也有缺点:它过于简单,很多神经网络能做的事情线性模型不能做。这样,解决方法就简化了。

Theory Hack#1:将神经网络建模为一个任意函数(因此可以优化所有函数f的空间,而不是特定神经网络架构的参数theta)。与使用参数和特定的架构相比,这种方法非常简洁。

将神经网络视为一个函数,保留了线性模型的主要优点:多种凸函数问题。例如,分类器的交叉熵损失在函数空间中是凸的。

这个假设不是太准确,特别是与线性模型假设相比。但根据万能逼近定理(universal approximator theorem),神经网络可以较好地近似任意函数。

Theory Hack#2:如果你在同一空间优化所有函数时遇到困难,可以将函数想象成一个包含很多项(entries)的向量。评估函数f(x),其中x在R ^ n中,设想成在一个向量中查找f_x,其中x是一个整数索引。

有了Theory Hack#2,现在对函数进行优化就变成了一个常规的微积分问题。这种方法很直观,但不是100%准确。有关更多正式版本和关于何时可以使用的限制信息,请参阅《深度学习》书的19.4.2部分:http://www.deeplearningbook.org/contents/inference.html

利用这两个 theory hack,我和共同作者推导了GAN论文(Generative Adversarial Nets)中的第2个公式:https://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf ...

a88dcb6aacd189254a8f419003040946d45712b7

最后,Convex Optimization 这本书的3.2节有更多这样的theory hacks



原文发布时间为:2018-05-16

本文作者:肖琴

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”。

原文链接:Ian Goodfellow:生成对抗网络 GAN 的公式是怎样推导出来的

相关文章
|
2月前
|
存储 缓存 算法
|
4月前
|
机器学习/深度学习 API 算法框架/工具
【Tensorflow+keras】Keras API两种训练GAN网络的方式
使用Keras API以两种不同方式训练条件生成对抗网络(CGAN)的示例代码:一种是使用train_on_batch方法,另一种是使用tf.GradientTape进行自定义训练循环。
49 5
|
4月前
|
机器学习/深度学习 数据可视化 算法框架/工具
【深度学习】Generative Adversarial Networks ,GAN生成对抗网络分类
文章概述了生成对抗网络(GANs)的不同变体,并对几种经典GAN模型进行了简介,包括它们的结构特点和应用场景。此外,文章还提供了一个GitHub项目链接,该项目汇总了使用Keras实现的各种GAN模型的代码。
78 0
|
6月前
|
机器学习/深度学习 自然语言处理 算法
生成对抗网络(GAN):创造与竞争的艺术
【6月更文挑战第14天】**生成对抗网络(GANs)**是深度学习中的亮点,由生成器和判别器两部分构成,通过博弈式训练实现数据生成。GAN已应用于图像生成、修复、自然语言处理和音频生成等领域,但还面临训练不稳定性、可解释性差和计算资源需求高等挑战。未来,随着技术发展,GAN有望克服这些问题并在更多领域发挥潜力。
|
6月前
|
机器学习/深度学习 算法
BP反向传播神经网络的公式推导
BP反向传播神经网络的公式推导
40 1
|
5月前
|
机器学习/深度学习 PyTorch API
生成对抗网络(GAN)由两部分组成:生成器(Generator)和判别器(Discriminator)。
生成对抗网络(GAN)由两部分组成:生成器(Generator)和判别器(Discriminator)。
|
7月前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:生成对抗网络(GAN)
使用Python实现深度学习模型:生成对抗网络(GAN)
171 3
|
6月前
计算机网络——物理层-信道的极限容量(奈奎斯特公式、香农公式)
计算机网络——物理层-信道的极限容量(奈奎斯特公式、香农公式)
207 0
|
7月前
|
机器学习/深度学习 编解码 自然语言处理
深度学习500问——Chapter07:生成对抗网络(GAN)(3)
深度学习500问——Chapter07:生成对抗网络(GAN)(3)
105 0
|
7月前
|
机器学习/深度学习 JavaScript Linux
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
120 0