首页 > 其他分享 >GAN概述

GAN概述

时间:2022-11-29 23:35:10浏览次数:57  
标签:输出 一个 生成器 生成 GAN 分布 概述

GAN(Generative Adversarial Network) 生成对抗网络

1. 为什么要有这个东西?

为了解决相同输入x,不同输出y的情形,每一个输出都是对的,唯一可以知道的是他服从某一个分布。

李宏毅中的例子是根据游戏的前三帧,去预测下一帧,当前三帧游戏人物走到路口的时候,下一帧可能左拐也可能右拐,无法得到一个确切的输出,只能得到一个概率分布。
也可以用于扩充样本。

2. 生成对抗网络是什么?

一个生成对抗网络主要包含 生成器 + 判别器

  1. 生成器(G)的主要作用就是根据一个输入z(满足某个分布的向量)随机生成输出y(满足另一个分布)

  2. 判别器(D)的主要作用是判断G的某一堆输出y_s与最终要生成的数据的相似程度 相似度越高打分越高

  3. 直观理解:

    3.1 正常的network都是给定一个 x,得到一个 y, 记作{f(x) = y}

    3.2 这里为了使得给定一个x得到不同的y,同时再给定一个z1(满足某种简单的分布Z),这样便成了 f(x,z1) = y

    3.3 因为z服从一个分布Z,那么y也服从一个分布Y,这样的话对于一个输入x得到的输出就是一个分布,而不是确定的值,等到预测的时候 给定x, 同时从Z分中随机选取一个z1,就能得到一个满足Y分布的结果

    img

4. 如何保证分布Y就是我们想要的 概率分布呢?

使用 判别器D 建立一个分类的network,他的输入是 生成器G 的输出,和我们已知的样本分布,输出是一个值,表示他和所需要生成的样本的差异程度,用这个值来表示 生成器G 表现好不好
img

真正计算的时候: 从real_data (标签1) 和 generated_data(标签0) 中随机抽取出若干个输入network分类,设定loss使得real_data得分尽可能高,generated_data 的分尽可能低

img

同时可以从理论上推导这个 loss Function和 JS Diversion 是有关联的,直观理解也好理解,只有分布相似,差异小才难分,然后那个maxV才不会太大,所有Diversion越小,maxV越小【具体推导见GAN原paper:https://arxiv.org/abs/1406.2661

5. 整体优化目标是什么,如何训练?

img

6. GAN 是很难train的,原因是什么?

  1. 真实数据和生成的数据的分布存在重合很难 (1.所有图像空间中动漫的分布很小很小,存在交集就更难了 2.即使分布存在交集,我们sample出来的点构成的分布未必存在交集)

  2. JS Diversion的特性是只要没有重合那两个分布的距离就是固定的log2

所以可以看出JS divergence 不好,后人改用了W distance(Wasserstein distance)来衡量两个分布之间的距离,它的定义是通过移动一个分

布P中的样本点使其满足另一个分布Q,所需要移动的最小距离就是W distance

img

6.1 那W distance 如何计算

img

lipschitz 条件

img

6.2 如何使得函数D满足上述条件

img

7. 生成器 和 判别器 必须水平相当才能训练起来,怎么保证双方水平相当呢?

一些tip

img

8. 怎么评估一个GAN的好坏,评估其生成的图片的质量的好坏

评估图像质量

img

评估图像多样性

img

综合质量和多样性的话就是Inception Score

这种评估手段无法检测出的一些问题

img

标签:输出,一个,生成器,生成,GAN,分布,概述
From: https://www.cnblogs.com/da-zhi/p/16937103.html

相关文章