확률 분포를 신경망으로 학습
소개
신경망을 사용한 세미 파라 메트릭 밀도 추정 방법을 고안했습니다.
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)$를 각각 다른 신경망에 학습시킵니다.
오른쪽이 모델이 출력한 확률 밀도입니다.
혼합 가우스 분포
절단 (?) 가우스 분포
마지막 예제는 잘 작동하지 않는 것 같습니다.
또한 차원이 늘어난 경우도 마찬가지이지만 아직 실험할 수 없습니다.
Reference
이 문제에 관하여(확률 분포를 신경망으로 학습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tmagara/items/544ecdded914289c85c8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)