Problem Setting
잠재 변수를 가진 다양한 확률모델이 대해 확률적 함수인 'lower bound estimator'를 구하는 것이 첫 목적이다. IID한 데이터셋을 가정하고, ML(최대 가능도)과 MAP(최대 사후확률)을 사용해 잠재변수 분포와 파라미터를 추론한다.
잠재 변수와 데이터
서로 독립이고 동일한 분포를 가지는 데이터셋 이 있다고 하고, 랜덤하게 주어진다고 하자. 이 데이터셋은 관측되지 않은 확률변수인 로부터 랜덤하게 생성된다. 이 과정은 두 단계로 이루어지는데,
가 사전확률 분포(prior distribution) 로부터 생성된다.
가 조건부확률 분포인 로부터 생성된다.
여기서 가정이 있다.
와는 각각 와 의 parametric family(파라미터만 다르고 같은 형태)
와 의 확률밀도함수가 와 에 대해 거의 모든 곳에서 미분 가능
은 생성에 사용되는 true 파라미터이다. 이 과정은 우리가 관찰할 수 없다.
**목표: 우리는 이 분포를 학습하고 추론(샘플생성)하기 위해서 가 에 가까워지록 최적화해야 한다.
해결하려는 문제
를최적화하는 다양한 방법이 있지만 다음 두 걸림돌이 있다. 두 근본적 문제를 효율적으로 해결할 방법을 찾으려 한다.
주변확률인 가 계산하기 어렵다. 의 확률분포를 어떠한 분포로 가정하더라도 를 적분할 수 없다. ML이나 MAP로 파라미터를 추정하기 위해 사용되는 EM 알고리즘도 가 계산하기 힘들기 때문에 likelihood의 기댓값을 계산하기 어렵다. 벡터의 차원이 증가할수록 벡터는 지수적으로 많은 값을 가질 수 있기에, 최적화가 어렵다.
데이터가 많을수록 모델의 성능은 더 좋아지는데, 데이터가 너무 많다. 모델을 학습하기 위해 샘플링을 계속 진행해야 하는데, Monte Carlo EM 알고리즘과 같은 랜덤한 과정은 너무 느려서, 학습하는데 한세월이 걸린다.
위 문제를 해결할 조금 더 직접적인 문제는 다음과 같다.
파라미터 에 대한 효율적인 근사 ML/MAP방법 찾기 (z로부터 x를 만드는 과정을 묘사해 샘플을 만들 수 있음; 근사적 theta 찾기)
파라미터가 일 때, 의 효율적인 근사 방법 찾기 (x로부터 z로 representation하는 문제에서 효과적)
분포에 대한 효율적인 근사 찾기 (denoising, SISR과 같은 prior 모델링 문제에서 효과적)
이 세 문제를 해결하기 위해 계산하기 어려운 posterior 대신, 근사시킨 새로운 모델 를 이용한다. mean-field 근사법과는 다르게 파라미터를 모두 분해해서 곱하고 최적화하는 힘든 계산을 할 필요가 없다. 및 를 학습시키는 알고리즘을 이 논문에서 소개한다.
이해가 안가요😭

칠해진 노드인는 우리가 관측 가능한 데이터이다.
실선 화살표 부분은 잠재변수 로부터 에 의해 확률적으로 데이터가 생성되는 상황을 말한다. 그리고 우리는 이 과정을 가깝게 알아내 샘플을 생성하고 싶다.
이 확률모델의 파라미터를 알면 잠재변수 로부터 데이터 를 생성할 수 있다!
를 알면 그 분포에서 샘플링 하나 하면 되지만, 엄청나게 복잡도가 높은 이미지 데이터와 뉴럴 넷에선, 모두 모르는 경우가 대부분이다.
그럼 나이브 베이즈 예시에서 보았던 것 처럼 posterior를 계산할 수 있을까? EM 알고리즘으로 파라미터 를 최적화하기 위해 에 대한 의 조건부확률 분포(posterior)을 계산하면 주어진 에 대한 를 샘플링할 수 있다. 베이즈 정리에 따라
인데, 를 계산하는 식은
로 나타난다. 의 분포를 적절히 가우시안으로 가정하고 샘플링 하더라도, 를 모른다. 가 연속이고 차원이 크기에 무한히 적분해야하므로, 따라서 적분할 수 없다. 이것은 log-likelihood를 통해 단순한 최적화도 불가능하다는 것을 알려준다.
그래서 여기서 해볼 수 있는 것이, posterior를 근사시키는 것이다. 파라미터 를 새롭게 적용하자. 근사시킨 posterior 을 최적화할 수 있고 동시에 파라미터 를 최적화할 수 있다면, 로부터 적절히 샘플링해서 데이터를 생성할 수 있을것이다. 우리는 그 근사를 뉴럴 넷으로 하며, 최적화도 가능하고 z값 샘플링도 가능하다.
결론적으로 Auto-encoder와 유사한 구조가 된다. 뉴럴넷은 '인코더'가 되고, 뉴럴넷은 '디코더'가 된다.
Last updated
Was this helpful?