Improved techniques for training GANs

Generative adversarial networks는 game theory에 기반하여 generative model을 학습하는 방법중의 하나이다. 그런, GAN을 training하는 것은 많은 패러미터를 가진 non-convex game에 대한 Nash equilibrium을 찾아내는 과정이 필요하다. GAN은 일반적으로 gradient descent technique을 이용하여 cost function의 최저값을 찾내는 optimizer를 이용하기보다는, 바람직하게는 game의 Nash equilibrium을 찾아내는 과정이 필요하다. 그러나, Nash equilibrium을 찾기위해 위 algorithm을 사용하면 수렴에 실패하는 경향이 있다.


GAN은 수렴이 어려운 내재적 문제를 안고 있다. 기본적으로 수렴이 쉽지 않다는 것은 이것을 활용하는데 많은 장애가 따른다. Generative model은 ML분야에서 개인적 관심분야이기도 하거니와 가능성으로 볼때 발전 가능성이 크다고 생각된다. 그러나, 연구 논문의 주요 연구 분야가 개인적으로 관심이 크지 않은 이미지 분야에 치우치다 보니, 더 살펴봐야 하나 고민하다가 일단은 GAN의 training에 있어서 문제점을 파악하고 이에 대한 해결책을 제시한 Salimans, Goolfellow등이 공저한 paper를 정리하려고 한다.


Toward Convergent GAN Training

GANs를 학습시키는 것은 상호 비협조적인 게임에서 두 플레이어가 Nash equilibrium을 찾는다는 것을 의미한다. 두 플레이어는 각각의 cost function을 최소화하는 모델(discriminator and generator)의 패러미터를 찾아내는 것이다. Nash equilibrium상태는 discriminator의 cost function이 최소화 되는 D와 G의 parameter(Θ for G, Θ for D) 및 generator의 cost function이 최소화 되는 G의 parameter(Θ for G)를 찾은 상태이다. 그러나, 불행히도 Nash equilibria를 찾는 것은 매우 여러운 문제이다. 물론, 특별한 경우에 그 해를 찾는 것은 존재하나,  GAN game과 같이 cost function이 convex하지 않고, 매우 큰 dimension을 가지는 연속(continuous) 패러미터를 가진 경우는 일반적 해를 구하는 방법이 알려져 있지 않다. 직관적으로 볼때, 각각의 플레이어가 최소의 cost를 가질 때 Nash equilibrium에 도달한다는 개념은 전통적로 사용된 gradient기반 최소화 기법을 채용하는 아이디어를 생각해내게 한다. 하지만 D의 cost를 줄이기 위해 D를 위한 패러미터를 조절하는 것이 G의 cost를 증가시키고, 그 반대의 경우 즉, G의 cost를 줄이기 위한 노력이 D의 cost를 증가시킬 수 있으므로, 대게 gradient를 기반으로 한 최소화 기번은 수렴에 실패 하는 경우가 많다. 그러므로, 그동안  GAN을 training시키기 위해서, 수렴에 실패할 가능성이 있어도 gradient descent방법을 각 플레이어의 cost에 동시에 적용하는 방법을 사용하였다. 그러므로 수렴이 보다 잘되도록 하기 위해 경험적으로 발견한 다음과 같은 방법들을 제안하였다.

Feature matching

Feature matching은 GAN의 불안정성 문제를 해결하기 위해 generator에 새로운 objective를 부여함으로써 discriminator의 현상태에 과도하게 training되는것을 막아준다. 새로운 objective는 generator가 real data의 statistics와 match하도록 data를 생성시킨다. 특히, discriminator의 중간 layer상의 feature를 match하도록 generator를 training시킨다. 이런식으로 feature를 선택한 이유는 이 feature가 real data와 generator가 생성한 data간에 구분하기 뚜렷한 특징을 가지고 있기 때문이다. 특정함수 f(x)가 discriminator intermediate layer에 적용된 activation function이라면,  generator의 새로운  objective는 다음과 같이 정의된다:

gan-feature-mathcing

여기서 discriminator라고 할 수 있는 f(x)는 일반적인 방법으로 training된다. 이 방법은 GAN이 불안정할때  매우 유용하다.

Minibatch discrimination

GAN에서 일어나는 주요 failure mode중의 하나는 generator가 항상 하나의 포인트 값만을 생성하는 모델 패러미터 값에 빠져든다는 점이다. 이 문제를 해결하는 가장 확실한 방법은 discriminator가 여러 data example을 살펴보도록 해야 하는데, 이것을 minibatch discrimination이라고 한다. 이를 수식과 그림으로 표현하면 아래와 같다.

gan-minibatch-discrimination-functiongan-minibatch-discrimination-figure1

 

Historical averaging

각 player의 cost 다음과 같은 term을 포함시킨다.

gan-historical-averaging-function

여기서, θ[i] 지나간 시점 i에서의 패러미터 값이다. 과거 패러미터의 평균값은 계속 업데이트되므로 이방법을 통해 긴 time series에도 유연하게 사용될 수 있다.

One-sided labeling

Label smoothing 방법은  classify하기위해 사용하는 label 0/1 targets을 덜 극단적인 값(0.9/0.1)으로 대체하는 것이다. 이 방법은 adversarial  example에 사용되는 신경망의 취약성을 줄이는 역할을 하는것으로 알려졌다.  Positive classification targets을 α로,  negative targets을 β로 바꾸게 되면, optimal discriminator는 아래와 같은 식으로 나타낼 수 있다.

gan-one-sided-labeling

분자항에 새로 들어간  Pmodel(x)은 문제를 일으키는데, 이는 Pdata값이 0에 가까운 영역에서 Pmodel 값이 크면, 잘못된 Pmodel의 samples이라도 data와 가까와 지려는 동기부여를 하지 못하기 때문이다. 그러므로 positive labels 만 α로 smoothing하고, negative labels은 0을 그대로 사용하였다.

본 논문을 바탕으로 구현된 저자의 github repository를 참조하기 바란다.


2016년은 GANs에 대한 연구가 많은 한해였던거 같다. 아직도 GANs 모델을 training하기 위한 방법을 활발히 연구중이고, 근본적인 해결책을 찾기 위해서는 보다 본질적인 이해가 필요한 분야로 생각된다. 현재 개인적으로 이 모델을 training하는데 어려움을 겪고 있고, 단기간에 해결책을 제시할 수 없기 때문에, 이들의 연구방향을 알기 위해서는 개인적으로 시간을 투자해서 연구를 해봐야 할것 같다. 이 포스트는 계속해서 수정할 예정이다.


Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중