Variational Inference with Normalizing Flows

아직 미완성입니다..!

Goal

Proposing a simple approach for learning highly non-Gaussian posterior densities by learning transformations of simple densities to more complex ones through a normalizing flow

Motivations

Untitled

Variational Inference의 목적은 계산이 어려운 사후확률 분포 $p(zx)$를 계산이 보다 쉬운 approximate posterior distribution인 $q(zx)$로 근사하는 것입니다.

우리는 evidence인 $𝑝(𝑥)$를 최대화하는 모델, 즉 데이터 $𝑥$의 분포를 잘 설명하는 확률모형을 학습시키고자 합니다.

이때 approximate posterior distribution의 선택이 중요합니다.

근데 대부분의 경우, approximate posterior을 샘플링과 효율적으로 계산하기 위해서 단순한 distribution을 사용하게 됩니다. (usually it is a multivariate Gaussian)

Variational inference에 simple distribution을 활용하는 경우, inference 성능이 떨어지고 표현력이 부족하다는 단점이 있습니다.

Richer, more faithful posterior approximations는 더 좋은 performance를 보여줄 수 있습니다.

본 논문에서는 simple distribution 대신 Normalizing flows를 활용하여 rich posterior approximations을 만들고 이를 Variational inference에 활용하겠다는 것입니다.

Amortized Variational Inference

Variational inference에서는 사후확률에 근사한 $𝑞(𝑧)$를 만들기 위해 Kullback-Leibler divergence을 활용합니다.

KL Divergence (KLD)

사후확률 분포 p(zx)와 $𝑞(𝑧)$ 사이의 KLD를 계산하고, KLD가 줄어드는 쪽으로 $𝑞(𝑧)$를 조금씩 업데이트하는 과정을 반복하면 사후확률을 잘 근사하는 $𝑞^*(𝑧)$를 얻게 될 것이라는 게 Variational inference의 핵심 아이디어입니다.

본 논문에서는 확률 모델의 주변 가능성(marginal likelihood)을 사용하여 inference를 수행하는 것이 핵심입니다.

이를 위해서는 모델의 잠재적인 변수(latent variables)들을 marginalize하는 것이 필요합니다.

이 과정은 일반적으로 실행 불가능하기 때문에, 대신 주변 가능성(marginal probability)의 하한(lower bound)을 최적화하는 방법을 사용합니다.

Untitled

모델은 관측값(observed data) $x$, 잠재 변수(latent variable) $z$, 그리고 모델 파라미터 $θ$로 구성됩니다.

$p_θ(x∣z)$는 likelihood이고 $p(z)$는 잠재 변수(latent variable)에 대한 사전 분포(prior distribution)입니다.

젠슨의 부등식(Jensen’s inequality)을 통해 최종 하한(Lower Bound)이 도출되는데, 우리는 이 마지막 부등식의 우변을 Evidence lower bound, 줄여서 ELBO라고 부릅니다.

이 ELBO를 maximize함으로써 likelihood 또한 maximize할 수 있는 것입니다.

이 ELBO를 좀 더 자세히 살펴보면, 

**첫 번째 항은 approximate posterior $q(zx)$와 prior $p(z)$ 간의 KL divergence**와 같습니다.

그렇기 때문에 이는 approximate posteriorprior가 최대한 비슷하게 만들어주는 error라고 할 수 있고, 이는 VAE가 reconstruction task만 잘 하는 것을 방지하기 때문에 Regularization error라고 부릅니다.

**두번째 항은 $p(xz)$와 $q(zx)$사이의 negative cross entropy와** 같습니다. 그래서 때문에 이는 Encoder와 Decoder가 Auto-encoder처럼 reconstruction을 잘 할 수 있게 만들어주는 error라고 할 수 있기 때문에 Reconstruction error라고 부릅니다.

위 과정을 통해, $log p_{(\theta)}(x)$에 대해 lower bound를 얻어냈습니다.

이제 $q(zx)$를 Normalizing Flow를 통해 복잡한 approximate posterior distribution으로 만들고 ELBO를 최대화한다면  $log p_{(\theta)}(x)$를 잘 근사했다는 결론을 얻을 수 있습니다.

Stochastic Backpropagation

미니배치(mini-batches)와 확률적 그래디언트 하강법(stochastic gradient descent)을 사용하여, 매우 큰 데이터 셋에 Variational Inference를 적용할 수 있게 합니다.

이를 위해 두 가지 주요 문제를 해결해야 하는데,

1) expected log-likelihood의 기울기를 계산

2) 계산적으로 실행 가능한 가장 풍부한 근사 사후 분포(Approximate posterior)의 선택

입니다.

