【算法笔记】GAN 生成对抗网络

参考:

  1. https://www.cnblogs.com/bonelee/p/9166084.html
  2. https://www.cnblogs.com/DicksonJYL/p/9698877.html

1. 生成(Generator)

模型通过学习一些数据,然后生成类似的数据。
比如让模型学习很多动物图片,最终计算机就可以自行生成动物图片了
在这里插入图片描述
训练完成后,即使没有NN Encoder,输入一段Code,也可以使用NN Decoder生成相关图片

但是,现有的评价方式,比如计算生成图片与标准图片逐像素的平方距离,无法有效地判断

2. GAN (Generative Adversarial Networks)

GAN是如何工作的呢?
在这里插入图片描述
首先,有一个很菜的生成网络Gv1,可以生成质量很差的图片, 一个很菜的分类网络Dv1,可以对图片进行很差的分类。
然后,对Gv1进行训练,使它成为一般般的生成器Gv2。能让Dv1分辨不出来。然后训练Dv1,使它能够识别出Gv2生成的假图片。
以此类推,最终Dv,Gv都会成为非常厉害的生成器和分类器。

3. 损失函数

首先我们知道真实图片集的分布 Pdata(x),x 是一个真实图片,可以想象成一个向量,这个向量集合的分布就是 Pdata。我们需要生成一些也在这个分布内的图片,如果直接就是这个分布的话,怕是做不到的。

我们现在有的 generator 生成的分布可以假设为 PG(x;θ),这是一个由 θ 控制的分布,θ 是这个分布的参数(如果是高斯混合模型,那么 θ 就是每个高斯分布的平均值和方差)

假设我们在真实分布中取出一些数据,{x1, x2, … , xm},我们想要计算一个似然 PG(xi; θ)

对于这些数据,在生成模型中的似然就是:
在这里插入图片描述
如何最大化这个似然,是GAN做的事情
在这里插入图片描述
为了学习产生器在数据集x上的分布pg,我们在输入的噪声变量pz(z)上定义一个先验,在表示一个到数据空间的映射G(a;θg),G是一个用参数为θt的多层感知机表示的可微函数。我们同时定义一个另一个多层感知机D(x; θd)输出一个标量。表示x来自数据集而非产生器G。我们训练D以最大化正确分辨输入数据来自G还是真实数据,同时最小化log(1 − D(G(z))):

用自己的话来说,GAN的损失函数分为两个部分。第一个部分,对绅士图片的分类,这个部分的D(x)越大越好,而第二个部分是对网络产生的假图片进行损失函数计算,这一部分的D(G(z))越小越好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值