理解原始Gan Loss 和 Hinge Gan Loss

  • Post author:
  • Post category:其他




原始Gan Loss





m

i

n

G

 

m

a

x

D

 

V

(

D

,

G

)

=

E

x

P

d

a

t

a

[

l

o

g

 

D

(

x

)

]

+

E

z

P

z

 

(

Z

)

[

l

o

g

(

1

D

(

G

(

Z

)

)

)

]

\mathop{min}\limits_{G}\space \mathop{max}\limits_{D}\space V(D,G) = E_{x\sim P_{data}}[log\space D(x)] + E_{z \sim P_z \space (Z)}[log(1-D(G(Z)))]















G









min






























D










ma


x






















V


(


D


,




G


)




=









E











x






P











d


a


t


a




































[


l


o


g




D


(


x


)]




+









E











z






P










z






















(


Z


)



















[


l


o


g


(


1













D


(


G


(


Z


)))]





该Loss的目标是同时优化两个对立的目标,即maximize V(D)和minimize V(G).

首先,最大化V(D)时,函数图像分别为

因此,要想

最大化V(D),只需要D(x) → 1,D(G(Z)) → 0

(注: 原始GAN Loss中判别器D 的输出需要经过Sigmoid 的函数,故其输出的值为 0 ~ 1) 即可,即使得对于真实图像Discriminator的输出概率D(x)趋近于1,而对于生成的图像Discriminator的输出概率接近于0,便可实现最大化V(D)从而优化判别器的目的。

其次,要优化Generator,便要最小化 V(G),由于公式的中第一项



E

x

P

d

a

t

a

[

l

o

g

 

D

(

x

)

]

E_{x\sim P_{data}}[log\space D(x)]







E











x






P











d


a


t


a




































[


l


o


g




D


(


x


)]





不含G,因此只需最小化



E

z

P

z

 

(

Z

)

[

l

o

g

(

1

D

(

G

(

Z

)

)

)

E_{z \sim P_z \space (Z)}[log(1-D(G(Z)))







E











z






P










z






















(


Z


)



















[


l


o


g


(


1













D


(


G


(


Z


)))





即可,由函数图像可知,

最小化 V(G)只需要让D(G(Z)) →1即可

。分别训练生成器和判别器一段时间,再联合进行训练,即可实现Gan网络的优化过程。



Hinge Gan Loss

Hinge Gan Loss是Hinge Loss 和传统 Gan Loss的一个结合,首先理解Hinge Loss.

image-20220304151610297




H

i

n

g

e

L

o

s

s

=

m

a

x

(

0

,

1

t

y

)

Hinge Loss = max(0, 1- ty)






H


in


g


e


L


oss




=








ma


x


(


0


,




1













t


y


)





的图像如上图所示,



t

y

1

ty \geqq 1






t


y













1





的部分都变为了0 ,其中



t

t






t





表示期望的输出标签



±

1

\pm 1






±


1





,而y 表示SVM的直接输出如



y

=

w

x

+

b

y = w*x + b






y




=








w













x




+








b





。也可以用以下公式进行表示:





H

i

n

g

e

L

o

s

s

=

{

1

t

y

,

i

f

t

y

<

1

0

,

o

t

h

e

r

w

i

s

e

Hinge Loss = \begin{cases} 1- ty \hspace{2em} ,if \hspace{1em} ty<1 \\0 \hspace{4em},otherwise\end{cases}






H


in


g


e


L


oss




=










{














1









t


y




,




i


f




t


y




<




1








0




,




o


t


h


er


w


i


se



























以上公式的含义是,如果预测的标签是正确的(即t 与 y 同号), 且



y

\vert{y}\vert










y









>1 时,loss为 0

若预测的标签是错误的(即t 与 y 异号),则loss 随着 y 线性增长。类似的,当



y

\vert{y}\vert










y









<1时,即使 t 与y 同号(分类正确),但还是会因为间距不足仍然产生损失。



Hinge Loss 变种

Hinge Loss还有以下变种:





L

(

y

,

y

^

)

=

m

a

x

(

0

,

m

y

+

y

^

)

L(y,\hat y) = max(0,m-y+\hat y)






L


(


y


,











y







^

















)




=








ma


x


(


0


,




m













y




+















y







^

















)







其中:



y

y






y





表示正(真实)样本得分,



y

^

\hat y













y







^




















表示 负(预测)样本得分,m表示正负样本的最小间距(margin).

Hinge Loss的目标是尽力拉大正负样本的得分差距,在以上变种中正负样本的的得分间距最小要满足margin条件(

假设在一个分类问题中,机器什么也没学到,对于每个类都给出一样的分数,这个时候margin的存在就有作用了,使得loss至少是m, 而不至于是0

)。



Hinge Gan Loss





V

(

D

,

G

)

=

L

D

+

L

G

V(D,G) = L_D + L_G






V


(


D


,




G


)




=









L










D




















+









L










G

























L

D

=

E

[

m

a

x

(

0

,

1

D

(

x

)

)

]

+

E

[

m

a

x

(

0

,

1

+

D

(

G

(

z

)

)

)

]

L_D = E[max(0,1-D(x))] + E[max(0,1+D(G(z)))]







L










D




















=








E


[


ma


x


(


0


,




1













D


(


x


))]




+








E


[


ma


x


(


0


,




1




+








D


(


G


(


z


)))]







优化目标: D(x) → 1,D(G(z)) → -1

对于判别器来说,只有



D

(

x

)

<

1

D(x)<1






D


(


x


)




<








1





(真实样本的概率小于1)和



D

(

G

(

z

)

)

>

1

D(G(z))> -1






D


(


G


(


z


))




>











1





(伪造样本的概率大于0)这两种情况会产生loss,需要被优化,其余情况loss为0,从而一定程度上稳定了判别器的训练。





L

G

=

E

[

D

(

G

(

z

)

)

]

L_{G} = -E[D(G(z))]







L











G





















=











E


[


D


(


G


(


z


))]







优化目标: D(G(z)) → 1



参考

https://zh.wikipedia.org/zh-cn/Hinge_loss

https://zhuanlan.zhihu.com/p/72195907



版权声明:本文为daimashiren原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。