1) expected log-likelihood를 위해서 stochastic backpropagation을 진행하는데, two step으로 진행됩니다.

  1. Reparameterization

    $*q_ϕ(z)$가 $N(zμ,σ^2)$인 가우시안 분포라면, 표준 정규 분포를 기반 분포로 사용하여 *z

    $z = μ + σϵ, ϵ∼N(0,1)$)으로 재매개변수화할 수 있습니다.

    즉, 잠재 변수(latent variable)를 알고있는 분포와 미분 가능한 변환을 사용하여 재매개변수화를 통해 미분 가능한 방식으로 기울기를 계산할 수 있게 하는 것입니다.

  2. Backpropagation with Monte Carlo

    Untitled

확률적인 샘플링을 기반으로 기울기의 기대치를 추정합니다.

기본 분포로부터 여러 샘플을 추출하고, 이들을 통해 log-likelihood의 기울기를 추정하는 것입니다.

Normalizing Flow

Normalizing Flow는 invertible mapping의 series를 통해서 단순한 probability density를 transforming하는 방식으로 complex distribution을 만들 수 있는 방법입니다.

Normalizing Flow를 이해하기 전, 알아야 할 개념 먼저 소개하겠습니다.

Change of Variable Theorem

어떠한 변수 또는 다변수로 나타낸 식을 다른 변수 또는 다변수로 바꿔 나타내는 것을 Change of Variable이라고 합니다.

예시를 들면, 어떠한 랜덤 변수 $x$가 있고, $x$에 대한 확률 밀도 함수(Probability Density Function)가 있다고 가정하겠습니다.

$x \sim p(x)
z\sim \pi(z)$

여기서 변수 $z$가 변수 $x$를 잘 표현할 수 있는 잠재 변수(latent variable)이고 $z$의 확률 밀도 함수 $\pi(z)$를 알고 있다고 가정하고, invertible한 일대일 대응 함수 $f$를 사용해서, $x = f(z)$로 표현 가능합니다.

그리고 함수 $f$는 invertible하다고 가정했기 때문에, $z=f^{-1}{(x)}$로 표현 가능합니다.

여기서 저희가 하고 싶은 것은 $x$의 unknown 확률 분포인 $p(x)$를 구하는 것입니다.

확률 분포의 정의를 통해, $\int p(x)dx = \int \pi(z)dz = 1$ 로 표현이 가능하고

Change of Variable을 적용하면, $\int p(x)dx = \int \pi(f^{-1}(x))d f^{-1}(x)$ 로 표현할 수 있습니다.

이것을 $p(x) = \pi (z)\Bigl\frac{dz}{dx}\Bigl= \pi(f^{-1}(x))\Bigl\frac{df^{-1}}{dx}\Bigl= \pi(f^{-1}(x))\Bigl(f^{-1})’(x)\Bigl$ 와 같이 정리할 수 있고 구하고 싶었던 $p(x)$를 $z$의 확률밀도함수로 표현할 수 있습니다.

실제로는 고차원의 변수들을 다루기 때문에, 이를 다변수(Multi-variable)관점으로 다시 표현을 하기 위해 행렬을 사용하면,

$\mathbf{z} \sim \pi(\mathbf{z}), \mathbf{x} = f(\mathbf{z}), \mathbf{z} = f^{-1}(\mathbf{x})
p(\mathbf{x})=\pi(\mathbf{z})\Bigl|\text{det}\frac{d\mathbf{z}}{d\mathbf{x}}\Bigl| = \pi(f^{-1}(\mathbf{x}))\Bigl|\text{det}\frac{df^{-1}}{d\mathbf{x}}\Bigl|$

와 같이 정리할 수 있습니다.

Jacobian Matrix and Determinant

Untitled

Jacobian matrix는 위와같이 벡터 $\text{x}$, $\text{y}$에 대한 일차 편미분을 행렬로 나타낸 것입니다.

즉, 우리가 $n$차원 입력 벡터 $\text{x}$를 $m$차원 출력 벡터 $\text{y}$로 mapping하는 ($\text{y}:\mathbb{R}^n \mapsto \mathbb{R}^m$)함수가 주어지면 이 함수의 모든 1차 편미분 함수 행렬을 이렇게 Jacobian matrix로 간단하게 표현할 수 있습니다.

Untitled

Untitled

Determinant는 행렬을 대표하는 값으로, 정방행렬(Square Matrix)에 어떤 특정한 방법으로 하나의 수를 대응시키는 일종의 함수입니다.

Determinant의 성질은 아래와 같습니다.

(1) 행렬 $A$의 임의의 행에 스칼라 곱을 한 뒤 다른 행에 더해 $B$를 만들었을 때 두 행렬의 determinant는 같다.

