首页天道酬勤()

()

admin 12-05 00:04 249次浏览

鹰和蛇

想象一下很久以前,鹰喜欢抓蛇吃,但蛇和鹰不是现在的样子。后来,为了避免老鹰抓到它,蛇进化出了更光滑的皮肤。为了更好地抓住蛇,鹰的爪子变得越来越锋利。后来为了不让鹰看到,蛇进化出了与环境融为一体的保护色。为了更好地发现蛇,鹰进化出了更锐利的眼睛,甚至学会了“打草惊蛇”的技术,让蛇在移动时更容易分辨蛇和草。他们在竞争中不断提高自己。

对抗网络,也称为生成对抗网络,是一种众所周知的生成模型。我们在最后一节《理解变分自编码器》中谈到了VAE。其主要特点是将自编码器中的隐藏向量重新参数化为标准正态分布。在训练过程中,编码器和解码器同时存在,然后我们将解码器部分独立拆分为一个生成器。但是,在VAE,我们可能会保留输入变量和输出图片之间的关系,我们可能知道输入变量的哪一部分是由图片中的鼻子或眼睛表示的,但这并不意味着生成的图片是“好的”。

“好”的标准是模糊的。我们判断图片好坏的一个可能的标准是,我们能否分辨哪些图片是伪造的,哪些是真实的。如果不是,这种生成模式是好的。GAN的出发点是训练一个可以生成真实图片的生成模型。在训练中,既有生成器,也有鉴别器。生成器类似于VAE的解码器,接受变量并生成图片。鉴别器是判断生成器生成的图片是否真实的普通分类器。所以,GAN的图片比VAE的更像实拍图。

鉴别器和生成器的关系就像鹰和蛇的关系。发生器的目的是产生一幅假画,鉴别器的目的是把假画和真画分开。

如图所示,我们将矢量输入到生成器中,生成器的输出进入鉴别器,以确定这是否是真实的图片。

真正的关键问题是他们如何相互竞争。其实我们是想让二代发生器忽悠第一代鉴频器,也就是鉴频器的所有参数都是固定的,然后用反向传播来调整发生器的参数,让鉴频器分不清真假,然后得到二代发生器。同时,我们希望第二代鉴别器能够识别第一代发生器,因此发生器的所有参数都是固定的,并且使用反向传播来调整鉴别器的参数,以获得第二代鉴别器。重复这个过程,直到我们达到满意的结果。作为一个生成模型,我们最终需要的是一个生成器。

数学上,真实数据的分布是

,生成器生成模拟分布。

,由鉴别器判断是

s="pgc-img-caption">

的一致性:

图为GAN的示意图,从左到右,分别表示进化的过程,z表示输入的向量,x表示生成的数据,绿线表示生成数据所构成的分布,黑线表示真实的分布,蓝线表示两者的差异,就是判别器本身,我们可以看到,一开始,模拟分布和真实分布存在不少的差异,但随着不断进化,最终,模拟分布和真实分布一致,代表着我们的生成器生成了以假乱真的图片。

判别器作为损失函数

GAN虽然属于无监督学习,因为我们没用到它的类别信息。事实上,我们在判别器中却隐含了类别,即生成器生成的图片是假的,额外引入的用以比较的图片是真实的。按照常理来说,我们所见到所有优雅的模型,只要涉及类别信息,都会用一个Loss function来表达这种不一致性,即Loss越大,表示越不属于这一类别,Loss越小,代表和这一类别越相似,然后我们对Loss function执行梯度下降,找出最优的参数值。

但是涉及到真实图片和虚假图片,我们并不好使用单纯的一个函数来表达这样的关系,因为函数关系要涉及到像素值的计算,真实和虚假图片的像素值关系并不是很容易表达,尤其是,很多时候,真实图片之间的像素值差别大,真实图片和虚假图片之间的像素值差别小。

GAN采用了判别器作为我们的Loss function。固定好判别器,更新生成器的参数,这一过程就好比我们使用优化算法来迭代更新模型的参数,为的只是获得更小的Loss;而固定好生成器,更新判别器的参数,这一过程就像是我们针对性将模型的Loss更换为更精准的Loss,衡量真实图片与虚假图片更精确的差别。

所以从整个GAN的框架来看,采用了判别器作为Loss function的监督学习。那么我们自然会想,如果判别器代表着损失函数,那么我们一开始就将判别器训练的特别好,应该对生成器的提高有很大作用,但在初始的GAN的使用中恰恰相反,如果很早就将判别器训练地很好,生成器会变差。

这是为什么呢?

让我们回到开头那个例子,如果鹰一开始就进化出了更为犀利的眼神,甚至学会了“打草惊蛇”的技术,让蛇在移动的过程中,更容易分辨蛇和草,那么蛇可能就不会先进化出保护色,而是在鹰打草惊蛇的时候就不再逃跑,但是没有保护色的情况下,显然跑是更好的选择。过于强大的鹰可能会使得蛇的进化方向乱掉,正如我们的判别器,太过强大,就让生成器变得无所适从。

这是辅助理解的很好手段。从数学上来说,这是因为我们衡量两者差异的所使用的KL散度或者JS散度(Jensen-Shannon )随着生成分布和真实分布的样本空间不一致性的加大,这两个度量会失效。就是由于判别器太过强大,或者生成器太过弱小而导致度量无法反映出分布的差异。我们当然可以更改判别器,但是这一操作并不优雅也不现实,我们对他的改进方式就是采用了Wasserstein距离,即便样本空间不一致性非常巨大,Wasserstein距离仍然能够反分布之间的差异。(这也是WGAN的基本思想)

如图,我们换用不同的对真实分布和生成分布的度量办法后,我们在训练过程中会发现普通的GAN会产生梯度消失,这就是由于分布差异过大引起的,而在WGAN中,梯度近似线性化的。

作者结束语

AI仍然是一个火热的话题,去年机缘巧合之下在读芯术开始了这趟旅途,至此,周末AI课堂总共60讲已经全部结束了。期间,我选择了一些自认为值得一讲的主题,并尽可能的减少公式的推导,代码也尽量简单易读,希望能让有所基础的人更进一步理解公式和模型背后的直觉意义,让有所兴趣的人能够一窥机器学习的框架,快速搭建并验证模型。

如能得到诸位的喜欢,不胜感激。

山高水长,我们江湖再见。

Mybatis的动态Sql组合模式怎么实现DeepRust匹配:有更好的方法吗?C++构造析构赋值运算函数怎么应用雷士灯具管理系统
iclr2019录用率(iclr2020通知时间) 未来几年医学研究的突破(未来四大重要技术)
相关内容