天天看點

《樹莓派開發實戰(第2版)》——1.2 為什麼使用機率程式設計

本節書摘來異步社群《機率程式設計實戰》一書中的第1章,第1.2節,作者:【美】avi pfeffer(艾維·費弗),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

機率推理是機器學習的基礎技術之一。google、amazon和microsoft等公司使用它了解可用資料。機率推理已經用于各種各樣的應用程式,如預測股價、推薦電影、診斷計算機和檢測網絡入侵。許多應用都使用了本書中将要學習的技術。

前一小節中,有兩個引人注目的要點。

機率推理可用于預測未來、推斷過去,以及從過去的事實中學習更好地預測未來。

機率程式設計是使用圖靈完備程式設計語言作為表示語言的機率推理。

将上面兩個要點結合起來,可以得到如下表示。

事實:機率推理+圖靈完備=機率程式設計

機率程式設計的動機是将兩個本身就很強大的概念結合起來,結果是使用計算機輔助不确定性下決策的更簡單、更靈活方法。

1.2.1 更好的機率推理

大部分現有機率表示語言在所能表示的系統豐富性上都很有限。有些相對簡單的語言(如貝葉斯網絡)假定固定的變量集,其靈活性不足,不能建立變量本身可能變化的領域模型。近年來,已經有一些具有更高靈活性的先進語言開發出來。其中一些語言(如bugs)還提供了程式設計語言的特征,包括循環和數組,但是沒有達到圖靈完備。bugs等語言的成功說明了更豐富、結構更嚴整的表示方式的必要性。但是,向成熟的圖靈完備語言轉移,為機率推理開拓了一個新領域。現在,可以建立具有許多互動實體及事件的長期運作過程的模型。

我們再次考慮足球的例子,但是這次想象一下,您的工作是體育分析,希望為一支球隊做出人員配備決策的建議。您可以使用積累的統計數字做出決策,但是統計數字不能捕捉積累它們時所處的背景。您可以建立賽季的細緻模型,實作粒度更細、情境感覺的分析。這要求建立許多相關事件以及互相作用的球員和球隊的模型。如果沒有完整的程式設計語言所提供的資料結構和控制流,建構這種模型是難以想象的。

現在,讓我們再次思考産品投放的例子,從綜合的角度觀察業務決策過程。産品投放不是孤立事件,而是經過市場分析、研究和開發的過程,各個過程的結果都有不确定性。産品投放的結果取決于所有階段,以及市場中其他産品的分析。全面的分析還需要關注競争對手對您的産品的反應,以及他們可能提出的新産品。這一問題很困難,因為您必須對競争産品做出推測。甚至有一些競争對手尚不為人所知。在這個例子中,産品是複雜過程産生的資料結構。同樣,用完整的程式設計語言建立模型很有益處。

不過,機率程式設計的好處之一是,可以使用更簡單的機率推理架構。機率程式設計系統可以表示廣泛的現有架構,以及這些架構所不能表示的系統。本書将傳授許多使用機率程式設計的此類架構。是以,在機率程式設計的學習中,您還能夠精通許多當今常用的機率推理架構。

1.2.2 更好的模拟語言

圖靈完備的機率模組化語言已經存在。它們常常被稱作模拟語言。我們知道,使用程式設計語言模拟足球賽季等複雜過程是可能的。在這種情境下,我使用模拟語言這一術語描述能夠表示複雜過程随機執行的語言。正如機率程式,這些模拟随機執行,以産生不同輸出。模拟和機率推理一樣應用廣泛,涵蓋了從軍事計劃到元件設計以及公共衛生及體育比賽預測等範圍。确實,精密模拟的廣泛使用說明了對豐富機率模組化語言的需求。

但是,機率程式遠不僅是模拟。使用模拟,您隻能完成機率程式的一項功能:預測未來。無法用它推斷觀測結果的根源。而且,盡管可以不斷地用已知的目前資訊更新模拟,但是很難包含必須推斷的未知資訊。是以,從過去經驗中學習以改善未來預測和分析的能力很有限。不能将模拟用于機器學習。

機率程式就像不僅可以運作,而且可以分析的模拟一樣。開發機率程式設計的關鍵要點是,推理算法既可用于較簡單的模組化架構,也可用于模拟。是以,您有能力編寫一個模拟并在其基礎上執行推理,以建立機率模型。

最後一點,機率推理系統已經出現了一段時間,hugin、netica和bayesialab等軟體提供了貝葉斯網絡系統。但是機率程式設計更有表現力的表示語言很新穎,我們剛剛開始發現其強大的應用。老實說,我不能告訴您機率程式設計已經用于大量現有應用,但是有一些重要的應用。microsoft已經能夠使用機率程式設計,确定線上遊戲玩家的真正技能水準。加州大學伯克利分校的stuart russell編寫了一個程式,通過識别表明核爆炸的地震活動,幫助聯合國《全面禁止核試驗條約》的實施。麻省理工學院(mit)的josh tenenbaum和斯坦福大學的noah goodman已經建立了建立人類識别模型的機率程式,并在試驗中取得了很大的成功。在charles river analytics,我們已經使用機率程式設計推斷惡意軟體執行個體的元件并确定它們的演變。但是,我相信這些應用僅僅是個開始。将會有越來越多的人用機率程式設計系統做出所在領域的決策。閱讀本書,您也有機會成為這一新技術的嘗鮮者。

繼續閱讀