目录
GAN
把network作为generator使用,特别的地方就是network的输入会加上一个随机变量z,这个z可能是从某一个distribution采样出来的,该distribution应该够简单,它可能是一个公式,以便我们采用,也就是同时看输入x和z得到输出。
z特别的地方是:它是不固定的,每次我们用该网络时都会生成一个z,每次由输入x时,我们都从distribution中做一个sample和x运算,这时我们network的输出就会转化成一个复杂的distribution,我们叫该类网络为生成对抗网络。
那么为什么有时候需要输出时一个分布呢?
使用普通的网络,在训练资料中有时会存在多种可能性,所以最终预测的时候可能会得到错误的结果,就比如游戏人物预测结果可能同时向左向右转
为了解决这类问题,一种方法就是让网络的输出不再是固定的,而是有概率的,输出一个几率的分布,也就是同时包含向左转和向右转的可能性。假设z是一个bimary的随机变量,有0和1各占0.5的概率,网络可以学习到的结果可能就是z采样到1的时候就向左,采样到0就向右,这样就可以解决多种可能性的问题。
总结起来就是,我们想要找一个function,但是同样的输入有多种可能的输出,而这些不同的输出都是对的,这时候我们就需要机器有一些创造的能力,举例来说就是聊天机器人的应用。
Unconditional generation(没有x)
输入为z,输出y;假如z是一个normal distribution中采样出来的一个低维向量,y是一个复杂的输出分布,当输入的向量不同的时候,就会输出不同的图片
GAN网络除了Generator外,还要多训练一个Discriminator
介绍:Discriminator本身也是一个神经网络,假设拿一张图片作为输入,输出就是一个数字Scalar,其值越大,就说明输入的图片越像我们想要的图像
generator和discriminator的网络结构我们都可以自己设定
GAN的基础架构
以以上的例子接着说,假设generator需要输出我们想要的图片,学习一开始输出的效果可能并不好,然后discriminator就会把输出图片和真实图片做对比,得出它和我们期望的结果的一个衡量值,然后generator为了骗过discriminator,就会继续进化,产生上一代discriminator期望的特征,但是discriminator也会继续进化,他会继续分辨第二代generator生成的图片和真实图片之间的差距,,循环往复,二者不断进步,