Introduction to Deep Probabilistic Programming with Pyro

今年在 PyconTW 給的演講,主題是關於機率程式語言與Pyro,機器學習核心問題其中之一是如何建立機率模型,我們想要足夠複雜但又可以推論、訓練的模型,且方法要夠通用兼顧效率;如果有一個生成模型,我們能不斷的從模型抽樣產生樣本,我們就會知道說模型的哪些「設定或是輸入」會產出好的或是跟真實資料相似的樣本,我們可以透過抽樣來推估給定真實資料下,一些隱藏變量或是我們想估計的變數

用機率程式語言來描述一個生成模型或是資料產生的過程,我們可以很容易得去抽樣或是計算機率值,甚至不用去寫複雜的推論過程,機率語言很自然的提供了相對應的推論方法,這些設計都是嵌入在程式語言的設計中

機率程式語言除了建立生成模型,本質上它還是一個通用的程式語言,我們依然可以用它來寫各種複雜程式,例如下西洋棋或是影像渲染等等,這大幅擴展了生成模型所能定義的事,我們不只能去生成影像、語音等等資料,更可以去生成一連串的動作、或是經過渲染的影像,但這些因為都是用機率程式語言所寫的,完全都可以去推估程式中的變量,模型也當然能夠生成新的資料用於預測;認知科學家研究人類如何做決策的過程,常用機率程式語言去假設人類做決策的生成模型,並且給一些人類決策過程的資料,透過這樣來研究所假設的模型是否合理,除此之外,模型在輸出每次的決策同時都可以給出相對應的機率值,與程式內部的變量值,我們可以知道模型為何做這樣的決策,或是如何犯錯的

近年來結合深度學習與自動微分工具,有不少機率程式語言的研究相繼提出,雖然還尚未有殺手級的應用,但是我想這個領域一定會提供人工智慧領域發展很多的新觀點