Black Box Variational Inference ( 2013 )


Abstract

이 논문은 “Black box” VI 알고리즘을 제안한다.

핵심 : “Stochastic Optimization”에 기반한다!

( ELBO의 “noisy gradient가 MC sample”로 부터 구해진다 )

이 뿐만 아니라, stochastic gradient에 대한 다양한 “variance reduction” 테크닉을 제안한다.

이 알고리즘은 기존의 샘플링 방법들보다 더 빠르고 나은 성능을 보인다.


1. Introduction

빠른 복습!

Posterior를 정확히 계산하는 것은 불가능하기 때문에, 근사(approximate)하는 방법을 사용하는데, 이것의 대표적인 방법이 바로 Variational Inference이다. **간단한 probability distribution **\(q\)를 사용하여, 구하고자하는 true posterior에 근사한다.

하지만, 대부분은 closed-form형태로 존재하지 않는다. 이를 해결하기 위해, model-specific한 알고리즘들이 많이 개발되었다. 하지만, 이 논문에서 제안하는 것은“black box” variational inference 알고리즘은, 거의 모든 모델에 적용 가능(general)하다!


이 방법은, ELBO의 gradient를 다루기 쉬운 함수인 \(f\)를 사용하여 나타낸다.

그런 뒤, 대략적으로 아래와 같은 순서로 진행한다.

  • 1) variational distribution으로부터 sampling을 한다

  • 2) sample로부터 \(f\)를 계산한다

    ​ gradient에 대한 MC estimate를 구한다

  • 3) 이러한 noisy gradient를 사용하여 variational parameter를 optimize한다.


이 논문은, 두 가지의 방법을 통해 gradient의 variance를 줄인다.

  • 1) Rao-Blackwellization
  • 2) Control Variates

이 두 방법은, 특정 모델의 형태를 요구하지 않기 떄문에, 위에서 제시한 ‘black-box inference’에 적용하는 데에 무리가 없다. 보다 자세한 내용은 뒤에서 보다 자세히 다루겠다.


마지막으로, 이 알고리즘을 scale up 하고 speed up하기 위한 recent innovation를 소개한다

  • 1) adaptive learning rates
  • 2) generic stochastic variational inference with subsampling


2. Black Box Variational Inference

notation 소개

  • \(x\) : observation
  • \(z\) : latent variable
  • \(\lambda\) : free parameters of variational distribution ( = \(q(z \mid \lambda)\) )

목표 : \(\lambda\)를 update하여 \(p(z\mid x)\)에 근사하는 것!


그러기 위해…

  • ELBO를 maximize ( = KL divergence를 minimize )

    ( ELBO : \(\mathcal{L}(\lambda) \triangleq \mathrm{E}_{q_{\lambda}(z)}[\log p(x, z)-\log q(z)]\) )

  • ELBO의 해석

    • 첫번째 term) 잘 fitting하도록
    • 두번째 term) entropic하도록 ( overfitting 방지 효과)


이전의 많은 방법들은, ELBO를 최대화하기 위해 coordinate-ascent update방법을 사용해왔다. 하지만 이것은 conjugate family model에서만 closed-form의 형태로 존재를 했었다.


따라서 이 논문은 “stochastic optimization” 한 방법으로 ELBO를 극대화 한다

( = 즉, noisy estimates of the gradient에 대한 함수를 maximize한다 )


Stochastic Optimization

( = ELBO를 gradient ascent 방법을 이용해서 optimize하는 것을 의미 )

notation

  • \(f(x)\) : 최대화 시키고 싶은 함수
  • \(H(x)\) : 기대값이 \(f(x)\)의 gradient인 함수
  • \(h_t(x)\) : \(H(x)\)의 realization
  • \(\rho_t\) : learning rate (non-negative)


Stochastic Optimization은 아래와 같은 식으로 parameter들을 update해나간다.

\(x_{t+1} \leftarrow x_{t}+\rho_{t} h_{t}\left(x_{t}\right)\).


Robbins-Monro condition하에서는, 위 updating equation은 수렴하게 되어있다.

  • \(\sum_{t=1}^{\infty} \rho_{t}=\infty\).
  • \(\sum_{t=1}^{\infty} \rho_{t}^{2}<\infty\).


