房地产网站开发公司,wordpress书店主题,上海网站建设微信开发,网站改版建议书假如要生成一些人脸图#xff0c;实际上就是想要找到一个分布#xff0c;从这个分布内sample出来的图片像是人脸#xff0c;分布之外生成的就不像人脸。而GAN要做的就是找到这个distribution。 在GAN之前用的是Maximum Likelihood Estimation。
Maximum Likelihood Estimat…假如要生成一些人脸图实际上就是想要找到一个分布从这个分布内sample出来的图片像是人脸分布之外生成的就不像人脸。而GAN要做的就是找到这个distribution。 在GAN之前用的是Maximum Likelihood Estimation。
Maximum Likelihood Estimation(最大似然估计)
最大似然估计的思想是假设数据的分布是 Pdata(x) 定义一个分布为PG(x;θ) 求得一组参数θ使得PG(x;θ) 与Pdata(x) 越接近越好。具体步骤如下
从Pdata(x) 中sample出一些样本对于sample出来的样本可以计算出它们的likelihood计算总分likelihood L并找到一组参数θ* 使得L最大。 MLEMinimize KL Divergence
最大似然估计就相当于最小化的KL散度。 如果使用最大似然估计采用高斯混合模型定义PG ,生成的图片会非常模糊现在使用generator产生PG 。优化的目标就是使PG 和Pdata 越接近越好即使得G* 越小越好但是不知道PG 和Pdata 的公式。 虽然不知道PG 和Pdata 的公式但是可以从这两个分布中做sample。可以用Discriminator来衡量PG 和Pdata 的Divergence。训练出来的maxV(G,D) 就相当于JS divergence。 证明过程
要求V(G,D)的最大值就是求 的最大值。 因为PG 和Pdata 都是固定的所以设为常数然后通过求导求出最大值。 将求出的D* 回带入V(G,D)然后化简。 Generator 的训练目标就是找到一个G* 去最小化PG 和Pdata 之间的差异即 由于不知道PG 和Pdata 的具体公式所以无法直接计算divergence。于是通过一个discriminator来计算两个分布之间的差异 。所以最终优化目标为 。
假设已经把Generator固定住了红点表示固定住G后的 也就是PG 和Pdata 的差异。现在的目标是最小化这个差异所以下图的三个网络中G3 是最优秀的。 具体的做法就是
首先固定G找到一个能够使V最大的D然后固定D找到能够使这个最大D情况下V最小的G。不停的迭代。 虽然L(G)中有求最大值但是它依然可以做微分即分段求微分。 具体算法如下
给定一个G0 求解出使得V(D,G) 最大的D0* 利用梯度下降求解出G1 ;利用G1 求解出使得V(D,G) 最大的D1* 不断迭代。 其实在训练过程中不是真正的minimize JS散度因为G在训练时变化时V(D,G) 也会发生改变此时由于D固定所以JS散度会变得不再是此刻G下的JS散度了。所以要保证V(D,G0) 和V(D,G1) 很像即G的参数变化很小。 Algorithm for GANReview
首先训练D多训练几次直至收敛之后训练G其中第一项是与生成器无关的由于G不能训练太多否则会导致D无法evaluate JS所以update一次就好。 In practice
理论上V是要取期望值但是实际上是不可能的只能用样本的均值进行估计。 论文原文在实作的时候把log(1-D(x)) 换成-log(D(x)) 蓝色曲线刚开始的值很大适合做梯度下降。其实后来实验证明两种结果都差不多。