李宏毅——GAN笔记_day01

Basic Idea of GAN

生成式对抗网络(GAN, Generative Adversarial Networks )
其中有两个重要的概念分别是Generator and Discriminator。

Generator

它本质是一个神经网络。输入为向量vector,输出为图像,也就是高维的vector。
vector的每一个维度都代表了一些特征。
李宏毅——GAN笔记_day01

Discriminator

它的本质同样是一个神经网络。只不过它的输入是图片,输出 是一个数值scalar。
这个数值大就表示为prob越大,越像真的,小则为假。
李宏毅——GAN笔记_day01

G and D 的关系

老师 和学生的比喻。(佐助和鸣人的关系)
李宏毅——GAN笔记_day01

Algorithm 算法

初始化generator和discriminator后,在每一次迭代的过程中:

Step1:固定住Generator,调discriminator的参数。

在generator输入随机的vector会产生很多图片。我们本身有一个database,里面都是二次元任务头像,我们从里面sample出一些头像。
我们要调整discriminator的参数:要给database里面的图片高分,给generated objects低分。
李宏毅——GAN笔记_day01

Step2 固定discriminator,调generator的参数。

需要调整generator的参数,使discriminator的输出越大越好。
其实在实际中,会把G和D两个神经网络接在一起。在这一步的话,就只调节前面几层hiddenlayer的值。
李宏毅——GAN笔记_day01

Math

李宏毅——GAN笔记_day01
Learning_D:
① 我们有一个database里面都是二次元人物头像,从这个database中sample出m张图片。m相当于batch_size。
② 我们从distribution中sample出m个vector。vector的维度是一个超参数,自己调整。
③根据m个vector,generator会产生m个image。
④调整discriminator:
我们要maxmize这个objective function:李宏毅——GAN笔记_day01
首先把m张真实的图片拿出来,让他们通过discriminator得到分数。取log后取平均值。我们要训练这个D,让真实图片,也就是D(xi)越大越好。
李宏毅——GAN笔记_day01
第二项意思是:让假的图片的值越小越好。
⑤ 设置hyper_parameters, 调整多少次。
对objecti_function取gradient,乘以learning_rate去调整参数。
李宏毅——GAN笔记_day01

Learning_G
① Sample m个 random vector。(随机取,不需要和之前相同)
② vector=>generator=>image=>discriminator=>数值scalar=>log==>平均值。
对objecti_function取gradient,乘以learning_rate去调整参数。