當前位置:
首頁 > 科技 > TensorFlow手把手教你概率編程:TF Probability內置了開源教材,新手友好

TensorFlow手把手教你概率編程:TF Probability內置了開源教材,新手友好

曉查 栗子 發自 凹非寺

量子位 出品 | 公眾號 QbitAI

大家可能知道,要做概率編程(Probabilistic Programming) 的話,TensorFlow Probability(TFP) 這個庫是個不錯的選擇。

大家可能不知道,現在TFP裡面有了一本開源教材,可以手把手教你學概率編程。就算是新手,就算沒有用過TFP,也不要緊:

就是這本書,Bayesian Methods for Hackers。入門教材,注重實踐,擁有各種示例。

(TFP版本的教材,也是先前PyMC3版本的一個補充。)

這本教材,除了適合新人上手概率編程,也展示了概率編程在現實問題中的應用。

概率編程,人人可學

貝葉斯方法,提供了一個相對直觀的框架,把信念表徵 (Representing Beliefs) 出來,再根據新的數據來更新這些信念。

教材以TFP庫為根基,向大家傳授這樣的技術,還有許多動手實踐幫助大家練習。

這本書是在Google Colab裡面寫的,裡面的Python示例可以運行也可以修改

現在有友好的教材了,來學概率編程吧。畢竟,從金融到石油天然氣,各行各業可能都用得到:不確定性(Uncertainty) 無處不在,許多事件都可能受到外部因素的影響。如果拋開這些因素,模型就可能不準了,所以才有了概率編程,才有了TFP庫。

那麼,來看一下TFP是怎樣解決現實問題的:

解決現實世界的問題

Bayesian Methods for Hackers一書從簡單問題開始,比如用於硬幣正反和骰子點數問題,然後轉向更為現實的問題,包括從理解宇宙到檢測在線用戶行為的變化。

下面我們將概述一個著名的現實世界問題:1986年挑戰者太空梭災難性事故。書中對此問題有更詳細的處理。

1986年1月28日,美國挑戰者號太空梭的第25次飛行中,由於O形圈故障,挑戰者號的兩個固體火箭助推器中的一個爆炸了。 雖然工程師與O形圈製造商就先前飛行中的損壞進行了多次溝通,但製造商認為風險是可以接受的。

下圖描述了對先前太空梭任務中的七次O形圈損壞事件的觀測,這是損壞事件對環境溫度的函數。 (在70度時,有兩個損壞事件。註:溫度均為華氏度,下同。)

你會注意到,隨著溫度的降低,O形圈損壞的比例會顯著增加,但是沒有明顯的溫度閾值,低於該閾值時O形圈就一定會失效。 與現實世界大多數現象一樣,這個問題存在不確定性。 我們希望在給定溫度t下,確定O形圈失效的概率是多少?

我們可以使用邏輯函數模擬溫度t下O形環損壞的概率p :

其中β確定概率函數的形狀,α是偏移項,控制函數的左右移動。 由於這兩個參數都可以是正的或負的,沒有特定的邊界或大小的偏差,我們可以將它們建模為高斯分布隨機變數:

在TFP中,我們可以用tfp.distributions.Normal直觀地表示α和β,代碼如下:

請注意,我們在第8行得到p(t)的實際值0或1,其中我們使用先前在第6行和第7行中採樣的α和β值對概率函數進行採樣。另外,請注意evaluate()輔助函數允許我們無縫地在圖形和eager模式之間轉換,同時將張量值轉換為numpy。

為了將溫度t、失效概率p(t)與我們的觀測數據聯繫起來,我們可以使用帶參數p(t)的伯努利隨機變數。 注意,通常,Ber(p)是隨機變數,其值為1的概率為p,其餘情況下為0。 因此,生成模型的最後一部分是某溫度下觀測到有缺陷事件的數量D ,它可以建模為:

鑒於這種生成模型,我們希望找到模型參數,可以解釋觀察到的數據,這正是是概率推理的目標。

TFP通過使用非標準化聯合對數概率函數評估模型來執行概率推斷。此的參數是數據和模型狀態。 該函數返回參數化模型生成觀測數據的聯合概率的對數。

接下來,我們使用函數,並將其發送到tfp.mcmc模塊。 馬爾可夫鏈蒙特卡洛(MCMC)演算法對未知輸入值進行有根據的猜測,計算函數中參數集的可能性。 通過多次重複此過程,MCMC構建了可能參數的分布。 構建此分布是概率推理的目標。

因此,我們將通過函數設置一種特定類型的MCMC,稱為「哈密頓蒙特卡洛」:

最後,我們將通過evaluate()輔助函數進行推理:

通過繪製α和β的分布圖,我們注意到這兩個參數分布相當寬:

正如我們上面提到的,我們真正想知道的是: 在給定溫度下O形環損壞的預期概率是多少? 為了計算這個概率,我們可以對來自後驗的所有樣本求平均值,得到概率的可能值。

然後我們可以在整個溫度範圍內計算95%的可信區間。 請注意,這是一個可靠的區間,而不是通常在統計分析方法中的置信區間。 95%可信區間告訴我們,我們可以95%的概率確定真實值將位於此區間內。 例如,正如下圖中的紫色區域,在50度時,我們可以95%確定O形圈損壞的概率介於1.0和0.80之間。

挑戰者號事故發生當天的溫度為31華氏度。事實證明,O形圈失效的後驗分布將使我們高度確信會出現損壞的問題。

這種相當簡單的概率分析證明了TFP和貝葉斯方法的強大功能:它們可以提供有價值的分析,對可能產生重大後果的實際問題進行預測。

關於TensorFlow Probability

TensorFlow Probability是一個Python庫,可以把概率模型和深度學習輕鬆結合起來。

機器學習研究人員或者工程師,都可以用它編碼領域知識 (Domain Knowledge),就是某個特定領域的專業知識,從而理解數據並寫出自己的應用。這裡有:

· 許多種類的概率分布,以及Bijectors;

· 搭建概率模型的各種工具,比如概率層 (Probabilistic Layers) 以及Edward2語言;

· 變分推理 (Variational Inference) 和馬爾科夫鏈蒙特卡洛 (MCMC) ;

· 以及各種優化器,比如Nelder-Mead,BFGS和SGLD。

現在,連教材也有了,大家可以開始愉快地學習了。

TensorFlow Probability傳送門:

https://www.tensorflow.org/probability/

《Bayesian Methods for Hackers》電子書:

https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers

博客傳送門:

https://medium.com/tensorflow/an-introduction-to-probabilistic-programming-now-available-in-tensorflow-probability-6dcc003ca29e?linkId=60908456


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

李開復為什麼要說買車是最糟糕的投資?
GitHub標星2600,從零開始的深度學習實用教程

TAG:量子位 |