티스토리 뷰

용어 정리

GAN 시리즈 - DCGAN

duckracoon5z 2025. 8. 13. 15:09

1. DCGAN(Deep Convolution GAN)

DCGAN은 위 GAN에서 직접적으로 파생된 모델로, 생성자와 구분자에서 합성곱 신경망(convolution)과 전치 합성곱 신경망(convolution-transpose)을 사용했다는 것이 차이점이다. 이 모델을 사용한 후 화질이 개선되었고, 간단하면서도 잘 작동한다.

 

CNN을 사용해서 Discriminator를 구현하고, deconvolutional network(fearure map 크기 증가)를 통해 Generator를 만든 모델이다.  

  • Fully connected layer와 Pooling layer를 최대한 배제하고 Strided Convolution과 Transposed Convolution으로 네트워크 구조를 만들었다. Fully connected layer와 Max-pooling layer는 매개변수의 수를 줄일 수 있지만 이미지의 위치 정보를 잃어 버릴 수 있다는 단점이 있다.
  • Generator와 Discriminator에 배치 정규화(Batch Nomalization)을 사용하였다. 이는 입력 데이터가 치우쳐져 있을 경우의 평균과 분산을 조정해주는 역할을 한다. 따라서 back propagation을 시행했을 때 각 레이어에 제대로 전달되도록해 학습이 안정적으로 이루어지는데 중요한 역할을 하였다.
  • 마지막 layer를 제외하고 생성자의 모든 layer에 ReLU activation를 사용하였다. 마지막 layer에는 Tanh를 사용하였다.
  • Discriminator의 모든 레이어에 LeakyReLU를 사용하였다.

 

출처: UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS

 

위의 이미지는 안경 낀 남자 - 안경 안 낀 남자 + 안경 안 낀 여자 = 안경 낀 여자 와 같은 실험의 결과이다.

 

잠재 공간에서 산술연산을 했을 때 그 결과가 이미지 공간에 반영된다. 위의 예시처럼, 산술연산에서 사용한 latent vector이라는 것은 모델에서 생성된 이미지 중 안경 낀 안자, 안경 안 낀 남자, 안경 안 낀 여자 그룹을 만들고 각 그룹에서 latent vactor의 평균을 구한 값을 의미한다.

DCGAN의 Generator 구조

 

 

궁금한 점 : DCGAN에서 왜 Generator Discriminator의 활성화 함수 선택이 다르게 설계되었나?

(이 이하는 ChatGPT를 통한 답변입니다)

 

1. Generator: ReLU + 마지막 Tanh

(1) ReLU를 쓰는 이유

  • 양의 출력에서만 활성화되므로 gradient vanishing 위험이 적음
  • 생성 단계에서 점점 해상도가 높아질수록(업샘플링) 밝은 영역을 적극적으로 만들어내는 데 유리
  • ReLU는 계산이 단순하고, 깊은 네트워크에서 기울기 흐름이 원활

(2) 마지막 레이어에 Tanh를 쓰는 이유

  • 픽셀 값을 -1 ~ 1 범위로 제한 → 이미지 정규화에 맞춤
  • 출력 범위가 고정되므로 Discriminator가 학습하기 쉬움
  • Sigmoid보다 gradient saturation이 덜 심함

2. Discriminator: Leaky ReLU

(1) Leaky ReLU를 쓰는 이유

  • 일반 ReLU는 음수 입력에서 gradient가 0 → "Dead Neuron" 문제 발생
  • Leaky ReLU는 음수에서도 작은 기울기를 남겨 gradient flow를 유지
  • Discriminator는 진짜/가짜 이미지 둘 다 잘 구분해야 하므로, 음수 영역의 정보도 버리지 않는 게 유리

(2) 왜 Generator에는 안 쓰고 Discriminator에만 쓰나?

  • Generator는 latent vector를 점점 복잡하게 변형해서 이미지를 만들어야 하므로, 중간 단계에서 음수 값은 굳이 살릴 필요 없음 (ReLU로 양수만 적극적으로 사용)
  • 반면 Discriminator는 입력 이미지에서 나오는 모든 특징(양수/음수 모두)을 살려야 하므로 Leaky ReLU가 유리

 

DCGAN은 당시 GAN 학습 안정성을 크게 개선했지만, 여전히 몇 가지 한계가 존재하였다:

 

- 모드 붕괴(Mode Collapse)

Generator가 데이터 분포의 일부 모드만 학습하여 비슷한 이미지만 반복 생성하는 현상이 발생한다. DCGAN의 구조적 개선에도 불구하고 근복적인 GAN 손실 구조 문제는 해결 못하였다.

 

- 훈련 불안정성

학습 도중 loss가 발산하거나, Generator와 Discriminator가 균형을 잃는다. 이는 Generator가 너무 강하면 Disciminator 또한 무의미해지기 때문이며 그 반대 또한 그러하다. 다음은 Tanh 출력 범위 제한과 배치 정규화를 통해 안정화하였으나 여전히 하이퍼파라미터에 민감하다는 문제점이 있다.

 

-고해상도 이미지 생성 한계

64*64 같은 저해상도에서는 잘 작동하지만, 고해상도로 갈수록 품질 저하의 문제가 있다. 이는 Upsampling에서 이미지에 바둑판 무늬 같은 패턴이 생기는 Checkerboard Artifact가 발생하기 때문이며 깊은 네트워크로 확장하면 학습 불안정성이 심해지는 이유도 있다.

 

참조

https://bo-10000.tistory.com/116

 

[GAN Overview] GAN 주요 모델 정리 (GAN survey 논문 리뷰)

Generative Adversarial Networks in Computer Vision: A Survey and Taxonomy (CSUR 2021) 을 바탕으로, 중요한 GAN 모델들을 정리해 보고자 합니다. 논문에는 더 다양한 모델들이 소개되어 있으나, 그 중 일부만 정리하였

bo-10000.tistory.com

https://baobao.tistory.com/66

 

GAN 겉햙기 (GAN 종류)

GAN 은 그 종류가 엄청 많고 또 종류마다 그 쓰임새가 다르다고 말할수 있습니다. 그렇다면 그 GAN 들의 종류는 무엇이며 또 어떤 역할을 하는걸까요? Deep Convolution (DCGAN) 머신러닝과 딥러닝은 생성

baobao.tistory.com

https://jaejunyoo.blogspot.com/2017/02/deep-convolutional-gan-dcgan-1.html

 

초짜 대학원생의 입장에서 이해하는 Deep Convolutional Generative Adversarial Network (DCGAN) (1)

Deep Convolutional GAN (DCGAN)에 대한 쉬운 설명 및 소개 / Easy introduction to Deep Convolutional Generative Adversarial Network (DCGAN)

jaejunyoo.blogspot.com

'용어 정리' 카테고리의 다른 글

GAN 시리즈 - WGAN  (0) 2025.08.13
GAN 시리즈 - CGAN  (0) 2025.08.13
GAN 시리즈 - GAN  (6) 2025.08.13
OCR  (3) 2025.07.31
InstructBLIP  (3) 2025.07.30
최근에 올라온 글
링크
글 보관함