Disentanglement(테스트)

Ye-ji Lee·2020년 11월 10일
0

작성자: 고려대학교 산업경영공학과 이예지

이번에는 disentanglement에 대한 내용을 다루고자 합니다.

deeplearning.ai의 Build Basic Generative Adversarial Networks (GANs) 강의에서 짧게 disentanglement에 대해 알려주었는데, 많은 자료를 보여주진 않더라구요.

이번에는 해당 강의를 토대로, disentanglement와 관련된 몇 가지 페이퍼를 짧게 요약해보자 합니다.

이 글이 disentaglement의 완벽한 이해를 드리기는 힘들지만, 어떤 것을 하고자 하는지에 대  큰 그림을 얻어가셨으면 좋겠습니다. 오늘 다루는 페이퍼 이외에, 관련 페이퍼를 추가로 적어놓았으니, 관심있으시면 꼭 읽어보시길 바랍니다. :)


Let's Recap

text [Figure 1] coursera - Build Basic Generative Adversarial Networks (GANs), 'Challenges with Controllable Generation'

데이터의 분포를 학습하기 위해 우리는 GAN을 사용했습니다. 어떤 노이즈 벡터를 생성하고 GAN의 입력으로 넣었을 때, 우리가 가진 학습 데이터와 비슷하지만 학습 데이터에는 존재하지 않았던 랜덤한 이미지를 만들어낼 수 있습니다.

그러나 우리가 원하는 특징을 가진 랜덤한 이미지를 만드는 것은 쉽지 않습니다. Figure 1을 살펴봅시다. 갈색머리를 가지고 있는 사람의 이미지를 파란머리를 가진 사진으로 변경한 것입니다. 지금까지 다룬 Vanilla GAN은 이렇게 하나의 피쳐만을 변경하는 것이 불가능합니다. 왜 그럴까요? 다른 예를 살펴보겠습니다.

text [Figure 2] coursera - Build Basic Generative Adversarial Networks (GANs), 'Challenges with Controllable Generation'

