상세 컨텐츠

본문 제목

[4주차/이서연/논문리뷰] Generative Adversarial Nets

2023 Summer Session/CV Team 1

by 쏘니냐 2023. 8. 1. 23:18

본문

BackGround

0. 생성모델이란

- 생성모델 :

  • 데이터를 생성해내는 모델, 주어진 데이터를 바탕으로, 해당 데이터의 분포를 따르는 유사하지만 기존에는 없던 새로운 데이터를 생성해내는 모델
  • 데이터가 가지고 있는 latent(데이터가 가지고 있는 잠재적인 변수) space를 학습한다.
  • Latent vector는 한 이미지가 가지고 있는 잠재적인 벡터 형태의 변수로 이런 latent vector들이 모여서 latent space가 형성된다. Latent space에는 우리가 학습시킬 이미지들이 latent vector의 분포 형태로 존재하게 되고 우리는 모델을 통해서 이미지가 가지고 있는 latent의 분포를 학습하는 것이다.

 

그림과 같이 classification과 detection에서는 이미지에서 CNN과 같은 모델을 통해 이미지가 가지고 있는 feature들을 벡터화한다. 이미지와 벡터라는 관계에서는 feature와 유사하다고 볼 수 있다.

다만 해당 task에서는 학습 과정에서 하나의 이미지에 대해 이를 표현하는 feature가 달라지는 반면, 생성 모델에서는 하나의 latent에 대해 이를 표현하는 image가 달라진다. 이미지에서 벡터로 가는 과정이 기존의 classification과 detection에서 하는 작업이라면, 생성 모델은 반대로 벡터에서 이미지로 가는 학습 과정을 거치게 되는 것이다.

생성모델은 latent space를 학습해야 하므로, 분포에 대해서 관심이 많다. 따라서 Loss나 evaluation metrics 또한 기존 task들과는 다른 지표를 사용한다.

📖 Loss

  • Classification의 Cross Entropy : 라벨을 어느정도의 확률로 잘 맞추는가?
  • Detection의 Focal loss : 물체를 얼마나 잘 포착하는가?
  • GAN의 KL-Divergence : 데이터 분포가 얼마나 비슷한가?
  • Generator의 Loss는 생성한 이미지를 Discriminator가 판별한 결과를 입력으로 받아서, 그 값이 얼마나 1에서 멀리 있는가 를 기준으로 Loss를 결정한다.
  • Discriminator의 목적은 Generator가 생성한 이미지는 0(가짜)으로 판별하고, 진짜 이미지는 1(진짜)으로 판별하는 것이다. 따라서 Discriminator의 Loss는 두 개의 Loss를 합쳐서 결정한다.
  1. Generator가 생성한 이미지에 대한 판별 값이 얼마나 0에서 멀리있는가
  2. 실제 이미지에 대한 판별 값이 얼마나 1에서 멀리있는가

📖 Evaluation metrics

  • Classification의 ACC, AUC, F1 score : 라벨을 얼마나 정확히 맞추는가?
  • Detection의 mAP, Segmentation의 IoU : 어느정도로 영역이 잘 겹치는가?
  • GAN의 FID(Frechet Inception Distance) : 분포가 얼마나 비슷한가?

 Generative Adversarial Nets

1. Summary 

  • 이미지를 생성하는 Generator와 이를 구별하는 Discriminator가 서로 적대적으로 학습하는 과정을 거쳐 Generator는 더욱 질이 좋은 이미지를 생산해내도록, Discriminator는 해당 이미지가 진짜인지 가짜인지 더 잘 구별하도록 학습을 하게 된다.
  • 처음 GAN을 제안한 Ian Goodfellow는 GAN을 경찰과 위조지폐범 사이의 게임에 비유했다. 위조지폐범은 최대한 진짜 같은 화폐를 만들어(생성) 경찰을 속이기 위해 노력하고, 경찰은 진짜 화폐와 가짜 화폐를 완벽히 판별(분류)하여 위조지폐범을 검거하는 것을 목표로 한다. 이러한 경쟁적인 학습이 지속되다 보면 어느 순간 위조지폐범은 진짜와 다를 바 없는 위조지폐를 만들 수 있게 되고 경찰이 위조지폐를 구별할 수 있는 확률도 가장 헷갈리는 50%로 수렴하게 되어 경찰은 위조지폐와 실제 화폐를 구분할 수 없는 상태에 이르게 된다. 여기서 경찰은 분류 모델, 위조지폐범은 생성 모델을 의미하며, GAN에는 최대한 진짜 같은 데이터를 생성하려는 생성 모델과 진짜와 가짜를 판별하려는 분류 모델이 각각 존재하여 서로 적대적으로 학습다.

2. Adversarial nets

