InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets

이론적인 진술이며 실험 결과까지 매우 탄탄한 논문이었음.


Contents

  1. Abstract
  2. Introduction
  3. Mutual Information for Inducing Latent Codes
  4. Variational Mutual Information Maximization
  5. Implementation
  6. Experiments
  7. Conclusion
  • 논문의 related work와 background 부분은 리뷰에서 생략하였습니다.
  • KEYWORDS : Representation learning, Disentangled representation, Mutual information


0. Abstract

GAN을 정보이론을 활용하는 쪽으로 확장한 InfoGAN은 완전한 비지도학습 방식으로 분리된 표현(disentangled representation)을 학습할 수 있다. 이를 위해 본 연구에서는 latent variable과 observation간에 상호정보(mutual information)를 공식화하여 목적함수(objective function)에 추가하였고, 이 상호정보를 최대화하는 방향으로 generator가 학습되게 하였다.

그 결과 다양한 데이터셋에 대해 기존의 supervised learning 기반의 sota 모델들을 통해 학습한 representation과 경쟁할만하며 해석가능한 표현을 비지도 방식으로 학습할 수 있었다고 한다!



1. Introduction

비지도학습은 풍부한 양의 unlabelled data로부터 가치를 추출하는 일반적인 문제로 묘사될수 있음. 표현학습(representation learning)은 대표적인 비지도학습의 프레임워크로써 unlabeled 데이터로부터 중요한 의미론적 특징을 쉽게 해독할 수 있는 인자들로 드러내는 representation을 학습하는 것을 목표로 한다.

비지도 방식의 표현학습을 통해 데이터 인스턴스들의 핵심적인 특징을 명시적으로 나타내는 disentangled representation를 학습할 수 있다면, 학습된 이 표현은 classification 등의 downstream task에 매유 유용하게 사용될 수 있다!!

비지도 학습 연구분야의 상당부분은 생성모델링(generative modeling)이 이끌고 있다. 생성모델링에서는 관측된 데이터를 '합성'하거나 '창조'하는 생성모델의 능력이 데이터에 대한 깊은 이해를 수반한다고 믿으며, 좋은 생성모델은 훈련과정에서 따로 명시하지 않아도 자동적으로 disentangled representation을 학습하리라는 희망으로 동기부여된다.

본 논문의 핵심 주장 / 기여를 아래 두 가지로 요약해볼 수 있다.

  1. GAN의 생성자에 input되는 noise 변수들의 어떤 고정된 부분집합(후에 이것들이 latent codes라고 언급됨)과 관측 데이터간에 상호정보를 최대화하게 함으로써 해석가능하며 풍부한 의미를 갖는 representation을 학습할 수 있게끔 목적함수를 수정하였다.
  2. 위 방법을 사용하여 비지도 방식으로 학습된 표현은 기존의 레이블 정보를 사용하는 지도학습 방식으로 학습된 표현과 비빌만한 퍼포먼스를 보여주며, 이는 상호정보를 cost로 사용하는 셍성모델링이 disentangled representation learning에 대한 좋은 접근법이 될 수 있음을 시사한다.



2. Mutual Information for Inducing Latent Codes

오리지날 GAN의 생성자는 별도의 제약없이 심플한 1d continuous latent vector 'z'를 사전에 가정한 prior로부터 샘플링하여 그대로 사용한다. 근데 저자들은 이런 방식으로 z를 사용할 경우, generator는 z의 각 차원마자 분리된 개별적인 semantic feature를 학습하는게 아니라 차원들이 서로 복잡하게 얽힌 표현이 학습된다고 주장한다.

그런데, 실제로 많은 도메인의 데이터들은 자연스럽게 서로 잘 분리되어있는 의미론적 변동인자를 내제하고있음.

MNIST를 예로들면,
1. 숫자종류(0 ~ 9)에 대한 변동을 포착하는 discrete latent variable
2. 숫자의 각도/기울기 변동을 포착하는 continuous latent variable
3. 숫자의 두께 변동을 포작하는 continuous latent variable

이렇게 서로 독립적인 세 가지의 변동인자가 각각 따로따로 학습될 수 있다면 이상적일 것이다.

본 논문에서는 기존의 GAN에서처럼 single noise vector를 사용하지 않고, noise vector를 다음의 두 part로 나누어 사용한다.

  1. z : 분해불가능한 노이즈벡터
  2. c : 데이터 분포의 핵심적인 의미론적 특징에 대응되는 latent code. c=[c1,c2,...,cL]c=[c_{1},c_{2},...,c_{L}]

method

  • Generator에 z와 c가 함께 input된다. 즉, G(z,c)G(z,c)
  • 목적함수에 정보이론적 규제 term인 I(c;G(z,c))I(c;G(z,c))를 추가한다.
    여기서 I(c;G(z,c))I(c;G(z,c))는 latent code c와 Generator의 distribution G(z,c)G(z,c)간에 상호정보를 의미한다.

