[딥러닝] GAN

군자·2024년 6월 9일
0

딥러닝

목록 보기
9/9
post-thumbnail

아 갠 아니라 간이라구요~


📌 Generative Adversarial Networks (GANs)

Generative Adversarial Networks (GANs)는 생성자(Generator)와 판별자(Discriminator)라는 두 개의 신경망이 경쟁하며 학습하는 구조입니다.

비유를 통한 설명:

  1. 위조범 (Counterfeiters):

    • 위조범은 가짜 화폐를 만들어서 경찰에게 들키지 않고 유통시키려고 합니다.
    • 위조범의 목표는 경찰을 속이는 것입니다.
    • GAN에서 위조범은 생성자(Generator) 역할을 합니다.
    • 생성자는 진짜 데이터와 구별되지 않는 가짜 데이터를 생성하려고 합니다.
  2. 경찰 (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:

  • 실제 세상의 이미지를 데이터셋으로 사용합니다.
  1. Sample:

    • 실제 이미지 데이터셋에서 샘플링된 데이터 (x)( x )를 판별자에게 입력합니다.
  2. Latent Random Variable (z)( z ):

    • 생성자는 무작위 노이즈(가우시안 또는 균등 분포)를 입력으로 받습니다.
    • 이 노이즈 (z)( z )는 다른 도메인의 데이터셋일 수도 있으며, 이미지의 잠재 표현(latent representation)으로 간주될 수 있습니다.
  3. Generator (생성자) (G)( G ):

    • 생성자는 입력으로 받은 노이즈 (z)( z )를 받아서 가짜 이미지를 생성합니다. 생성된 이미지는 (G(z))( G(z) )로 표기됩니다.
    • 이 과정은 미분 가능한 모듈로 처리됩니다.
  4. Discriminator (판별자) (D)( D ):

    • 판별자는 실제 이미지 데이터 (x)( x )와 생성된 가짜 이미지 (G(z))( G(z) )를 입력으로 받아, 해당 이미지가 진짜인지 가짜인지를 구분합니다.
    • 판별자는 두 종류의 출력을 제공합니다:
      • 실제 이미지일 확률 (D(x))( D(x) )
      • 가짜 이미지일 확률 (D(G(z)))( D(G(z)) )
  5. Loss:

    • 손실 함수는 판별자의 출력을 기반으로 계산됩니다. 판별자가 진짜 이미지를 진짜로, 가짜 이미지를 가짜로 정확히 분류하도록 하는 것이 목적입니다.

추가 설명

  • (z)( z ) is some random noise:

    • (z)( z )는 가우시안 또는 균등 분포를 따르는 랜덤 노이즈입니다.
  • (z)( z ) can be dataset from other domains:

    • (z)( z )는 다른 도메인의 데이터셋일 수도 있습니다.
  • (z)( z ) can be thought as the latent representation of the image:

    • (z)( 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) ):
    • 생성자가 생성한 가짜 이미지입니다.

이 과정에서 판별자는 생성자가 생성한 가짜 이미지를 정확하게 분류하려고 하고, 생성자는 판별자를 속여 가짜 이미지를 실제 이미지로 분류하게 만들려고 합니다. 이렇게 두 네트워크가 서로 경쟁하며 학습하면서 생성자는 점점 더 진짜 같은 가짜 이미지를 생성하게 됩니다.

profile
헬로 아이엠군자. 굿투씨유

0개의 댓글