Figure 2를 봅시다. 제가 랜덤 벡터(zz)로 생성한 이미지가 왼쪽의 수염이 없는 여성이라고 해봅시다. 저는 여기서 수염을 추가하고 싶고, z1z_1축을 조절하여 수염을 추가할 수 있는 랜덤 벡터(zz')를 찾았다고 가정해보겠습니다. 이 여성의 그림에 수염을 추가할 수 있을까요? 물론 가능합니다. 그러나, 오랜쪽 아래의 수염을 가진 남성의 사진이 나오게 됩니다. 즉 수염을 추가한 것 뿐만 아니라 다른 피쳐들이 동시에 변한 것입니다.

text [Figure 3] coursera - Build Basic Generative Adversarial Networks (GANs), 'Challenges with Controllable Generation'

이러한 결과가 나오는 것은 z1z_1축이 수염에 관련된 특징뿐만 아니라 다른 어떤 특징과도 연관이 되어있기 때문입니다. 이 예시로 볼 때는 머리 길이, 눈매, 그리고 눈썹 정도일 것 같습니다. 다시 말하면, 하나의 축이 하나의 특징을 의미하는 것이 아닙니다. 이를 entanglement (뒤얽힘, 꼬여있음)혹은 축이 entangle 되어있다. 라고 표현합니다. 축이 꼬여있는(entangle) 이유 중 한 가지는 일반적으로 zz 의 차수가 충분하지 않을 때 발생하지만, 이외에도 여러 가지 이유가 있습니다.

내가 원하는 피쳐들 외에 나머지는 고정한채로 이미지를 생성하고 싶다면 축을 disentagle되어있게 하면 되겠죠? disentanglement에 대한 해석을 그대로 인용하자면 다음과 같습니다.

text [Figure 4] Takato Horii, Review "Info GAN"

Transforming from an uninterpretable space with entangled features to eigen spaces where features are independent.


자, 이제부터 disentanglement 관련 페이퍼를 다음 순서로 짧게 리뷰해보겠습니다.

  • [1] Kulrarni, Tejas D., et. al. "Deep Convolutional Inverse Graphics Network" NIPS'15. 711 citations.
  • [2] Chen, Xi, et al. "InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets" NIPS'16. 2219 citations.
  • [3] Higgins, Irina, et al. "beta-VAE: Learning basic visual concepts with a constrained variational framework." ICLR'17. 1199 citations.

다음의 페이퍼는 이번 글에서는 다루지 않지만 읽어보면 큰 도움이 될 거라고 생각합니다. 몇 가지는 이곳에 짧게 정리되어 있습니다. 지금은 미루고 있지만 ☹️, 저도 나중에 꼭 페이퍼를 읽어보려구요 🙂!

  • Alemi, Alexander A., et al. "Deep variational information bottleneck." ICLR'17, 411. citations.
  • Burgress, Christopher P., et al. "Understanding disentangling in beta-VAE." NIPS'17, 266 citations.
  • Chen, Ricky TQ, et al. "Isolating sources of disentanglement in variational autoencoders.", NIPS'18, 317 citations.
  • Stoechr, Niglas, et al. "Disentagling interpretable generative parameters of random and real-world graphs." NIPS'19. 3 citations
  • Hwang, HyeongJoo, et al. "Variational Interaction Information Maximization for Cross-domain Disentanglement." NIPS'20.

[1] Deep Convolutional Inverse Graphics Network (DC-IGN)

text [Figure 4] DC-IGN 요약

특징

  • out-of-plane rotations과 lighting variations과 같은 변형에 관하여 disentanglement를 시도함.
  • 모델은 convoltion과 deconvolution의 몇 개의 레이어들로 구성되어 있음.
  • Stochastic Gradient Variational Bayes를 옵티마이저로 사용함.
  • 입력 값이 주어지면, 같은 object지만 pose와 lighting에 따라 새로운 이미지를 만들어냄.

Objective

text [Figure 5]

컴퓨터 화상처리(Computer graphics)를 하기 위해서는 개발자들이 프로그래밍 언어를 사용해서 명령을 하겠죠? 그 명령(graphics code; cc)은 매우 디테일 할 것입니다. 예를 들어 공의 위치는 어디이고, 밝기는 몇이고, 무슨 색깔을 가졌는가? 이렇게요. 이처럼 우리가 원하는 이미지 혹은 그래픽을 생성하기 위해서는 disentangled feature가 필요합니다.

해당 모델(DC-IGN)은 입력 값이 주어졌을 때, 같은 object지만 pose와 lighting에 따라 새로운 이미지를 만들어내는 것을 목표로 합니다.

Architecture

text [Figure 6]

VAE(D. P. Kingma and M. Welling, 2013)를 변형한 형태의 모델 구조를 가고 있습니다. 따라서 크게 encoder와 decoder로 이루어졌으며, encoder는 {convolution layers+max-pooling}, decoder는 {convolution laysers+unpooling(upsampling using nearest neighbors)}로 구성됩니다.

Training

Input: data xx

The posterior approximation: Q(zix)Q(z_i|x), where QQ~ N(μzi,Σzi)\mathcal{N}(\mu_{z_i}, \Sigma_{z_i})

Graphics code: ZZ

encoder의 output (encoder(x)encoder(x)): yey_e

text [Figure 7]

Q(zix)Q(z_i|x)를 만들어내기 위해 데이터 xx가 encoder를 통과합니다. Q(zix)Q(z_i|x)의 모수는 다음과 같이 만들어집니다.

μzi=Weye\mu_{z_i}=W_e*y_e,

Σzi=diag(exp(Weye))\Sigma_{z_i}=diag(\exp(W_e*y_e))

code ZZ가 different view를 가진 이미지를 생성하기 위해 decoder를 통과하고,
log(P(xzi))+KL(Q(zix)P(zi))-\log(P(x|z_i))+KL(Q(z_i|x)||P(z_i)) 를 object function으로 사용하여 학습하면 됩니다. 이 때, code ZZFigure 7 처럼 disentaglement와 entaglement 파트가 섞여있는 벡터입니다.

text [Figure 8]

여기까지는 다른 모델과 크게 다를 것이 없습니다. 그렇다면 어떻게 disentanglement를 할 수 있을까요?

DC-IGN은 mini-batch 를 이용하는 것입니다.

현재 우리가 여러 특징(feature)을 가진 학습데이터를 가지고 있다고 가정합시다. feature의 종류는 (방위각, 고도 각, 광원의 방위각, and intrinsic properties (shape, texture, etc)) 입니다. 앞의 3개의 feature를 각각 z1,z2,z3z_1, z_2, z_3라고 인코딩했다고 하겠습니다.

미리 mini-batch가 오직 한 개의 variable만 변하도록 데이터를 구성합니다. 예를 들어 elevation angle만 변할 수 있도록 구성하는 것입니다. 다음과 같은 procedure를 통해 모델은 학습됩니다.

text [Figure 9]

  1. {방위각, 고도 각, 광원의 방위각, 고유 속성} 중 하나에 해당하는 잠재 변수 ztrainz_{train}을 무작위로 선택합니다.
  2. ztrainz_{train}에 해당하는 피쳐만 변하는 mini-batch 중에서 하나를 선택합니다.
  3. mini-batch를 모델의 input으로 사용하여, 각각의 벡터 값을 알아냅니다.
  4. 배치 전체에서 벡터들의 평균을 계산합니다.
  5. Decoder로 들어가기 전에, 1번에서 결정한 ztrainz_{train} 차원이 아닌 다른 차원의 값들(ziztrainz_i\neq z_{train})은 4번에서 구한 평균값으로 대체합니다. 이것을 "clamped output"이라고 하겠습니다.
  6. reconstruction error값을 계산하고, SGVB에 따라 decoder에 back-propagation 해줍니다.
  7. ziztrainz_i\neq z_{train} 의 gradient값을 평균값과의 차이로 대체합니다. ztrainz_{train}의 gradient는 그대로 통과됩니다.
  8. 수정된 gradient 값으로 encoder를 학습시킵니다.

intrinsic representation의 경우 z1,z2,z3z_1, z_2, z_3와 달리 매우 고차원이므로, 더 많은 학습이 요구됩니다. 따라서 논문의 저자들은 1:1:1:10의 비율로 모델을 학습했다고 합니다.

즉 한 번에 하나의 transfomation만 사용하여 학습함으로써, disentanglement를 시도하였습니다. 또한 하나의 변환을 보장하기 위해 선택된 차원을 제외하고는 평균과의 차이 값으로 하였습니다

Results

text [Figure 10] *Kulrarni, Tejas D., et. al. 2015.*

text [Figure 11] *Kulrarni, Tejas D., et. al. 2015.*

---

[2] InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets

text [Figure 12] InfoGAN 요약

특징

  • Mutual Information을 최대화하도록 학습함.
  • GAN architecture를 사용함.

Objective

A disentangled representation should be helpful for the relevant but unknown tasks.

이에 따라 InfoGAN은 interpretable하고 meaningful representations을 만들어내기 위해 GAN의 구조를 사용하였습니다. 또한, 상호정보량(mutual information; MI)을 최대화하도록 하여 모델을 학습하였습니다.

InfoGAN 자체는 매우 간단하지만, 다양한 데이터셋에서 매우 효과적인 결과를 보여주었다고 합니다. 결과적으로 disentanglment 학습에 MI cost가 효과적이였음을 보여준 것이죠.

text [Figure 13]

the generator distribution: PG(x)P_G(x)

the real data distribution: Pdata(x)P_{data}(x)

a generator: GG

a discriminator: DD

a noise variable: zz

모델에 사용된 GAN을 간단하게 표현하자면 Figure 13과 같이 표현할 수 있습니다. 우리는 PG(x)P_G(x)Pdata(x)P_{data}(x)를 approximate하기를 원합니다. 따라서 zPnoise(z)z\sim P_{noise}(z)를 변형하여 PGP_G로부터 샘플 이미지를 생성할 수 있는 GG를 학습시키게 됩니다. 이때, GGDD와 minmax game을 하며 경쟁적으로 모델을 학습하게 되며, DDPGP_GPdataP_{data}를 구별하기를 원합니다. 이를 수식으로 정리하자면 다음과 같습니다.

minGmaxDV(D,G)=ExPdata[logD(x)]+Eznoise[log(1D(G(z))]\min_G \max_D V(D,G)=\mathbb{E}_{x\sim P_{data}}[\log D(x)]+\mathbb{E}_{z\sim noise}[\log(1-D(G(z))]

위 식에서 볼 수 있듯이, GAN은 zz에 아무런 제약조건을 주지 않습니다. 따라서 zz는 entangled vector일 것입니다.

Key idea1

text [Figure 14]

기존 GAN과 다르게, InfoGAN은 noise vector zz 뿐만 아니라 latent code cc라는 벡터를 만들었습니다. 따라서 모델의 input은 Figure 14의 오른쪽 그림과 같이 두 개입니다. 이 때, latent codes를 c1,c2,...,cLc_1, c_2, ..., c_L이라고 표기하는데, 독립 가정을 하여 P(c1,c2,...,cL)=i=1LP(ci)P(c_1, c_2, ..., c_L)=\prod_{i=1}^{L}P(c_i)가 성립합니다.

그러나 기존 GAN의 cc만 추가한다고 해서 학습이 우리가 원하는 방향으로 이루어지는 것은 아닙니다. 모델이 PG(xc)=PG(x)P_G(x|c)=P_G(x)를 만들어 내기 위해 cc를 무시하고 학습을 할 수 있기 때문입니다. 이를 위해 저자들은 information-theoretic regularization을 제안하였습니다. 이것은 latent codes c와 disribution G(z,c)의 상호정보량을 높이는 방식입니다. 즉, I(c;G(z,c))I(c; G(z,c)) 값을 높게 하는 것이죠.

text [Figure 15] Mutual information From Wikipedia, the free encyclopedia

text [Figure 16]

Figure 16를 보면, 두 개의 변수들이 독립이라면 상호정보량 I=0I=0이 됩니다. 따라서 Info GAN은 이 값을 maximize하도록 목적함수를 설계한 것입니다.

이를 정리하면 다음과 같습니다.

minGmaxDVI(D,G)=V(D,G)λI(c;G(z,c))\min_G \max_D V_I (D,G)=V(D,G)-\lambda I(c;G(z,c)) —— (1)

Training

text [Figure 17] Chen, Xi, et al. 2016.

아직, InfoGAN이 끝나지 않았습니다. ☹️

위의 식 (1)을 그대로 사용한다면, 한 가지 문제가 있습니다. 어떤 문제가 있을까요?

상호정보량은 이전 관측 xx를 통해 새로운 관측 yy의 불확실성이 얼마나 제거 되는가에 대한 척도라고 할 수 있습니다. 즉 Figure 16 에서 볼 수 있듯이 P(cx)P(c|x)이 필요합니다. 따라서 저자들은 Variational Information Maximization 테크닉을 이용하여 P(cx)P(c|x)를 approximate 하기 위한 lower bound를 구합니다.

Figure 17 에서 3번째→ 4번째는 trivial하기 때문에 생략하고, 1번째→2번째에 대해 살펴보겠습니다. 해당 내용은 InfoGAN의 Appendix에 있습니다. 이해를 돕기 위해 외부 자료를 참고하였습니다. 🙂

text [Figure 18] 임성빈 박사님, [학부생의 딥러닝] GANs | InfoGAN : Information maximizing GAN, 하우론 브레인

(Wikipedia, *Fubini theorm: 이중 적분은 두 번의 일변수 적분을 통해 구할 수 있고, 이는 두 변수에 대한 적분의 순서와 무관하다는 정리)

따라서 최종 목적함수는 다음과 같습니다.

minG,QmaxDVInfoGAN(D,G,Q)=V(D,G)λL1(c;G(z,c))\min_{G,Q} \max_D V_{InfoGAN} (D,G,Q)=V(D,G)-\lambda L_1(c;G(z,c))

Results

text [Figure 19] Chen, Xi, et al. 2016.

text [Figure 20] Chen, Xi, et al. 2016.

text [Figure 21] Chen, Xi, et al. 2016.

text [Figure 22] Chen, Xi, et al. 2016.


[3] beta-VAE: Learning basic visual concepts with a constrained variational framework (β\beta-VAE)

text [Figure 23] Yong-min Shin, GNN-YYK, beta-VAEs

특징

  • VAE 구조를 사용함.
  • Adjustable hyperparameter인 β\beta를 추가함.
  • code vector 크기에 제한이 없음.
  • Disentanglement의 정도를 quantitatively 비교하기 위한 프로토콜을 개발함.

Objective

disentanglemet의 대표적인 모델 중 한가지는 infoGAN이라고 할 수 있습니다. 그러나 infoGAN은 여러 한계점이 존재합니다. 저자가 언급한 info GAN의 단점은 (1) 다양하고 큰 데이터셋에는 적용하기 힘들다. (2) noize variables의 수에 민감하다. 등등이 있습니다.

이러한 문제를 해결하기 위해 저자들은 β\beta-VAE를 제안하였습니다. 모델 하이퍼파라미터인 β\beta를 조절함으로써 disentanglement의 정도를 조절할 수 있습니다.

Key idea

images: xRNx \in \mathbb{R}^N

two sets of ground truth data generative factors: v  and  wv\; and \;w

conditionally independent factors: vRK,wherelogp(vx)=klogp(vkx)v \in \mathbb{R}^K, where \log p(v|x)=\sum_k \log p(v_k|x)

conditionally dependent factors: wRHw \in \mathbb{R}^H

text [Figure 23] Yong-min Shin, GNN-YYK, beta-VAEs

저자는 이미지를 생성하기 위한 모델을 Simulator라는 말로 표현하고 있는 것 같습니다. 따라서 우리는 image xxSim(v,w)\mathbf{Sim}(v,w)로 부터 생성되었다고 가정합니다.

기존 VAE와 어떻게 달라졌는지 살펴봅시다.

text [Figure 24] Higgins, Irina, et al. 2017

(1) 모델은 data x와 latent factors z의 결합 분포를 학습할 수 있습니다. 이 때 z는 x를 생성할 수 있는 factor겠죠? 즉, p(xz)p(xv,w)=Sim(v,w)p(x|z) \approx p(x|v,w)=\mathbf{Sim}(v,w) 입니다. 따라서 수식(1)을 maximize하길 원합니다.

(2) VAE에서 공부했듯이, 우리는 qϕ(zx)q_\phi (z|x)로부터 zz의 분포를 추정합니다.

중요한 것은, qϕ(zx)q_\phi (z|x)가 disentanglement part인 vv를 잘 capture해야 합니다. v를 제외한 나머지 part가 w라고 생각할 수 있습니다. 이를 보장하기 위해, qϕ(zx)q_\phi (z|x)p(z)p(z)와 match 되게끔 constraint을 걸게 됩니다.

이렇게 제약조건을 걸면,

  • latent information bottleneck의 capacity를 컨트롤할 수 있고,
  • independent(disentaglement factor)를 실현할 수 있습니다.
    (v에 대한 직접적인 텀은 없다. 용량 제한을 주다보니, 그 공간 안에서 이미지를 잘 생성해내기 위한 파라미터를 학습하기 위해 disentanglement가 가능한 느낌이다.)

이는 p(z)N(0,I)p(z)\sim \mathcal{N}(0, I)를 가정하면 조건부 최적화 문제로 풀 수 있습니다.

(3) 수식 (2)를 KKT 조건 하에 라그랑지안으로 풀면 (3)을 얻게 됩니다. (KKT 조건을 만족한다고 가정했기 때문에 (2)의 최적 솔루션이 (3)의 최적 솔루션을 구하는 것과 같음을 알 수 있습니다.)

눈치채셨겠지만, 논문 제목의 beta 파트가 여기서 등장하게 됩니다. 😉

여기서 KKT multiplier β\beta는 latent information channel zz를 통제하는 regularization coefficient가 됩니다.

(4) KKT 조건의 the complementary slackness(KKT 조건 중 하나)에 따라 ϵ\epsilon ≥ 0이므로, 최종적으로 lower bound (4)가 나오게 됩니다.

beta의 효능 💪:

  • Disentanglementd의 정도를 조절할 수 있음.
  • beta = 1, Vanila VAE와 동일함.
  • beta > 1, 더 효율적인 latent representation을 찾기 위해 학습함. (regularize term이 강화됨.)
  • 학습이 비교적 안정적임.

최종 목적식 (4)에서도 알 수 있듯이, 실제로 v, w는 가정일 뿐 conditionally independent factors vv, conditionally dependent factors ww에 관여하는 텀은 없습니다.

결국 제약조건으로 인해 등장한 β\beta 텀을 잘 조절하며 학습하면, z가 v, w로 분해가 되는 것입니다. 이러한 이유로 InfoGAN의 한계점을 커버할 수 있다고 말한 것 같습니다.

따라서 전반적인 모델 구조에 대한 코드는 다음과 같이 심플합니다.

text [Figure 25] 1Konny, "Pytorch implementation of β-VAE", Github.

Disentanglement의 Metric에 관하여 해당 논문의 section 3에서 소개하고 있습니다만,
생략하도록 하겠습니다. 😂

Results

text [Figure 26] Higgins, Irina, et al. 2017

오늘 다룬 모델들을 베이스라인으로 하여 비교하고 있네요!

text [Figure 27] Higgins, Irina, et al. 2017

1개의 latent 값을 바꿨을 때 1개의 특징만 변하고 있는 것을 볼 수 있습니다.

결론

최신 논문들을 다루지 않아 조금 아쉽지만, 어느정도 disentanglement와 친해지셨길 바라겠습니다. 🙂

읽어주셔서 감사합니다.

Reference

해당 글은 연세대학교 신용민님의 도움을 받아 작성하였습니다.

0개의 댓글