1700539980
百面机器学习:算法工程师带你去面试 第13章 生成式对抗网络
1700539981
1700539982
2014年的一天,Ian Goodfellow与好友相约到酒吧。平日工作压力大,脑细胞已耗尽了创作激情,在酒吧的片刻放松使他想到一个绝妙的学术点子,那之后就有了生成式对抗网络的传说。生成式对抗网络,英文名叫Generative Adversarial Networks,简称GANs,是一个训练生成模型的新框架。GANs刚提出时没有晦涩的数学推演,描绘的是一幅动感十足的画面,恰好契合了东方哲学中的太极图——万物在相生相克中演化。把GANs想象成一幅太极图,“太极生两仪”,“两仪”好比生成器和判别器,生成器负责生,判别器负责灭,一生一灭间有了万物。生成器在初始混沌中孕育有形万物,判别器甄别过滤有形万物,扮演一种末日审判的角色。GANs自提出之日起,迅速风靡深度学习的各个角落,GANs的变种更是雨后春笋般进入人们的视野,诸如WGAN、InfoGAN、f-GANs、BiGAN、DCGAN、IRGAN等。GANs之火,就连初入深度学习的新手都能略说一二。
1700539983
1700539984
1700539985
1700539986
1700539988
百面机器学习:算法工程师带你去面试 01 初识GANs的秘密
1700539989
1700539990
1700539991
1700539992
场景描述
1700539993
1700539994
2014年来自加拿大蒙特利尔大学的年轻博士生Ian Goodfellow和他的导师Yoshua Bengio提出一个叫GANs的模型[32]。Facebook AI实验室主任Yann LeCun称该模型是机器学习领域近十年最具创意的想法。把GANs想象成造假币者与警察间展开的一场猫捉老鼠游戏,造假币者试图造出以假乱真的假币,警察试图发现这些假币,对抗使二者的水平都得到提高。从造假币到合成模拟图片,道理是一样的。下面关于GANs,从基础理论到具体模型,再到实验设计,我们依次思考如下几个问题。
1700539995
1700539996
知识点
1700539997
1700539998
MiniMax游戏,值函数(Value Function),JS距离(Jensen- Shannon Divergence),概率生成模型,优化饱和
1700539999
1700540000
问题1 简述GANs的基本思想和训练过程。
1700540001
1700540002
难度:★☆☆☆☆
1700540003
1700540004
分析与解答
1700540005
1700540006
GANs的主要框架如图13.1所示,包括生成器(Generator)和判别器(Discriminator)两个部分。其中,生成器用于合成“假”样本,判别器用于判断输入的样本是真实的还是合成的。具体来说,生成器从先验分布中采得随机信号,经过神经网络的变换,得到模拟样本;判别器既接收来自生成器的模拟样本,也接收来自实际数据集的真实样本,但我们并不告诉判别器样本来源,需要它自己判断。生成器和判别器是一对“冤家”,置身于对抗环境中,生成器尽可能造出样本迷惑判别器,而判别器则尽可能识别出来自生成器的样本。然而,对抗不是目的,在对抗中让双方能力各有所长才是目的。理想情况下,生成器和判别器最终能达到一种平衡,双方都臻于完美,彼此都没有更进一步的空间。
1700540007
1700540008
1700540009
1700540010
1700540011
图13.1 GANs模型的框架图
1700540012
1700540013
GANs采用对抗策略进行模型训练,一方面,生成器通过调节自身参数,使得其生成的样本尽量难以被判别器识别出是真实样本还是模拟样本;另一方面,判别器通过调节自身参数,使得其能尽可能准确地判别出输入样本的来源。具体训练时,采用生成器和判别器交替优化的方式。
1700540014
1700540015
(1)在训练判别器时,先固定生成器G(·);然后利用生成器随机模拟产生样本G(z)作为负样本(z是一个随机向量),并从真实数据集中采样获得正样本X;将这些正负样本输入到判别器D(·)中,根据判别器的输出(即D(X)或D(G(z)))和样本标签来计算误差;最后利用误差反向传播算法来更新判别器D(·)的参数,如图13.2所示。
1700540016
1700540017
1700540018
1700540019
1700540020
图13.2 GANs中判别器的训练
1700540021
1700540022
(2)在训练生成器时,先固定判别器D(·);然后利用当前生成器G(·)随机模拟产生样本G(z),并输入到判别器D(·)中;根据判别器的输出D(G(z))和样本标签来计算误差,最后利用误差反向传播算法来更新生成器G(·)的参数,如图13.3所示。
1700540023
1700540024
1700540025
1700540026
1700540027
图13.3 GANs中生成器的训练
1700540028
1700540029
问题2 GANs的值函数。
[
上一页 ]
[ :1.70053998e+09 ]
[
下一页 ]