아 갠 아니라 간이라구요~
📌 Generative Adversarial Networks (GANs)
Generative Adversarial Networks (GANs)는 생성자(Generator)와 판별자(Discriminator)라는 두 개의 신경망이 경쟁하며 학습하는 구조입니다.
비유를 통한 설명:
-
위조범 (Counterfeiters):
- 위조범은 가짜 화폐를 만들어서 경찰에게 들키지 않고 유통시키려고 합니다.
- 위조범의 목표는 경찰을 속이는 것입니다.
- GAN에서 위조범은 생성자(Generator) 역할을 합니다.
- 생성자는 진짜 데이터와 구별되지 않는 가짜 데이터를 생성하려고 합니다.
-
경찰 (Police):
- 경찰은 가짜 화폐를 감지하려고 합니다.
- 경찰의 목표는 위조범에게 속지 않고 가짜 화폐를 잘 분류하는 것입니다.
- GAN에서 경찰은 판별자(Discriminator) 역할을 합니다.
- 판별자는 입력된 데이터가 진짜인지 가짜인지 판별하는 역할을 합니다.
GAN의 학습 과정:
- 생성자(Generator)는 랜덤 노이즈에서 시작하여 점점 더 진짜 같은 데이터를 생성하려고 학습합니다.
- 판별자(Discriminator)는 진짜 데이터와 생성자가 만든 가짜 데이터를 구분하는 방법을 학습합니다.
- 두 네트워크는 경쟁적인 관계에 있습니다. 생성자는 판별자를 속이려고 노력하고, 판별자는 생성자가 만든 가짜 데이터를 정확히 구분하려고 노력합니다.
- 이 과정에서 두 네트워크는 서로 발전하며, 결국 생성자는 매우 진짜 같은 데이터를 생성할 수 있게 되고, 판별자는 그 데이터를 구분하는 능력을 갖추게 됩니다.
Adversarial Training (적대적 학습)
- 적대적 방법론에 의한 학습 (Training by adversarial methodology):
적대적 학습은 두 모델이 서로 경쟁하면서 학습하는 방식을 의미합니다.
- 다른 목표를 가진 두 모델의 경쟁 (Competing two models with different objectives):
- Model1: 높은 손실을 위해 학습합니다. 즉, 판별자를 속이려는 생성자입니다.
- Model2: 낮은 손실을 위해 학습합니다. 즉, 가짜 데이터를 정확히 판별하려는 판별자입니다.
- 여러 적대적 네트워크의 상호작용 (Two or several adversarial networks eventually make their performance better):
생성자와 판별자가 서로 경쟁하며 동시에 발전하여 성능을 향상시킵니다.
- 두 모델의 이름 (We usually name two models generator and discriminator):
- Generator (생성자): 새로운 데이터를 생성합니다. 주로 노이즈나 특정 조건에서 데이터를 생성합니다.
- Discriminator (판별자): 실제 데이터와 가짜 데이터를 구분합니다. 주로 분류 작업을 수행합니다.
Generator (생성자)
- 새로운 데이터 생성 (Generation of new data):
생성자는 새로운 데이터를 생성하며, 이는 데이터 분포를 추정하는 과정입니다.
- 생성 모델 (Generative model):
노이즈나 조건, 혹은 다른 도메인에서 데이터셋을 입력받아 데이터를 생성합니다.
Discriminator (판별자)
- 실제 데이터와 가짜 데이터 구분 (Discrimination of real and fake data):
판별자는 입력된 데이터가 실제 데이터인지 생성자가 만든 가짜 데이터인지 구분합니다.
- 분류 모델 (Discriminative model):
판별자는 주로 분류 작업을 수행합니다. 예를 들어, 이미지가 진짜인지 가짜인지 판별하는 작업입니다.
📌 GAN's architecture

