작성자: 고려대학교 산업경영공학과 이예지
이번에는 disentanglement에 대한 내용을 다루고자 합니다.
deeplearning.ai의 Build Basic Generative Adversarial Networks (GANs) 강의에서 짧게 disentanglement에 대해 알려주었는데, 많은 자료를 보여주진 않더라구요.
이번에는 해당 강의를 토대로, disentanglement와 관련된 몇 가지 페이퍼를 짧게 요약해보자 합니다.
이 글이 disentaglement의 완벽한 이해를 드리기는 힘들지만, 어떤 것을 하고자 하는지에 대 큰 그림을 얻어가셨으면 좋겠습니다. 오늘 다루는 페이퍼 이외에, 관련 페이퍼를 추가로 적어놓았으니, 관심있으시면 꼭 읽어보시길 바랍니다. :)
[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를 봅시다. 제가 랜덤 벡터()로 생성한 이미지가 왼쪽의 수염이 없는 여성이라고 해봅시다. 저는 여기서 수염을 추가하고 싶고, 축을 조절하여 수염을 추가할 수 있는 랜덤 벡터()를 찾았다고 가정해보겠습니다. 이 여성의 그림에 수염을 추가할 수 있을까요? 물론 가능합니다. 그러나, 오랜쪽 아래의 수염을 가진 남성의 사진이 나오게 됩니다. 즉 수염을 추가한 것 뿐만 아니라 다른 피쳐들이 동시에 변한 것입니다.
[Figure 3] coursera - Build Basic Generative Adversarial Networks (GANs), 'Challenges with Controllable Generation'
이러한 결과가 나오는 것은 축이 수염에 관련된 특징뿐만 아니라 다른 어떤 특징과도 연관이 되어있기 때문입니다. 이 예시로 볼 때는 머리 길이, 눈매, 그리고 눈썹 정도일 것 같습니다. 다시 말하면, 하나의 축이 하나의 특징을 의미하는 것이 아닙니다. 이를 entanglement (뒤얽힘, 꼬여있음)혹은 축이 entangle 되어있다. 라고 표현합니다. 축이 꼬여있는(entangle) 이유 중 한 가지는 일반적으로 의 차수가 충분하지 않을 때 발생하지만, 이외에도 여러 가지 이유가 있습니다.
내가 원하는 피쳐들 외에 나머지는 고정한채로 이미지를 생성하고 싶다면 축을 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 관련 페이퍼를 다음 순서로 짧게 리뷰해보겠습니다.
다음의 페이퍼는 이번 글에서는 다루지 않지만 읽어보면 큰 도움이 될 거라고 생각합니다. 몇 가지는 이곳에 짧게 정리되어 있습니다. 지금은 미루고 있지만 ☹️, 저도 나중에 꼭 페이퍼를 읽어보려구요 🙂!
[Figure 4] DC-IGN 요약
[Figure 5]
컴퓨터 화상처리(Computer graphics)를 하기 위해서는 개발자들이 프로그래밍 언어를 사용해서 명령을 하겠죠? 그 명령(graphics code; )은 매우 디테일 할 것입니다. 예를 들어 공의 위치는 어디이고, 밝기는 몇이고, 무슨 색깔을 가졌는가? 이렇게요. 이처럼 우리가 원하는 이미지 혹은 그래픽을 생성하기 위해서는 disentangled feature가 필요합니다.
해당 모델(DC-IGN)은 입력 값이 주어졌을 때, 같은 object지만 pose와 lighting에 따라 새로운 이미지를 만들어내는 것을 목표로 합니다.
[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)}로 구성됩니다.
Input: data
The posterior approximation: , where ~
Graphics code:
encoder의 output ():
[Figure 7]
를 만들어내기 위해 데이터 가 encoder를 통과합니다. 의 모수는 다음과 같이 만들어집니다.
,
code 가 different view를 가진 이미지를 생성하기 위해 decoder를 통과하고,
를 object function으로 사용하여 학습하면 됩니다. 이 때, code 는 Figure 7 처럼 disentaglement와 entaglement 파트가 섞여있는 벡터입니다.
[Figure 8]
여기까지는 다른 모델과 크게 다를 것이 없습니다. 그렇다면 어떻게 disentanglement를 할 수 있을까요?
DC-IGN은 mini-batch 를 이용하는 것입니다.
현재 우리가 여러 특징(feature)을 가진 학습데이터를 가지고 있다고 가정합시다. feature의 종류는 (방위각, 고도 각, 광원의 방위각, and intrinsic properties (shape, texture, etc)) 입니다. 앞의 3개의 feature를 각각 라고 인코딩했다고 하겠습니다.
미리 mini-batch가 오직 한 개의 variable만 변하도록 데이터를 구성합니다. 예를 들어 elevation angle만 변할 수 있도록 구성하는 것입니다. 다음과 같은 procedure를 통해 모델은 학습됩니다.
[Figure 9]
intrinsic representation의 경우 와 달리 매우 고차원이므로, 더 많은 학습이 요구됩니다. 따라서 논문의 저자들은 1:1:1:10의 비율로 모델을 학습했다고 합니다.
즉 한 번에 하나의 transfomation만 사용하여 학습함으로써, disentanglement를 시도하였습니다. 또한 하나의 변환을 보장하기 위해 선택된 차원을 제외하고는 평균과의 차이 값으로 하였습니다
[Figure 10] *Kulrarni, Tejas D., et. al. 2015.*
[Figure 11] *Kulrarni, Tejas D., et. al. 2015.*
---[Figure 12] InfoGAN 요약
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:
the real data distribution:
a generator:
a discriminator:
a noise variable:
모델에 사용된 GAN을 간단하게 표현하자면 Figure 13과 같이 표현할 수 있습니다. 우리는 가 를 approximate하기를 원합니다. 따라서 를 변형하여 로부터 샘플 이미지를 생성할 수 있는 를 학습시키게 됩니다. 이때, 는 와 minmax game을 하며 경쟁적으로 모델을 학습하게 되며, 는 와 를 구별하기를 원합니다. 이를 수식으로 정리하자면 다음과 같습니다.
위 식에서 볼 수 있듯이, GAN은 에 아무런 제약조건을 주지 않습니다. 따라서 는 entangled vector일 것입니다.
[Figure 14]
기존 GAN과 다르게, InfoGAN은 noise vector 뿐만 아니라 latent code 라는 벡터를 만들었습니다. 따라서 모델의 input은 Figure 14의 오른쪽 그림과 같이 두 개입니다. 이 때, latent codes를 이라고 표기하는데, 독립 가정을 하여 가 성립합니다.
그러나 기존 GAN의 만 추가한다고 해서 학습이 우리가 원하는 방향으로 이루어지는 것은 아닙니다. 모델이 를 만들어 내기 위해 를 무시하고 학습을 할 수 있기 때문입니다. 이를 위해 저자들은 information-theoretic regularization을 제안하였습니다. 이것은 latent codes c와 disribution G(z,c)의 상호정보량을 높이는 방식입니다. 즉, 값을 높게 하는 것이죠.
[Figure 15] Mutual information From Wikipedia, the free encyclopedia
[Figure 16]
Figure 16를 보면, 두 개의 변수들이 독립이라면 상호정보량 이 됩니다. 따라서 Info GAN은 이 값을 maximize하도록 목적함수를 설계한 것입니다.
이를 정리하면 다음과 같습니다.
—— (1)
[Figure 17] Chen, Xi, et al. 2016.
아직, InfoGAN이 끝나지 않았습니다. ☹️위의 식 (1)을 그대로 사용한다면, 한 가지 문제가 있습니다. 어떤 문제가 있을까요?
상호정보량은 이전 관측 를 통해 새로운 관측 의 불확실성이 얼마나 제거 되는가에 대한 척도라고 할 수 있습니다. 즉 Figure 16 에서 볼 수 있듯이 이 필요합니다. 따라서 저자들은 Variational Information Maximization 테크닉을 이용하여 를 approximate 하기 위한 lower bound를 구합니다.
Figure 17 에서 3번째→ 4번째는 trivial하기 때문에 생략하고, 1번째→2번째에 대해 살펴보겠습니다. 해당 내용은 InfoGAN의 Appendix에 있습니다. 이해를 돕기 위해 외부 자료를 참고하였습니다. 🙂
[Figure 18] 임성빈 박사님, [학부생의 딥러닝] GANs | InfoGAN : Information maximizing GAN, 하우론 브레인
(Wikipedia, *Fubini theorm: 이중 적분은 두 번의 일변수 적분을 통해 구할 수 있고, 이는 두 변수에 대한 적분의 순서와 무관하다는 정리)
따라서 최종 목적함수는 다음과 같습니다.
[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.
[Figure 23] Yong-min Shin, GNN-YYK, beta-VAEs
disentanglemet의 대표적인 모델 중 한가지는 infoGAN이라고 할 수 있습니다. 그러나 infoGAN은 여러 한계점이 존재합니다. 저자가 언급한 info GAN의 단점은 (1) 다양하고 큰 데이터셋에는 적용하기 힘들다. (2) noize variables의 수에 민감하다. 등등이 있습니다.
이러한 문제를 해결하기 위해 저자들은 -VAE를 제안하였습니다. 모델 하이퍼파라미터인 를 조절함으로써 disentanglement의 정도를 조절할 수 있습니다.
images:
two sets of ground truth data generative factors:
conditionally independent factors:
conditionally dependent factors:
[Figure 23] Yong-min Shin, GNN-YYK, beta-VAEs
저자는 이미지를 생성하기 위한 모델을 Simulator라는 말로 표현하고 있는 것 같습니다. 따라서 우리는 image 가 로 부터 생성되었다고 가정합니다.
기존 VAE와 어떻게 달라졌는지 살펴봅시다.
[Figure 24] Higgins, Irina, et al. 2017
(1) 모델은 data x와 latent factors z의 결합 분포를 학습할 수 있습니다. 이 때 z는 x를 생성할 수 있는 factor겠죠? 즉, 입니다. 따라서 수식(1)을 maximize하길 원합니다.
(2) VAE에서 공부했듯이, 우리는 로부터 의 분포를 추정합니다.
중요한 것은, 가 disentanglement part인 를 잘 capture해야 합니다. v를 제외한 나머지 part가 w라고 생각할 수 있습니다. 이를 보장하기 위해, 가 와 match 되게끔 constraint을 걸게 됩니다.
이렇게 제약조건을 걸면,
이는 를 가정하면 조건부 최적화 문제로 풀 수 있습니다.
(3) 수식 (2)를 KKT 조건 하에 라그랑지안으로 풀면 (3)을 얻게 됩니다. (KKT 조건을 만족한다고 가정했기 때문에 (2)의 최적 솔루션이 (3)의 최적 솔루션을 구하는 것과 같음을 알 수 있습니다.)
눈치채셨겠지만, 논문 제목의 beta 파트가 여기서 등장하게 됩니다. 😉
여기서 KKT multiplier 는 latent information channel 를 통제하는 regularization coefficient가 됩니다.
(4) KKT 조건의 the complementary slackness(KKT 조건 중 하나)에 따라 ≥ 0이므로, 최종적으로 lower bound (4)가 나오게 됩니다.
beta의 효능 💪:
최종 목적식 (4)에서도 알 수 있듯이, 실제로 v, w는 가정일 뿐 conditionally independent factors , conditionally dependent factors 에 관여하는 텀은 없습니다.
결국 제약조건으로 인해 등장한 텀을 잘 조절하며 학습하면, z가 v, w로 분해가 되는 것입니다. 이러한 이유로 InfoGAN의 한계점을 커버할 수 있다고 말한 것 같습니다.
따라서 전반적인 모델 구조에 대한 코드는 다음과 같이 심플합니다.
[Figure 25] 1Konny, "Pytorch implementation of β-VAE", Github.
Disentanglement의 Metric에 관하여 해당 논문의 section 3에서 소개하고 있습니다만,
생략하도록 하겠습니다. 😂
[Figure 26] Higgins, Irina, et al. 2017
오늘 다룬 모델들을 베이스라인으로 하여 비교하고 있네요![Figure 27] Higgins, Irina, et al. 2017
1개의 latent 값을 바꿨을 때 1개의 특징만 변하고 있는 것을 볼 수 있습니다.
최신 논문들을 다루지 않아 조금 아쉽지만, 어느정도 disentanglement와 친해지셨길 바라겠습니다. 🙂
읽어주셔서 감사합니다.
해당 글은 연세대학교 신용민님의 도움을 받아 작성하였습니다.