[Model Review] PGGAN Reivew
in DeepLearning on Paper
1.Abstract
1-1. Problem
PGGAN은 2017년에 나온 논문이고 발표당시 큰 이슈를 받았다고 한다 크 이유로는 이전의 GAN이 고해상도 이미지를 생성하기 힘들다는 문제를 새로운 접근 방식으로 해결하였기 때문인데 그 이유와 PGGAN의 접근 방식을 살펴보자
고해상도이미지를 생성하는 것을 학습하는 것은 매우 어려운 일인데 그 이유는 discriminator는 high resolution일 수록 구분을 잘 하기 때문이다. 이는 generaotr와의 학습 불균형을 일으킨다 또한 이러한 고해상도 이미지는 메모리 제약 조건때문에 배치를 줄여야한다 이 또한 학습을 방해하는 요소이다
1-2. Approach
논문에서 제안하는 방식은 점진적으로 이미지를 학습시키는 것이다 아래 그림을 보자
구조를 보면 4x4이미지를 생성한 뒤 점차적으로 해상도를 늘리면서 이미지를 생성한다 이렇게 1024x1024의 고해상도 이미지까지 진행된다.
2. PGGAN
2-1. 이점?
구조는 대충 이해가 되는데 이렇게 점진적으로 이미지를 학습시키는 것이 어떤 면에서 이점이 될까? 우선 Image Distribution에서 Large scale 구조를 먼저 발견하도록 도움을 준다. 여기서 Large scale이란 예를들어 사람얼굴에 대한 dataset가 있다고 가정하자 이 데이터 셋에서 large scale이란 전반적인 전체 얼굴의 형태를 의미한다.
즉, 해당 논문의 요점은 generator와 discriminator의 모델을 점진적으로 쌓아 올려가며 학습을 하면 저해상도 이미지에서만 추출가능한 feature인 Large scale을 보면서 사람 얼굴에 대한 전반적인 정보를 가지면서 이미지를 생성 할 수 있을 것이다 당연하게도 층이 깊어질수록 디테일한 특징을 보면서 학습한다.
다시한번 짚고 넘어 가자면 모든 Large Scale을 동시에 학습을 하는것이 아니다. 해당 논문에서는 점진적을 Model에 layer를 추가할 때 새로 추가하는 레이어를 smooth하게 fade in하게 넣어준다고 한다. 이 의미는 잘 학습된 이전 단계의 layer들에 대한 sudden shock을 방지해줄 수 있다고 한다.
아래 그림은 PRGAN의 학습 방법을 좀더 상세하게 나타내는 그림이다.
점진적으로 layer을 쌓아가며 학습하는 바법은 학습이 안정적으로 된다는 장점이 있다.
또한 점진적으로 layer을 쌓아가며 고해상도 이미지를 생성해내는 방법은, resolution에 맞게 latent vector가 mapping 되면서 학습된다는 장점이 있다. 그래서 안정적으로 고해상도 이미지를 만들어낼 수 있다. 이러한 학습을 하기 위해서는 WGAN-GP Loss를 적용해야한다고 한다.
2-2 학습방법
이러한 과정을 통해 Generator는 학습을 하는데 딱봐도 순차적으로 진행될 것같은 구조이다
먼저 관련된 layer에대해 설명한다.
Upscaling
low resolution 이미지를high resolution 이미지로 변환시키면 가로-세로의 pixel들을 다 채워주지 못해서 화면이 뿌옇고 흐리게 보이게된다 이러한 문제를 upscaling으로 해결할 수 있는데, 이는 부족한 pixel들을 채움으로써 더 선명하게 보여주도록한다. 이때 layer는 학습하지 않고 nerest neighbor algorithm을 사용한다
Pixel Nomarilzation
일반적으로 Gan은 Generator와 Discriminator간의 학습 불균형으로 인해 모델이 붕괴한다 이를 억제하기 위해서 batch normalization이 적용됬는데 이 방법은 이전의 포스트에서 설명하였듯이 데이터분포간의 Convariate shift 현상을 제거하기 위해 도입된 방법이다.
pixelwise normalization을 사용하는데 이는 각 Pixel 별로 Feature Vector를 Feature Vector를 단위 길이 별로 Normalization해주고 각 Layer 맨 뒷 단에 적용을 해주면 된다.
해당 Pixel layer를 사용하는 이유는 Generator와 Discriminator가 경쟁의 결과로 magnitudes가 통제 불능이 되는 것을 방지하기 위해서 사용되는 기법이라고 한다
좀더 자세히 보면 각 Convolution layer의 Feature에 대한 pixel wise로 Normalizaing 해주는 것이며 local reponse normlaization을 변형해서 구현한 것이다.
해당 방법은 결과물에 변화는 크게 없지만 escalation of sinal magnitudes을 효과적으로 방지한다고 알려져있다. 아래는 수식과 코드이다.
Discriminator
Down Scailing
Network의 현재 해상도에 맞춰서 real images(학습 데이터)를 Downscaling 하여 넣어준다. 그러면 저해상도 이미지로 변경이 되긴 하지만 고해상도 이미지에 대한 정보를 담고 있다 -> cov층이 없어도 위치정보는 그대로 가지고 있다 -
resolution transition 하는 중에는 Real image의 두개의 해상도 차이(n-1 layer와 n layer)를 interpolation(선형보간)한다. 논문에서 해당과정은 Fade in 과정으로 설명이 되어있다.
표준편차
일반적인 Gan의 특징으로 훈련중 train data에서 찾은 Feature information보다 less variation한 image를 생성해내는 경향이 있다. ->최대한 최소한의 자원으로 discriminator를 속이려한다. 이를 해결하고자 PGGAN에서는 Mininatch Starndard devation 방법을 제안을 하게 되었다.
이는 Feature statistics를 계산할 때 각각의 한장의 이미지 마을 보는 것이 아닌 minibatch로 묶어진 전체 배치 이미지에 대해 계산을 해서 Generator에 의해 생성된 Fake image와 Training될 Real train image data들의 비슷한 statistics를 갖도록 하는 방법이다.(아마 비슷한 이미지를 생성하기 때문에 적용되는 말인가 싶다)
즉 discriminator가 학습한다는 것은 어떻게 구분할 것인지에 대한 기준을 정한다는 것인데 이에 real data의 feature를 넣어줌으로 fake이미지에서 realdata에서의 특징을 잡아내도록 유도한다는 것이다
즉 Discriminator가 Mini Batch 전체에 대한 Feature statistics를 게산하도록 해서(좀더 일반화 하기 위해) Real train image data와 Fake batch image를 잘 구별해내도록 도움을 줄 수 있다
또한 생성된 배치 이미지에서 계산된 Feature statistics 가 training된 batch image data의 statistics와 더 유사하게 만들도록 Generator가 less varation을 갖는게 아니라 더 이미지의 특징에 맞는 것을 생성하게 권장한다.
Equalized Learning Rate(runtime weiht scaling)
저자는 Generator와 Discriminaotr사이의 좋은 경쟁을 보장하기 위해 layer가 비슷한 속도로 학습하는 것이 필수라고 말을 하였다. 그래서 논문에서는 Equalized Learning Rate 접근법을 제안하였다 우선 이 방법은 초반 Weight initialization을 가우스분포로 0~1의 range를 가지게 초기화한다
모든 Weight들에 대해서는 동일한 Dynamic range를 갖도록 지정해준다 이렇게 해주는 이유는 보통 parameter의 scale과 무관하게 Gradient를 update를 해주면 된다 이때 parameter마다 dynamic range가 다르면 이 값을 조절하는데 시간이 많이 소요가 되게 된다 따라서 저자느 Equalized learning rate접근 방법을 사용해서 각각 다른 layer들의 weight들에 대해 동일한 dynamic range을 갖도록 하여 동일한 학습 속도를 보장하였다.
정리
propagan은 점진적으로 이미지를 생성해냄으로써 이전의 DCGAN이 수행하기 힘들었던 고화질 이미지를 생성해낼 수 있었다 . 모델은 Geneartor에서 pixel wise normalization을 통해 학습에서 너무 어긋나는 데이터를 조정시킬 수 있었고 transition 하는 동안 weight가 안정화 될수 있게 alpha값에 의해 제어가 되는 Fade in 기법을 사용해 부드럽게 이미지를 생성할 수 있게 된다. Discriminator에서는 모델안에 real data의 특징값들을 넣어주어 discirminator가 실제 데이터의 특징을 참고하면서 학습을 할수 있게 되었고 그로인해 generator도 discriminaotr를 속이기 위해 그에 걸맞는 이미지를 생성해 낼 수 있었다 마지막으로 모델이 안정적으로 학습할 수 있게 만들기 위해 Equalized learning rate를 설정한것이 모델의 특징이다.