对抗生成网络中,输入噪声的维度,以 mnist为例,是28*28=784的图像
gan的本质是将一个均匀随机分布映射到mnist上,假设mnist是任意图像,不仅仅是手写数字,理论上噪声维度需要784以上才能完成这个任务
但大部分数据是冗余的,可以使用更低维度的数据重建它
算法具体步骤
初始化 generator 和 discriminator
在每一轮迭代中,step 1,固定 generator G,更新 discriminator D
step 2,固定discriminator D, 更新 generator G
discriminator 的作用是 给来自于 Database 的样本图片给高分
给来自于 generator G 生成的图片给低分
generator 的作用是,fool D ,希望 G 产生的图片 D 能够给它高分
所以 G 和 D 合起来相当于一个巨大的 network,假设 G 和 D 分别是五层,固定住后面五层,去训练前面的五层,让 D 的输出越大越好
GAN 的公式理解
V(G, D) = Ex~data(logD(x)) + Ex~G log(1-D(x)) # 为什么要用对数公式表示呢,,,在数学知识里面写了,信息熵要满足两个条件,(一)不确定性是概率的减函数,用反比例函数
(二) 两个不确定性事件等于各自不确定性之和,因此用对数函数来表示 log(ab)=log(a)+log(b)。。。反比例函数和对数函数的复合函数还是减函数
GAN 的目的就是使上面这个公式最大化【当 x~data时,logD(x) 越大越好,当x~G 时,log(D(x)) 越小越好,因此 log(1-D(x)) 越大越好】综上,用优化方法使上式越大越好