Normalizing Flow
29 Jan 2018 | Normalizing Flow
이번 글에서는 Normalizaing Flow(NF) 개념에 대해 살펴보도록 하겠습니다. 이 글은 전인수 서울대 박사과정이 2017년 12월에 진행한 패스트캠퍼스 강의와 위키피디아 등을 정리했음을 먼저 밝힙니다.
목적
변분추론(Variational Inference)의 목적은 계산이 어려운 사후확률 분포 $p(z$|$x)$를 계산이 쉬운 $q(z$|$x)$로 근사하는 것입니다. 우리는 evidence인 $p(x)$를 최대화하는 모델, 즉 데이터 $x$의 분포를 잘 설명하는 확률모형을 학습시키고자 합니다. 몇 가지 수식 정리 과정을 거치면 Evidence Lower Bound(ELBO)를 다음과 같이 도출할 수 있습니다. (수식 유도 과정에 대해서는 이곳 참고)
\[ELBO={ E }_{ z\sim q\left( z |x\right) }\left[ \log { p(x|z) } \right] -{ D }_{ KL }\left( q\left( z |x\right) ||p\left( z|x\right) \right)\]
Variational AutoEncoder(VAE)에서는 근사 대상 확률함수 $q$를 다음과 같이 정의합니다.
\[q\left( z|x \right) =N\left( { \mu }_{q}\left( x \right) ,\Sigma_{q} \left( x \right) \right)\]
VAE에서 사후확률분포 $q$를 위와 같이 정한 이유는 샘플링과 계산의 용이성 때문입니다. 그런데 이보다 더 복잡한 형태의 사후확률분포를 만들어낼 수는 없을까요? 예컨대 $q$에서 뽑은 잠재변수를 $z_0$라 둡시다. 그런데 VAE는 $q$를 단순한 가우시안 분포로 가정하기 하기 때문에 아래와 같이 $z_0$에 특정한 형태의 함수 $f_k$들을 반복 적용하여 모델이 더욱 복잡한 형태의 잠재변수를 표현하게끔 만들어주자는 것입니다.
\[{ z }_{ K }={ f }_{ K }\circ ...\circ { f }_{ 2 }\circ { f }_{ 1 }\left( { z }_{ 0 } \right)\]
이것이 바로 NF가 노리는 바입니다.
Change of Variables
$z’=f(z)$일 때 역함수가 존재하는 $f$와 임의의 확률분포 $q(z)$에 대해 다음 공식이 성립한다고 합니다.
\[q\left( z' \right) =q\left( z \right) \left| det\frac { \partial { f }^{ -1 } }{ \partial z' } \right| =q\left( z \right) { \left| det\frac { \partial f }{ \partial z } \right| }^{ -1 }\]
따라서 $f$를 $K$번 적용한 $z_K$의 로그확률 $q_K(z_K)$값을 다음과 같이 표현할 수 있다고 합니다.
\[\log { { q }_{ K }\left( { z }_{ K } \right) } =\log { { q }_{ 0 }\left( { z }_{ 0 } \right) } -\sum _{ k=1 }^{ K }{ \log { det\left| \frac { \partial { f }_{ k } }{ \partial { z }_{ k } } \right| } }\]
Normalizing Flow
그런데 이때 특정 함수 $f$를 사용하면 위 식의 행렬식(determinant) 부분을 쉽게 계산할 수 있다고 합니다. 그 종류는 다음과 같습니다.
$f$를 planar로 정했다고 칩시다. 이 경우 행렬식 부분은 다음과 같습니다.
\[det\left| \frac { \partial { f }_{ k } }{ \partial { z }_{ k } } \right| =\left| 1+{ u }^{ T }\psi \left( { z }_{ k } \right) \right|\\,where\quad \psi \left( { z }_{ k } \right) =h'\left( { w }^{ T }z+b \right) w\]
$K$를 키울 수록 잠재변수를 더 복잡하게 모델링할 수 있습니다. 예컨대 다음과 같습니다.
이번 글에서는 Normalizaing Flow(NF) 개념에 대해 살펴보도록 하겠습니다. 이 글은 전인수 서울대 박사과정이 2017년 12월에 진행한 패스트캠퍼스 강의와 위키피디아 등을 정리했음을 먼저 밝힙니다.
목적
변분추론(Variational Inference)의 목적은 계산이 어려운 사후확률 분포 $p(z$|$x)$를 계산이 쉬운 $q(z$|$x)$로 근사하는 것입니다. 우리는 evidence인 $p(x)$를 최대화하는 모델, 즉 데이터 $x$의 분포를 잘 설명하는 확률모형을 학습시키고자 합니다. 몇 가지 수식 정리 과정을 거치면 Evidence Lower Bound(ELBO)를 다음과 같이 도출할 수 있습니다. (수식 유도 과정에 대해서는 이곳 참고)
\[ELBO={ E }_{ z\sim q\left( z |x\right) }\left[ \log { p(x|z) } \right] -{ D }_{ KL }\left( q\left( z |x\right) ||p\left( z|x\right) \right)\]Variational AutoEncoder(VAE)에서는 근사 대상 확률함수 $q$를 다음과 같이 정의합니다.
\[q\left( z|x \right) =N\left( { \mu }_{q}\left( x \right) ,\Sigma_{q} \left( x \right) \right)\]VAE에서 사후확률분포 $q$를 위와 같이 정한 이유는 샘플링과 계산의 용이성 때문입니다. 그런데 이보다 더 복잡한 형태의 사후확률분포를 만들어낼 수는 없을까요? 예컨대 $q$에서 뽑은 잠재변수를 $z_0$라 둡시다. 그런데 VAE는 $q$를 단순한 가우시안 분포로 가정하기 하기 때문에 아래와 같이 $z_0$에 특정한 형태의 함수 $f_k$들을 반복 적용하여 모델이 더욱 복잡한 형태의 잠재변수를 표현하게끔 만들어주자는 것입니다.
\[{ z }_{ K }={ f }_{ K }\circ ...\circ { f }_{ 2 }\circ { f }_{ 1 }\left( { z }_{ 0 } \right)\]이것이 바로 NF가 노리는 바입니다.
Change of Variables
$z’=f(z)$일 때 역함수가 존재하는 $f$와 임의의 확률분포 $q(z)$에 대해 다음 공식이 성립한다고 합니다.
\[q\left( z' \right) =q\left( z \right) \left| det\frac { \partial { f }^{ -1 } }{ \partial z' } \right| =q\left( z \right) { \left| det\frac { \partial f }{ \partial z } \right| }^{ -1 }\]따라서 $f$를 $K$번 적용한 $z_K$의 로그확률 $q_K(z_K)$값을 다음과 같이 표현할 수 있다고 합니다.
\[\log { { q }_{ K }\left( { z }_{ K } \right) } =\log { { q }_{ 0 }\left( { z }_{ 0 } \right) } -\sum _{ k=1 }^{ K }{ \log { det\left| \frac { \partial { f }_{ k } }{ \partial { z }_{ k } } \right| } }\]Normalizing Flow
그런데 이때 특정 함수 $f$를 사용하면 위 식의 행렬식(determinant) 부분을 쉽게 계산할 수 있다고 합니다. 그 종류는 다음과 같습니다.
$f$를 planar로 정했다고 칩시다. 이 경우 행렬식 부분은 다음과 같습니다.
\[det\left| \frac { \partial { f }_{ k } }{ \partial { z }_{ k } } \right| =\left| 1+{ u }^{ T }\psi \left( { z }_{ k } \right) \right|\\,where\quad \psi \left( { z }_{ k } \right) =h'\left( { w }^{ T }z+b \right) w\]$K$를 키울 수록 잠재변수를 더 복잡하게 모델링할 수 있습니다. 예컨대 다음과 같습니다.
Comments