過去1年間、私はPyMC3やStanなどの確率的プログラミング(PP)フレームワーク、およびPPがいかに優れているかについて多くのことを聞いてきました。そして今日、誰かがこのリンクを私と共有しました: Pyro:深い確率的プログラミング言語
ただし、PPで実行できることは他の汎用言語で実行できるように感じるため、特別なことには触れません。PPには魅力的な技術的側面(並列計算など)があると確信していますが、これはさておき、PPは他の言語と本当に違うのですか?
質問:私は、PPとは何か、それがR、Matlab、Mathematicaなどの他の統計に焦点を当てたソフトウェアとどのように異なるのかについてコンセンサスがあるのかと思っていました。これは、ことに留意すべきであるPyMC3
とStan
多くのベイズ分析に焦点を当てています。
Googleで少し調べてみたところ、次の2つの定義に出くわしました。1つ目はより抽象的で、2つ目はPPの技術的特徴についてです。
1.2。確率的プログラミングは
代わりに、確率的プログラミングは統計モデリングのためのツールです。アイデアは、プログラミング言語の世界からの教訓を借り、統計モデルの設計と使用の問題に適用することです。専門家は統計モデルをすでに手作業で紙の数学表記で構築していますが、機械的な推論ではサポートが難しい専門家のみのプロセスです。PPの重要な洞察は、統計モデリングが十分に行うと、プログラミングのように感じ始めることができるということです。飛躍を遂げ、実際にモデリングに実際の言語を使用すると、多くの新しいツールが実現可能になります。各インスタンスの論文を書くことを正当化するために使用されたタスクの自動化を開始できます。
次に、2番目の定義を示します。確率的プログラミング言語は
rand
、プログラムの統計的動作を理解するのに役立つ関連ツールの非常に大きな山を備えた通常のプログラミング言語です。これらの定義はどちらも正確です。彼らは同じ核となる考えに異なる角度を強調するだけです。どちらが適切かは、PPを何に使用するかによって異なります。しかし、PPLプログラムが通常のソフトウェア実装によく似ているという事実に気を取られないでください。その目的は、プログラムを実行して何らかの出力を取得することです。PPの目標は、実行ではなく分析です(強調を追加)。
一般的な統計コミュニティがPPのこれら2つの定義に同意するかどうか、および他の特性がある場合、この定義が欠落している可能性があるかどうか知りたい。