→ Loss function : G는 V를 최소화, D는 V를 최대화하려는 변수

- 우변 :

  • 첫번째 항 : data x에 대한 logD(x)의 기댓값을 나타내는 식
  • Discriminator 는 x값이 실제 존재하는 데이터라고 판단될 경우 1, 가짜 데이터라고 판단될 경우 0을 반환한다. 만약 x에 실제 데이터가 들어갈 경우, D(x)는 올바르게 판단할 경우 1을 반환할 것이다. 따라서 D 의 성능이 좋을수록 첫번째 항의 값은 증가하게 될 것이다.
  • 두번째 항 : 가짜 data z에 대하여 log(1-D(G(z))) 값의 기댓값을 나타내는 식이다.
  • Generator G는 latent vector z를 입력받아 가짜 data를 생성해내는 기능을 수행한다. 이렇게 생성된 가짜 데이터는 D를 통해 진짜인지 아닌지 판단된다. 만약 Generator의 성능이 훌륭하여 D가 가짜데이터를 진짜 데이터라고 오판단 할 경우, D(G(z))의 값이 1이 될 것이며, 1-D(G(z))의 값은 0이 될 것이다. 즉 전체적으로 점검해보면, Discriminator D는 objective function의 값을 최대한 키우도록 학습을 진행할 것이고, Generator G는 objective function의 값을 최대한 작게 줄이도록 학습을 진행할 것이다.

 생성 데이터 z와 실제 데이터 x의 확률분포가 유사한 모습을 가져 판별자가 이 둘을 구별하기 어려워진다. 실제로는 수많은 확률 분포들이 동시에 존재하는 환경에서 작동한다.

3. Theoretical Results

위 그림은 이 본 논문에서 제안하는 핵심 알고리즘이다.

우선 첫번째 for 문을 통해 epoch 수를 설정한다. 이후 두번째 for 문을 통해 k 번동안 Discriminator를 학습한다.

Discriminator를 학습하는 방법은, m개의 가짜 데이터와 m개의 실제 데이터를 뽑아 objective function에 대입하여 계산한 뒤, objective function의 함수값이 커지는 방향으로 gradient descent 과정을 거치며 학습해나간다.

k 번동안 Discriminator를 학습하는 과정이 끝나면, Generator를 학습하는 과정을 거친다.

Generator를 학습하는 방법은, m개의 가짜 데이터를 뽑아 objective function에 대입하여 계산한 뒤, objective function의 함수값이 작아지는 방향으로 gradient descent 과정을 거치며 학습해나간다. 물론 objective function의 좌변에는 z 변수가 포함되지 않으므로, 미분하는 과정에서 좌변은 사라지게 된다.

위 과정을 epoch 수만큼 반복해가며 Generator와 Discriminator를 학습하게 된 것이고, 그 결과 Pg = Pdata의 분포를 가지게 된다.

 

※ GAN 구현 기법

  • 생성자의 마지막 활성화로 tanh함수 사용
  • 정규분포(가우시안 분포)를 사용
  • 무작위성은 모델을 견고하게 함 → dropout 혹은 label에 random noise에 추가
  • 희소한 그래디언트는 GAN 훈련을 방해할 수 있음. 딥러닝에서 희소는 종종 바람직한 현상이지만 GAN에서는 그렇지 않음. 그래디언트를 희소하게 만들 수 있는 것은 최대 풀링 연산과 ReLU 활성화   ReLU 활성화 대신 LeakyReLU 층을 사용

4. Advantaes and Disadvantages

Advantages 

1. Markov chains가 필요하지 않으며, backpropagation만이 gradients를 얻기 위해 사용된다.

2. 많은 종류의 함수가 모델에 포함될 수 있다. 

 

3. 심지어 degenerate한 분포에 대해서도 상당히 sharp한 이미지를 보여줄 수 있다. 

Disadvantages

1. pg(x)에 대한 명시적인 표현법이 존재하지 않는다.

2. training 동안에 G와 D가 동기화되어야 한다. 

5. Conclusions

1. A conditional generative model p(x|c) 는 c를 input으로써 G,D에 넣어주며 얻어낼 수 있다.

2. Learned approximate inference는 주어진 x에 대해 z를 예측하는 네트워크를 학습함으로써 ㅜㅅ행된다.

3. 모든 조건부 p(xs| x$)에 대해 대략적으로 모델링할 수 있다. 본질적으로 확률적 MP-DBM의 확률론적 확장을 구현하기 위해 대다수의 네트워크를 사용할 수 있다. 

4. Semi-supervised learning 

5. Efficiency improvements

6. Reference

[3] https://blog.naver.com/PostView.naver?blogId=demian7607&logNo=222049667265&redirect=Dlog&widgetTypeCall=true&directAccess=false 

관련글 더보기

댓글 영역