TechNOTE

[논문리뷰] Glow: Generative Flow with Invertible 1×1 Convolutions 본문

딥러닝, 연구

[논문리뷰] Glow: Generative Flow with Invertible 1×1 Convolutions

JU1234 2020. 12. 2. 20:33

Normalizing flow 를 이용한 유명한 generative model 중의 하나인 Glow 를 리뷰해 보도록하겠다. 

1. Introduction

Flow based generative model 은 다음과 같은 이점을 가지고 있는데 

  1. log likelihood $p(x)$ 가 구성되는 과정이 tractable 하고, 그건 latent variable $z$ 에도 마찬가지로 적용된다.
  2. 학습, inference 단계에서 병렬화가 가능하다. 

저자들은 invertable 1*1 Convolution으로 구성된 모델인 Glow를 제안하고, 놀라운 성능을 보여주었다. 

다음은 Glow 에 의해서 생성 된 예시이다.. 실제 있을법한 사람 같아서 더 신기하다.. 

2. Background: Flow-based Generative Models 

이 section에서는 generative flow가 뭔지, 설명하고 있다..

judy-son.tistory.com/12 

 

Normalizing flow 설명

지난번에, GAN, judy-son.tistory.com/7 [리뷰] GAN, Generative Adversarial Nets 공부할 겸, 되짚어볼 겸 GAN 리뷰 시작해 본다! 시작!! 1. Basic Idea Generative Model 을 Estimation 할 때 Adversarial 하게..

judy-son.tistory.com

를 참고해서 보도록 하자 헿 

3. Proposed Generative Flow 

저자들이 제안한 generative flow는 이전의 NICE RealNVP 위에 얹어졌다. 
각 flow step은 actnorm + invertable 1*1 convolution + coupling layer 로 이어진다. 

3.1 Actnorm: scale and bias layer with data dependent initialization

기존 batch normalization이 해주는 역할과 비슷한데,, batch normalization은 한 processing unit 당 처리하는 minibatch size가 클수록 효과가 좋은데 큰 이미지에는 minibatch size를 크게 할 수 없으므로, actnorm layer를 사용하여 이를 극복하고자 했다. 

한 채널의 activation에 scale , bias parameter 를 사용하는 것. 이 파라미터들은 평균이 0이고 unit variance가 data의 minibatch size와 같게 초기화가 된다. data dependent initialization의 한 종류. 

3.2 Invertable 1x1 convolution 

이전에는.. channel의 order을 바꿔서 permutation 하는 flow 를 사용했다면,, 이걸 
invertable한 1x1 convolution 을 통해 fixed permutation을 수행하도록 대신하였다. weight matrix은 random rotation matrix로서 초기화된다. 1x1 convolution에서 input channel 과 output channel 이 같으면 permutation operation의 일반화가 되는 것. 

Normalizing flow를 사용하려면 invertable 1*1 의 log determinant 가 필요한데, 이는 

다음과 같이 구해줄 수 있다. $det(W)$ 를 구하는 cost 는 $O(c^3)$ 이다. conv2d를 그냥 써서 구하면 $O(h*w*c^2)$가 된다. 

LU Decomposition

다음을 사용하면 computational cost를 $O(c)$ 까지로 줄일 수 있다. W에 LU Decomposition을 수행하는 건데, 

가 된다. P는 permutation matrix, L은 lower triangular matrix. U는 upper triangular matrix 그리고 s는 vecot이다. 이를 사용하면 log-determinant 는 간단하게 

다음으로 구할 수 있다. c 값이 크다면 computational cost 또한 커지겠지만, 저자들이 한 실험에서는 문제가 없었다고 한다. 

3.3 Affine Coupling layer 

RealNVP 에서 제안된 layer 인데, 다음과 같은 과정으로 tranformation이 이루어진다. 

input을 xa, xb 로 나누고 첫번째 d dimension (xa)는 가만히 있고, xb에 affine tranformation을 해 준다. (scale and shift)

zero initialization

이 경우에 NN의 last convolution layer를 zero intialization해 주면, 각 affince coupling layer는 처음에는 identity function처럼 작동하는데,  deep network 를 training 하는데 아주 좋다고 한다.. 

다음은 Glow의 flow와 reverse function, log determinant를 나타낸 표이다. 

위의 flow들이 합쳐지고, multi scale architecture(RealNVP)가 적용되어서 다음과 같은 구조로 구성되었다고 한다. 

4. Result 

RealNVP 에 비해서 bit per dimension 결과이다.

이전 모델들에서 사용한 reverse /shuffle permuation에 비해서 1*1 convolution이 효과적임을 보여주는 NLL 그래프이다. 

반응형
Comments