(2) 행렬 $A$의 임의의 행을 다른 행과 바꾸어 $B$를 만들었을 때 𝑑𝑒𝑡$B$$=−$𝑑𝑒𝑡$A$

(3) 행렬 $A$의 임의의 행에 스칼라 곱을 해 $B$를 만들었을 때 𝑑𝑒𝑡$B\(=\)k$𝑑𝑒𝑡$A$

(4) 삼각행렬(triangular matrix)의 행렬식은 주 대각원소들의 곱과 같다.

(5) 행렬 $A$가 가역(invertible)임과 𝑑𝑒𝑡$A$$≠0$.

(6) 𝑑𝑒𝑡$𝐴^T$$=$𝑑𝑒𝑡$A$

(7) 𝑑𝑒𝑡$AB$$=$(𝑑𝑒𝑡$A$)(𝑑𝑒𝑡$B$)

이제 Normalizing Flow의 동작 과정은 간단하게 표현하면 아래와 같습니다.

Untitled

($x$는 high dimensional data, $z$는 latent variable)

Untitled

여기서 $z$의 확률 분포를 알고 있다면 $x$의 확률 분포를 구할 수 있습니다.

아까 Change of Variable Theorem 설명에서와 마찬가지로, $x = f(z)$, $z=f^{-1}{(x)}$인 상황에서,

$p(x)$ $=$ $p(z)detJ$로 $z$의 확률 분포에 scalar값인 determinant를 곱해서 $x$의 확률 분포를 표현할 수 있습니다.

그리고 양변에 $log$를 씌우면, $log($$p(x))$ $=$ $log(p(z))+log(detJ)$로 표현 가능합니다.

그런데 실제 데이터인 $x$는 보통 매우 복잡한 분포를 가지기 때문에 $x$와 $z$를 하나의 함수로 바로 연결하기는 어렵습니다.

Untitled

$p(x)=p(z_{1})detJ_{1}$

$p(z_{1})=p(z_{2})detJ_{2}$

$p(z_{2})=p(z_{3})detJ_{3}$

….

$p(z_{n-1})=p(z_{n})detJ_{n}$

그래서 이렇게 많은 함수를 통해서 mapping을 해주는 것이고 $p(x) = p(z_{n})\Pi_{n}(detJ_{n})$으로 표현할 수 있습니다.

최종적으로 log likelihood는 $log($$p(x))$ $=$ $log(p(z_{n}))+\Sigma_n log(detJ_{n})$로 표현됩니다.

Untitled

딥러닝에서 Normalizing Flow를 적용하여 $x$의 확률 분포를 알기 위해서는 2가지 조건이 꼭 충족되어야 합니다.

  1. 함수 $f$의 역함수가 존재해야 함 (invertible $f$)
  2. Jacobian의 Determinant도 계산 가능해야 함

이 2가지 조건을 고려하여 함수 $f$를 선택해야 하고, 이 flow 함수들을 모델마다 어떻게 구현하는 지가 다릅니다.

Untitled

Untitled

Finite Flows and Infinitesimal Flows

Finite Flows와 Infinitesimal Flows은 Normalizing Flows에서 사용되는 두 가지 다른 접근 방식입니다.

Experiments

Effect of normalizing flow on two distributions

Effect of normalizing flow on two distributions

초기 Unit Gaussian 분포로부터 복잡한 분포 변환 가능한 normalizing flow의 performance를 보여주고 있음

Approximating four non-Gaussian 2D distributions. The images represent densities for each energy function in table 1 in the range (−4,4)$^2$. (a) True posterior; (b) Approx posterior using the normalizing flow; (c) Approx posterior using NICE; (d) Summary results comparing KL-divergences between the true and approximated densities for the first 3 cases

Approximating four non-Gaussian 2D distributions. The images represent densities for each energy function in table 1 in the range (−4,4)$^2$. (a) True posterior; (b) Approx posterior using the normalizing flow; (c) Approx posterior using NICE; (d) Summary results comparing KL-divergences between the true and approximated densities for the first 3 cases

4개의 Gaussian이 아닌 분포의 근사 과정을 보여줍니다.

  • (a) True Posterior: 각각의 경우에 대한 실제 사후 분포를 보여줍니다.
  • (b) Approximate Posterior using Normalizing Flow: Normalizing Flow를 사용하여 각 posterior distribution을 근사한 결과를 보여줍니다.
  • (c) Approximate Posterior using NICE: NICE 방법을 사용하여 각 posterior distribution을 근사한 결과를 보여줍니다.
  • (d) Comparison of KL-divergences: True PosteriorApproximate Posterior 간의 Kullback–Leibler divergence을 비교합니다. 실제 분포와 근사 분포 사이의 차이를 정량적으로 평가합니다.

Untitled

Untitled