Stats & AI tech blog - '일단 시도함'

[ML/DL] GAN, Generative Adversarial Network (적대적 생성 신경망) 본문

Statistics & AI/Deep Learning

[ML/DL] GAN, Generative Adversarial Network (적대적 생성 신경망)

justdoit ok? 2024. 5. 13. 10:00

 

GAN, Generative Adversarial Network (적대적 생성 신경망)

 

 

 

적대적 생성 신경망 (GAN)은 영상, 음성, 자연어 등을 생성하는 생성 모델 분야에서 엄청난 성과를 보여주고 있는 신경망 구조이다. GAN 모델은 단순한 영상 생성 뿐만 아니라, denoising, segmentation 등에도 활용할 수 있다.

 

이번 포스팅에서는 먼저 생성 모델 (generative model)이 왜 중요한지 알아보고, 적대적 (adversarial) 학습 방법이 무엇인지를 살펴보도록 하겠다.

 

1. 생성 모델 (Generative Model)

 

https://www.google.com/url?sa=i&url=https%3A%2F%2Fm.health.chosun.com

 

사진 자료를 통해 개와 고양이를 분류하는 문제를 풀고 있다고 생각해보자.

이 문제를 해결하려면 앞서 배웠던 컨볼루션 신경망(CNN) 기법을 사용해서 사진의 특성을 추출하여 두 군을 분류하게 된다. 이렇게 학습된 모델은 개와 고양이의 일부 특징 (귀, 꼬리 등)만을 배웠을 가능성이 매우 높다. 이렇게 일부만을 학습한 모델이 개와 고양이를 제대로 이해하고 있다고 보기는 어려울 것 같다.

 

사진을 생성하려면 개와 고양이 모습에 대한 전반적이고 깊은 이해가 필요하다. 만약, 개와 고양이의 모습을 제대로 이해하고 사진 생성까지 할 수 있는 모델이 있다면, 이 생성 모델에게 두 군을 분류하는 것 같은 문제는 아주 쉬울 것이다.

대표적인 생성 모델로는 auto-regression models, variational autoencoders (VAE), GAN 등이 있다.

 

생성 모델이 각광 받는 이유는 아래와 같이 정리할 수 있다.

  • 고차원의 복잡한 확률 분포를 다룰 수 있다.
  • 데이터의 일부가 소실된 경우, 해당 부분을 생성할 수 있다.
  • 모델 학습 시 데이터 증강 (augmentation)을 위해 활용할 수 있다.
  • 여러 종류의 출력 값을 동시에 생성할 수 있다. (이미지, 소리 동시 생성)
  • 입력 z에 따라 생성되는 영상이 달라지며, 이 둘 사이의 관계를 명확히 알고 있다면, z를 이용해 원하는 영상을 생성할 수 있다.

 

 

2. 적대적 생성 신경망 (GAN)

 

적대적(adversarial) 학습이란 두 개의 모델이 서로 경쟁하면서 서로의 성능이 올라가는 과정을 말한다.

모델은 Generator(G)와 Discriminator(D), 두 개의 모델이 등장하는데,

G를 지폐 위조범, D를 가짜 지폐를 찾아내는 경찰이라고 비유해서 이해해볼 수 있다.

 

지폐 위조범(G)는 경찰(D)을 속이기 위해서 진짜 같은 위조 지폐를 만들도록 학습하는 반면, 경찰(D)은 가짜 지폐를 구별할 수 있는 변별 능력을 키우도록 학습한다.

서로를 이기기 위해 적대적으로 학습을 진행하다보면, 위조범(G)의 위조 능력과 경찰(D)의 변별 능력은 모두 점점 발전하게 될 것 이다.

 

https://www.labellerr.com/blog/what-is-gan-how-does-it-work/

 

적대적 학습이 반복되면서 Generator가 생성하는 데이터의 분포는 실제 데이터의 분포와 매우 유사해지고, 두 분포를 구분할 수 없는 상태에 이르게 된다. 이런 학습 과정을 담고 있는 GAN의 손실함수(loss function)를 확인해보겠다.

 

$$min_G max_D V(D,G) = \mathbb{E}_{x~p_{data}(x)} [logD(x)] + \mathbb{E}_{z~p_{z}(z)} [log(1-D(G(z)))]$$

 

Generator 입장에서 보면 첫번째 항은 의미가 없고, 두번째 항의 $D(G(z))$가 1일 때 위의 식이 최소가 된다.

Discriminator 입장에서 보면 첫번째 항의 $D(x)$가 1일 때, 그리고 두번째 항의 $D(G(z))$가 0(가짜로 판단)일 때 식을 최대로 만들 수 있다. 학습은 Generator와 Discriminator가 각각 위의 손실함수를 최소로 / 최대로 만들도록 진행된다.

 

이 손실함수는 GAN의 기본 개념을 잘 반영하지만, 몇 가지 문제가 존재한다.

학습이 불안정하고, generator와 discriminator의 학습 속도의 균형을 세밀하게 맞춰주는 과정이 필요하다.

또, generator는 생성한 결과가 "진짜"라는 판정만 받으면 되기 때문에, 한 종류의 영상만 계속 생성할 수도 있다는 문제도 있다.

마지막으로 이 손실함수는 비교하고자 하는 두 분포가 완전히 동일하지 않은 경우는 모두 log2의 일정한 값을 가지기 때문에 학습이 잘 진행되고 있는지 확인하기 어렵다는 단점도 존재한다.

 

이런 문제를 해결하기 위해서 다양한 구조들이 제안되었는데,

Least Squares GAN (LSGAN) / Wasserstein GAN (WGAN) / Conditional GAN / Cycle GAN / Progressive Growing of GANs 등이 있다...

 

 

이번 포스팅에서는 생성 모델, 적대적 생성 모델(GAN)이 무엇인지 개념을 알아보았고, GAN 손실함수의 단점과 이를 보완하기 위한 모델의 종류에 대해 간략히 알아보았다. 발전된 형태의 여러 GAN 모델에 대해서는 다음 포스팅을 통해 다뤄보도록 하겠다!

 

 

 

 

 

 

Reference

 - 인공지능, 보건의료 전문가를 위한 길라잡이