- GAN은 비지도 기반의 생성모델로 2014년 구글 브레인의 Ian Goodfellow에 의해 최초로 제안
- GAN 모델의 기본적인 아이디어는 대립하는 두 모델 사이의 게임과 같은 경쟁과 상호작용을 통해 원하는 데이터를 생성하는 것이다.
- GAN의 구조는 생성자(Generator)와 구분자(Discriminator)의 두 모델로 구성되어 있는데, 생성자는 학습데이터와 동일한 분포를 갖는 새로운 샘플 데이터를 생성하며, 구분자는 생성자가 생성한 샘플 데이터를 조사하여 진짜인지 가짜인지를 판단한다.
- 생성자는 구분자의 판단 결과를 바탕으로 구분자가 진짜로 판단할 만한 데이터를 생성할 수 있을 때까지 학습한다. 이해하기 쉬운 예로 생성자를 지폐위조범으로, 판별자는 경찰로 설정한다면 위조범은 진짜 돈과 구별할 수 없는 돈을 만드는 방법을 배워야 하고, 경찰은 위조된 지폐를 가려낼 수 있어야 한다. 이러한 위조범과 경찰은 각각 위조하는 능력과 구분하는 능력을 서로 간의 경쟁을 통해 발전시킴으로써 마침내 진짜 지폐와 구별할 수 없을 정도의 위조지폐를 생성하는 것이다.

- 생성자와 구분자가 최적화되는 것을 보여주는 손실함수로 D는 구분자를 나타내고 G는 생성자를 나타낸다. D(x)는 x가 실제 데이터일 확률을 나타내며 진짜라고 판단되면 1을, 가짜라고 판단되면 0의 값의 확률값을 반환한다.
- D(G(z))는 생성자가 만든 데이터인 G(z)가 진짜라고 판단되면 1을, 가짜라고 판단되면 0의 값의 확률값을 반환한다. 전반적인 최적화 목표는 value 함수 V(D,G)를 사용하여 minmax 게임을 하는 것으로 V(D,G)를 최대화하도록 D를 학습시키고, 최소화하도록 G를 학습시키는 것이다.
- 우선 D가 우변을 최대화하기 위하여 진짜 데이터가 입력될 경우 D(x)는 x를 진짜로 판단하여 1을 반환하도록 하여야 하며, 마찬가지로 가짜 데이터가 입력될 경우 D(G(z))는 G(z)를 가짜로 판단하여 0을 반환하도록 함으로써 구분자가 진짜와 가짜 데이터를 분류할 수 있도록 학습한다.
- 다음으로 G의 경우 우변의 첫 번째 항은 G가 포함되어 있지 않으므로 무시할 수 있으며, 두 번째 항을 최소화하기 위해 D(G(z))는 1이 되어야 한다. 즉, 생성자는 구분자가 진짜로 판단하여 1을 반환할 만큼 진짜 같은 가짜 데이터를 생성해야 한다는 것이다.
- DCGAN(Deep Convolutional GAN) GAN과 CNN(Convolutional Neural Network)를 결합
- VAE(Variational AutoEncoder)-GAN 인코더 디코더를 결합
- WGAN(Wasserstein GAN)에서는 구조적인 관점에서는 최초 GAN과 동일하게 다층 퍼셉트론(MLP, Multi-Layer Perceptron)을 활용하였으며, 이론 수정과 관련해서는 손실함수를 개선
Architecture Optimization Based GAN | Convolution based GAN | DCGAN |
Condition based GAN | CGAN, InfoGAN, ACGAN | |
Autoencoder based GAN | AAE, BiGAN, ALI, AGE, VAE-GAN | |
Objective Function Optimization Based GAN | unrolled GAN, f-GAN, Mode Regularized GAN, Least Square GAN, Loss-Sensitive GAN, EBGAN, WGAN, WGAN-GP, WGAN-LP |
'무기체계와 컴퓨터 > 인공지능과 머신러닝 AI Machine Learning' 카테고리의 다른 글
CODEFUSION 코드퓨전 (0) | 2023.11.08 |
---|---|
Feature Selection 휘처 선택 (0) | 2023.11.01 |
랜덤포레스트 (0) | 2023.11.01 |
데이터 크기와 데이터 분석 (0) | 2023.10.17 |
딥러닝 (0) | 2023.10.17 |