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

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

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

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

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


Let's Recap

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

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

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

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

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

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

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

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

[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)

[Figure 4] DC-IGN 요약

특징

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

Objective

[Figure 5]

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

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

Architecture

[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

[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 파트가 섞여있는 벡터입니다.

[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를 통해 모델은 학습됩니다.

[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

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

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

---

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

[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가 효과적이였음을 보여준 것이죠.

[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

[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)) 값을 높게 하는 것이죠.

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

[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

[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에 있습니다. 이해를 돕기 위해 외부 자료를 참고하였습니다. 🙂

[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

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

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

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

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


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

[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

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

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

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

[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의 한계점을 커버할 수 있다고 말한 것 같습니다.

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

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

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

Results

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

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

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

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

결론

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

읽어주셔서 감사합니다.

Reference

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

profile
투빅스 생성모델 세미나입니다.

8개의 댓글

comment-user-thumbnail
2020년 11월 16일

투빅스 14기 한유진

  • noise vector인 z가 하나의 특징만 연관되어 있는 것이 아니기 때문에 내가 원하는 feature만 바꾸는 것은 쉽지 않습니다. 그래서 필요한 것이 data를 풀어주는 것, Disentaglement하게 해주어야 하는 것에 대해 배웠습니다.
  • DC-IGN : 입력값이 주어졌을 때, 포즈나 빛의 밝기에 따라 새로운 이미지를 만들어내는 것이 목표입니다. z역할을 하게되는 graphics code를 Disentaglement하게 넣어서 우리가 원하는 이미지를 만들어내기 위해 앞단에 VAE가 붙었고 Disentaglement를 위해 mini-batch를 이용했다고 합니다.
  • InfoGAN : GAN의 구조를 사용하였지만 Disentaglement한 latent code c를 추가로 만들고 information-theoretic regularization을 제안했습니다. 또한 목적함수에 P(c|x)가 필요하기에 variational information maximization 테크닉을 이용하여 최종목적함수를 만들었다고 합니다.
  • beta-VAE : infoGAN의 단점(큰데이터셋 적용의 어려움, noise variables 수에 민감)을 해결하기위해 나온 모델로 VAE구조를 사용했고, 하이퍼파라미터인 β를 조절함으로써 Disentaglement정도를 조절할 수 있고 학습이 비교적 안정정으로 진행됩니다.

생소했던 것들이 많이 등장해서 긴장했지만, 하나하나 풀어주듯이 설명을 해주셔서 이해하기 수월했습니다! 들어는 보았지만 자세하게 알진 못했던 DC-IGN, InfoGAN, beta-VAE에 대해서 배울 수 있었던 유익한 강의였습니다 감사합니다!

답글 달기
comment-user-thumbnail
2020년 11월 16일

투빅스 14기 김상현
이번 강의는 생성모델에서 disentanglement와 관련된 논문 리뷰 강의로 투빅스 13기 이예지님이 진행해주셨습니다.
DC-IGN

  • 입력 값이 주어지면 같은 object지만 pose와 lightening에 따라 새로운 이미지를 만들어낸다.
  • VAE의 구조로 구성되어 있고, encoder를 통과하면 code z가 나오고 이는 disentaglement와 entaglement 파트가 섞인 벡터이다.
  • 몇 개의 disentangle한 ztrainz_{train}을 얻기 위한 학습 방법은 다음과 같다. Mini-batch를 오직 한 개의 variable만 변하도록 데이터를 구성하여 그에 따른 ztrainz_{train}를 학습하고 나머지 ziz_{i}들은 평균값으로 대체한다. Reconstruction error를 계산하고, SGVB에 따라 decoder의 back-propagation 수행한 후 ziz_{i}들의 gradient를 평균값과의 차이로 대체하고, ztrainz_{train}의 경우 그대로 통과시킨다. 이렇게 수정된 값으로 encoder를 학습시킨다.
  • ztrainz_{train}ziz_{i}의 학습 비율을 잘 설정해줘야 한다.

InfoGAN

  • 기존의 GAN은 noise vector z에 대하 제약조건이 없고, 따라서 z는 entangled vector이다. 해당 모델에서는 각각의 cic_{i}들의 독립을 가정한 latent code c를 사용한다.
  • 단순히 c만을 추가하면 c를 무시하고 학습이 일어날 수 있다. 이를 막기위해 latent code c와 G(z,c) 분포의 상호정보량을 높이는 방식으로 학습을 진행한다.
  • 상호 정보량을 구하기 위한 P(c|x)를 알 수 없으므로 Q라는 보조 분포를 새로 만들어 Information Maximization 테크닉을 이용해 P(c|x)를 approximate 하기 위한 lower bound를 구한다. 이를 통해 최종 목적함수가 정의되고, 이 목적함수에 따라 학습이 진행된다.

Beta-VAE

  • 하이퍼파라미터 β\beta를 조절함으로써 disentanglement의 정도를 조절할 수 있다.
  • qϕq_{\phi}(z|x)에서 z의 분포를 추정하는데 이때 제약조건을 통해 latent information bottleneck의 capacity를 컨트롤할 수 있고, independent를 실현할 수 있다.
  • 이를 통해 regularization coefficient β\beta를 통해 disentangelment를 조절할 수 있다. β\beta가 1인 경우 vanilla VAE와 동일하다.
  • 제약 조건을 통해 independent factors v와 dependent factors w로 z가 분해된다.

DC-IGN, InfoGAN, Beta-VAE에 각각의 손실함수 및 학습방법을 자세히 설명해주셔서 전반적인 이해를 할 수 있었습니다.
유익한 강의 감사합니다!

답글 달기
comment-user-thumbnail
2020년 11월 17일

투빅스 14기 정재윤:

오늘은 투빅스 13기 이예지님께서 disentangelment라는 주제로 강의를 진행해주셨습니다.

  • 일반적으로 생성모델에서 우리가 사용하는 noise vector z는 여러 feature를 담고 있으나 이것들이 명확하게 구분되어 있진 않습니다. 즉, 하나의 특성을 바꾸려고 z를 바꾸면 나머지 특징들도 따라 바뀌게 되어 원하는 이미지가 생성되지 않게 됩니다. 이를 entanglement하다라고 하며, 많은 연구자들은 좀 더 원하는 이미지를 생성하기 위해서 z를 disentanglement하게 만드는 것입니다.

  • DC-IGN은 mini-batch를 사용하여 disentanglement를 가능케 했습니다. 모든 feature를 조작하는 것은 아니고 오직 하나의 variable만 변하도록 데이터를 구성하는 것입니다. 오직 하나의 변환을 보장하기 위해 선택한 차원을 제외하고는 모두 평균값과의 차이로 대체하였습니다. 그래서 나온 결과는 우리가 선택한 variable에 대해서는 확실히 조절이 가능케 됩니다.

  • InfoGAN은 GAN의 구조에 상호정보량이라는 개념을 넣어 학습한 모델입니다. infoGAN의 input은 noise vector z와 latent code c입니다. 이 때 모델은 의도한대로 학습을 진행하지 않을 가능성이 있는데 이를 위해 I(c;G(z,c))라는 information-theoretic regularization을 제안합니다. 이렇게 진행을 하면 좀 더 disentanglement한 이미지가 만들어지게 됩니다.

  • 베타 vae는 infoGAN의 단점인 다양하고 큰 데이터셋에 적용하기 힘든 점, noise variable의 수에 민감하다는 점을 보완하여 나온 모델입니다. 여기서 베타를 조절하여 disentanglement의 정도를 조절하는 것입니다. 기본적으로 vae의 구조를 가지고 있습니다. Z를 disentanglement한 파트인 v와 그렇지 않은 파트인 w로 구분하여 풀어주는 것인데, 이렇게 분해하기 위해서는 제약조건들을 걸어야 하며 이 제약조건들로 베타텀을 조절하는 것입니다.

어려운 내용들이었지만 덕분에 쉽게 이해하고 넘어갈 수 있었습니다. 감사합니다. 😊

답글 달기
comment-user-thumbnail
2020년 11월 17일

투빅스 14기 박지은

  • z축이 하나의 특징뿐만 아니라 다른 특징과도 연결되어 있기 때문에 하나의 특징을 바꾸면 다른 특징들도 동시에 변하는 것을 entanglement라고 합니다. 이와 다르게 원하는 피쳐들만 고정한채로 이미지를 생성하기 위해서는 축을 disentangle하게 해야합니다.
  • DC-IGN은 입력 값이 주어졌을 때 같은 object도 pose와 lighting에 따라 새로운 이미지를 생성하여 disentanglement를 시도합니다. encoder는 convolution layer와 max pooling으로, decoder는 convolutional layers와 unpooling으로 구성되어 있습니다. DC-IGN은 여기서 미니배치를 이용하여 disentanglement를 합니다. 이를 위해서는 모델 학습 전에 미니배치가 여러 특징을 가진 학습데이터 중 하나의 변수만 변하도록 데이터를 구성합니다.
  • InfoGAN은 GAN architecture를 사용하여 mutual information을 최대화하도록 학습합니다. 그러나 기존의 GAN과 다르게 latent code c라는 벡터를 만들어 2개의 Input을 필요로 합니다. 또한 이 벡터를 무시하지 못하도록 information-theoretic regularization을 사용하여 latent codes c와 distribution G(z, c)의 mutual information 양을 높입니다.
  • beta-VAE는 VAE 구조에 adjustable hyper-parameter인 b를 추가하여 이를 통해 disentanglement의 정도를 조절합니다. 이는 KKT multiplier로 latent information channel z를 통제하는 정규화 계수입니다. b가 1일 때는 Vanila VAE와 동일하지만, 1보다 크면 더 효율적인 Latent representation을 찾기 위해 학습합니다.
    지난 수업에서 entanglement를 배우고 이에 어떻게 대처하는지 궁금했는데 친절한 설명으로 잘 가르쳐주셔서 유익한 시간이었습니다. 좋은 강의 감사드립니다!
답글 달기
comment-user-thumbnail
2020년 11월 17일

투빅스 14기 박준영
이번강의는 투빅스 13기 이예지 님께서 disentanglement를 주제로 진행해주셨습니다.

  • DC_IGN에서는 out-of-plane rotations과 lighting variations과 같은 변형에 대해
    disentanglement를 시도하였고 입력값이 주어지면 같은 object지만 pose와 lighting에 따라 새로운 이미지를 만들어내는 것을 목표로 하는것을 배웠습니다.

  • minibatch를 이용하여 lighting과 rotation 중 하나에 해당하는 변수 z_train을 선택하고 minibatch중 하나를 선택하여 이것을 모델의 input으로 사용하여 벡터값을 알아낸뒤 평균을 계산합니다. 그리고 Decoder 통과 전 z_train이 아닌 다른 z_i값들은 평균값으로 대체하고 decoder에 back-propagation을 한다. 그리고나서 Z_i의 gradient값을 평균값과의 차이로 대체하여 수정된 gradient값으로 encoder를 학습시킴으로써 disentanglement를 시도했다는 것을 배웠습니다.

  • InfoGAN에서는 Mutual Information을 최대화하도록 학습함으로써 disentanglment를 시도하였다는 것을 배웠습니다.

  • InfoGAN에서는 latent code c라는 벡터를 추가하여 input을 noise vector z와 latent code c 2개로 두었습니다.
    이때 noise vector z와 latent code c의 상호정보량을 높임으로써 disentanglment를 시도하였다는 것을 배웠습니다.

  • beta-VAE는 VAE를 구조를 사용했는데 기존의 다양하고 큰 데이터셋에는 적용하기 힘들고 noise variables의 수에 민감하다는 한계를
    개선하기 위해 만들었습니다. 이 문제를 해결하기 위해 beta-VAE는 모델 하이퍼파라미터인 β를 조절했다는 것을 배웠습니다.

이 세미나를 통해 disentanglement를 해결하기 위한 다양한 방법에 대해 배울 수 있었던 유익했던 시간이었습니다.

답글 달기
comment-user-thumbnail
2020년 11월 18일

투빅스 12기 김태한

이번 강의는 disentanglement에 대하여 13기 이예지님께서 강의해주셨습니다.
크게 다음의 3가지 논문을 토대로 DC-IGN, info-GAN, beta-VAE 설명해주셨습니다.

  • [DC-IGN]
    DC-IGN은 latent vector z의 특정 차원만 가지고 disentanglement를 해결하는 학습을 진행합니다.
    이때 disentanglement를 반영하는 방법으로 mini-batch 방법을 제시합니다.
    즉, 학습시킬때 사람이 의도적으로 반영하고 싶은 특징이 반영되도록 데이터셋을 구성한 후 전체 latent vector크기중 임의의(1~3개) 차원만 일반적인 방법으로 gradient를 update하며 나머지 차원의 값들은 평균값으로 대체합니다.
    그래서 굉장히 train dataset에 영향을 받는 학습방법입니다.

  • [InfoGAN]
    InfoGAN은 특정 역할을 하는 latent code c를 추가로 반영하여 variational information maximization을 적용하여 특징을 담아내도록 학습하는 방법입니다.
    loss function이 조금 독특하여 인상깊게 다가왔습니다.
    유도과정 또한 너무 멋있었습니다:)

  • [βVAE\beta VAE]
    betaVAE는 latent vector가 disentangle한 부분과 entangle한 부분으로 구분된다는 개념을 기반으로 되어있다는 것을 바탕으로 하이퍼파라미터 beta를 통해 disentanglement를 조절하는 방법입니다.
    결과적으로 vanilla VAE의 loss function에 beta라는 parameter를 추가하여 학습하는 방법입니다.

disentanglement라는 학습 분야가 생소했는데 너무 잘 설명해주셔서 이해가 잘 되었습니다.
정말 감사합니다 :)

답글 달기
comment-user-thumbnail
2020년 11월 18일

투빅스 11기 이도연
지난 강의에서 짧게 다루었던 Disentanglement에 대해 다룬 세 가지 논문을 리뷰하면서 더 많은 내용을 알 수 있었고 소개해주신 다른 논문들을 읽어보고 싶게 하는 강의였습니다! 감사합니다.

  • 지난 강의에서 하나의 피쳐를 변경하고 싶을 때 다른 피쳐들이 동시에 변하는 문제가 있다고 했고, 그 이유는 z-space가 entanglement 하기 때문이다. Disentanglement, z-space의 entanglement를 풀어헤치자!
  • [DC-IGN] VAE를 변형한 형태의 모델 구조로 Encoder와 Decoder 구조를 갖고 있다. Disentanglement를 위한 부분을 보자면 우선 Graphics code z에서 disentanglement한 파트와 entanglement한 파트가 나누어지도록 했다. 그리고 오직 한 개의 latent variable만 변하는 mini-batch를 이용해 학습이 된다. 해당하는 피쳐(latent variable)를 제외한 값들은 Decoder로 들어가기 전의 벡터 값, back-propagation의 gradient 값을 평균값, 평균값과의 차이로 대체하며 평균값을 벗어나지 않도록 하려는 거 같다. 이 논문에서는 Out-of-plane rotation과 Lighting variations에 대한 Disentanglement를 시도했다. 결과 이미지를 보면 화질 저하가 있지만 rotation과 lighting에 대한 변화를 볼 수 있다.
  • [InfoGAN] GAN architecture를 사용한 InfoGAN은 기존의 GAN과 다르게 noise vector z 뿐만 아니라 latent code c를 만들고, information-theoretic regularization을 제안해 latent code c와 distribution G(z,c)의 상호정보량을 높이도록 했다. 그런데 여기서 우리가 모르는 P(c|x)를 직접 구할 수 없다는 문제가 있었고 논문에서는 Auxiliary Distribution Q를 두어 P(c|x)를 직접적으로 이용하지 않아도 되도록 하고, 이 복잡한 수식을 Variational Information Maximixation, Law of total Expectation을 이용해 계산했다. 결론적으로는 c를 데이터 x에 상관없이 샘플링해 계산해도 원하는 대로 학습이 된다. InfoGAN 자체는 매우 간단하지만, 다양한 데이터셋에서 매우 효과적인 결과를 보여줬다고 한다.
  • [β-VAE] InfoGAN 한계점을 극복하기 위해 제안된 β-VAE는 VAE 구조에 Adjustable hyperparameter β를 추가한 모델로 β를 조절함으로써 disentanglement의 정도를 조절한다. β를 통해 latent channel capacity와 independence constraints with reconstruction accuracy의 균형을 맞춘다. β=1인 VAE보다 더 좋은 latent representation을 찾기 위해 β>1로 했고, 결과를 보면 한 개의 특징만 변해 disentanglement가 잘 이루어졌음을 볼 수 있다.
답글 달기
comment-user-thumbnail
2020년 12월 21일

투빅스 14기 김민경

  • 기존의 GAN은 우리가 원하는 특징을 가진 랜덤한 이미지를 만드는 것이 쉽지 않다. feature들이 다른 feature들과도 연관이 돼 있기 때문인데, 이것을 ‘entanglement’라고 한다. 따라서 원하는 feature들 이외에 나머지를 고정하고 이미지를 생성하고 싶다면 feature들을 ‘disentanglement’하게 하면 되는 것이다.
  • 이번 강의에서는 disentanglement관련 페이퍼 3개(DC-IGN, InfoGAN, beta-VAE)를 알아보았다.
  • DC-IGN은 입력 값이 주어졌을 때, 같은 object지만 pose와 lighting에 따라 새로운 이미지를 만들어내는 것을 목표로 한다. 이 모델은 크게 encoder와 decoder로 구성되어 있다. 그리고 기존의 모델들과 구분되는 점은 mini-batch를 이용한다는 점인데, 여러 feature를 가진 데이터에서 feature의 종류를 미리 인코딩 했다고 했을 때, 미리 mini-batch가 오직 한 개의 variable만 변할 수 있도록 데이터를 구성함으로써 disentanglement를 시도했다.
  • InfoGAN은 ‘mutual information(상호정보량)을 최대화하도록 학습 + GAN 구조를 사용’ 하는 특징을 갖는다. 여기서 interpretable하고 meaningful representations을 만들어내기 위해 GAN 구조를 도입한 것이다. 기존 GAN의 noise z는 아무 제약을 주지 않기 때문에 z는 entangled vector라고 할 수 있다. InfoGAN은 z 뿐 아니라 latent code c vector를 추가해 input을 만들었는데, 이 vector c가 무시될 수 있는 상황을 방지하기 위해 information-theoretic regularization를 제안했다. InfoGAN 자체는 간단하지만 disentanglment 학습에 상호정보량 cost의 효과를 보여준다. 하지만 다양하고 큰 데이터셋에는 적용하기 힘들고, noize variables의 수에 민감하다는 등의 단점이 존재한다.
  • beta-VAE는 InfoGAN의 단점을 보완하기 위해 제안된 모델이다. 이미지 x를 생성할 수 있는 factor인 latent factors z를 beta를 잘 조정해 학습하면 v, w(v를 제외한 부분)로 분해되는데, 이미지를 생성하기 위한 모델을 Sim이라고 할 때, 이미지 x가 Sim(v,w)로부터 생성되었다고 가정한다. beta는 latent information channel z를 통제하는 regularization coefficient가 된다. 모델 hyperparameter인 beta를 조절함으로써 disentanglement의 정도를 조절할 수 있다.
  • disentanglement에 대해 자세하게 공부할 수 있는 기회였고 어려운 내용을 잘 설명해주셔서 도움이 많이 되었습니다:)
답글 달기