Noisy gradient of the ELBO

우리는 gradient에 대한 unbiased estimator를 구해야 한다.

그러기 위해 , 우리는 ELBO의 gradient를 아래와 같이 re-write할 수 있다.

\(\nabla_{\lambda} \mathcal{L}=\mathrm{E}_{q}\left[\nabla_{\lambda} \log q(z \mid \lambda)(\log p(x, z)-\log q(z \mid \lambda))\right]\).

  • 여기서 \(\nabla_{\lambda} \log q(z \mid \lambda)\) 는 score function이다


위 식을 MC sample를 통해 근사하면 아래와 같다.

\(\nabla_{\lambda} \mathcal{L} \approx \frac{1}{S} \sum_{s=1}^{S} \nabla_{\lambda} \log q\left(z_{s} \mid \lambda\right)\left(\log p\left(x, z_{s}\right)-\log q\left(z_{s} \mid \lambda\right)\right)\).

​ where \(z_{s} \sim q(z \mid \lambda)\).

이 식을 사용하여 우리는 stochastic optimization을 진행하면 된다.


지금까지 설명한 알고리즘을 정리하면 아래와 같다

( 여기서 알아야할 점은, score function과 sampling algorithm이 variational distribution에만 의존할 뿐, 우리의 underlying model에는 의존하지 않는다는 점이다 )

figure2


3. Controlling the Variance

방금 위에서 소개한 알고리즘은 ELBO를 최대화하는데 사용된다. 하지만 우리가 놓친 점이 있다. 위 알고리즘대로 진행할 경우, estimator of the gradient의 variance가 너무 클 수 있다는 것이다. 이럴 경우, 수렴 속도가 느려지기 때문에, 우리는 다음과 같은 2가지 방법을 통해 variance를 reduce한다.

  • 1) Rao-Blackwellization

  • 2) control variates

    ( 이전 포스트에서도 다뤘지만, 다시 한번 짚고 넘어가겠다 )


3-1. Rao-Blackwellization

핵심은 다음이다.

“Replace it with its conditional expectation w.r.t a subset of the variables”


( 다음 설명을 통해 쉽게 이해할 수 있을 것이다 )

두 개의 r.v \(X\)와 \(Y\)가 있다고 하자. 목표는 \(X\) 와\(Y\)에 대해 \(\mathrm{E}[J(X, Y)]\)를 최대화하는 것이다.

또한, 다음과 같이 정의를 하자.

\(\hat{J}(X)=\mathrm{E}[J(X, Y) \mid X]\).

이것의 expectation은, \(\mathrm{E}[\hat{J}(X)]=\mathrm{E}[J(X, Y)]\)가 된다.

이것이 의미하는 바는, \(\hat{J}(X)\)를 \(J(X, Y)\)를 대신해서 사용할 수 있다는 점이다. 이것을 이와 같이 대신해서 사용하면 좋은 점은, variance가 줄어든다는 점이다! (아래의 식 참고)

\(\operatorname{Var}(\hat{J}(X))=\operatorname{Var}(J(X, Y))-\mathrm{E}\left[(J(X, Y)-\hat{J}(X))^{2}\right]\).


다시 이전의 ELBO의 gradient를 estimate하는 문제로 돌아와보자. 총 \(n\)개의 latent variable이 있다고 가정하면, 아래와 같이 factorize할 수 있다. (mean-field approximation)

\(q(z \mid \lambda)=\prod_{i=1}^{n} q\left(z_{i} \mid \lambda_{i}\right)\).


따라서, 우리의 ELBO의 gradient는 iterated conditional expectation을 사용하여 아래와 같이 표현할 수 있다.

\(\begin{array}{l} \nabla_{\lambda_{i}} \mathcal{L}= E_{q_{(i)}}\left[\nabla_{\lambda_{i}} \log q\left(z_{i} \mid \lambda_{i}\right)\left(\log p_{i}\left(x, z_{(i)}\right)-\log q\left(z_{i} \mid \lambda_{i}\right)\right)\right] \end{array}\).


위 식을 MC estimation을 통해 approximate할 경우, 아래와 같다.