정보이론에서 두 변수 X, Y간에 상호정보 I(X;Y)I(X;Y)는 다음과 같이 표현된다.

I(X;Y)=H(X)H(XY)=H(Y)H(YX)I(X;Y)=H(X)-H(X|Y)=H(Y)-H(Y|X)
H( . )는 entropy이며, 어떤 변수에 대한 불확실성을 의미.

이것을 둘 중 하나의 변수를 관측함으로써 감소하는 나머지 변수에 대한 불확실성의 크기를 계량하는 측도로 볼 수 있다. 두 변수가 독립적이라면 상호정보는 0 일 것이고, 두 변수가 가역함수의 관계일 때(하나의 변수가 다른 변수에 의해 완벽하게 설명되는) 최대가 될 것이다.

우리는 어떤 임의의 xG(z,c)x\sim G(z,c)에 대해, P(cx)P(c|x)가 작은 entropy를 갖는것을 원한다. 다른말로, 우리는 I(c;G(z,c))I(c;G(z,c))가 최대화 되는 방향으로 G(.)G(.)가 학습되길 원한다.

이를 반영하는 새로운 목적함수는 다음과 같다.



3. Variational Mutual Information Maximization

그런데 I(c;G(z,c))I(c;G(z,c))는 우리가 알지못하는 c에 대한 true posterior P(cx)P(c|x)에 대한 계산을 요구하므로 직접 최적화하는것이 힘들다. 대신에 VAE 에서처럼 P(cx)P(c|x)를 근사하는 단순한 보조분포 Q(cx)Q(c|x)를 활용하여 상호정보에 대한 Variational Lower Bound를 구해서 간접적으로 최적화 할 수 있다!!

식은 다음과 같다.
상호정보의 하한을 구하는 이 테크닉은 Variational Information Maximization이라고도 알려져있다고 한다.

이 식에서 latent code의 엔트로피인 H(c)H(c)는 c에 대해 흔한 분포를 가정할 경우 analytical한 form으로 쉽게 계산될 수 있지만, 본 연구에서는 c의 분포를 fix 한채 사용하여 H(c)H(c)는 상수취급하고 좌측 항만을 최적화했다고 한다.

정리하면, 우리는 I(c;G(z,c))I(c;G(z,c))를 최대화 하는 대신 그것의 하한인 LI(G,Q)L_{I}(G,Q)를 최대화 하면 된다. 그런데 여전히 위의 식에는 cP(cx)c'\sim P(c|x)와 같이 c의 true posterior로부터의 샘플에 대한 기댓값을 구하는 파트가 있는것을 확인할 수 있다.

이것은
Lemma 5.1을 이용 함으로써 아래의 식의 첫 번째 줄로 쓸 수 있고, 우리가 모르는 True posterior 대신, 흔한 분포로 가정할 수 있는 c의 marginal distribution P(c)P(c)를 사용함으로써 문제를 해결할 수 있다!!

LI(G,Q)L_{I}(G, Q)에서 Q는 직접적으로 최대화될 수 있고, G는 reparametrization trick을 사용하여 최대화될 수 있어, 기존 GAN의 훈련프로세스에 일절의 변경사항 없이 Objective에 추가될 수 있다. (이부분은 직접 구현해봐야 확실히 이해될듯..)

이렇게 유도되는 알고리즘을 Information Maximizing Generative Adversarial Networks(InfoGAN)이라 부르며, 그것의 목적함수는 다음과 같다.



4. Implementation

상호정보를 간접적으로 최적화하기 위해, 보조 분포로써 도입한 Q(cx)Q(c|x)는 head부분을 제외한 나머지 모든 layer를 공유하게 구현하였다고 한다. 따라서 추가되는 파라미터는 매우 적다(c의 조건부 분포에 대한 출력을 얻게끔 하는 FC레이어 하나만 추가하면됨).

전반적인 훈련 진행 프로세스를 직접 도식화해보았다.

  • 그냥 일반 GAN에서 Discriminator의 몸통 위에 이미지의 진짜 가짜를 판별하는 sigmoid 출력 이외에 별도로 c의 조건부 분포 Q(cx)Q(c|x)를 모델링 하기 위한 fc layer를 병렬적으로 사용하는게 전부이다. 구조상의 변화가 거의 없다고 볼 수 있음!!
  • objective에 추가된 LI(G,Q)L_{I}(G, Q) term을 계산하기 위해 Q(cx)Q(c|x)를 출력하는 head를 별도로 붙인것임.
  • 일반적인 GAN보다 목적함수의 수렴이 거의 항상 빠르다고 하며, 새로 추가되는 상호정보항 반영비율에 대한 하이퍼파라미터 λ\lambda는 튜닝이 간단하다고 한다.
  • DCGAN 논문에서 소개된 테크닉을 거의 그대로 사용하여 훈련시켰는데, 충분히 좋은 성능 나왔다고 한다.



