2018년 5월 9일 수요일

[Paper Skim] Spectral Normalization for Generative Adversarial Networks

Spectral Normalization for Generative Adversarial Networks

TL;DR: A novel weight normalization technique called spectral normalization to stabilize the training of the discriminator of GANs.
Keywords: Generative Adversarial Networks, Deep Generative Models, Unsupervised Learning
Accept: (Oral)
Rating: 8-8-8
Review: https://openreview.net/forum?id=B1QRgziT-

1. Introduction


Preferred network 그룹에서 나온 논문. (최근 핫한 일본 그룹) 그리고 Ian Goodfellow의 홍보 (보증?...) 개인적으로 매우 취향인 논문. (이후 더 자세히 리뷰 예정) 


GANs를 안정적으로 학습시키는 것을 새로운 weight normalization으로 해결해보고자 함. Spectral normalization이라 불리는 이 방법은,
  • Intensive hyper parameter이 필요없음. Lipshitz constant가 유일한 hyperparameter to be tuned. (심지어는 tuning 안 해도 잘 됨)
  • Implementation이 단순하고 computational cost가 적음. 
Batch normalization이나 weight decay, feature matching on the discriminator와 같은 regularization tech.가 없이도 working 잘 함.

2. Spectral Normalization


각 레이어의 spectral norm을 제약함으로써 Discriminator function $f$의 Lipschitz constant를 컨트롤 함. 

ReLU와 같은 activation function의 Lipschitz norm은 1이기 때문에 네트워크 전체를 볼 때 고려하지 않아도 되고, 결국 Weight의 Lipschitz norm을 나눠줌으로써 각 weight matrix $W$의 Lipschitz constant $\sigma(W)=1$:
$$\bar{W}_{SN}(W):=W/\sigma(W).$$

이를 바탕으로 $||f||_{Lip}$가 1로 상계를 갖도록(upper bounded) 함.

Gradient Analysis of the Spectrally Normalized Weights


The gradient of $\bar{W}_{SN}(W)$ w.r.t. $W_{ij}$:
\begin{align} \frac{\partial\bar{W}_{SN}(W)}{\partial W_{ij}}  &= \frac{1}{\sigma(W)}E_{ij} - \frac{1}{\sigma(W)^2}\frac{\partial \sigma(W)}{\partial W_{ij}}W \\&= \frac{1}{\sigma(W)}E_{ij} - \frac{[u_1v_1^T]_{ij}}{\sigma(W)^2}W \\&= \frac{1}{\sigma(W)} (E_{ij} - [u_1v_1^T]_{ij}\bar{W}_{SN}) \end{align}
여기서 $E_{ij}$는 $(i,j)$-th entry는 1 나머지는 0인 행렬이고 $u_1$과 $v_1$이 first left and right singular vecotrs of $W$. $h$를 hidden layer라고 하면 아래가 성립함:
\begin{align}\frac{\partial V(G,D)}{\partial W}&=\frac{1}{\sigma(W)}(\hat{E}[\delta h^T]-(\hat{E}[\delta^T\bar{W}_{SN}h])u_1v_1^T)\\
&= \frac{1}{\sigma(W)}(\hat{E}[\delta h^T]-\lambda u_1v_1^T) \end{align}
여기서 $\delta:=(\partial V(G,D)/ \partial(\bar{W}_{SN}h))^T, \lambda:=\hat{E}[\delta^T(\bar{W}_{SN}h)]$이고 $\hat{E}[\cdot]$은 각 미니 배치의 empirical expectiation을 나타냄.
For some $k\in \mathbb{R}$, $\hat{E}[\delta h^T]=ku_1v_1^T$일 때 $\frac{\partial V}{\partial W}=0$이 성립함.

여기서 식 (5)의 해석이 매우 재미있는데, 식의 첫번째 항은 normalize되지 않은 weights에 대한 미분이므로 별다를 것이 없고 두번째 항이 추가된 것으로 생각해보면, 이를 adaptive regularization coefficient $\lambda$만큼 첫번째 singular component를 penalize하는 regularization 항으로 본다면 다음과 같은 해석이 가능함:

$\lambda$가 양수라는 얘기는 $\delta$와 $\bar{W}_{SN}h$가 비슷한 방향을 가르키고 있다는 것을 의미함. 즉, $W$의 column space가 한 쪽 방향으로만 집중해서 update되는 것을 막아준다고 해석할 수 있음. 논문에서는 이를 통해 spectral normalization이 네트워크의 각 layer가 한 방향으로만 sensitive하지 않도록 막는다고 얘기함.

3. Spectral Normalization vs Other Regularization Techniques


Weight normalization은 결과적으로 너무 강한 constraint를 걸어버리는 경향이 있음. Weight normalization은 weight matrix의 rank를 1이 되도록 강제함 (matrix norm과 weight normalization definition에 의해 수식을 보면 확인할 수 있음). 

그런데 이렇게 하면 discriminator가 하나의 feature만을 보고 probability distribution을 구별해야하기 때문에 discriminator가 매우 sensitive하고 unstable하게 만드는 경향이 있음.

