JuliaStats 생태계의 확률분포 정의와 모델링

Distributions.jl은 Julia의 다중 디스패치와 강력한 타입 시스템을 활용해 확률분포를 추상형 `Distribution{VariateForm,ValueSupport}`으로 정의한다. 연속·이산, 일변량·다변량 등 샘플 공간 특성을 타입 파라미터로 명시함으로써 컴파일 시 디스패치를 가능하게 하고, 제로‑코스트 추상화를 제공한다. `Sampleable` 인터페이스를 통해 임의의 샘플링 객체(마코프 체인 등)를 구현할 수 있으며, `ra…

저자: Mathieu Besanc{c}on, Theodore Papamarkou, David Anthoff

JuliaStats 생태계의 확률분포 정의와 모델링
본 논문은 Julia 언어 기반의 확률분포 패키지인 Distributions.jl의 설계와 구현을 상세히 소개한다. 패키지는 JuliaStats 생태계의 핵심 구성요소로, 확률변수와 그 분포를 다루는 인터페이스를 제공한다. 첫 번째로, 패키지는 `Distribution{VariateForm,ValueSupport}`라는 추상형을 도입한다. 여기서 `VariateForm`은 일변량, 다변량, 행렬변량 등 샘플 공간의 차원을, `ValueSupport`는 연속형 또는 이산형 지원을 나타낸다. 이러한 타입 파라미터는 컴파일 타임에 알려져 다중 디스패치를 가능하게 하며, 제로‑코스트 추상화를 실현한다. 구현 예시로 `Uniform{T<:Real}` 구조체가 `ContinuousUnivariateDistribution`을 상속받아 `a::T, b::T` 필드를 갖는 방식을 들 수 있다. 이는 기본 `Float64`뿐 아니라 `Float32`, `BigFloat`, `Rational`, 자동미분을 위한 `Dual` 타입 등 다양한 수치형과 호환된다. Distributions.jl은 확률분포 외에도 임의의 샘플링 객체를 표현하기 위해 `Sampleable{F,S}` 추상형을 제공한다. 예를 들어, 가변적인 마코프 체인을 `mutable struct MarkovChain <: Sampleable{Univariate,Discrete}` 형태로 정의하고, `rand(rng, mc::MarkovChain)` 메서드를 구현함으로써 동일한 `rand` 인터페이스를 사용할 수 있다. 이는 불변 객체와 가변 객체 모두를 일관된 방식으로 다룰 수 있게 한다. 핵심 인터페이스는 `rand`, `pdf`, `cdf`, `quantile` 네 가지 메서드이다. 다중 디스패치를 활용해 새로운 분포를 추가할 때는 해당 타입만 정의하면 되며, 기존 함수들의 오버로드가 자동으로 적용된다. 예를 들어, `rand(d::UnivariateDistribution)`는 역변환 샘플링을 기본 구현으로 제공한다. R의 `rnorm`, `dnorm`, `pnorm`, `qnorm`에 해당하는 네 개의 함수를 하나의 타입 정의로 대체함으로써 API를 간소화한다. 추정 및 모델링 측면에서는 `fit_mle` 함수를 통해 최대우도 추정을 지원한다. 사용자는 분포 타입과 데이터(또는 가중치)를 전달하면 파라미터 추정이 수행된다. 비모수적 커널밀도추정, 혼합모델(EM 알고리즘 기반) 등도 동일 생태계 내 다른 패키지와 연계돼 일관된 워크플로우를 제공한다. 다른 언어와의 비교에서는 SciPy의 객체지향 설계, R의 `r/d/p/q` 프리픽스 방식, Boost C++의 템플릿 기반 구현과 대비된다. Distributions.jl은 타입 기반 설계와 다중 디스패치를 결합해 컴파일 타임 최적화와 런타임 유연성을 동시에 달성한다. 또한 외부 패키지가 새로운 `VariateForm`이나 `ValueSupport`를 정의해도 기존 인터페이스와 호환되므로, 생태계 확장이 용이하다. 마지막으로, 패키지는 커널밀도추정 패키지 KernelDensity.jl, 확률 프로그래밍 언어 구현 등 다양한 응용 분야와 결합돼 Julia 전체 통계·머신러닝 스택의 핵심 역할을 수행한다. 향후 개발 로드맵에는 더 많은 샘플링 알고리즘, 고차원 텐서 지원, 그리고 자동미분과의 깊은 통합이 포함된다.

원본 논문

고화질 논문을 불러오는 중입니다...

댓글 및 학술 토론

Loading comments...

의견 남기기