5. Experiments

5.1 Mutual Information Maximization

latent code c와 generated images G(z,c)G(z,c)간에 상호정보가 위 3절에서 제안한 방법대로 진짜 잘 최대화 되는지 확인해보는 실험이다. MNIST로 실험하였고, c는 10개의 class를 갖는 discrete uniform 분포를 가정하였다.
목적함수에 LI(G,Q)L_{I}(G, Q) term이 추가된 InfoGAN은 기대했던바와 같이 몇번의 에폭을 거침에 따라 상호정보 하한이 곧장 잘 최대화 되는것을 확인할 수 있다.

비교를 위해 네트워크 구조는 InfoGAN과 동일하나 목적함수에는 LI(G,Q)L_{I}(G, Q) term이 추가되지 않은 baseline모델을 훈련시켜본 결과, 상호정보의 하한인 LI(G,Q)L_{I}(G, Q)값이 0에 가까워지는 즉, latent code와 생성되는 이미지간에 연관성이 거의없는 방향으로 학습되는것을 확인할 수 있다. (일반 GAN에서는 generator가 latent code를 우리가 의도하는 방향으로 사용하는것에 대한 보장이 없음!)


5.2 Disentangled Representation

label 정보는 사용하지 않았으며, 명시적으로 잠재 변동인자에 대해 규명하거나 하지 않았는데, 아래의 실험 결과들을 보면, 각 데이터셋에 내포되어있는 잠재 변동인자를 네트워크가 알아서 잘 학습했음을 확인할 수 있다.

참고) 모든 실험 결과 figure들은, 가정한 다른 latent code들은 fix한 채 하나의 code만 변경시켜보며 변화를 시각화한 사진이다.

5.2.1 MNIST

  • latent code setup
    • c1Cat(K=10,p=0.1)c_{1}\sim Cat(K=10, p=0.1) : 10class를 갖는 이산형 균일분포 잠재변수
    • c2,c3Unif(1,1)c_{2},c_{3}\sim Unif(-1,1) : 연속형 균일 잠재변수 2개
  • 10개의 카테고리를 갖는 잠재변수 c1은 각 차원이 숫자 하나에 대응되도록 알아서 잘 학습했음..!!! 이렇게 학습된 c1를 그대로 classifier로 사용해보면 95%정도의 정확도를 얻을 수 있다고함. 놀랍구만,,
  • c2와 c3는 각각 rotation, width의 변동에 대응되게 알아서 잘 학습됬다!

5.2.2 3D Faces

  • latent code setup
    • ciUnif(1,1)c_{i}\sim Unif(-1,1) with i = 1,...,5 : 균일분포를 따르는 연속형 잠재변수 5개 설정
      얼굴 각도, 시선 고도, 명암, 얼굴의 넓고 좁음의 변동에 대해 알아서 잘 학습되었음.

5.2.3 chairs dataset

  • latent code setup
    • c1,c2,c3,c4Cat(K=20,p=0.05)c_{1},c_{2},c_{3},c_{4}\sim Cat(K=20, p=0.05) : 20class를 갖는 이산형 균일분포 잠재변수 4개
    • c5Unif(1,1)c_{5}\sim Unif(-1,1) : 연속형 균일 잠재변수 1개
      rotation의 변동에 대한 인자와 의자의 두께 변동에 대한 인자가 잘 학습되었음!

5.2.4 CelebA

  • latent code setup
    • 10개의 category를 가지는 이산형 균일분포의 잠재변수 10개 사용
      3D Faces 데이터셋과 다르게, 한 얼굴에 대한 다양한 각도의 example들이 없음에도 불구하고 Azimuth의 변동에 대한 인자가 잘 학습되었다는게 놀라우며, 그 외에도 안경, 헤어스타일, 감정 등의 변동인자가 잘 학습됬음!!

*원 논문에는 SVHN 데이터셋에 대한 실험도 있는데, 결과가 좀 애매한거같아서 본 리뷰글에서는 생략했음



6. Conclusion & Future works

  • Information Maximizing 방식을 도입한 GAN. InfoGAN이라는 표현학습 알고리즘을 제안
    • 완전히 비지도 방식으로 학습할 수 있는 알고리즘
    • 복잡한 데이터셋(celeba 등)에 대해서도 해석력이 좋으며 disentangled 된 representation을 얻을 수 있음.
    • 계산 코스트가 일반 GAN과 비교했을때 거의 차이없음.
    • 훈련시키기 쉬움
  • 상호정보(mutual information)를 representation의 추출에 사용하자는 이 핵심 아이디어는 VAE와 같은 다른 생성모델에도 확장될 수 있다.
  • 계층적 잠재표현의 학습에 대한 후속연구도 재밌을 듯


profile
말보다는 행동

0개의 댓글