图片生成器
组成: D:判别网络;G:生成网络;Loss:判别是真实模型的概率:是/否真值。对于D:maximize【D(x)+1-D(G(z))】 对于G:minimize【1-D(G(z))】 目标:
minGmaxDV(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(x)))] 假设前提:判别模型D,生成模型G具有学习能力,能够收敛。G: relu+sigmoid nn; D: maxout
优点:
不需要大量label数据,loss来源于D判定;产生大量生成数据用于训练,接近无监督学习;可以和深度神经网络结合。缺点:
数据直接生成,没有推导过程;生成器,判断器需要配合共同训练难度较大;容易出现训练失败。卷积神经网络+GAN 变化: 生成器G;判别器D(conv feat>1)
用一些信息对GAN的生成图片进行范围约束; 信息的类型:文字、图片;
训练过程输入:随机信息+约束信息特征。输入: 随机信息+约束信息特征
Where and what ?
关键点多层次参与图片生成。
利用图片生成相关的图片。
映射关系无限可能;图片分割;轮廓生成;热图生成;图片补全;高精度生成。模型结构: 随机输入同图片结合; G学习图片到转化图片的映射关系; D判断生成图片和正式图片是否一致。
LcGAN(G,D)=Ex,y∼pdata(x,y)[logD(x,y)]+Ex∼pdata(x),z∼pz(z)[log(1−D(x,G(x,z)))] $$ G:反池化,反卷积结构(deconv) Unet结构。 D:PatchGAN 图片整体优化会造成生成的图片边界模糊,高频信息难以估计。 解决方案:判别器关注在local区域。在DCGAN中,随机参数z的值有一定实际意义,如果有text label可以学习这种约束关系,如果没有label数据,则使用infoGAN。
infoGAN可以自动学习z中部分变量的意义。
Z分为两部分,c和z;c代表数据分布某种物理意义,z随机信号。I(X;Y)=H(X)−H(X|Y)=H(Y)−H(Y|X) 新的loss为: minGmaxDVI(D,G)=V(D,G)−λI(c;G(z,c)) 其中,V(D,G)为旧的loss。
例如,有四个pattern,设计出4个c,希望最终每个c对应一个pattern的强度。
确定c向量长度,观察各个c物理意义。 特点:
无监督学习;自动学到模式;可用于生成特点图片。 要求:
训练图片的模式比较明显。
**原因:**Loss函数选择不合适,使模型容易面临梯度小时,梯度不稳定,优化目标不定导致模型失败。
充分利用神经网络拟合性能以及数值近似。
判别器最后一层去掉sigmoid(使得loss更明显);生成器和判别器的loss不去log(使得loss更明显);判别器的参数更新截断;不用基于动量的优化算法。fork代码参见:https://github.com/KoalaTree/pix2pix-tensorflow
