원글 출처 : https://velog.io/@hyebbly/Deep-Learning-Loss-%EC%A0%95%EB%A6%AC-1-GAN-loss
minimax loss function
GAN에서 사용하고 있는 loss function은 minimax loss로, 식은 다음과 같다.
각각의 항은 다음을 의미한다.
- 첫번째 항: real data x를 discriminator 에 넣었을 때 나오는 결과를 log 취했을 때 얻는 기댓값
- 두번째 항: fake data z를 generator에 넣었을 때 나오는 결과를 discriminator에 넣었을 때 그 결과를 log(1-결과)했을 때 얻는 기댓값
이 방정식을 Discriminator의 입장, Generator의 입장에서 각각 이해해보자. (아래부터는 간단하게 D,G로 칭하겠다)
- (D의 입장에서) 이 value function V(D,G)의 이상적인 결과를 생각해보자.
D가 매우 뛰어난 성능으로 판별을 잘 해낸다고 했을 때,- D가 판별하려는 데이터가 실제 데이터에서 온 샘플일 경우에는, D(x)가 1이 되어 첫번째 항은 0이 되어 사라지고 G(z)가 생성해낸 가짜 이미지를 구별해낼 수 있으므로 D(G(z))는 0이 되어 두번째 항은 log(1-0)=log1=0이 되어 전체 식 V(D,G) = 0이 된다.
- 즉 D의 입장에서 얻을 수 있는 이상적인 결과, '최댓값'은 '0'임을 확인 할 수 있다.
- (G의 입장에서) 이 value function V(D,G)의 이상적인 결과를 생각해보자.
G가 D가 구별못할만큼 진짜와 같은 데이터를 잘 생성해낸다고 했을 때,- 첫번째 항은 D가 구별해내는 것에 대한 항으로 G의 성능에 의해 결정될 수 있는 항이 아니므로 무시하고
- 두번째 항에서는 G가 생성해낸 데이터는 D를 속일 수 있는 성능이라 가정했기 때문에 D가 G가 생성해낸 이미지를 가짜라고 인식하지 못하고 진짜라고 결정내버린다. 그러므로 D(G(z)) =1이 되고 log(1-1) = log0 = -∞ 가 된다.
- 즉, G의 입장에서 얻을 수 있는 이상적인 결과, '최솟값'은 '-∞'임을 확인할 수 있다.
다시말해,
- D는 training data의 sample과 G의 sampl에 진짜인지 가짜인지 올바른 라벨을 지정할 확률을 최대화하기 위해 학습하고, (V(D,G) 최대화)
🌟 이 때 판별자 D는 real or fake를 판단하므로, Binary Cross Entropy loss를 사용한다) 🌟
- G는 log(1-D(G(z))를 최소화(D(G(z))를 최대화)하기 위해 학습되도록하는 것이 (V(D,G) 최소화)
GAN과 minimax loss function의 핵심이다.
(약 1년전 동아리 과제로 이 논문을 리뷰한 적이 있어 관련 링크를 첨부한다 이 리뷰를 다시 보며 기억을 되살리며 loss를 정리했다)
'ML, DL > GAN' 카테고리의 다른 글
PatchGAN Discriminator 뽀개기 (0) | 2022.06.16 |
---|