363
0
0

GAN Generative adversarial network

2022-05-19
2023-03-16
文章摘要
|

1. 论文

2. 视频

主要内容

概述

GAN由生成器和判别器 (D) 组成,生成器 (G) 负责生成样本,判别器负责判断生成器生成的样本是否为真。生成器要尽可能迷惑判别器,而判别器要尽可能区分生成器生成的样本和真实样本。

目标函数

min⁡Gmax⁡DV(D,G)=Ex∼pdata(x)[log⁡D(x)]+Ez∼pz(z)[log⁡(1−D(G(z)))]\mathop {\min }\limits_G \mathop {\max }\limits_D V(D,G) = {\rm E}_{x\sim{p{data}(x)}}[\log D(x)] + {\rm E}_{z\sim{p_z}(z)}[\log (1 - D(G(z)))]

其中x∼pdata(x)x\sim{p{data}(x)} 代表真实数据,z∼Pz(z)z\sim{P_z(z)} 表示 随机高斯分布

目标函数可以分成两个部分来看

  1. 让判别器能尽量的分辨真实样本和生成器生成的样本。其中真实样本值为1,生成样本为0,可以把G暂时看作常量,求V关于D(其中的参数)的最大值。判别器完美情况下 V=0 ,否则 V<0。

max⁡DV(D,G)=Ex∼pdata(x)[log⁡D(x)]+Ez∼pz(z)[log⁡(1−D(G(z)))]\mathop {\max }\limits_D V(D,G) = {\rm E}_{x\sim{p{data}(x)}}[\log D(x)] + {\rm E}_{z\sim{p_z}(z)}[\log (1 - D(G(z)))]

EE代表期望值(平均值)
2. 让判别器能尽量的分辨不出来生成器生成的假样本。

min⁡GV(D,G)=Ez∼pz(z)[log⁡(1−D(G(z)))]\mathop {\min }\limits_G V(D,G) = {\rm E}_{z\sim{p_z}(z)}[\log (1 - D(G(z)))]

训练步骤

  1. 先固定生成器,训练判别器。判别器的输入为真实数据和生成数据,训练判别器使它能分辨出真实数据和生成数据。
  2. 固定判别器,训练生成器,上一步训练出来的判别器能判别之前生成的数据,现在要训练生成器使判别器判断不出来生成器生成的数据。
  3. 反复进行上面两个步骤。

conditional GAN

需要成对的数据,判别器既要能判断生成的数据是否真实,又需要判断生成的数据和输入的条件是否匹配。

  • 其中(c,x)∼pdata(c,x)(c,x)\sim{p{data}(c,x)} 代表真实数据且其中(c,x)(c,x)是匹配的
  • (c,x)∼pdata′(c,x)(c,x)\sim{p{data'}(c,x)} 也代表真实数据,但其中(c,x)(c,x)是不匹配的
  • z∼Pz(z)z\sim{P_z(z)} 表示 随机高斯分布

训练判别器:

max⁡DV(D,G)=E(c,x)∼pdata(c,x)[log⁡D(c,x)]+E(c)∼pdata(c),z∼pz(z)[log⁡(1−D(G(c,z)))]+E(c,x)∼pdata‘(c,x)[log⁡(1−D(c,x))]\mathop {\max }\limits_D V(D,G) = {\rm E}_{(c,x)\sim{p{data}(c,x)}}[\log D(c,x)] + {\rm E}_{(c)\sim{p{data}(c)},z\sim{p_z}(z)}[\log (1 - D(G(c,z)))] + {\rm E}_{(c,x)\sim{p{data‘}(c,x)}}[\log (1 - D(c,x))]

添加的第三项,就是为了使判别器能够分辨数据和标签是否匹配。就是为了判别器能够分辨生成器出来的数据和输入的标签是否匹配。

cycle GAN

XX是输入的图像,YY是需要转换的图像
DXD_X 是 XX的判别器,DYD_Y 是 YY的判别器
GG是第一个生成器,将输入图像转化成需要转换类型的图像,FF是第二个生成器,将转换后的图像再转换成输入的图像
损失函数 Loss=Lossgan+LosscycleLoss = Loss_{gan}+ Loss_{cycle}

Lossgan=Lgan(G,DY,X,Y)+Lgan(F,DX,X,Y)Loss_{gan} = L_{gan}(G,D_Y,X,Y) + L_{gan}(F,D_X,X,Y)
= Ey∼pdata(y)[log⁡DY(y)]+Ex∼pdata(x)[log⁡(1−DY(G(x)))]+Ex∼pdata(x)[log⁡DX(x)]+Ey∼pdata(y)[log⁡(1−DY(F(y)))]{\rm E}_{y\sim{p{data}(y)}}[\log D_Y(y)] + {\rm E}_{x\sim{pdata}(x)}[\log (1 - D_Y(G(x)))] + {\rm E}_{x\sim{p{data}(x)}}[\log D_X(x)] + {\rm E}_{y\sim{pdata}(y)}[\log (1 - D_Y(F(y)))]
类似于两个GAN接起来,变成一个循环。
Losscycle=Ex∼pdata(x)[∣∣F(G(x))−x∣∣1]+Ey∼pdata(y)[∣∣F(G(y))−y∣∣1]Loss_{cycle} = {\rm E}_{x\sim{p{data}(x)}}[||F(G(x)) - x||_1] + {\rm E}_{y\sim{p{data}(y)}}[||F(G(y)) -y||_1]

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

评论