확률 분포를 신경망으로 학습

2435 단어 Chainer기계 학습

소개



신경망을 사용한 세미 파라 메트릭 밀도 추정 방법을 고안했습니다.
Chainer에 의한 구현 (github)

확률 밀도 함수 $f(x)=P(X=x)$ 를 직접 신경망에서 학습하려고 해도,
$$\int_{-\infty}^{\infty}f(x)dx=1 $$
을 충족하는 제약을주는 것은 어렵습니다.

그러나 누적 분포 함수 $F(x) = P(X\leq x)$ 에 대해 생각하면 만족해야 할 제약은
\frac{\partial}{\partial x}F(x) \geq 0 \\
F(-\infty)=0 \\
F(\infty)=1

이 중 단조 증가성에 대해서는 그 제약을 만족시키는 신경망 모델이 존재합니다.

Monotonic Networks, J.Sill (NIPS 1997)

이번에는 이 모델을 기반으로 $F(x)$ 를 직접 신경망에 학습시켜 보았습니다.

1차원 확률 변수의 경우



확률 변수 $X$의 관측 데이터 $\lbrace x_1, ...,x_N\rbrace$에 대해,

$$\underset{\theta}{\arg\min}\lbrace -\frac{1}{N}\sum_{i=1}^{N}\log f_\theta(x_i)\rbrace $$

얻고 싶기 때문에
$$-\frac{1}{N}\sum_{i=1}^{N}\log f_{\theta}(x_i)$$
손실 함수로 $\theta$ 학습합니다.
이곳에서
$$f_{\theta}(x) =\frac{\partial}{\partial x}F_{\theta}(x)$$
하지만 이것은 Chainer의 Double backpropagation 기능으로 구할 수 있습니다( chainer.grad() ).

학습 결과



오렌지색 실선이 모델의 출력한 $P$입니다.

가우스 분포





절단 가우스 분포





2차원 확률 변수의 경우



$$P(X, Y) = P(X) P(Y|X)$$
을 계산하면 됩니다.
즉 $P(X)$와 $P(Y|X)$를 각각 다른 신경망에 학습시킵니다.

오른쪽이 모델이 출력한 확률 밀도입니다.

혼합 가우스 분포





절단 (?) 가우스 분포





마지막 예제는 잘 작동하지 않는 것 같습니다.

또한 차원이 늘어난 경우도 마찬가지이지만 아직 실험할 수 없습니다.

좋은 웹페이지 즐겨찾기