///
Search
Duplicate
🖲️

Child [2020] Very Deep VAEs Generalize Autoregressive Models and Can Outperform Them on Images

Created
7/4/2021, 6:34:00 AM
발표일자
2021/05/29
발표자
백병인
Tags
VeryDeep
VAE
✅main
포스팅 종류
논문리뷰
VAE는 생성형 모델 중 Autoregressive보다 빨리 수렴하면서도 GAN 계열보다 안정적으로 학습되는 장점을 가집니다. 변분추론(variational inference) 논리에 따라 입력데이터의 차원(D)보다 훨씬 적은 차원(K)으로 입력데이터의 추상표현을 담은 latent variable을 얻을 수 있다는 장점도 있습니다.
그러나 VAE는 GAN에 비해 생성된 이미지의 디테일이 뚜렷하지 않다는 단점이 있었습니다. 그래서 고화질의 이미지 생성 연구는 주로 GAN 방식으로 많이 진행되어 왔습니다. 그러나 VAE 계열의 연구도 계속되어 왔는데, 오늘 논문에서 소개하는 VDVAE(Very Deep VAE)는 VAE의 encoder, decoder의 레이어를 깊이 쌓았을 때 고화질 이미지 생성에도 뛰어는 성능을 보여준다는 것을 확인해 줍니다.
VDVAE를 이용해 생성한 FFHQ-256 기반의 이미지(temperature=0.6). 본문에서는 체리피킹하지 않았음을 강조하고 있음
논문 첫페이지에 소개한 샘플이미지를 한번 더 보실까요? 아래 이미지를 보면 VAE로도 GAN에 뒤지지 않는 고화질(256X256)의 이미지를 사실적으로 생성하고 있음을 알수 있습니다.
VAE를 개선하여 고화질의 이미지를 생성하려는 시도는 대략 아래와 같은 방식들이 사용되어 왔습니다.
디코더를 Flow 방식의 여러 레이어로 구성
IAF-VAE(Invertible Autoregressive Flow, Kingma et al. 2016)
Hierarchical VAE 방식
LVAE(Ladder Variational Autoencoders, Sønderby et al. 2016)
BIVA(A Very Deep Hierarchy of Latent Variables for Generative Modeling, Maaløe et al. 2019)
LVAE의 아이디어를 L=20까지로 very deep하게 확장시킨 첫번째 사례 (19년 2월)
hierarchical latent variable 사이의 skip-connection 도입이 핵심
NVAE(A Deep Hierarchical Variational Autoencoder, Vahdat and Kautz, 2020)
VDVAE가 나오기 전 SOTA 모델 (2020년 4월, NVIDIA)
BIVA와 IAF의 아이디어를 결합한 개념

Hierarchical VAE

VAE revisited

VI란 사후확률(posterior) 분포 p(z|x)를 다루기 쉬운 확률분포 q(z)로 근사(approximation)하는 걸 말합니다. 사후확률 분포를 계산하는게 불가능에 가까울 정도로 어려운 경우가 많기 때문입니다. 가령 다음과 같은 경우입니다. - marginal probability, 즉 사후확률의 분모인 p(x)=Σzp(x,z)를 계산하기 힘든 경우 - likelihood, 즉 p(x|z)를 더 복잡하게 모델링하고 싶은 경우 - prior, 즉 p(z)를 더 복잡하게 모델링하고 싶은 경우 출처 : https://ratsgo.github.io/generative%20model/2017/12/19/vi/
Prior
Approximated posterior
Generator

Hierarchical VAE from LVAE(Top-down VAE)

Latent Variable z를 여러개의 layer로 쪼개어 z0, z1, ..., zN로 표현한다. 이때 VAE는 이렇게 표현된다.

VDVAE의 모델구조

Encoder에서 Hierarchical Latent를 구하는 방식은 LVAE, NVAE 계열과 큰 차이는 없다. 단지, Generator 부분을 Flow에 의존하지 않고 Res Block 방식으로 구현하여 속도가 빠르고 더 많은 layer를 깊게 쌓을 수 있게 한다.

Autoregressive Model 대비 VDVAE가 우월한 이유

PixelCNN으로 대표되는 AutoRegressive 방식의 생성모델의 장점은 해상도가 매우 높은(진짜같은) 아웃풋을 생성해 낸다는 점이다. 단점이 2가지 있는데, 1)생성에 시간이 오래 걸린다. 2)데이터에서 관측되는 패턴만 생성된다.(Latent Variable로 표현되는 추상화된 개념을 생성하긴 어렵다)
이 논문은 Hierarchical VAE의 가치를 내세우기 위해 GAN보다 우월하다를 주장하는 것이 아니라 AutoRegressive 방식보다 우월하다는 점을 입증하는 데 집중한다. 이때 가장 중요한 것은 Latent Variable을 표현하는 레이어의 깊이(Depth)가 깊어야 한다는 점이다. 논문의 설명은 납득이 좀 어려우므로 생략하고, 레이어의 깊이가 깊어질때의 효과를 다음 그림을 통해 살펴보자.
위 모델구조에서 보듯, Top-down path에서의 z의 레벨 중 어느 레이어에서 샘플링을 하느냐에 따라 제너레이터 결과가 달라진다. 이때, 1X1의 가장 추상화된 작은 z(가장 top layer)에서 샘플링할 경우 아주 추상화되고 표준적인 output 을 얻게 된다. 그러나 보다 low layer에서 샘플링한 z를 사용할 경우 매우 구체적이고 특수한 output을 얻게 된다. 이것은 Latent Variable이 Hierarchy에 따라 어떤 정보를 추상화하고 있는지를 보여 주는 본 논문의 아주 훌륭한 예시이다. 깊은 layer 구조의 VAE가 가지는 장점을 잘 보여주는 그림이라 하겠다.

실험결과

VDVAE는 상대적으로 적은 파라미터로 깊은 depth의 latent variable을 구할 수 있다. 속도나 성능도 SOTA급으로 우수하다.