見出し画像

📐確率的プログラミング言語の解説 webppl

確率的プログラミング(Probabilistic Programming: PP)は、確率的モデルを指定し、そのモデルに対する推論を自動的に行うプログラミングパラダイムである

いくつかのPPLが活発に開発されており、その中にはベータテスト中のものもある。最も人気のあるツールは、StanとPyMC3の2つ。

WEBPPLにはAssignmentExpressionsやループ構文(for、while、doなど)はありません。

純粋な関数型言語の方が、推論アルゴリズムの実装に使用しているContinuation-Passing Style (CPS)への変換が容易だからです。

Stan mc-stan.org


この言語は、実装が簡単で、モデルを書くのに適しており、他の言語(Churchなど)の良い中間目標となることを目的としています。

WebPPL(「ウェブ・ピープル」と発音)は、Javascriptの(純粋に機能的な)サブセットの上に構築された小さな確率論的プログラミング言語です。この言語は、実装が簡単で、モデルを書くのがかなり快適で、他の言語(Churchなど)の良い中間ターゲットになるように意図されています。

画像1

3人のヒトがいてそれぞれいい奴かどうかいうというモデル。runボタンおしらたいごく。

画像2

何か、確率変わったぞ。なんかちょっと気分がいいな。

この単純なRational Speech Actsモデルは、Frank and Goodman (2012)やGoodman and Stuhlmueller (2013)で紹介されています。

確率的プラグマティクスのアプローチは、確率的な 確率的モデルのツールを活用して、コミュニケーションの一般的な理論を開発し、洗練させるために、確率的な 確率的モデルを形式化したものである。

コミュニケーション自体が合意に基づいて曖昧なものだから確率モデルにしてみましたという事らしい。

Rational Speech Act (RSA)のフレームワークは、話し手と聞き手の間の再帰的推論としてコミュニケーションを見ています。聞き手は、状況のいくつかの状態についてナイーブな聞き手に知らせるためにしようとしている協力的な話者についての推論によって話者の発言を解釈します。ベイズ推論を用いて、リスナーは、話者が何らかの発言をしたことで、世界の状態がどのようなものになる可能性が高いかについて、話者がリスナーがその発言をどのように解釈する可能性が高いかについて推論していることを知りながら、推論します。

コードが動くから気長にみていこう。

Churchは元々MITでJoshua Tenenbaumが主宰する計算論的認知科学グループで開発されました[2]。Bher、MIT-Church、Cosh、Venture、Anglicanなど、いくつかの異なる推論アルゴリズムと具体的な言語が存在します。

もっとわかりやすいデモが

このアプリケーションは、ランダムに2Dのつるのような構造を生成するWebPPLプログラムを備えています。WebPPLの推論機能を使って、プログラムの出力が目標形状に一致するように制約を加えています。


お願い致します