google/edward2
A simple probabilistic programming language.
What it solves
Edward2는 간단한 확률 프로그래밍 언어(PPL)로, 딥러닝 생태계와 원활하게 통합되도록 설계되었습니다. 연구자와 개발자는 Python 함수(프로그램) 형태로 확률 모델을 정의할 수 있으며, 로그-조인 확률 계산이나 사후 예측 수행과 같은 유연한 학습 및 추론을 위한 도구를 제공합니다.
How it works
이 라이브러리는 RandomVariables를 사용해 확률 모델의 구조를 정의합니다. 이러한 변수는 확률 분포를 가지고 있으며 표준 텐서 연산과 상호 운용될 수 있습니다. 모델은 Python 함수로 표현되며, 함수 내부에서 이러한 랜덤 변수를 인스턴스화하여 생성 과정을 나타냅니다.
유연한 추론을 가능하게 하기 위해 Edward2는 tracing이라는 메커니즘을 사용합니다. 트레이서는 모델 함수 내에서 랜덤 변수의 인스턴스화를 가로채어 사용자가 사전 분포를 사후 평균으로 교체하거나 모델을 다른 형태(예: 생성 프로그램을 MCMC 알고리즘에서 사용할 로그-조인 확률 함수로 변환)로 변환할 수 있게 합니다.
Who it’s for
주로 딥러닝 프레임워크 내에서 확률 모델 및 불확실성 모델링을 다루어야 하는 AI 연구자와 실무자를 위한 도구입니다.
Highlights
- Multi-backend support: TensorFlow(기본), JAX, NumPy를 지원합니다.
- Tracing mechanism: 모델 코드를 변경하지 않고도 동적으로 모델 계산을 조작할 수 있습니다.
- Program transformations:
make_log_joint_fn과 같은 내장 도구를 통해 생성 모델을 확률 함수로 변환합니다. - Deep learning integration: TensorFlow Distributions 및 기타 텐서 기반 연산과 연동되도록 설계되었습니다.