
📐確率的プログラミング言語の解説 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など)の良い中間ターゲットになるように意図されています。

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

何か、確率変わったぞ。なんかちょっと気分がいいな。
この単純な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の推論機能を使って、プログラムの出力が目標形状に一致するように制約を加えています。
いいなと思ったら応援しよう!
