確率的プログラミングとは何ですか?


10

過去1年間、私はPyMC3Stanなどの確率的プログラミング(PP)フレームワーク、およびPPがいかに優れているかについて多くのことを聞いてきました。そして今日、誰かがこのリンクを私と共有しました: Pyro:深い確率的プログラミング言語

ただし、PPで実行できることは他の汎用言語で実行できるように感じるため、特別なことには触れません。PPには魅力的な技術的側面(並列計算など)があると確信していますが、これはさておき、PPは他の言語と本当に違うのですか?

質問:私は、PPとは何か、それがR、Matlab、Mathematicaなどの他の統計に焦点を当てたソフトウェアとどのように異なるのかについてコンセンサスがあるのか​​と思っていました。これは、ことに留意すべきであるPyMC3Stan多くのベイズ分析に焦点を当てています。

Googleで少し調べてみたところ、次の2つの定義に出くわしました。1つ目はより抽象的で、2つ目はPPの技術的特徴についてです。

1.2。確率的プログラミングは

代わりに、確率的プログラミングは統計モデリングのためのツールです。アイデアは、プログラミング言語の世界からの教訓を借り、統計モデルの設計と使用の問題に適用することです。専門家は統計モデルをすでに手作業で紙の数学表記で構築していますが、機械的な推論ではサポートが難しい専門家のみのプロセスです。PPの重要な洞察は、統計モデリングが十分に行うと、プログラミングのように感じ始めることができるということです。飛躍を遂げ、実際にモデリングに実際の言語を使用すると、多くの新しいツールが実現可能になります。各インスタンスの論文を書くことを正当化するために使用されたタスクの自動化を開始できます。

次に、2番目の定義を示します。確率的プログラミング言語はrand、プログラムの統計的動作を理解するのに役立つ関連ツールの非常に大きな山を備えた通常のプログラミング言語です。

これらの定義はどちらも正確です。彼らは同じ核となる考えに異なる角度を強調するだけです。どちらが適切かは、PPを何に使用するかによって異なります。しかし、PPLプログラムが通常のソフトウェア実装によく似ているという事実に気を取られないでください。その目的は、プログラムを実行して何らかの出力を取得することです。PPの目標は、実行ではなく分析です(強調を追加)。

- 確率的プログラミング

一般的な統計コミュニティがPPのこれら2つの定義に同意するかどうか、および他の特性がある場合、この定義が欠落している可能性があるかどうか知りたい。


1
最初の定義に同意します。PPでは、統計モデルを定義し、シミュレーション部分を独自に処理します。スタン以外の例は、バグ、教会、英国国教会です。RはPPではありません。
西安

@西安、PPは主にベイズ統計モデリングに焦点を当てているようだと思いますか?もしそうなら、PPはベイジアンアプローチのみをサポートするためのものですか?
2017年

焦点は「階層モデリング」です。これは、ベイジアン法にとって本質的に便利です。それほど自然ではない頻度主義の解釈もありますが。
knrumsey 2017年

回答:


2

確率的プログラミングは、統計モデルを定義するための手法です。確率分布関数によるモデルの定義やグラフの作成とは異なり、モデルはプログラミング言語で、通常はフォワードサンプラーとして表現します。

モデル仕様からの自動推論は、確率的プログラミングツールの典型的な機能ですが、必須ではなく、ベイジアンである必要はありません。確率的プログラムとして指定されたモデルを使用すると、さまざまな便利なことができます。たとえば、ペーパー「確率的関数プログラムから確率密度関数を導出するは、確率的プログラムを分析し、その確率分布関数を計算するツールについて説明しています。確率モデルにおけるパラメーターの対称性の検出に関する論文では、パラメーターの対称性に関する確率的プログラムを分析しています。この種の作業も確率的プログラミングに該当します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.