\(\begin{array}{c} \frac{1}{S} \sum_{s=1}^{S} \nabla_{\lambda_{i}} \log q_{i}\left(z_{s} \mid \lambda_{i}\right)\left(\log p_{i}\left(x, z_{s}\right)-\log q_{i}\left(z_{s} \mid \lambda_{i}\right)\right) \end{array}\).

​ where \(z_{s} \sim q_{(i)}(z \mid \lambda)\).


3-2. Control Variates

위 3-1 Rao-Blackwellization을 통해서 봤듯, 우리의 function을 expectation값은 같지만. variance가 더 작은 함수로 replace할 수 있다.

control variate는, expectation이 같은 function들의 family로,아래와 같이 나타낼 수 있다.

\(\hat{f}(z) \triangleq f(z)-a(h(z)-E[h(z)])\).

  • expectation은 같다 ( \(E_{q}[\hat{f}]=\mathrm{E}_{q}[f]\) )
  • variance는 줄어든다 ( \(\operatorname{Var}(\hat{f})=\operatorname{Var}(f)+a^{2} \operatorname{Var}(h)-2 a \operatorname{Cov}(f, h)\) )


위 variance식을 최소화하기 위해, \(a\)를 다음과 같이 설정하면 된다.

\(a^{*}=\operatorname{Cov}(f, h) / \operatorname{Var}(h)\).


그런 뒤, replace할 함수 \(h\)를 score function으로 설정하면,

\(d\)번째 entry에서의 gradient는 아래와 같이 나오게 된다.

\[\begin{array}{l} f_{d}(z)=\nabla_{\lambda_{d}} \log q\left(z \mid \lambda_{i}\right)\left(\log p_{i}(x, z)-\log q_{i}(x, z)\right) \\ h_{d}(z)=\nabla_{\lambda_{d}} \log q\left(z \mid \lambda_{i}\right) \end{array}\]


Rao-Blackwellization과 control variate를 모두 사용한, 최종적인 MC estimate of the gradient는 다음과 같다.

\(\hat{\nabla}_{\lambda_{d}} \mathcal{L} \triangleq \frac{1}{S} \sum_{s=1}^{S} \nabla_{\lambda_{d}} \log q_{i}\left(z_{s} \mid \lambda_{i}\right)\left(\log p_{i}\left(x, z_{s}\right)-\log q_{i}\left(z_{s}\right)-\hat{a_{d}}\right)\).


3-3. Black Box Variational Inference (2)

(1) noisy gradient

(2) Rao-Blackwellization

(3) control variates

를 모두 사용한 최종적인 알고리즘은, 아래와 같다.

figure2


4. Extension

이 알고리즘을 크게 다음과 같은 2개의 방법으로 확장한다

  • 1) Adagrad

    ( address the difficulty of setting the step size schedule )

  • 2) Stochastic Inference in Hierarchical Bayesian Models

    ( scalability by subsampling observations )


4-1. Adagrad

Learning rate를 설정하는 것은, stochastic optimization을 푸는 문제에서 주로 겪는 challenge이다.

직관적으로, 우리는 gradient의 variance가 클 때 learning rate가 작길 바란다 (vise versa)

이를 해결하기 위한 것이 AdaGrad로, 아래와 같이 learning rate를 정의한다.

\(\rho_{t}=\eta \operatorname{diag}\left(G_{t}\right)^{-1 / 2}\).

  • \(G_{t}\) : sum across the first \(t\) iterations of the outer products of the gradient

  • Adagrad는 \(G_{t}\)의 대각 요소들만 사용하기 때문에, 연산량이 많이 요구되지는 않는다!


4-2. Stochastic Inference in Hierarchical Bayesian Models

Stochastic optimization의 basic idea는 “noisy gradient”를 계산하기 위해 subsample을 한다는 것이다. 이를 hierarchical Bayesian model에 적용해보자.

notation

  • \(\eta\) : hyperparameter

  • \(\beta\) : global latent variable
  • \(z_{1...n}\) : local latent variable
  • \(x_{1...n}\) : observation

\(\begin{array}{l} \log p\left(x_{1 \ldots n}, z_{1 \ldots n}, \beta\right)=\log p(\beta \mid \eta) +\sum_{i=1}^{n} \log p\left(z_{i} \mid \beta\right)+\log p\left(x_{i} \mid z_{i}, \beta\right) \end{array}\).

Categories:

Updated: