Deep Learning study

Unrolled Generative Adversarial Networks ( Unrolled GAN ) 본문

AI/papers

Unrolled Generative Adversarial Networks ( Unrolled GAN )

HwaniL.choi 2019. 7. 13. 13:00
반응형

오늘 살펴볼 논문은 Unrolled GAN입니다.

 

왠지 읽어야되는 논문 순서가 엄청 뒤죽박죽 된 느낌이지만 ... 그냥 손에 잡히는거 읽는게 잘 되는것 같은 느낌입니다.

 

여튼 최근에 훈련도있고 일과도 조금 많아져서 오랜만에 정리를하게 되었습니다. ( 전역 언제하나.... )

그럼이제 본론으로 들어가도록 합시다..

 

 

Introduction

 

GAN에서 파생된 눈문들은 대체로 GAN이 가지고있는 문제점들을 개선할 수있는 방안을 제시해주는 것들이 대다수입니다.(내 느낌인가..) 역시 Unrolled GAN도 마찬가지로 몇 가지 문제점들을 개선했다는 내용을 담아내고 있습니다.

 

  1. mode collapse 문제로 주로 generator가 계속 하나의 sample만 생성해내는 현상
  2. generator와 discriminator를 학습시킬때의 불안정성
  3. 하나의 agent가 다른 하나보다 powerful해져서 한쪽의 agent의 learning signal이 아무런 영향을 미치지 못해, 학습이 되지 않는 현상

 

이런 현상들은 보통 GAN의 training loss를 계산하기 어렵다는것, 그리고 모델의 성능의 측정이 애매하기때문에 발생하게 됩니다. 그러면 이제 Unrolled GAN이 어떻게 이 문제들을 해결했는지 살펴보도록 합시다.

 

 

Method

Generative Adversarial Networks

 

여기서 f는 항상보던 adversarial loss 가 됩니다.

위에서보여주는 것 이 일반적인 GAN의 minimax objective 입니다. 최종적인 GAN학습의 목적은 가장 optimal한 Generator를 찾는 것 입니다. 이 학습법이 왜 어려운걸까 한 번 생각해봅시다.

 

원래의 GAN이 풀어야하는 문제는 minimax문제입니다. 이 뜻은 optimal한 Discriminator에 대해서 optimal한 Generator를 찾겠다는 의미이죠 . 그렇지만 이것이 maximini문제로 바뀌게되면 하고자하는 목적이 불분명해지고 Generator학습에 있어서 문제점들이 발생하게 됩니다. 위에서 언급했던 mode collapse, 학습의 불안정성 등이 이것에 해당하게 됩니다. maximini가 된다면 Generator에대한 minimization을 먼저 수행하게 됩니다. 따라서 아직 optimal하지 않은 Discriminator에대해서 Generator를 학습하게 되는데, 이때 Generator는 이 것을 잘 속일 수 있는 sample하나만을 만들어내면 됩니다.

 

단순한 순서의 문제이지만 Neural net으로 학습을 하는 입장에서 , 이 문제가 minimax 인지 maximini인지 구별하기는 힘듭니다.

이 뿐만이 아니라 매 번 Generator update step마다 optimal한 Discriminator를 찾아낸다는 것도 사실상 불가능하죠.

 

따라서 Unrolled GAN에서 하고자하는 것은 Generator학습에서 surrogate objective function이라는것을 도입해서, 조금 더 원래의 true genrerator objective에 가까워 지도록 하는 방법을 소개합니다.

true generator objective

 

Unrolling GANs

 

위의식은 discriminator parameter 의 local optimum을 iterative optimization 의 과정으로 표현한 것입니다.

 

이제 K step만큼 unrolling 함으로써, generator에대한 surrogate objective를 만들어 냅니다.

K = 0 일때는 정확히 일반적인 GAN objective 와 일치하게 됩니다. 반면에 K → ∞ 일때에는 true generator objective function과 일치하게 됩니다.

 

사실 이 수식만을 보고 난 후에는 도대체가 무슨말이지 생각하게 됩니다.(아님말구요..) 그다음에 드는 생각은 D를 K번 업데이트 시키고 G를 업데이트 해 준다는 의미인가? 그럼 나도 예전에 GAN을 학습시킬때 D가 성능이 잘 안나와서 한 번의 싸이클에서 D만 여러번 업데이트하고 G를 업데이트 시켜보기도 했었는데, 혹시 나랑 같은 생각인가? 라고 생각을 했었습니다. (... ㅋㅋㅋ)  하지만 아쉽게도 당연히 그런 방법은 아니고 자세한 내용은 아래에서 설명하도록 하겠습니다.

 

 

Parameter updates

 

generator와 discriminator는 surrogate loss를 사용해 업데이트 되는데 그것은 아래와 같습니다.

이 부분에서 집중해야 할 것은 D를 업데이트 할 때에는 surrogate function이 사용되지 않는다는 것 입니다. 그 말은 바로 위에서 말한 것 처럼 작동하는 방식이 아니라는 것입니다. 실제로 D는 K번 업데이트 되지 않는 것 입니다. 이 논문에서도 그에대해서 말 해주고 있는데, 엄연히 이 방식과는 다르다는것을 다시 한 번 짚어주는 것 같습니다.

 

" It is important to distinguish this from an approach suggested in (Goodfellow et al., 2014), thatseveral update steps of the discriminator parameters should be run before each single update step forthe generator. In that approach, the update steps for both models are still gradient descent (ascent)with respect tofixedvalues of the other model parameters, rather than the surrogate loss we describein Eq. 9. PerformingKsteps of discriminator update between each single step of generator updatecorresponds to updating the generator parametersθGusing only the first term in Eq. 12 below. "

 

 

위의 과정을 그림으로 살펴보겠습니다. 이 그림은 unrolled GAN이 3개의 unrolloing step 을 가지고 계산하는 그래프를 표현 한 것입니다. 위의 화살표들은 forward Pass를 제외한 나머지는 모두 backprop과정입니다.

정말 이 그림이 이해가 쉬우라고 삽입해 놓은 것 이겠지만, 사실 저는 더 헷갈리게 되었다면 제가 이상한건가요.. 그렇지만 위의 discriminator pram 의 iterative optimization수식과 surrogate loss의 수식을 함께 보면 어느정도 와닿기는합니다.

 

여담이지만 제가 좋아하는 말 입니다. 폰 노이만이 말했던가, "수학은 이해하는것이 아니다, 익숙해질 뿐", 정말 명언인것 같아요. 이해 안 되던것도 자꾸 보다보면, 그러니까 익숙해지면 어느새 이해되는것 처럼... 그냥 저는 이 논문의 내용도 약간 그런 것 같다는 말을 하고싶었습니다. ㅎ..

 

 

The Missing Gradient Term

 

surrogate loss 의 작동에 대해서 조금 더 이해하기 위해서 , Generator prameter 에 대한 gradient를 살펴봅시다.

 

일반적인 GAN의 경우에는 오로지 우변의 첫 번재 항만을 이용하여 업데이트 해 주는것과 같습니다. 위에서 말한 것 처럼, D를 단순히 K 번 업데이트 해 주고 G를 업데이트하는 경우가 이것에 해당합니다. 하지만 surrogate loss에서는 우변의 두 번째 항이 추가되어져 있습니다.

 이 부분이 핵심적인 부분인데 , 이 term이 현재 G의 업데이트에 대해 D가 어떻게 반응하는지를 살펴보고 이에 대응하게 하도록 하는 것 입니다. 우변의 두번째 term을 보면 G의 변화에대한 D의 변화 , 즉 G의 변화에대해 D에대한 반응이 포함 되어 있고, 그에대해서 G의 업데이트가 이루어지게 됩니다. 논문에서 말하기를 이 term이 mode collapse가 일어나는 경향을 줄여준다고 합니다.

 

K → ∞일때, discriminator의  param이 local optimum 이 되고 그러면 당연히 우변의 두 번째 항은 0 이 됩니다.

 

다시말해서 왼쪽의 값이 극값에 이르므로, 이 값이 0 이 되기 때문이죠 .

 

 

그렇기때문에 K → ∞일때나 K = 0 일때는 일반적인 GAN loss와 같게 됩니다. 그러나 보통은 K → ∞인 경우는 있을 수 없습니다. 따라서 우변의 두 번째 항은 0이 아니게 되고, 이 term 이 어떠한 의미를 가지고 있을 것 입니다. 그것을 논문에서는 G의 변화에대한 D의 반응에대한 추가적인 정보를 포함하고있다고 설명합니다.

 

 

Consequences of the surrogate loss

 

GAN은 Discriminator와 Generator의 게임으로써 생각 될 수 있습니다. 그리고 그것이 Nash equilibrium에 도달되어질때까지 반복합니다.

먼저 generator는 discriminator가 나타내는 분포에서 가장 확률이 높은 곳으로 형태를 이동시키게됩니다. 그렇게되면 discriminator가 취하는 행동은 단순합니다. D는 그 포인트를 추적해내어서 그것에 낮은 확률을 할당하게 됩니다. 이렇게 G가 움직이고 D는 그것을 따라가는 싸이클은 영원히 반복되거나 두 모델의 변화율에 따라 수렴하기도 할 것입니다.

이러한 움직임을 여기선 가위, 바위 , 보 게임 과 비슷하다고 표현했습니다.

 

당연하지만 Unrolled인 경우에는 이러한 결과들이 일어나지 않습니다. 이제 G의 움직임은 D가 어떻게 반응하냐를 고려하게됩니다. 이러한 추가적인 정보가 다음의 D step 이 영향을 덜 끼치게 만들어서 generater가 mode collapse에 빠지지 않고 자신의 mass를 퍼뜨리게 도와주는 것 입니다.  다시말하면, G가 다음의 D의 update를 예측하고 update된다는 것입니다. ( 수식을 빌려 말하면, minimax 문제를 풀때에 optimal한 D가 필요했지만 사실상 불가능 하므로, 조금 더 optimal에 가까워 진 D 를 사용해서 G를 더 잘 update해 보겠다.. 그런말 같습니다. ) 그러면 위에서 말한 가위, 바위, 보 같은 현상은 일어나지 않을테니까요 !

 

 

Experience

 

위의 결과들은 대충 말하자면 unrolled한 것이 mode collapse도 일어나지 않고 성능도 좋았다~ 정도가 되겠습니다. ㅎㅎ 나머지 뒤의 내용들은 직접 찾아 보는걸로 ~~

 

그럼이만.....

 

 

 

 

Reference

[1] Unrolled Generative Adversarial Networks

반응형
Comments