谷歌提出深度概率編程語言Edward,近日,哥倫比亞大學、Adobe Research、Google Research 和 Google Brain 的研究者聯合發表了一篇論文,介紹一種新的圖靈完備的概率編程語言。該論文表示 Edward 集成到了 TensorFlow 中。以下是該論文及 Edward 的簡單介紹。
http://pic.kanwencang.com/p/tupian/201701/ppEdward.pdf 官網:http://edwardlib.org/
Edward 官網對這門新語言的描述是:Edward 是一個用于概率建模、推理和評估的 Python 庫。它是一個用于快速實驗和研究概率模型的測試平臺,其涵蓋的模型范圍從在小數據集上的經典層次模型到在大數據集上的復雜深度概率模型。Edward 融合了以下三個領域:貝葉斯統計學和機器學習、深度學習、概率編程。
它支持以下方式的建模:
定向圖模型
神經網絡(通過 Keras 和 TensorFlow Slim 等庫)
條件特定的無向模型
貝葉斯非參數和概率程序
它支持以下方式的推理:
變分推理(Variational inference)
黑箱變分推理
隨機變分推理
包容 KL 散度(Inclusive KL divergence):\text{KL}(p\q) KL (p∥q)
最大后驗估計
蒙特卡洛(Monte Carlo)
哈密爾頓蒙特卡羅(Hamiltonian Monte Carlo)
隨機梯度 Langevin 動態
Metropolis-Hastings
推理的組成
期望最大化(Expectation-Maximization)
偽邊界和 ABC 方法(Pseudo-marginal and ABC methods)
消息傳遞算法(Message passing algorithms)
它支持以下的模型評估和推理:
基于點的評估(Point-based evaluations)
后驗預測檢查(Posterior predictive checks)
Edward 構建于 TensorFlow 之上。它支持諸如計算圖、分布式訓練、CPU/GPU 集成、自動微分等功能,也可以用 TensorBoard 可視化。
以下是介紹論文的摘要介紹:
論文標題:深度概率編程(DEEP PROBABILISTIC PROGRAMMING)
摘要
我們提出了一種圖靈完備的概率編程語言 Edward。Edward 構建于兩種組合式表示的基礎上——隨機變量和推理(random variables and inference)。通過將推理看作「第一類公民」,與建模(modeling)一樣,我們表明概率編程可以做到和傳統深度學習一樣靈活和有計算效率。
對于靈活性,Edward 讓我們可以使用從點估計(point estimation)到變分推理和 MCMC 等各種可組合的推理方法來擬合相同的模型。此外,Edward 還可以將建模表征復用作推理的一部分,這能促進豐富的變分模型和生成對抗網絡的設計。
對于效率,Edward 集成到了 TensorFlow 之中,在已有的概率系統基礎上提供了顯著的加速。比如,在基準 logistic 回歸任務上,Edward 至少比 Stan 和 PyMC3 快 35 倍。
引言
深度神經網絡的本質是組合式的(compositional)。用戶可以以創造性的方式來將層連接起來,而無需擔憂如何去執行測試(前向傳播)或推理(基于梯度的優化,通過反向傳播和自動微分)。在這篇論文中,我們為概率變成設計組合式表示(compositional representations)。概率編程讓用戶可以將生成概率模型指定為程序(program),然后將這些模型「編譯(compile)」為推理過程(inference procedures)。概率模型本質上也是組合式的,而之前的大部分工作都集中在通過組合隨機變量來構建豐富的概率程序上(Goodman et al., 2012; Ghahramani, 2015; Lake et al., 2016)。
但很少有研究考慮過用于推理的類似的組合性。相反,現在大多數已有的概率編程語言都將推理引擎當作從模型中抽象出來的黑箱來處理。這些方法不能代表在復用模型表征的概率推理中的最新進展。比如,在變分推理(Kingma & Welling, 2014; Rezende & Mohamed, 2015; Tran et al., 2016b)和生成對抗網絡(Goodfellow et al., 2014)上的進展已經變得非常重要了。
我們提出了一種圖靈完備的概率編程語言 Edward。Edward 構建于兩種組合表示的基礎上——隨機變量和推理(random variables and inference)。我們給出了如何將 Edward 集成到已有的計算圖框架(如 TensorFlow)中的方法。TensorFlow 這樣的框架能夠「免費」提供分布式訓練、并行性、向量化和 GPU 支持等計算優勢。我們還表明 Edward 可以如何讓我們輕松使用從點估計(point estimation)到變分推理和 MCMC 等各種可組合的推理方法來擬合相同的模型。通過將推理看作「第一類公民」,與建模(modeling)一樣,我們表明概率編程可以做到和傳統深度學習一樣靈活和有計算效率。比如,我們的哈密爾頓蒙特卡羅(Hamiltonian Monte Carlo)實現比現有的軟件快 35 倍。
圖 1:Beta-Bernoulli 程序(左)與其計算圖(右)。從圖中取 x 會生成一個有 50 個元素的二值向量
圖 2:用于一個 28×28 像素圖像的數據集的變自編碼器:(左)圖模型,其中虛線表示推理模型;(右)概率程序,帶有 2 層神經網絡
圖 3:貝葉斯 RNN:(左)圖模型;(右)概率程序。該程序的時間步驟未指定;其為循環使用了一個符號(tf.scan)
圖 4:(左)變分推理;(右)蒙特卡洛
圖 5: 生成式對抗網絡:(左側)概率圖模型(右側)概率程序。加入一些假數據以及訓練其判別式模型,能不斷強化該生成模型
圖 6:LDA 文檔主題生成模型,隱含狄利克雷分布 (Blei et al., 2003)
圖 7: 高斯矩陣分解
看文倉www.kanwencang.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/xinwen/20170120/92711.html
文章列表