Orthonormal regularization on each weight는 spectral normalization과 유사하면서도 학습을 안정화해주기는 하지만,
$$||W^TW-I||_F^2$$
weights를 orthonormal하게 하므로써 (모든 singular value를 1로 강제하기 때문에) spectrum의 envelop을 망치고 중요한 정보를 잃어버리는 경향이 있음. Spectral normalization은 spectrum의 scale만을 조절하기 때문에 (최대 값을 1) 이와는 다름.

GP와 같은 경우는 위에서 설명한 다른 normalization tech.들과 같은 문제는 없지만 현재 generative distribution의 support에 매우 강하게 엮여있다는 약점이 있음. 이 때문에 학습이 진행됨에 따라 generative distribution의 support도 바뀌기 때문에 학습 과정이 불안정적이 된다는 단점이 생김. Spectral normalization은 학습하는 함수를 operator space에서 regularize하기 때문에 들어오는 데이터 batch에 보다 덜 민감한 것을 볼 수 있음.


4. Experiments


최초로 단일 네트워크로 이미지넷 1000개 범주의 이미지를 생성한 방법인 것만으로도 큰 의미를 지님.







2018년 5월 1일 화요일

[Paper Skim] AmbientGAN: Generative Models From Lossy Measurements

AmbientGAN: Generative Models From Lossy Measurements





TL;DR: How to learn GANs from noisy, distorted, partial observations
Keywords: Generative models, Adversarial networks, Lossy measurements
Accept: (Oral)
Rating: 8-7-7


GAN을 학습시키기 위해서 고퀄리티 샘플들이 필요한데 (예시: 노이즈가 없는 사진들) 보통 그런 경우가 많지 않다는 것을 지적하고 이를 해결하고자 한 논문. 

즉, 샘플에 occlusion이나 noise, blur 등의 문제가 있는 데이터셋만으로도 원래와 같이 고퀄리티 샘플(occulusion noise blur 혹은 unknown any noise가 없는)을 생성할 수 있는 Generative model을 학습하고자 함. 

직관적인 이해를 위해 결과부터 좀 소개하자면:

이렇게 맨 왼쪽과 같이 patch가 잘려서 zero가 되는 noise function으로 더럽혀진 데이터셋만 있는 경우에도 generator가 맨 오른쪽과 같이 어느정도 얼굴 형태를 생성해내는 모델을 학습함. (중간은 baseline)

개인적으로 재미있었던 실험은 MNIST 데이터를 패딩을 바탕으로 크기를 키운 다음 임의의 각도로 회전하고 한쪽 방향으로 sum 된 1D 데이터로 squash한 데이터들을 바탕으로 학습을 해도 generator가 아래와 같이 어느정도 숫자를 generate하는 모델을 학습해내는 것.


추가 정보로 회전각을 넣어주었을 때 더 잘 복원됨. (오른쪽, 사실 이건 의료 영상에서 CT와 같은 projection으로 생각해보면 자명함)

이 논문이 재미있는건 이렇게 이미지가 복원이 되는 조건을 명확하게 하고 수학적으로 증명을 하였다는 점. 

네트워크 구조도

Generator가 먼저 깨끗한 이미지 $X_g$를 만들면 $f_{\theta}$가 이를 corrupt하는 noise function을 학습해서 $Y_g$를 만들어내고 Discriminator가 corrupt된 real data $Y_r$와 이를 비교하게 하는 구조.

풀고자 하는 문제를 참 잘 특정해서 잡았다고 생각하는 것이, 우리가 얻을 수 있는 데이터는 실제로는 이미 어떤 unknown noise function에 의해 corrupt 되어 나온 것인 경우가 많다는 것이 기본 바탕.

AmbientGANs에서는 데이터가 충분히 많기만 하다면, 이런 noise function을 학습하고 기존의 data distribution을 복원하는 것이 가능하다는 것을 analytically & empirically 보임.

이거 보고 나서 결과를 improve해볼 수 있는 idea들이 몇 개 생각나긴 했는데 해보고 싶은것들이 막 생깁니다ㅋㅋ 당장 recon loss와 cyclic loss를 붙여볼 수 있겠네요.

참고자료





[Paper Skim] Progressive Growing of GANs for Improved Quality, Stability, and Variation

Progressive Growing of GANs for Improved Quality, Stability, and Variation


TL;DR: Train generative adversarial networks in a progressive fashion, enabling us to generate high-resolution images with high quality.
Keywords: generative adversarial networks, unsupervised learning, hierarchical methods
Accept: (Oral)
Rating: 8-8-8
Review: https://openreview.net/forum?id=Hk99zCeAb

GANs를 학습하는 새로운 방법을 제안.
핵심 아이디어는 generator와 discriminator를 점진적으로 키운다는 것: 저해상도에서 시작해서 세밀한 점들을 배울 수 있도록 새로운 레이어들을 추가하는 방식.
이런 방식을 취함으로 인해 GANs을 보다 안정적이면서 빠르게 학습하는 것이 가능해졌다고 얘기함; CelebA 1024^2 해상도 이미지를 만들어 내는 네트워크 학습.
또한 CIFAR10에서 비지도학습 방식으로 생성된 이미지들의 종류가 다양하도록 할 수 있는 간단한 방법을 제안함. Inception score가 8.80에 달한다고 함.

