상세 컨텐츠

본문 제목

[4주차/강민채/논문리뷰] Generative Adversarial Nets

2023 Summer Session/CV Team 1

by eahcnim 2023. 7. 31. 17:53

본문

각각의 역할을 가진 두 모델이 경쟁 과정을 통해 진짜에 가까운 가짜를 만들어 내도록 하는 프레임워크

 

1. Introduction

생성 모델의 경우 선형적인 단위의 이점을 활용하기 어려워, 이러한 어려움을 피할 수 있는 새로운 generative model을 소개하는 논문이다. GAN은 생성모델(G)과 구별모델(D) 두 가지 모델을 경쟁시켜 성능을 끌어올리는 구조로, 처음에는 G가 만들어 낸 결과를 D가 잘 구별하지만, 점점 진짜와 가짜가 비슷해지며 D가 이를 잘 구별해 낼 확률은 1/2이 된다. 따라서 G는 D가 실수할 확률을 높이는 방향으로 학습되며, 이는 2인용 minimax 게임과 비슷하다.

 

GAN은 모델이 모두 다층퍼셉트론일 때 적용하기 쉬운데, 본 논문에서도 G가 다층 퍼셉트론을 통해 랜덤 노이즈가 부가된 샘플을 생성하고, D 역시 다층 퍼셉트론인 경우를 다룬다.
이렇게 경쟁을 통해 두 모델의 성능을 끌어올리는 신경망을 적대신경망(Adversarial Net)이라고 한다.

 

 

2. Adversarial nets

  • generator의 분포 Pg
    → 이 Pg를 원본 x에 학습시키기 위해 입력에서 noise가 더해짐(noise의 분포: Pz(z))
    → noise 변수가 데이터 공간에 매핑된 결과: G(z; θg)
  • 입력된 샘플이 Pg가 아닌 실제 데이터 분포에서 얻어졌을 확률: D(x)
    → D(x)는 x가 원본일 확률을 의미

목적 함수

첫 번째 항: 실제 데이터 x를 D에 넣었을 때 나오는 결과에 log를 취해 얻은 기댓값
두 번째 항: 가짜 데이터 z를 D에 넣었을 때 나오는 결과에 'log(1-결과)'를 취해 얻은 기댓값

 

D(구별 모델)는 실제 데이터와 생성된 데이터에 적절한 label을 할당할 확률을 최대화 해야 한다.

: 실제 데이터가 입력된 경우 D(x)는 1, 가짜 데이터가 입력된 경우 D(G(z))=0으로 판단해야 이상적이다.
그 경우 V(D,G)식 전체가 0이 되며, D가 가질 수 있는 최댓값은 0이다.
G(생성 모델)은 D가 헷갈리도록 최대한 진짜 데이터에 가까운 가짜 데이터를 만들어야 한다.

: G의 성능은 두 번째 항에만 영향을 미칠 수 있다. 진짜에 가까운 가짜를 만들었다면, D(G(z))=1이 되므로 두 번째 항의 로그값은 -∞가 된다. G가 가질 수 있는 최솟값은 -∞ 이다.

결론적으로 D는 V(D,G)를 최대화하는 방향으로, G는 V(D,G)를 최소화하는 방향으로 훈련한다.
진짜 같은 가짜를 만들어 내기 위해서는 log(1-D(G(z))를 최소화, 즉 log D(G(z))를 최대화하도록 G를 훈련시켜야 한다.

그러나 inner loop에서 D를 최적화하는 것은 많은 계산을 필요로 하며, 유한한 데이터셋에서는 과적합이 발생하기 때문에 K번마다 D를 최적화하고, G는 한 번만 최적화하는 방식을 번갈아 수행한다.

k=1로 설정, D와 G를 한 번씩 번갈아가며 가중치 업데이트

 

3. Theoretical Results

[ 3.1 ] Global optimum에서 unique solution을 가지는 것을 증명

위의 알고리즘이 잘 작동한다면 global optimum에서 Pg = P data이어야 한다.

1) G가 주어진 경우, D는 V(G,D)를 최대화해야 하므로, V(G,D)를 D(x)에 대해 편미분하여 최적의 D를 구한다.

증명은 https://hhhhhsk.tistory.com/5 참고

2) 찾은 최적의 D를 원래의 목적 함수에 넣고, Pg = Pdata임을 적용해 최적 C를 찾는다.

3) 그 결과 D*= 1/2 , C* = -log4 가 되며, 해당 optimum 기준은 Pg = Pdata일 때만 만족됨을 다음과 같이 확인할 수 있다(global optimum에서 unique solution을 가짐을 확인할 수 있다).

 

 

[ 3.2 ] 특정 조건 하에서 그 solution으로 수렴함을 증명

G, D가 충분한 용량을 가지고 있고 알고리즘 1의 각 단계에서 D는 최적의 G에 도달할 수 있으며 Pg가 업데이트 되어 기준을 갱신하면 Pg는 Pdata로 수렴한다.

 

1) Pg에 대한 함수 V(G,D) = U(Pg, D)를 고려할 때, U(Pg, D)는 Pg에서 convex하다.

→ 볼록함수 우위의 하위 도함수는 최대치에 도달하는 지점에서 함수의 도함수를 포함한다.

→ 해당 G가 주어진 최적 D에서 Pg에 대한 경사 하강법을 계산하는 것과 같다.

 

결론적으로 아주 작은 Pg의 업데이트만으로도, Pg는 Pdata로 수렴한다. 

 

 

4. Experiments

  • MNIST, TFD, CIFAR-10에 대해 훈련
  • G는 rectifier linear activation과 sigmoid를 혼합아혀 사용
  • D는 maxout activation 사용
  • G의 맨 하위 계층에 input으로 noise 사용
  • 생성된 샘플에 Gaussian Parzen window를 맞추고 해당 분포에서 log likelihood를 보고하여 Pg에 따른 test set의 확률을 추정함

결과

 

5. Conclusion

- 장점
G가 데이터로부터 업데이트 하지 않고, D의 gradient로만 학습
다양한 함수 접목 가능

Marcov chain에 기초한 방법보다 선명한 이미지를 얻을 수 있음

 

- 단점

D와 G의 균형을 잘 맞추어야 함

 

 

6. Reference

https://hhhhhsk.tistory.com/5

https://tobigs.gitbook.io/tobigs/deep-learning/computer-vision/gan-generative-adversarial-network

https://velog.io/@minkyu4506/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0GANGenerative-Adversarial-Nets-%EB%A6%AC%EB%B7%B0

 

관련글 더보기

댓글 영역