-
BiGAN 논문 리뷰(Adversarial Feature Learning)논문 리뷰/Generative Model 2024. 7. 23. 20:15
오늘은 BiGAN 논문을 리뷰할 예정이다. BiGAN(Bidirectional GAN)은 GAN의 일종의 inverse mapping을 학습하는 모델로 역방향 변환은 일종의 feature representation을 학습할 수 있는 변환임을 논문에서 보여주고 있다. 아이디어는 한 번쯤 많은 사람들이 해봄직한 생각인데, 이를 수학적인 증명과 함께 논문에 녹여내고 있어 많이 인용되는 것 같다.
다른 포스팅에서 리뷰한 논문(특히 GAN 등) 관련 내용은 생략할 예정이다. 필요하다면 기존 포스팅을 참고하면 된다.
Introduction
latent space에서의 값을 interpolation시키고 generator에 넣으면 상당히 의미있는 semantic variations(의미있는 차이를 나타내는 변화)를 찾을 수 있다. 하지만 GAN은 data에서 latent representation으로 하는 inverse mapping이 존재하지 않기 때문에 우리는 latent space에 대한 정보를 얻지 못한다.
따라서 이 논문에서는 Bidirectional GAN(이하 BiGAN)을 제안해 inverse mapping을 학습할 수 있도록 한다. 자세한 구조는 아래와 같다.
BiGAN에서는 encoder E를 포함한다. E는 data x를 latent representation z로 보내는 매핑이며, 여기서 판별자 D는 실제 데이터 $x$와 가짜 데이터 $G(Z)$ 뿐만 아니라 진짜 latent representation $z$와 가짜 latent representation $E(x)$를 구분한다.
여기서 G와 E의 관계가 궁금할 수 있는데, 뒤에서 증명하겠지만 G와 E는 판별자 D를 속이기 위해 서로 역함수 관계임을 증명할 수 있다.
위와 같이 모델링된 BiGAN은 상당히 robust하고 generic(포괄적인) 비지도 특성 학습 모델이 된다. 특히 이 모델에는 제약이 없다는 점이 상당한 강점인데, 제약이 없음에도 불구하고 당대 모델들과 대등한 퍼포먼스를 보여줬다.
BiGAN
BiGAN의 minimax objective는 다음과 같다.
더보기cf) GAN의 minimax objective
BiGAN은 GAN와 많은 부분에서 겹치는데, 이러한 부분들은 논문 뒷부분에서 차차 알아갈 예정이다. 참고로 생성자$G$와 인코더 $E$는 역함수 관계이고, BiGAN은 Autoencoder의 L0 loss function과 연관이 깊다.
Definition) 새로울 건 없지만 여기서 정한 notation을 알고 가는게 좋을 것 같아 잠시 정리해둔다.
Propositions and Theorems) measure change를 사용해 증명하며 Appendix에 자세히 나와있다.
더보기증명)
더보기증명)
더보기증명)
Proposition 1, 2와 Theorem2를 이용해 생성자 $G$와 인코터 $E$의 관계가 역함수 관계임을 증명할 수 있다.
그 전에 직관적으로 생성자 $G$와 인코더 $E$가 역함수 관계임을 보여보자.
BiGAN의 input $(x, z)$에 대해 $(x, z)$는 아래와 같이 둘 중 하나의 성질을 가져아 한다.
즉, $x$가 진짜 데이터라면 $x$와 pair를 이루는 $z$는 인코더를 통해 생성했을 것이며, $x$가 가짜 데이터라면 $z$는 진짜 latent space에서 뽑았을 것이다. optimal한 판별자는 (a)와 (b) 상황을 아주 명확하게 구별해낼 것이기 때문에, optimal한 판별자를 소기기 위해서는 $(x, z)$가 (a)이자 (b)의 성질을 갖도록 생성자와 인코더가 학습해야 한다.
즉, 생성자와 인코더는 역함수 관계에 놓이게 된다.
위에서 한 말은 Theorem 2에서 수학적으로 증명이 가능하다.
더보기* 앞선 Theorem 1과 Proposition 1, 2는 모든 인코더와 생성자에 대해 성립했지만, Theorem 2와 3에 대해서는 생성자 $G$와 인코더 $E$가 deterministic하다는 가정이 추가로 필요하다.
즉, $p_{E}(z|x) = \delta(z - E(x))$, $p_{G}(x|z) = \delta(x - G(z))$ defined as $\delta$ functions임을 추가로 가정해야 한다. deterministic function $\delta$를 가정하면 앞에서 정의했던 notaiton이 아래와 같이 간단해진다.
증명)
실제로 실험을 진행하면 non-convex nature of the optimization 때문에 optimum에 도달하는 것은 거의 불가능하다. 다만 생성자와 인코더는 거의 역함수관계를 갖는 정도로 학습이 된다.(완전히 역함수 관계로 학습되지는 않는다)
마지막으로 Theorem 3에 대해 알아보자. 우리는 앞서 BiGAN의 objective가 Jensen Shannon divergence between $P_{EX}$and $P_{GZ}$임을 알았다. 이번에는 Jensen Shannon divergence(이하 JS)가 standard autoencoder loss와 깊은 관계가 있음을 증명하고자 한다.
더보기* 우선 JS에 있는 상수계수는 무시하고 생각하자. JS는 정의에 의해 아래와 같이 쓸 수 있다.
여기서 적분 부분은 $F$ notation을 사용하기로 하자.
Theorem 3을 증명하기에 앞서 우리는 $f>0$가 $P_{EX} a.e.$하게 성립함을 증명할 것이다. 즉, $F$는 항상 well-defined되며 finite하다. 그런 다음 $F$가 autoencoder-like reconstruction loss function과 동치임을 증명할 것이다.
Proposition 3으로 우리는 $log f$가 $P_{EX} a.e.$에서 잘 정의되며, $F(R)$ 또한 잘 정의되었음을 알 수 있다.
앞선 Proposition 3, 4, 5를 이용해 Theorem 3을 증명해보자.
Learning
학습은 GAN을 학습하 해주면 되는데, 우선 판별자 $D$를 업데이트 한 후, 인코더 $E$와 생성자 $G$를 한꺼번에 같이 업데이트 해준다.
Generalized BiGAN
space $\Omega_{X}$와 $\Omega'_{X}$, $\Omega_{Z}$와 $\Omega'_{Z}$이 다른 경우에 대해 생각해보자. 초고화질의 이미지에 대해 학습할 경우 input data는 초고화질의 이미지일 수 있지만, 생성자의 output이나 판별자의 input은 저화질의 이미지일 수 있으며, 이 경우 $\Omega'_{X}$이 $\Omega_{X}$보다 작다.
$g_Z$, $g_X$, $E$, $G$, $D$를 다음과 같이 재정의해보자.(함수의 정의역 또는 공역만 바뀐 형태이다.)
이 경우에도 Theorem 1과 Theorem 2을 적용할 수 있으므로 일종의 generalized BiGAN을 얻을 수 있다.
Evaluation
Baseline methods: BiGAN 모델 말고로 laten representation에 대해 학습할 수 있는 다른 방법들을 생각해보았다.
- Discriminator : 판별자는 latent representation에 대해 학습할 것으로 기대할 수 있으나 Discriminator가 실제와 생성된 데이터를 구별하는 작업에서 반드시 의미있는 latent feature를 학습하는 것은 아니다.
- Latent regressor : reconstruction loss $L(z, E(G(z)))$를 최소화하는 방향으로 encoder를 학습하는 것을 latent regressor라고 한다. 이 방법은 latent regressor encoder E가 $G(z)$에 의해서만 학습되고 실제 데이터는 절대로 볼 수 없기 때문에 이론적으로는 문제가 없을지라도 실제로 학습시키면 성능이 좋지 못하다.
실험결과
* 흥미로운 결과나 사진만 정리했습니다. 자세한 내용은 논문을 참고하시기 바랍니다.
코드
https://github.com/MStypulkowski/BiGAN/blob/master/BiGAN.ipynb
간단하게 잘 짜놓은 예제 코드가 있어서 소개한다.
더보기코드는 아래와 같은 짜임으로 구성되어 있다.
Encoder : 28 * 28 → 50
Generator : 50 → 28 * 28
Discriminator : 28 * 28 + 50 → [0, 1]
Discriminator loss(loss_D) : $\log(DE) + \log(1-DG)$
Encoder loss(loss_EG) : $\log(DG) + \log(1-DE)$
z를 random하게 초기화 한 후
Gz = G(z) # 생성된 이미지
EX = E(image) # 생성된 latent representation
DG = D(Gz, z)
DE = D(images, EX)
loss_D와 loss_EG를 계산한 후 업데이트
소개한 코드에서의 결과인데, 학습이 잘 되는게 좀,, 신기하다..
'논문 리뷰 > Generative Model' 카테고리의 다른 글
StyleGAN(A Style-Based Generator Architecture for Generative Adversarial Networks) (0) 2024.07.27 CycleGAN 논문 리뷰(Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks) (7) 2024.07.24 WGAN-GP 리뷰(Wasserstein GAN with gradient penalty) (3) 2024.07.22 WGAN 리뷰(Wasserstein GAN) (0) 2024.07.19 GAN을 어떻게 학습할 것인가(How to Train a GAN?) (0) 2024.07.18