资源描述:
《生成对抗网络(GANs).ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、DIG:DataIntelligenceGenerationLab山西大学计算机科学与信息技术学院山西大学大数据科学与产业研究院生成式对抗网络原理及其发展:GenerativeAdversarialNets2017年12月知识工程OUTLINEGenerativeAdversarialNets(GANS)DeepConvolutionalGenerativeAdversarialNetworks(DCGAN)ConditionalGenerativeAdversarialNets(CGAN)OUTLINEGenerat
2、iveAdversarialNets(GANS)DeepConvolutionalGenerativeAdversarialNetworks(DCGAN)ConditionalGenerativeAdversarialNets(CGAN)GenerativeAdversarialNets(GANS)有监督学习经常比无监督的能获得更好的训练效果。但真实世界中,有监督学习需要的数据标注(label)是相对少的。所以研究者们从未放弃去探索更好的无监督学习策略,希望能从海量的无标注数据中学到对于这个真实世界的表示甚至知识,从而
3、去更好地理解我们的真实世界。评价无监督学习好坏的方式有很多,其中生成任务就是最直接的一个。只有当我们能生成/创造我们的真实世界,才能说明我们是完完全全理解了它。然而,生成任务所依赖的生成式模型(generativemodels)往往会遇到两大困难。首先是我们需要大量的先验知识去对真实世界进行建模,其中包括选择什么样的先验、什么样的分布等等。而建模的好坏直接影响着我们的生成模型的表现。另一个困难是,真实世界的数据往往很复杂,我们要用来拟合模型的计算量往往非常庞大,甚至难以承受。GenerativeAdversarialN
4、ets(GANS)IanGoodfellow提出的GenerativeAdversarialNetworks(GANs)很好的避开了这两个困难。每一个GAN框架,都包含着一对模型——一个生成模型(G)和一个判别模型(D)。因为D的存在,才使得GAN中的G不再需要对于真实数据的先验知识和复杂建模,也能学习去逼近真实数据,最终让其生成的数据达到以假乱真的地步——D也无法分别。论文中的模型优化公式:GenerativeAdversarialNets(GANS)GenerativeAdversarialNets(GANS)Sa
5、mpleminibatchofmexamples{x_1,x_2,......,x_m}sampleminibatchofmnoisesamples{z_1,z_2,......,z_m}GeneratorDiscriminatorGenerativeAdversarialNets(GANS)代码说明及实验成果:#定义判别器defdiscriminator(x):#计算D_h1=ReLU(x*D_W1+D_b1),该层的输入为含784个元素的向量D_h1=tf.nn.relu(tf.matmul(x,D_W1)+D_b
6、1)#计算第三层的输出结果。因为使用的是Sigmoid函数,则该输出结果是一个取值为[0,1]间的标量(见上述权重定义)#即判别输入的图像到底是真(=1)还是假(=0)D_logit=tf.matmul(D_h1,D_W2)+D_b2D_prob=tf.nn.sigmoid(D_logit)#返回判别为真的概率和第三层的输入值,输出D_logit是为了将其输入tf.nn.sigmoid_cross_entropy_with_logits()以构建损失函数returnD_prob,D_logitGenerativeAdv
7、ersarialNets(GANS)#定义一个可以生成m*n阶随机矩阵的函数,该矩阵的元素服从均匀分布,随机生成的z就为生成器的输入defsample_Z(m,n):returnnp.random.uniform(-1.,1.,size=[m,n])#定义生成器defgenerator(z):#第一层先计算y=z*G_W1+G-b1,然后投入激活函数计算G_h1=ReLU(y),G_h1为第二次层神经网络的输出激活值G_h1=tf.nn.relu(tf.matmul(z,G_W1)+G_b1)#以下两个语句计算第二层传
8、播到第三层的激活结果,第三层的激活结果是含有784个元素的向量,该向量转化28×28就可以表示图像G_log_prob=tf.matmul(G_h1,G_W2)+G_b2G_prob=tf.nn.sigmoid(G_log_prob)returnG_probGenerativeAdversarialNets(GANS)#分别输入真