-
Probabilistic Programming (확률적 프로그래밍)컴퓨터/소프트웨어 2020. 7. 29. 14:44728x90반응형
Hakaru
hakaru-dev/hakaru
A probabilistic programming language. Contribute to hakaru-dev/hakaru development by creating an account on GitHub.
github.com
Pyro(from Uber AI) 처럼 확률적 프로그래밍 언어인 Hakaru를 사용하는 법을 알아보겠다.
1. 설치법
그다음, Haskell Tool Stack을 다운받아서 설치한다. (다운로드)
(stack 설치 경로 : AppData\Local\Programs\stack)
1. git repositoy clone
Hakaru를 clone할 곳에서 Git Bash를 열고, 다음을 입력한다.
git clone https://github.com/hakaru-dev/hakaru.git
2. stack.yaml 수정
hakaru\stack.yaml 파일을 열어서 extra-deps 부분에 아래를 추가한다.
- repline-0.4.0.0 - haskeline-0.8.0.0
3. stack install
stack install을 입력해서 설치한다.
2. Hakaru - 확률적 프로그래밍
확률적 프로그래밍이란, 확률적 추론을 하기위한 소프트웨어적 확률 모델을 만드는 방법이다.
Pyro, PyTorch 베이스로 만들어진 언어랑 비슷한 Hakaru는
C나 Haskell 언어로 변환되어 사용할 수 있다.
3. 확률적 모델
데이터를 분포, 혹은 프로그램으로 표현하는 것이 모델이다.
확률적 모델은 예측할 만큼의 양을 파라미터라고 부르고,
이미 알려진 데이터는 이 파라미터의 함수라고 불린다. 이 함수는, 그 파라미터의 가능성이라고 표현된다.
4. 예제
Bayesian 줄다리기 게임을 예제로 들어보겠다.
우선, 3명, Kim, Lee, Choi은 그들 중 누가 가장 강한지 알아보고 싶어한다.
그리고, 각각 모두 경기를 치루고, 가장 많이 이기는 사람이 가장 센 사람이라고 정했다.
코드로 표현할 상황은,
이미 2경기를 누가 이겼는지 알고 있을 때, 마지막 3번째 경기에서는 누가 이길 지 궁금해 하는 상황이다.
def pulls(strength real): normal(strength, 1) def winner(a real, b real): a_pull <~ pulls(a) b_pull <~ pulls(b) return (a_pull - b_pull) alice <~ normal(0,1) bob <~ normal(0,1) carol <~ normal(0,1) match1 <~ winner(kim, lee) match2 <~ winner(lee, choi) match3 <~ winner(kim, choi) return ((match1, match2), match3)
Kim이 Lee보다 쌔면 match1 = True, Lee가 Choi보다 쌔면 match2 = True
match3는 Kim이 match1을 이기고, Choi가 match2를 졌을 때를 바탕으로 예측할 것이다.
hakaru -w tugofwar.hk | head -n 10000 | sort | uniq -c 3060 false 6940 true
10,000번 시뮬레이션을 돌렸을 때, true가 6940번 false가 3060번이 나온 뜻은
Kim이 Choi를 69.4% 확률로 이긴다는 의미이다.
참고 링크: https://hakaru-dev.github.io/
Hakaru
From here you can search these documents. Enter your search terms below.
hakaru-dev.github.io
참고 링크: http://pyro.ai/examples/index.html
Welcome to Pyro Examples and Tutorials! — Pyro Tutorials 1.4.0 documentation
© Copyright 2017-2018, Uber Technologies, Inc
pyro.ai
참고 링크: https://ko.wikipedia.org/wiki/%EB%B2%A0%EC%9D%B4%EC%A6%88_%EC%A0%95%EB%A6%AC
베이즈 정리 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 확률론과 통계학에서, 베이즈 정리(영어: Bayes’ theorem)는 두 확률 변수의 사전 확률과 사후 확률 사이의 관계를 나타내는 정리다. 베이즈 확률론 해석에 따르면
ko.wikipedia.org
728x90'컴퓨터 > 소프트웨어' 카테고리의 다른 글
Windows Terminal 테마, 설정 (0) 2020.08.02 Github 코드 바로 실행해보기 (Gitpod) (0) 2019.10.10 배치(Batch) 파일 레지스트리 이용하기 (0) 2017.08.07