1. Introduction


고해상도 이미지를 만드는 것은 매우 어려운데 그 이유는 해상도가 높을 수록 생성한 이미지인지를 구분하는 것이 쉬워지기 때문.
게다가 큰 해상도 이미지로 인해 메모리 문제로 더 작은 minibatches를 사용하게되고 학습 안정성에 문제가 됨.
여기서 저자들의 주요 insight는 generator와 discriminator를 점진적(progressively)으로 키우는 것.

기존의 GAN 수식은 학습된 생성 모델이 굳이 학습 데이터 분포 전체를 모두 표현할 필요가 없었음. (?)
기존의 공통된 의견은 이미지의 질과 다양성이 서로 tradeoff 관계라는 것이었으나 최근 Odena et al. 2017에 의해 다른 의견이 제기됨. (확인 필요)
다양성에 대한 측정 방법에 대해 매우 많은 방식들이 제안되고 있는데:
including inception score (Salimans et al., 2016), multi-scale structural similarity (MS-SSIM) (Odena et al., 2017; Wang et al., 2003), birthday paradox (Arora & Zhang, 2017), and explicit tests for the number of discrete modes discovered (Metz et al., 2016). 
PGGAN에서는 이 외에 다양성을 보다 북돋기 위해 사용한 방법을 설명하고 이미지의 질과 다양성을 측정하기 위한 새로운 metric을 제안하였음.

2. Progressive Growing of GANs


키 아이디어 정리: 단계별 학습 (구몬??!)
"The complex mapping from latents to high-resolution images is easier to learn in steps" 


아래 그림에서 볼 수 있듯이 점진적으로 네트워크 레이어를 추가할 때 sudden shock이 일어나지 않도록 새로 추가하는 레이어를 부드럽게 (fade in) 넣어줌.



3. Increasing Variation using Minibatch Standard Deviation


이미지가 다양하게 생성되도록 하기 위해 GANs이 학습 데이터의 일부분만 집중하는 성질이 있는 것을 고려하여 Salimans et al. (2016)에서는 Minibatch discrimination 방식을 제안했었음. Feature statistics를 계산할 때 각각의 이미지만 보는 것이 아니라 minibatch 전체에 대해 계산하므로써 생성된 이미지와 학습 이미지들이 비슷한 statistics를 갖도록 하자는게 아이디어였음. (구체적 방식은 다시 체크) PGGAN에서는 이 접근 방식을 보다 단순하게 만들면서도 다양성은 증대하는 방법을 제안함. 

이 방식은 parameter 학습이 필요하거나 새로운 hyperparameter가 필요하지 않음. 먼저 minibatch에 있는 각 spatial location에서의 feature 각각의 stardard deviation을 계산함. 이 estimates를 모든 features와 spatical locations에 대해 평균을 내고 하나의 값을 계산함. 이 값을 복사해서 모든 spatial locations와 minibatch에 대해 concat하는 방식으로 (constant) feature map을 하나 추가함. 이 레이어는 discriminator의 어느 위치에도 들어갈 수 있으나 inset it towards the end가 가장 좋은 성능을 보였음. 
Parallel work으로 Lin et al. (2017)이 이와 유사한 방식(multiple images를 discriminator에 보여주는 것이 좋은 이유)을 이론적으로 설명한 바 있음. (체크)

4. Normalization in Generation and Discriminator


GANs에서의 normalization은 signal magnitude와 competition을 제한하는 쪽에 주안점을 두어야한다고 생각함.

4.1 Equalized Learning Rate


기존의 방식들이 weight initialization에 심혈을 기울이는 것과는 달리 여기서는 초기값은 대충 표준정규분포로 주되 runtime 중 weights의 scale을 조절하는 방향을 취함.

4.2 Pixelwise Feature Vector Normalization in Generator


Generator와 Discriminator가 서로 경쟁한 끝에 발산하는 경우를 막기 위해서 generator에서 하나의 conv layer를 지날때마다 각 pixel의 feature vector를 정규화. 
이 방식이 실험 결과는 크게 바꾸지 않았지만 signal magnitude가 급격히 커지는 현상을 매우 효과적으로 없애주었다고 함. 

5. Multi-Scale Statistical Similarity for Assesing GAN results


서로 다른 GAN을 비교하는 것은 여러모로 쉽지 않음. MS-SSIM(Odena et al., 2017)과 같은 방식은 large-scale mode collapse를 잘 발견하지만 color나 texture의 작은 loss들을 발견하지 못하는 단점들이 알려져있음. 그리고 학습 데이터와의 유사한 정도를 직접적으로 고려하지 않기 때문에 문제가 있음.

PGGAN에서는 각 scale 별로 학습데이터와 생성 데이터의 local structure가 서로 유사해야한다는 intuition을 바탕으로 local image patches의 분포 간의 multi-scale statistical similarity를 확인하는 방식을 취함(Laplacian pyramid, Burt & Adelson, 1987 다시 체크).  

6. Experiments


 판타스틱함!

Stillcut from ICLR oral presentation 


Video presentation