본문 바로가기

DL/Generative

GAN, WGAN, WGAN-GP

랩실에서 앞으로 할 연구가 GAN에서 더 나아가야하기 때문에 8월 과제는 GAN 공부였음

따라서 일단 GAN의 이론적인 부분을 정리해보고자 함

 

[GAN : Generative Adverserial Network]

game-theoretic 접근 방법

2-player가 있다고 생각하면됨 : 각각 generator과 discriminator

두 네트워크가 서로 적대적 방향의 학습을 진행하며 결론 도출 => 다루기 힘든 밀도함수들의 근사치를 신경 쓸 필요가 사라짐

generator의 역할 : true data의 분포와 동일하게 모델이 학습하여 생성해내는 데이터의 분포를 맞춰가는 역할

discriminator의 역할 : generator가 생성해낸 이미지의 real/fake를 가려내는 역할

 

 

마치 경찰과 위조지폐범과 같다는 비유를 많이 함

 

generator이 게으르다면 discriminator을 못 속이므로 모델 수렴이 안됨

discriminator이 게으르다면 실제와 구분을 잘 못해 모델 학습이 진행이 안됨

 

GAN의 목적함수  : minimax function


잠깐 minimax algorithm에 대해 알아보자

맛보기 개념) 체스나 바둑, 상대방과 번갈아 하는 게임에 있어서 상대방이 최악의 수를 둔다고 고려하지 않음

상대방이 최선의 플레이를 했을 경우 그 결과가 나에게 최소의 영향을 끼치도록 하는 것이 minimax algorithm

https://going-to-end.tistory.com/entry/Minimax-algorithm-%EB%AF%B8%EB%8B%88%EB%A7%A5%EC%8A%A4-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

위 그림 ) 4수 앞을 예측한 트리 노드, 0,2,4는 내 차례이므로 max가 되도록, 1,3은 상대방 차례이므로 min이 목적임


다시 GAN으로 돌아가서,, 목적함수를 설명해보겠음

GAN의 목적함수  : minimax function

max는 discriminator에 관련된 부분,, 이부분을 하나씩 해석해보자

먼저 Pdata에 대해 discriminator은 최대한 많이 맞춰야한다는 의미,, Dd(x)=1

P(z)에 대해 generator가 생성해낸 데이터들을 discriminator가 true라고 하면 안되므로 이 부분은 1에서 빼 최소가 되도록,,//Dd(Dg(x))=0

그 후 min은 generator에 대한 부분으로 덧셈 앞의 부분은 generator가 영향을 줄 수 없음

+뒷부분에서 generator가 생성해낸 부분이 가장 적어야함 

 

즉 수식 그대로 GAN의 목표를 해석해보자면 

1) Pg => Pdata 분포와 동일해지도록해야함

2) D(G(x))가 최종적으로 1/2가 되도록 하는 것 (1/2 = 가짜 이미지와 진짜 이미지 구분 X)

 

이때 모든 학습이 그렇듯 local optima인지 global optima인지 확인해야함

global optima = 모든 경우에서 최적의 값임

 

GAN도 문제점이 있음 

1) mode collapse

2) vanishing gradient

 

mode collapse 같은 경우 생성자가 게으른거임.. 생성자가 게을러 판별자가 한 두번 속은 타입의 이미지들만 생성함

= local minimum에 빠지게 됨

vanishing gradient 같은 경우는 생성자의 학습이 판별자의 구분보다 더 어렵나보니 학습을 반복하는 과정에서 모델과 data의 학습이 상이해져 gradient가 0에 다다르게됨 => gradient를 통해 학습을 진행해야하는데 gradient=0이니 제대로된 학습이 진행이 안되는 것임

 

위 문제들을 해결하기 위해 등장한 것이 WGAN

WGAN

위 vanishing gradient 문제를 해결하기 위해 wassersteint loss 적용

무슨 말이냐,,?

본래 GAN의 목표는 Pdata(x)와 동일하도록 Pmodel(x)를 학습시키는 것임

즉 data와 model의