https://arxiv.org/abs/1511.06434
0. Abstract
기존까지는 CNN 기반의 비지도 학습은 이미지 생성 및 표현 학습 부분에서 덜 주목받고 있다.
새롭게 등장한 DCGAN은 CNN 기반의 GANs 네트워크이며 이는 unsupervised learning에서도 효과적으로 사용될 수 있다. 다양한 이미지 데이터셋에서 학습을 하며, Generator는 객체와 배경의 계층적 표현을 학습하고 Discriminator는 이를 판별할 수 있도록 학습하며 학습된 특징을 특정 task에 사용할 수 있다.
1. Introduction
기존 GAN 모델에서 Mode Collapse(모드 붕괴)나 Oscillation(학습 진동), 이해할 수 없는 이미지 생성 등 학습 불안정성이 발생한다. 단순한 Fully Connected Neural Network 기반의 GAN은 공간적 특징을 학습하지 못하고 불안정한 학습과정을 보이는 등 성능이 좋지 않았다.
이에 새로운 CNN 기반의 GANs 모델인 DCGAN의 목표는 아래와 같다.
- Stable Training Process: Batch Normalizatio 및 Convolutional Architecture 기반의 기존 GAN 대비 학습 안정성을 높인 Convolutional GANs 구조
- Intelligent Image Classifier: 이미지 분류를 위해 Discriminator를 학습하고 다른 비지도학습 기반 알고리즘보다 더 높은 성능을 보여준다.
- Visualizing GANs: GAN의 학습된 convolution filter를 visulaize하고 특정 filter가 특정한 물체를 학습하는 것을 경험적으로 보여준다.
- Generator's vector arithmetic properties: Latenet Space의 의미론적 구조를 잘 학습했기 때문에 Generator가 생성한 sample의 semantic quality를 손쉽게 조절할 수 있고 산술 연산이 가능하다.
2. Approach and Model Architecture
CNN을 사용하여 GANs을 scale-up 하려는 시도들은 학습 안정성 부족, 모드 붕괴, 고해상도 이미지 생성의 어려움으로 인해 성공적이지 못했다. LAPGAN에서는 생성된 저해상도의 이미지들로부터 반복적으로 upscale하는 방법을 제안하고 이는 reliable하게 modeling 될 수 있다고 주장했다. 많은 모델을 탐사한 후에 다양한 데이터셋, 고해상도 training, deeper generative model들에 대해서 안정적인 훈련이 가능한 구조를 명시화했다.
1) No Pooling
결정된 값의 pooling layer를 사용하는 게 아니라 convolution layer로 spatial pooling을 수행함으로써 Convolution alyer가 학습 가능한 가중치를 통해 upsampling과 downsampling을 할 수 있도록 한다. (Springenverg et al., 2014 all convolutional net)
2) No Fully Connected Layer
기존의 Neural Network는 CNN으로 특징 추출을 수행하고 FC로 분류를 하는 fully connected layer 구조이다. 하지만 이처럼 FC layer를 달고 나오는 것이 아니라 fully convolutional network architecture로 변화하였다.
DCGAN은 highest convolutional feature를 Generator의 input과 Discriminator의 output에 넣는다. Generator의 경우 FC layer를 사용하지 않고 입력 노이즈 $z$를 4d tensor로 변환한 뒤 convolution stack의 입력으로 이용된다. Discriminator 같은 경우에는 마지막 convolution layer output이 flatten 되어서 sigmoid output으로 들어가는 구조이다.
3) Batch Normalization
학습 안정성을 높이는 하나의 방법으로, 각 유닛에 들어가는 입력값을 zero mean과 unit variance를 갖도록 정규화하는 방법이다. 따라서 초기화가 적절하게 이루어지지 않았을 때나 모델의 깊이가 깊어질 때 gradient flow의 안정화에 기여한다. Generator의 초기학습을 컨드롤하고 mode collapse 문제를 최대한 방지하는 게 목적이다.
모든 layer에 batchnorm을 적용할 경우 sample oscillation과 model instability 문제가 발생하며 Generator의 output layer와 Discriminator의 input layer를 제외한 모든 layer에 batchnorm을 적용한다. Generator의 output에는 이미지의 픽셀 값 범위를 보존하기 위해 적용하지 않고 Discriminator의 input에는 원본 이미지의 통계적 특성을 유지하기 위해 적용하지 않는다.
4) Activation Strategies
Bounded activation을 사용할 경우 모델이 training distribution의 color space를 더 빠르게 학습하고 더 빠르게 saturate되는 방식으로 학습이 이루어지는 것을 발견하다. 따라서 Discriminator 같은 경우에는 leaky ReLU(Gradient Vanishing 문제 완화)를, Generator에서는 output에는 Tanh를 사용하고 나머지는 ReLU를 사용한다.
※ Downsampling vs Upsampling
- Downsampling
- Discriminator에서 진행
- 입력으로 받은 이미지를 convolution 연산을 통해 downsampling을 진행하여 최종적으로 이진 분류를 수행한다.
- 고해상도의 이미지를 작은 차원으로 압축하며, 진짜 이미지와 가짜 이미지의 차이를 학습하기 용이해진다.
- Upsampling
- Generator에서 진행
- Noise vector를 입력으로 받아 점차적으로 upsampling하여 고해상도 이미지를 생성한다. = Transposed Convolution
- 낮은 차원의 noise vector에서 시작해 고해상도의 이미지를 생성하므로 이미지의 크기를 키우면서 세부 정보를 추가한다.
※ DCGAN에서 CNN을 사용하는 이유
1. 이미지의 공간적 특징을 학습
- Generator는 noise로부터 공간적 관계를 가지는 이미지를 생성한다.
- Discriminator는 이미지의 진짜/가짜 여부를 판별하기 위해 공간적 관계를 분석한다.
2. Sampling의 효율성
- Generator는 Transposed Convolution을 통해 Upsampling을 진행한다. 이를 통해 noise vector 같은 작은 입력을 점차적으로 큰 크기의 이미지로 확장하면서 이미지의 해상도를 키우는 역할을 수행한다.
- Discriminator는 Convolution 연산을 통해 Downsampling을 진행한다. 이를 통해 고차원의 이미지를 점차 낮은 차원으로 줄이면서 중요한 특징만을 추출해 최종적으로 이진 분류를 수행한다.
3. 고품질 이미지 생성 및 메모리 효율성
- Fully Connected Layer보다 고품질의 이미지를 생성하고 이는 Convolution의 지역적 특성을 잘 보존하고 학습하는 특성 때문이다.
- 지역적인 연산을 통해 parameter 수가 적어 학습이 더 효율적이다.
3. Details of Adversarial Training
A. Model Tuning
- SGD로 128 batch size의 mini-batch를 학습
- 모든 가중치의 mean 값은 zero-centered, std는 0.02로 초기화한다.
- LeakyReLU leak: 0.2
- Optimizer: Adam
- Learning rate: 0.002
- Adam 사용 시 momentum beta1이 0.9일 때 학습이 불안정하고 0.5일 때 안정적이다.
B. LSUN
- Training set: 약 300만 장의 침실 이미지
- Validation set: 약 3만 장
- Image Type: 주로 단일 클래스(Bedroom)
생성 모델의 output의 visual quality가 증가하면서 over-fitting과 training samples의 memorization 문제가 대두된다. DCGAN이 데이터의 양과 sample의 resolution이 증가하는 상황에도 대처 가능함을 증명하기 위해 300만장의 LSUN 데이터셋을 활용한다. 모델이 이미지를 외우는 것이 아니고 직접 학습해서 생성해낼 수 있도록 유지하는 것에 초점을 맞추기 위해 모든 데이터 셋에 data augmentation은 적용하지 않는다.
B-1. Deduplication
: Generator가 단순히 training example를 외워 중복된 이미지를 제거하기 위해 autoencoder를 이용하여 이미지를 임베딩 공간으로 변환하여 중복 여부를 판단한다. 중복 제거를 위해 3072-128-3072의 DAE(Denoising Autoencoder with dropout regularization + ReLU activation)를 128차원 임베딩으로 압축하고 복원한다. DAE로 생성된 임베딩을 Hashing 기법에 활용하면 충돌에 대한 false positive rate이 0.01 미만으로 높은 정확도가 나온다. 결과적으로 275,000개의 중복을 제거하여 높은 recall 성능을 보여준다.
C. ImageNet-1k
- Training set: 약 1,281,167장
- Validation set: 약 50,000장(class당 50장)
- Test set: 약 100,000장(label 비공개)
- Class 수: 1,000개의 클래스(동물, 사물 등 다양한 객체)
32x32 resized center crops를 사용해 이미지를 학습시킨다. 이미지에는 다른 데이터셋과 마찬가지로 data augmentaion을 사용하지 않는다. 이를 통해 객체 이미지 생성 및 패턴 학습을 진행한다.
D. Face Dataset
- CelebA
- Training Set: 약 162,770장
- Validation Set: 약 19,867장
- Test Set: 약 19,962장
- 총 데이터 수: 202,599장
- LFW
- 총 데이터 수: 약 13,000장
- 이미지 수는 적으나, 다양한 "in the wild" 환경을 포함
Scraping을 통해 자체적인 이미지를 수집하여 OpenCV의 face detection을 진행하고 최종적으로 35만개의 face box를 추출한다. 이를 통해 얼굴 이미지 생성 및 세부 학습을 진행한다.
4. Emprirical Validation of DCGANs Capabilities
A. Classifying CIFAR-10 using GANs as a feature extractor
Unsupervised representation learning의 성능을 평가하기 위해 CIFAR-10 데이터셋의 classification(feature extraction으로 GANs을 활용하고, 이후 linear classifier로 classification을 수행)을 수행한다. Pretrained on ImageNet-1k(D)의 특정 Convolutional layer에서 추출한 convolutional features를 사용하며 maxpooling 방식으로 4x4의 grid로 만들어준다. 이후, flatten & concat을 거쳐 L2-SVM classifier로 최종 classification을 수행한다.
기존 baseline 모델인 1-layer K-means보다 2.2% 높은 accuracy를 보여준다. Baseline에 여러 변주를 준 다른 알고리즘보다 높은 성능을 보이는데 example cnn보다는 1.7% 가량 낮은 정확도를 보인다.
B. Classifying SVHN DIGITS
Labeling된 데이터가 굉장히 적은 상황에서 Discriminator의 feature를 사용하는 경우이다.
추가적인 set 없이 10,000장의 이미지를 validation set로 구성하여 hyperparameter 최적화에 사용한다. 1000개의 uniform한 class 분포의 training 예시들이 random하게 선택되고 CIFAR-10과 동일한 feature extraction + classification pipeline을 학습에 사용한다.
학습이 완료된 후 22.48%의 test error를 보이며 State-Of-The-Art를 기록했고, DCGAN의 backbone architecture는 학습에서 사용되는 feature extractor로 충분히 효과적임을 보여준다. 추가적으로, DCGAN에 사용된 CNN architecture와 같은 구조에 데이터를 supervised way로 학습시켰을 때 28.87%로 더 높은 validation error를 보여준다.
5. Investigation and Visualizing the Internals of the Networks
A. Walking in the latent space
직역하면 잠재 공간을 걷는 것이라는 의미이다.
이는 단순히 Mode Collapsing($z$의 값이 달라도 항상 같은 이미지를 생성하거나, 특정 이미지로 수렴하는 문제)를 확인하는 것 뿐만 아니라, $z$값의 변화가 이미지의 semantic 변화를 유도하는 지 확인한다. $Z$값 변화에 따라 결과 값이 semantic하게 변화한다면 모델이 잘 학습된 것으로 판단할 수 있다.
Manifold 상에서의 9개의 random points 간에 interpolation한 결과, 그럴듯한 이미지 변화 양상을 관찰할 수 있다. 대표적으로 마지막 줄을 보면 텔레비전 이미지가 생성되다가 오른쪽으로 갈수록 창문이 생성되는 것을 볼 수 있다.
B. Visualizing the Discriminator Features
규모가 큰 이미지 데이터셋에 대한 unsupervised DCGAN이 특정 계층에 대한 학습을 진행한다. Guided backpropagation을 통해 모델의 각 계층이 학습한 특징을 시각화한다. 이는 입력 이미지에서 특정 계층의 활성화 값을 거꾸로 추적하여 이미지로 표현한다. 학습이 충분히 이루어졌다면 semantically relevant한 feature들을 학습할 수 있다. 추가적으로 모델이 학습한 특징이 데이터 분포의 의미론적 특징과 일치하는 지 여부를 검증해야한다.
침대와 창문 같은 전형적인 침실의 특징 부분이 활성화되었다.
C. Manipulating the Generator Representation
C-1. Forgetting to Draw Certain Objects
Sample의 퀄리티는 Generator가 주요한 장면 요소를 위한 특정한 object 표현을 학습한다. 150개의 sample을 대상으로 52개의 window bounding box를 그리고 2번째로 큰 convolution layer에서 logistic regression을 수행해 특정 객체에 해당하는 feature map이 Discriminator에 의해 학습되는지 확인한다. 즉, Generator가 특정 객체를 적절히 생성하는지 확인하기 위해 Discriminator의 특징 학습을 역으로 활용한다. Sigmoid 함수를 사용하여 특정 객체에 해당하는 feature map을 제거하면, Generator는 그 객체를 더 이상 생성하지 않는다.
본 논문에서는 창문을 없애는 예시를 사용했다. 이미지의 퀄리티는 낮지만 실제로는 창문이 있던 곳을 다른 특징인 문이나 거울 등으로 대체되는 등 Generator가 Discriminator의 featur 학습에 의존해 학습하였음을 알 수 있다.
C-2. Vector Arithmetic on face samples
Word embedding 시 vector 간 연산으로 representation이 잘 되었는지를 확인하는 방법을 Latent Space $z$의 face generation에도 그대로 적용한다.
Ex) Vector(king) – Vector(man) + Vector(women) = Vector(Queen)
Generator의 $z$표현에 대한 유사한 산술 연산을 수행했다. 하나의 sample 단위로 수행하는 것은 결과가 안정적이지 않지만 3개의 모델(여성/남성, 안경/안경 없음 등)에 대한 $z$ 벡터의 평균으로 산술 연산을 진행 시 지속적이고 안정적인 생성 결과를 보여준다.
Object manipulation에 대해서 얼굴 포즈 또한 $z$ 공간 안에서 선형적으로 모델이 될 수 있다는 것을 증명했다. 결과적으로 단순한 1:1 matching이 아니라 다양한 이미지들이 만들어진다. 이런 벡터연산을 통해 unsupervised GAN model에서도 의미론적으로 유의미한 특징들이 학습이 가능하다는 것을 동시에 보여준다.
얼굴 왼쪽 이미지의 얼굴 vector $zleft$들의 평균 vector $z^left$, 얼굴 오른쪽 이미지의 얼굴 vector $zright$들의 평균 vector $z^right$가 존재한다. vector $z^left$와 vector $z^right$ 사이의 축을 interplolation 하여 Generator에 넣으면 이미지가 회전하는 것(결과의 포즈가 변화)처럼 보여진다.
6. Conclusion and Future work
Generative adversarial network의 학습을 위해 안정적인 구조를 제안하고 adversarial 네트워크가 supervised learning과 generative modeling을 위한 이미지 표현도 잘 학습할 수 있다. (Representation Learning 측면에서 좋은 성능을 보인다.)
- Limits and Future Work
- Model Instability
- 모델이 학습될수록 가끔씩 convolution filter 중 일부분이 값이 oscillating mode로 붕괴하는 현상이 발생한다. (Collapse a subset of filters to a single oscillating mode)
- 다른 분야로의 확장
- 비디오, 오디오와 같은 다른 분야로 확장
- Model Instability
Reference
https://daebaq27.tistory.com/92
https://daebaq27.tistory.com/92
https://velog.io/@a01152a/%EB%85%BC%EB%AC%B8-%EC%9D%BD%EA%B8%B0-%EB%B0%8F-%EA%B5%AC%ED%98%84-DCGAN