[ICLR 2016] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

안녕하세요. 이번 x-review로 DCGAN에 대해 글을 써보자 합니다. 이전에 초기 gan 모델에 대해 공부했을 때 다층 퍼셉트론(MLP)를 사용해서 당연히 CNN을 사용한 모델도 있을 것이고 DCGAN의 읽어보기 전 단순히 모델 구조를 바꾼 내용밖에 없을 것이라고 예상했습니다. 하지만 직접 논문을 읽어 보니 훨씬 많은 contribution과 공부할 내용이 많이 있어서 리뷰를 작성하게 되었습니다.

Abtract

당시 CNN 신경망을 활용한 supervised learning 방법은 많이 사용되어왔지만 CNN 신경망을 활용한 unsupervised learning은 많이 사용되지 않았다고 합니다. 때문에 GAN은 unsupervised learning의 대표적인 모델이기에 CNN 신경망이 나왔음에도 이를 GAN 모델에 적용시키기에는 어려움이 있었던 것 같습니다.

본 논문에서는 supervised learning에서의 CNN의 성공과 unsupervised learning 간의 간극을 줄이는 데 도움을 줄이고자 합니다. 저자는 unsupervised learning에서 뛰어난 성능을 보이는 Deep Convolutional Generative Adversarial Networks (DCGANs)을 소개하며, 생성자와 판별자 모두 물체의 hierarchy of representations를 잘 학습하며 학습된 특징을 새로운 task에 사용하여 일반적인 이미지 표현으로의 적용 가능성을 보여줍니다.

1. INTRODUCTION

unlabeled datasets에서 재사용 가능한 특징 표현을 학습하는 것은 중요한 연구 분야입니다. 컴퓨터 비전에서는 거의 무한한 양의 unlabeled datasets 이미지와 비디오를 활용하여 중간 표현을 학습하고, 이를 이미지 분류와 같은 다양한 unsupervised learning 작업에 사용할 수 있습니다. 저자는 Generative Adversarial Networks (GANs) (Goodfellow et al., 2014)을 훈련하여 좋은 이미지 표현을 구축하는 한 가지 방법을 제안하며, 나중에 생성자와 판별자 네트워크의 일부를 사용하여 unsupervised learning에 대한 특징 추출기로 재사용합니다.

이 논문의 Contribution은 다음과 같습니다.

  1. CNN에 제약 조건을 걸어 안정적인 train을 가능하게 하고 이를 DCGAN이라고 한다.
  2. Discriminator를 image classification task에 사용하고, unsupervised learning 학습에서 경쟁적인 성능을 보여준다.
  3. GAN에 의해 학습된 필터를 보여주고 이 특정한 필터가 specific objects를 생성할 수 있음을 보여준다.
  4. generators가 생성된 이미지들을 잘 조작할 수 있는 vector arithmetic properties를 증명한다.

2. APPROACH AND MODEL ARCHITECTURE

저자가 제안한 접근 방식의 핵심은 총 3가지로 정리할 수 있습니다.

  1. Max Pooling To Strided Convolution

down sampling의 대표적인 기법인 Max Pooling은 미분 가능하지 않기 때문에 Strided Convolution 으로 대체합니다. 또한 upsampling의 경우 TransposeCNN을 사용합니다. 이 접근 방식을 Generator와 Dicriminatorf에서 사용하여 각각 자체적으로 공간적인 차원을 줄이는 과정을 스스로 학습하게 합니다.

2. Eliminate Fully-Connected Layers

두 번째는 Fully-Connected Layers의 제거입니다. Generator의 첫 번째 레이어는 노이즈 Z를 입력으로 받는 부분과 Dicriminator의 마지막 합성곱 레이어를 평탄화하는 부분을 제외하고는 Fully-Connected Layers를 제거합니다.

3. Batch Normalization 추가

세 번째는 Batch Normalization (Ioffe & Szegedy, 2015)으로, 각 단위의 입력을 평균이 0이고 분산이 1이 되도록 정규화하여 학습을 안정화시킵니다.

DCGAN 모델의 guidelines은 다음과 같습니다.

  1. Pooling layer를 Strided Convolution으로 대체
  2. generator와 discriminator에 batchnorm적용
  3. fully connected hidden layers 제거
  4. generator의 활성화 함수로 ReLU사용 / 최종 출력 레이어에는 Tanh사용
  5. discriminator에서는 모든 레이어에 LeakyReLU 사용

제안된 MODEL ARCHITECTURE와 guidelines 따라 Generator와 Discriminator의 모델 구조도는 아래 그림과 같이 나타낼 수 있습니다.

Generator 구조
Discriminator 구조
참고[https://m.blog.naver.com/laonple/221201915691]

3. DETAILS OF ADVERSARIAL TRAINING

학습 시 사용된 데이터 셋과 Hyperparameter는 다음과 같습니다. DCGANs 세 가지 데이터셋(Large-scale Scene Understanding (LSUN) (Yu et al., 2015), Imagenet-1k, 그리고 newly assembled Faces 데이터셋)에서 훈련했습니다. 훈련 이미지에는 tanh 활성화 함수의 범위 [-1, 1]로 스케일 적용. 모든 모델은 SGD을 사용하여 mini-batch 크기가 128로 훈련되었습니다. 모든 가중치는 표준 편차가 0.02인 정규 분포로 초기화되었습니다. LeakyReLU에서는 모든 모델에서 기울기를 0.2로 설정했습니다. 옵티마이저로는 Adam 옵티마이저를 사용했습니다. learning rate는 0.0002를 사용합니다.

3.1 LSUN

더 많은 데이터와 높은 해상도에서의 성능 향상을 확인하기 위해LSUN bedrooms 데이터셋에서 모델을 훈련시켰습니다.

3.2 FACES

이 데이터셋은 1만 명의 사람으로부터 300만 장의 이미지를 가지고 있습니다. 이 이미지에 OpenCV face detector를 실행했고, 고해상도 탐지 결과만 유지하여 약 35만 개의 얼굴 박스를 얻었습니다. 이러한 얼굴 박스를 훈련에 사용합니다.

3.3 IMAGENET-1K

Imagenet-1k (Deng et al., 2009)를 unsupervised 학습을 위한 natural images 원본으로 사용합니다. 32 × 32 min-resized center crop 이미지로 훈련합니다

4. EMPIRICAL VALIDATION OF DCGANS CAPABILITIES

4.1 CLASSIFYING CIFAR-10 USING GANS AS A FEATURE EXTRACTOR

unsupervised learning의 학습 결과를 평가하는 방식에는 supervised datasets에 feature extractor를 적용시켜 linear models의 성능을 평가하는 방법이 있습니다.

1 Layer K-means 모델과 비교를 해봤을때 DCGAN은 512의 feature만 사용했음에도 2.2% 더 높은 Accuracy를 달성했음을 확인할 수 있습니다.

5. INVESTIGATING AND VISUALIZING THE INTERNALS OF THE NETWORKS

이 섹션에서는 학습된 generators와 discriminators을 다양한 방식으로 조사하는데 분석하는 방법이 되게 신기했고 배울게 많은 부분이였던 것 같습니다.

5.1 WALKING IN THE LATENT SPACE

먼저 Z(LATENT SPACE) 변화에 대한 해석입니다. generator는 Z를 통해 이미지를 생성합니다. 우리는 generator가 적합한 이미지를 한 번에 생성하는게 아니라 학습에 맞게 이미지를 서서히 변경하기를 원합니다. 왜냐하면 한 번에 적합한 이미지를 생성했다는 것은 over-fitting 된 가능성이 있기 때문입니다. 따라서 generator가 잘 학습하고 있는지 확인해본 결과 Fig4에 나와있는 것처럼 6번째 행에서 창문이 없는 방에 점차 창문이 생기게 되고, 10번째 행에서 TV가 창문으로 변경되는 것을 확인함으로써 relevant representations를 학습함을 확인할 수 있습니다.

Fig4

5.2 VISUALIZING THE DISCRIMINATOR FEATURES

이 부분에서는 CNN이 image datasets에서 features를 학습했던 것처럼 unsupervised 방식으로 학습된 DCGAN 또한 hierarchy of features를 학습할 수 있음을 증명합니다. Fig5에 나와있는 것 처럼 discriminator의 feature가 침대나 창문에서 활성화 되는 것을 확인할 수 있습니다. 이는 비교를 위해 randomly initialized feature를 baseline으로 비교합니다.

Fig5

5.3 MANIPULATING THE GENERATOR REPRESENTATION

5.3.1 FORGETTING TO DRAW CERTAIN OBJECTS

generator가 생성한 이미지를 보면 특정 물체의 representations을 학습한 것을 확인할 수 있는데 이를 더 자세히 조사하기 위해 generator의 convolution layer features에서 창문과 같은 특정 물체를activate하는 feature dropout하는 방식으로 sample 이미지를 생성해보는 실험을 진행합니다.

Fig6에서 볼 수 있는 것처럼 창문이 제거된 이미지가 생성이 되거나 창문이 다른 물체로 대체됨을 확인할 수 있네요.

Fig6

5.3.2 VECTOR ARITHMETIC ON FACE SAMPLES

저는 이 섹션이 가장 흥미로웠는데 여기서는 DCGAN에도 Vector Arithmetic이 적용됨을 증명합니다.

Vector Arithmetic 한 가지 대표적인 예시로는 “King”의 벡터에서 “Man”의 벡터를 뺀 후 “Woman”의 벡터를 더하면, 그 결과로 얻은 벡터의 가장 가까운 이웃이 “Queen”의 벡터인 것을 보여줍니다.

Fig7에 나와있는 것처럼 각 카테고리마다 z를 평균내 Z vector를 생성합니다.그리고 평균값으로 구한 각 Z vector들을 연산해주어 Y벡터를 뽑아내게 되고 그 Y벡터를 다시 generator에 넣었을때 이미지가 생성되게 됩니다.

이러한 입증을 통해 generator 모델이 학습한 함수가 이미지의 의미를 이해했다고 생각할 수 있습니다. 이런 vector arithmetic을 활용하면 복잡한 이미지를 생성하기 위한 데이터의 양을 줄일 수 있다고 합니다.

Fig7

6. CONCLUSION

이번 논문을 읽으면서 실험 결과를 다양한 시각으로 분석하고 정리하는 것이 얼마나 중요한지 깨달을 수 있었던 것 같습니다. 마지막으로 정리를 하자면 DCGAN 더 안정적인 adversarial network 훈련을 위한 구조를 제안했고 generater 모델이 supervised learning 학습에서 좋은 representations을 학습한다는 것을 제시하였습니다. 여전히 일부 형태의 모델의 불안정성이 남아 있기는 하지만 DCGAN을 통해 대부분의 후속 연구가 이어졌기 때문에 다양한 응용 분야에서 중요한 역할을 한다고 할 수 있겠습니다.

Author: 정 의철

8 thoughts on “[ICLR 2016] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

  1. DCGAN 이라니 저도 3학년때 읽었던 거 같은데 반갑네요.

    저도 해당 논문을 가지고 세미나를 했던적이 있는데 정확히 질문까지 기억이 납니다.

    고로 그 질문을 이어서 그대로 한번 여쭤보도록 하겠습니다.

    벡터의 산술 연산이 진행되는 거를 보아하니 뭔가 원하는 데이터를 직접 만들어낼 수 있다는 생각이 듭니다.

    그렇다면 노이즈 벡터를 넣어서 임의의 데이터를 생성하는 지금의 상황에서 내가 정확히 원하는 출력(선글라스 낀 산타할아버지)을 만들어내려면 어떻게 해야하나요? 애초에 그게 가능한지 질문 드립니다.

    좋은 리뷰 감사합니다.

    1. 안녕하세요 근택님 좋은 질문 감사합니다~
      먼저 generator를 통해 원하는 이미지를 만들어 내려면 원하는 이미지를 만들기 위한 Z의 분포(선글라스를 낀 남자, 선글라스를 안 낀 남자, 산타할아버지 등)가 필요할 것 같습니다. 하지만 학습된 generator가 생성에 필요한 Z의 분포를 학습하지 못했다면 원하는 이미지를 만들기는 힘들 것 같다는 생각이듭니다.
      혹시 답을 알고 계시다면 알려주시면 감사하겠습니다!!

  2. 정의철 연구원님, 좋은 리뷰 감사합니다.
    저자가 제안한 접근 방식 중 pooling을 strided convolution으로 대체하였다고 하는데, 이렇게 대체함으로써 어떤 이득이 있나요? pooling은 자주 사용되는 downsampling 방법인데, 미분가능하지 않은 것은 GAN에서 어떤 문제를 일으키나요?

    1. 안녕하세요 재연님 좋은 질문 감사합니다~
      Discriminator는 generator와 마찬가지로 학습되어야하는 모델입니다. 하지만 pooling만을 적용하면 학습이 진행되지 않기 때문에 convolutional net으로 대체하여 Discriminator도 학습 가능하게 만들어 GAN의 학습 안정성을 높여줄 수 있습니다.
      감사합니다!

  3. 안녕하세요. 좋은 리뷰 감사합니다.

    사실 gan에 대해서 어렴풋하게 들어보기만 하고 제대로 읽어보지 않아서 어떻게 생겼는지 잘 몰랐는데 덕분에 잘 알게 된 것 같습니다. 감사합니다. 간단하게 궁금한 점이 있는데요. 읽다 보니 generator의 활성화 함수로는 ReLU사용했는데, 최종 출력 레이어에는 Tanh사용한 이유가 궁금합니다. 요즘에는 사용하지 않는 기법인것 같아 왜 이렇게 사용했는지 이유가 궁금해지네요.

    감사합니다

    1. 안녕하세요 주연님 좋은 질문 감사합니다~
      이는 이미지를 전처리 시킬 때 픽셀 값의 범위를 -1~1 사이로 조정했기 때문에 이에 맞춰서 Tanh를 사용한 것이라고 생각하면 될 것 같습니다.
      감사합니다.

  4. 안녕하세요 정의철 연구원님 좋은 리뷰 감사합니다.

    리뷰를 읽고 궁금증이 생겨 질문 드리겠습니다.
    introduction의 contribution 3에서 ‘gan에 의해 학습된 필터가 specific object를 생성할 수 있음을 보여준다’고 언급하셨는데, 해당 부분은 5.3.2에서 벡터 간의 연산을 통해 생성된 새로운 벡터로 의도했던 이미지(woman with glasses)를 생성하는 것을 의미하는 것인가요? 그렇다면 GAN 논문을 읽을 때도 궁금했던 건데 generator에 들어가는 latent vector Z는 어떻게 생성되는 것인 지 궁금합니다.

  5. 안녕하세요 혜원님 좋은 질문 감사합니다~
    specific object를 생성할 수 있음을 보여준다는 것은 5.3.1 FORGETTING TO DRAW CERTAIN OBJECTS에 나와있는 것처럼 특정 물체의 representations을 학습한 것을 통해 확인할 수 있습니다.
    generator에 들어가는 latent vector Z는 torch.randn 함수를 사용하여 100차원의 벡터를 생성하게 됩니다.
    감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다