1. Real World Images:
- 실제 세상의 이미지를 데이터셋으로 사용합니다.
-
Sample:
- 실제 이미지 데이터셋에서 샘플링된 데이터 (x)를 판별자에게 입력합니다.
-
Latent Random Variable (z):
- 생성자는 무작위 노이즈(가우시안 또는 균등 분포)를 입력으로 받습니다.
- 이 노이즈 (z)는 다른 도메인의 데이터셋일 수도 있으며, 이미지의 잠재 표현(latent representation)으로 간주될 수 있습니다.
-
Generator (생성자) (G):
- 생성자는 입력으로 받은 노이즈 (z)를 받아서 가짜 이미지를 생성합니다. 생성된 이미지는 (G(z))로 표기됩니다.
- 이 과정은 미분 가능한 모듈로 처리됩니다.
-
Discriminator (판별자) (D):
- 판별자는 실제 이미지 데이터 (x)와 생성된 가짜 이미지 (G(z))를 입력으로 받아, 해당 이미지가 진짜인지 가짜인지를 구분합니다.
- 판별자는 두 종류의 출력을 제공합니다:
- 실제 이미지일 확률 (D(x))
- 가짜 이미지일 확률 (D(G(z)))
-
Loss:
- 손실 함수는 판별자의 출력을 기반으로 계산됩니다. 판별자가 진짜 이미지를 진짜로, 가짜 이미지를 가짜로 정확히 분류하도록 하는 것이 목적입니다.
추가 설명
-
(z) is some random noise:
- (z)는 가우시안 또는 균등 분포를 따르는 랜덤 노이즈입니다.
-
(z) can be dataset from other domains:
- (z)는 다른 도메인의 데이터셋일 수도 있습니다.
-
(z) can be thought as the latent representation of the image:
- (z)는 이미지의 잠재 표현으로 생각될 수 있습니다.
GAN은 생성자(Generator)와 판별자(Discriminator)라는 두 개의 네트워크로 구성되며, 이 두 네트워크는 서로 경쟁하며 학습합니다.
How to train two networks
1. Discriminator classify ( x ) to real (1)
- 설명: 판별자가 실제 이미지를 실제(1)로 분류합니다.
- 결과
- 생성자: 더 많은 학습이 필요합니다. (생성자가 판별자를 속이지 못함)
- 판별자: 잘 작동합니다.
2. Discriminator classify ( x ) to fake (0)
- 설명: 판별자가 실제 이미지를 가짜(0)로 분류합니다.
- 결과
- 생성자: 잘 작동합니다. (생성자가 판별자를 속임)
- 판별자: 더 많은 학습이 필요합니다.
3. Discriminator classify ( G(z) ) to real (1)
- 설명: 판별자가 생성된 가짜 이미지를 실제(1)로 분류합니다.
- 결과
- 생성자: 잘 작동합니다. (생성자가 판별자를 속임)
- 판별자: 더 많은 학습이 필요합니다.
4. Discriminator classify ( G(z) ) to fake (0)
- 설명: 판별자가 생성된 가짜 이미지를 가짜(0)로 분류합니다.
- 결과
- 생성자: 더 많은 학습이 필요합니다. (생성자가 판별자를 속이지 못함)
- 판별자: 잘 작동합니다.
전체 구조 설명
- Generator (생성자):
- 무작위 노이즈 ( z )를 입력으로 받아 가짜 이미지를 생성합니다.
- Discriminator (판별자):
- 실제 이미지와 가짜 이미지를 입력으로 받아, 해당 이미지가 진짜인지 가짜인지를 분류합니다.
- Real Image ( x ):
- Fake Image ( G(z) ):
이 과정에서 판별자는 생성자가 생성한 가짜 이미지를 정확하게 분류하려고 하고, 생성자는 판별자를 속여 가짜 이미지를 실제 이미지로 분류하게 만들려고 합니다. 이렇게 두 네트워크가 서로 경쟁하며 학습하면서 생성자는 점점 더 진짜 같은 가짜 이미지를 생성하게 됩니다.