오늘은 매우 오랜만에 GAN 논문을 포스팅하려 합니다. 2016년 9월에 올라왔고 ICLR 2017에서 발표된 EBGAN입니다. 우리의 연예인 Yann Lecun 교수님께서 저자로 있기에 매우 유명했던 논문이기도 하죠.
NIPS 2016 당시 keynote presentation에서 여러 차례 자신의 EBGAN을 홍보하시던 Lecun 교수님을 잊을 수가 없습니다. Keynote, panel discussion, GAN 워크샵에 내내 언급할 기회가 있을 때마다 "GAN은 내가 근 $x$년간 들어본 아이디어 중 최고이다"라 강조하시는데 $x$가 10년씩 추가되는 재미있는 모습을 볼 수 있었습니다. 그 특유의 프랑스 억양이 섞인 말투가 아직도 기억에 남네요.
이 바닥이 워낙 빠르게 발전하는지라 이미 유물이 되어 버린 느낌입니다만 GAN이 발전하는 과정에서 최소한 한 획을 그었다고 평할만한 논문이므로 EBGAN은 정리를 하고 넘어가는게 맞는 것 같습니다.
Energy-Based Model (EBM)
제가 EBGAN이 중요한 논문 중 하나라 꼽은 이유는 아직 대다수의 GAN 모델이 Discriminator가 0 아니면 1을 뱉도록 디자인 된 기존의 probabilistic GAN에서 벗어나지 못하고 있을 때, energy라는 개념을 도입하여 기존 구조를 깨는 모델을 제안했기 때문입니다.
이 energy 개념을 도입하면 GAN 구조를 좀 다른 각도로 살펴볼 수 있게 되는데요 처음 보았을 때 꽤나 신선한 접근이라고 생각했기에 여기에 같이 정리하여 소개해보겠습니다.
(아마도 이번 글은 또.... EBGAN 설명 이전에 Intro가 길어질 것 같네요...하... insight가 많은 논문은 읽기는 재미있는데 정리하기는 매우 귀찮다아...orz....이런 식으로 아직 엄두도 못내는 것들이 산더미. 말로 하면 편한데...)
Statistical learning이나 machine learning의 주요 목적을 한 문장으로 정리해보자면 여러 변수들간의 상관관계를 어떻게 하면 잘 인코딩해볼까로 얘기할 수 있습니다. 이렇게 변수들간의 상관관계를 데이터로부터 잘 학습하고 나면, 모르는 변수의 값이 들어왔을 때 이미 알고 있는 변수들의 값을 바탕으로 모델이 질문에 답할 수 있겠죠 (아래 예시).
위 그림에서 보실 수 있듯이 우리가 $Y_1$과 $Y_2$의 관계를 알고 나면 이미 관측한 데이터가 아닌 어떤 새로운 $Y_1$값 혹은 $Y_2$ 값이 들어오더라도 서로의 관계를 바탕으로 값을 새로운 데이터가 우리가 학습한 data manifold 위에 적합한 값인지 아닌지를 알 수 있습니다. 여기서 data manifold는 $Y_2= Y_1^2$로 표현되는 curve라 할 수 있겠군요.
이런 설명은 지도학습과 비지도학습을 가리지 않습니다. 다만 지도학습에서는 위 그림에서 점(데이터)들이 있을 때 그 점이 data manifold에 속하는지 속하지 않는지를 알려주는 정보가 있는 반면에 비지도학습에서는 학습 데이터셋에서조차도 어떤 점이 outlier인지 아닌지 알 정보가 주어지지 않는다는 차이가 있을뿐입니다.
따라서 학습을 energy의 관점에서 얘기해보면, 데이터를 바탕으로 어떤 energy surface를 만들어 나가되 데이터가 살고 있는 부분 혹은 공간에 대해서는 낮은 energy를 할당하고 다른 부분에는 높은 energy를 할당하도록 하는 그런 과정이라고 생각할 수 있습니다. 즉, 인코딩을 해줄 값 = energy가 되는 것이고 이를 인코딩하는 함수 = energy function이 되는 것입니다.
(여기서 왜 하필 데이터 근방에서 energy가 낮도록 설정하였는지 의아하실 수 있습니다. 이는 energy가 낮을 수록 안정된 구조를 가지는 물리적인 관점에서 개념을 가져온 것으로 보입니다.)
그래서 지도학습은 enegry 관점에서 $X$가 데이터 $Y$가 정답일 때, $(X,Y)$라는 쌍(pair)에서 $Y$가 제대로 된 정답이면 이 쌍의 energy에 낮은 값을 주고 반대의 경우 높은 에너지를 갖게 하는 어떤 방법론이라고 생각할 수 있습니다. 한편 비지도학습은 $X$만이 있기에 data manifold에는 작은 energy를 부여하도록 $X$를 잘 모델링 하는 것이라고 생각할 수 있습니다.
매우 그럴듯하죠. 그래서 두루뭉술 아 저렇게 하면 되는구나 하고 넘어갈 수 있지만 조금만 곰곰히 생각해보면 여기서 한 가지 의문점이 생깁니다. 위의 관점에서 비지도학습 문제를 푼다고 해보겠습니다. 그나마 $X$가 있는 부분의 값은 data manifold라 생각하여 값을 낮게 할당하면 되겠지만 정보조차 없는 data manifold 밖의 공간은 무엇을 기준으로 어떻게 값을 할당해야할까요? 사실 이는 지도학습에서도 학습 데이터셋이 전체 데이터 공간을 표현할만큼 충분하지 않은 경우 똑같이 발생할 수 있는 문제입니다. 데이터를 존재할 수 있는 모든 조합에 대해 구할 수 있을리가 없죠.
How do we make the energy higher outside the samples?
여기서 어떤 식으로 문제를 풀어나갈 것이냐에 따라 비지도학습에 속하는 알고리즘들의 갈래를 나누어 energy 관점으로 설명할 수 있습니다.
Seven Strategies to Shape the Energy Function
1. 모델을 만들되 낮은 energy를 가질 수 있는 공간을 한정짓는다.
(Build the machine so that the volume of low energy stuff is constant)
> PCA, K-mean, GMM, square ICA
여기에 속하는 알고리즘들은 data manifold 밖의 공간의 energy를 explicit하게 올리지는 않습니다. 다만 디자인에 따라서 자연스럽게 그렇게 될 수 밖에 없도록 만들뿐입니다. 예를 들자면 PCA는 분산이 가장 많이 설명되는 방향을 찾고 각각 orthogonal한 basis로 표현되는 linear subspace로 data manifold를 한정짓습니다. 그렇기에 principal subspace로 설명할 수 없는 다른 공간에 해당하는 녀석들은 정보가 복원되지 않을 것이기 때문에 이 부분에서 들어온 데이터들은 모두 에너지가 높게 하는 모델이라 생각할 수 있습니다.
K-means는 샘플에서 energy가 0이고 멀어질수록 quadratic하게 energy가 증가하도록 하는 모델이라 생각할 수 있습니다. GMM이나 ICA도 결국 위에 설명한 것과 비슷한 분류라 생각할 수 있겠죠.
그래서 보시듯이 이런 Spiral data에 대해 PCA가 좋은 모델이 아닌 것을 금방 알 수 있습니다. K-means는 이런 경우에 좀 잘 하는 것처럼 보이지만 사실 고차원 공간으로 가면 제대로 동작하지 않을 것이 뻔히 보이죠.
2. Parametric 모델 사용하여 샘플에서의 energy는 낮추고 다른 모든 부분에서는 올린다.
(Push down of the energy of data points, push up everywhere else)
> Maximum likelihood (needs tractable partition function)
우리가 흔히 아는 Maximum likelihood가 여기에 속합니다. 다만 이 경우 보통 probabilistic model을 만들기 위해 전체 domain, 모든 parameter에 대한 적분 함수를 계산해야하는데 이런 partition function이 보통 intractable한 경우가 많습니다. Tractable한 함수로 한정지어 계산하면 그만큼 모델에 한계가 생기겠죠. Variational bound를 적용해서 surrogate 함수를 만들어 사용하는 방법도 있지만 여전히 한계점들이 있습니다.
3. 2번과 달리 모든 부분에서 energy를 올리는 것이 아니라 선택된 일부에서만 올린다.
(Push down of the energy of data points, push up on chosen locations)
> Contrastive divergence, Ratio matching, Noise contrastive estimation, Minimum probability flow
이 경우 문제가 "선택된 일부"를 어떻게 찾을 것인가에 대한 것으로 변할뿐 본질적인 문제는 해결되지 않습니다. 기본적으로 이 분류에 속하는 알고리즘들은 현재 가지고 있는 energy 모델에 대해 샘플에 약간의 noise를 주어 근방을 탐색해서 값을 계산하고 energy 함수를 업데이트 하는 전략을 취합니다. 즉 어떤 샘플링을 하는 것으로 생각하실 수 있는데요 이 과정이 반복수가 많아지면 결국 MCMC를 하는 것과 같아집니다.
4. 샘플 근방의 curvature는 극대화시키고 gradient는 최소화시킨다.
(Minimize the gradient and maximize the curvature around data points)
> score matching
5. 어떤 dynamical system을 학습시켜서 결국에는 data manifold로 수렴하도록 한다.
(Train a dynamical system so that the dynamics go to the manifold)
> denoising auto-encoder
6. Regularizer를 사용해서 낮은 enegy를 가질 수 있는 공간을 한정짓는다.
(Use a regularizer that limits the volume of space that has low energy)
> Sparse coding, sparse auto-encoder, Predictive Sparse Decomposition
PCA나 K-means와는 다르게 loss function 혹은 energy function에 regularizer를 explicit하게 붙여서 공간을 제한하는 방식을 취합니다. Lecun 교수님은 Variational Auto-Encoder (VAE)도 이 관점으로 보면 중간 latent space에 noise를 넣어 code가 표현할 수 있는 정보의 양 혹은 공간을 제한하는 것으로 생각할 수 있다고 언급하고 넘어갑니다.
"sparse coding energy surface"
7. If $E(Y) = ||Y-G(Y)||^2$, make $G(Y)$ as "constant" as possible
> Contracting auto-encoder, saturating auto-encoder
So what is this all about?
EBGAN을 설명한다면서 EBM에 대해 설명을 하다가 갑자기 비지도학습의 분류만 주구장창 설명하니 이게 무슨 뜬금포인가 할 수 있으실텐데요.
GAN은 사실 3번에서 "선택된 일부"를 찾아내는 과정을 매우 신박한 방식으로 해결한 모델이라 생각할 수 있습니다. MCMC는 이런 선택된 일부 = contrastive data를 생성하는 non-parametric model이라 할 때, GAN은 이를 parametric model을 바탕으로 contrastive data를 생성하는 방법인 것이죠. 즉, GAN 학습과정에서 generator가 하는 역할을 data manifold 밖에 속하는 데이터(contrastive data, e.g. 매우 이상한 사람 사진)를 생성하는 것으로, 그리고 discriminator가 샘플에 energy를 할당하는 energy function 역할을 하는 것으로 생각할 수 있습니다.
여기서 멋진 점은 학습이 진행됨에 따라 generator가 점차 data manifold에 가까운 샘플들을 생성하기 때문에 data manifold에서 멀리 있는 contrastive data들부터 생성해나가며 전체 energy surface를 구성할 수 있게 됩니다. 마찬가지로 discriminator 역시 data manifold에서 먼 곳의 data가 없어도 generator가 생성하는 sample로부터 이에 대한 정보를 자연스럽게 얻어내어 좋은 energy function을 학습할 수 있게 되구요.
따라서 GAN이 학습 데이터셋이 없거나 불충분한 경우에도 학습이 가능하도록 하는 일종의 매우 강력한 비지도학습 방법론이라 생각할 수 있습니다. 그렇기에 지도학습의 눈부신 성과에 비해 정체되어있던 비지도학습의 연구에 GAN이 매우 큰 breakthrough를 가져올 수 있는 Clue가 되지 않을까 하며 Lecun 교수님이 매번 강조하는 것이 아닌가 싶습니다.
다음 글에서는 위와 같은 관점에서 EBGAN을 분석해보도록 하겠습니다. 전반적인 구조를 설명하고 실험 결과와 Theoretical 증명에 대한 설명도 함께 넣을 예정입니다. 그럼 다음 글에서 뵙겠습니다.
다음 읽을거리
- Backpropagation 설명 예제와 함께 완전히 이해하기
- RNN 설명 예제와 함께 완전히 이해하기
- 초짜 대학원생의 입장에서 이해하는 VAE (1)
- 초짜 대학원생 입장에서 이해하는 GANs (1)
- 초짜 대학원생의 입장에서 이해하는 Domain-Adversarial Training of Neural Networks (DANN) (1)
- 초짜 대학원생의 입장에서 이해하는 DCGAN (1)
- 초짜 대학원생의 입장에서 이해하는 Unrolled GAN (1)
- 초짜 대학원생의 입장에서 이해하는 InfoGAN (1)
- 초짜 대학원생의 입장에서 이해하는 LSGAN (1)
- 초짜 대학원생의 입장에서 이해하는 BEGAN (1)
- 초짜 대학원생의 입장에서 이해하는 f-GAN (1)
- 초짜 대학원생의 입장에서 이해하는 The Marginal Value of Adaptive Gradient Methods in Machine Learning (1)
- 초짜 대학원생의 입장에서 이해하는 SVM (1)
참고문헌:
[1] Energy-Based Generative Adversarial Networks Junbo Zhao ICLR 2017
[2] [video] Energy-Based Adversarial Training and Video Prediction - Yann Lecun - NIPS
[3] A tutorial on Energy-Based Learning - Yann Lecun et al. 2006
[4] Tensorflow implementation (github repo) - Namju Kim
[2] [video] Energy-Based Adversarial Training and Video Prediction - Yann Lecun - NIPS
[3] A tutorial on Energy-Based Learning - Yann Lecun et al. 2006
[4] Tensorflow implementation (github repo) - Namju Kim
다음 EBGAN 글은 어디에 있나요 ㅠㅠ
답글삭제으억ㅋㅋ 제가 게을러 다음 글을 쓸 시간을 미루다 보니 이렇게 되었네요. 개인 연구도 하고 학회 논문들을 쓰다보니 블로깅이 계속 미뤄지는 면이 있습니다. 음 그래도 시작한 글은 마무리 해야하니 조만간에 끝을 맺도록 하겠습니다 ㅎ
삭제랜선 지도교수님 존경합니다
답글삭제너무 훌륭합니다. 감사해요
답글삭제감사합니다 교수님!
답글삭제