什麼是概率規劃?
在過去的一年裡,我聽到了很多關於概率編程(PP) 框架(如PyMC3和Stan )的消息,以及 PP 有多棒。而今天,有人和我分享了這個鏈接: Pyro: a Deep Probabilistic Programming Language
但是,我並不真正了解它的特別之處,因為感覺就像您可以在 PP 中做的任何事情一樣,您可以用任何其他通用語言做。我確信 PP 的某些技術方面使其具有吸引力(例如並行計算),但除此之外,PP 真的與任何其他語言有什麼不同嗎?
**問:**我想知道關於 PP 是什麼以及它與 R、Matlab、Mathematica 等其他以統計為重點的軟件有何不同是否存在共識。需要注意的是
PyMC3
,Stan
更多的是關注貝葉斯分析。在谷歌上做了一點研究,我遇到了以下兩個定義。第一個比較抽象,第二個更多關於PP的技術特性。
1.2. 概率規劃是
相反,概率編程是一種統計建模工具。這個想法是從編程語言世界中吸取教訓,並將其應用於設計和使用統計模型的問題。專家們已經在紙上用數學符號手工構建了統計模型,但這是一個專家專用的過程,很難用機械推理來支持。PP 的關鍵見解是,當你做得足夠多時,統計建模可以開始感覺很像編程。如果我們實現飛躍並實際使用真實語言進行建模,許多新工具將變得可行。我們可以開始自動化用於證明為每個實例編寫論文的任務。
這是第二個定義:概率編程語言是一種普通的編程語言,
rand
具有大量相關工具,可幫助您了解程序的統計行為。這兩個定義都是準確的。他們只是強調同一個核心思想的不同角度。哪一個對你有意義取決於你想用 PP 做什麼。但是不要因為 PPL 程序看起來很像普通軟件實現這一事實而分心,其目標是運行程序並獲得某種輸出。PP 的目標是分析,而不是執行(強調)。
–概率規劃
我想知道一般統計界是否同意這兩個 PP 定義,如果還有其他特徵,這個定義可能會丟失。
概率規劃是一種定義統計模型的技術。與通過概率分佈函數定義模型或繪製圖形不同,您可以用編程語言表達模型,通常作為前向採樣器。
從模型規範自動推斷是概率編程工具的一個典型特徵,但它不是必需的,也沒有必要是貝葉斯的。使用指定為概率程序的模型可以做很多有用的事情。例如,論文Deriving Probability Density Functions from Probabilistic Functional Programs描述了一種分析概率程序併計算其概率分佈函數的工具。檢測概率模型中的參數對稱性一文分析了參數對稱性的概率程序。這種工作也屬於概率編程。