前言
生成式对抗网络(二)
理论介绍(训练)
正态分布简化出的向量,给generator之后,会产生复杂的分布(PG),真正的分布(Pdata),期待PG和Pdata越接近越好。
用一维理解一下:假设输入是一个一维向量,generator的输出也是一个一维向量,真正的data也是一维向量。一维向量通过generator,会产生一个新的分布。
Divergence表示两个分布之间的距离,divergence越大,表示这两个分布越不像,越小表示越相近。找一组generator的参数,让PG和Pdata之间的divergence尽可能小。这个就像训练一个模型一样,不过loss可以计算,但是divergence如何计算就是一个问题。但是GAN告诉我们,只要能从PG和Pdata中sample东西,就有办法算divergence。从图库中随机sample出一些图片,就是Pdata。从正态分布中sample一些向量给generator,产生的图片就是从PG sample出来的。
如何计算divergence就要靠discriminator,根据从Pdata和PG中sample出来的数据,训练discriminator。看到Pdata的给比较高的分数,看到PG的给比较低的分数。
希望从Pdata中sample出来的y,把y丢到D里面在取log。把从PG里面sample出来的y,用1-y并取log。希望这个objective function V越大越好,意味着y从pdata出来的越大越好,反之,从PG出来的越小越好。
当训练一个classifier的时候要minimize cross entropy。而这个D*相当于是cross entropy取负号。Discriminator可以当做是一个classifier把从Pdata sample出来的当做class1,从PG的当做class2。
本来的目标是找一个generator使PG和Pdata的divergence尽可能小,卡在不知道怎么计算divergence。
现在只要训练一个discriminator,这个objective function的最大值就跟这个divergence有关。
所以可以把divergence替换掉。
总结
学习视频地址:https://www.bilibili.com/video/BV13Z4y1P7D7/?p=15&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=3a369b537e1d34ff9ba8f8ab23afedec