欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Gan的loss函数

程序员文章站 2023-12-31 20:42:40
...

1. Classic Adversarial Loss

优化目标为:

Gan的loss函数

D(x)为经过sigmoid的输出值

1)在GAN第一阶段——求Discriminator,最大化

 Gan的loss函数

 实验中统计梯度是对最小值进行寻优的,因此实际操作上是对目标函数做最小化处理:

Gan的loss函数

 实现方式:

dis_real、dis_fake分别为真假样本输入判别器输出的logit,未经过sigmoid

(1)直接计算            
L1 = F.mean(-F.log(F.sigmoid(dis_real)))      
L2 = F.mean(-F.log(1-F.sigmoid(dis_fake)))      
loss_dis = L1 + L2

(2)BCEWithLogitsloss(p,y), p为判别器输出的logit,未经过sigmoid,y为判别器输入对应的标签
BCEWithLogitsloss(p,y) = -[ylog(sigmoid(p))+(1-y)log(1-sigmoid(p))]

BCELoss()和BCEWithLogitsLoss()的区别
https://blog.csdn.net/qq_16236875/article/details/87980867

L1 = BCEWithLogitsloss(dis_real,y_real)     
L2 = BCEWithLogitsloss(dis_fake,y_fake)       
loss_dis = L1 + L2

(3)softplus(p), p为判别器输出的logit,未经过sigmoid
softplus(-p) = log(1+exp(-p)) = -log(1/(1+exp(-p))) = -log(sigmoid(p))
softplus(p) = log(1+exp(p)) = -log(1/(1+exp(p))) = -log(1-1/(1+exp(-p))) = -log(1-sigmoid(p))

L1 = F.mean(softplus(-dis_real))      
L2 = F.mean(F.softplus(dis_fake))      
loss_dis = L1 + L2

2)在GAN第二阶段——求Generator,最小化

Gan的loss函数

2. WGAN的loss object functions:

Gan的loss函数

L为真实分布与生成分布之间的Wasserstein距离。

注意原始GAN的判别器做的是真假二分类任务,所以最后一层是sigmoid,但是现在WGAN中的判别器做的是近似拟合Wasserstein距离,属于回归任务,所以要把最后一层的sigmoid拿掉。

(1)在GAN第一阶段——求Discriminator,最大化L,等价于最小化下式

Gan的loss函数

其数值越小,表示真实分布与生成分布的Wasserstein距离越大,dis训练得越好。

 实现方式:

dis_real、dis_fake分别为真假样本输入判别器输出的logit,未经过sigmoid

loss_dis = - F.mean(dis_real) + F.mean(dis_fake)

(2)在GAN第二阶段——求Generator,最小化L

Gan的loss函数

 3.Hinge loss

最初是SVM中的概念,其基本思想是让正例和负例之间的距离尽量大,后来在Geometric GAN中,被迁移到GAN:

Gan的loss函数

(1)在GAN第一阶段——求Discriminator,min LD,

Gan的loss函数

希望D(x)越>1越好,此时的loss为0,D(G(z))越<-1越好,此时loss为0。便可将真样本与假样本分开与-1,1两端。

对于D来说,只有当D(x) < 1 的正向样本,以及D(G(z)) > -1的负样本才会对结果产生影响

也就是说,只有一些没有被合理区分的样本,才会对梯度产生影响这种方法可以使训练更加稳定。

dis_real、dis_fake分别为真假样本输入判别器输出的logit,未经过sigmoid

loss_dis = F.mean(F.relu(1. - dis_real)) + F.mean(F.relu(1. + dis_fake))

(2)在GAN第二阶段——求Generator,min LG,

Gan的loss函数

优化D时,希望D(G(z))越<-1越好,此时则希望D(G(z))越大越好,则更倾向于真样本。故最小化-D(G(z))。

Geometric GAN的判别器力图把真实样本映射到大于1的区间,把伪造样本映射到小于-1的区间。

上一篇:

下一篇: