機器學習中的統計編程:Pyro 和 TFP 的對比

已發表: 2021-01-29

在機器學習中,統計或概率編程是使用兩種編程語言完成的,如下所示。 簡單介紹一下,簡單來說,概率規劃是一種統計建模的工具。 它基本上意味著使用我們可以製作和設計統計模型作為解決方案的語言來解決問題。

它是關於使用計算機編程語言應用統計學的概念。 使用概率模型,可以推斷出我們對模型超參數的信念如何改變輸出。

目錄

著名的概率編程語言

1. 火焰兵

Pyro 是一種概率編程語言 (PPL),它是用 Python 編寫的,並由後端的 Pytorch 支持。 借助 Pyro,我們可以使用深度概率建模、貝葉斯建模,並結合最好的現代深度學習算法。 它可以按如下方式安裝:

pip3 安裝 Pyro-ppl

或從源代碼安裝它,使用以下命令:

git 克隆 https://github.com/pyro-ppl/pyro.git

cd pyro

點安裝。[附加]

使用簡單的代碼行導入 Pyro:

進口pyro

2.張量流概率(TFP)

TFP 是一個基於 TensorFlow 構建的 Python 庫,它使得概率模型和深度學習模型在 GPU 和 TPU 上的組合成為可能。 任何希望結合領域知識來理解和做出相關預測的人都可以使用它。 要安裝 TFP,請在命令或 anaconda 提示符下鍵入以下命令。

pip install –升級張量流概率

可以使用以下命令在代碼中使用 TFP:

將 tensorflow_probability 導入為 tfp

加入來自世界頂級大學的在線人工智能課程——碩士、高管研究生課程和 ML 和 AI 高級證書課程,以加快您的職業生涯。

Pyro 和 TFP 的對比

1. 文檔

Pyro 和 TFP 的文檔非常出色且豐富,而從神經網絡的前景對 TFP 的解釋則較少。 在 pyro 中,模塊 pyro.nn 提供了在深度概率編程環境中有用的神經網絡模塊的實現。 在 TFP 中,tfp.layers 代表神經網絡層,它們代表的功能不確定,擴展了 TensorFlow 層。

2. 語言

TFP 和 Pyro 的用戶都使用 python 編寫。 但是,TFP 案例中涉及的 API 非常冗長。 我的意思是,有時我們必須編寫更多行代碼才能找到解決方案。 有時這可能很好,因為我們對整個程序有更多的控制權,而當它在 Pyro 中以更短的形式可用時,這會很糟糕。

3. 加速時間

使用 Pyro,代碼執行速度更快、效率更高,您無需學習新概念。 另一方面,TFP 需要佔位符、變量範圍以及會話等概念,因此需要更多時間來執行。

4. 部署

TFP 和 Pyro 都可以輕鬆部署在小型服務器端。 對於移動和微型計算機或嵌入式部署,TensorFlow 工作效率高,與 Pytorch 不同。 與 Pytorch 相比,在 Android 和 IOS 中部署 TensorFlow 所需的工作量更少。

5. 圖表

Tensorflow 具有更好的計算圖形可視化,與 Torch 和 Theano 等其他庫相比,這是本地的。 Edward 基於 TensorFlow 構建,支持計算圖、分佈式訓練、CPU/GPU 集成、自動微分以及使用 TensorBoard 進行可視化等功能。 然而,Pyro 不提供任何演示或可視化功能。

Edward 對 TensorBoard 的干擾,來源:Edward

6. 馬爾可夫鏈蒙特卡洛

TFP 實現了大量馬爾可夫鏈蒙特卡羅(MCMC)算法(如 Metropolis、Gibbs、Hamiltonian),其用途是在 TensorFlow 中對概率分佈和一些值迭代算法進行採樣。 直到 2018 年,Pyro 才執行馬爾可夫鏈蒙特卡洛。 它已更新並具有完整的 MCMC、HMC 和 NUTS 支持。

7. 優化器

就像 TFP 實現了 TensorFlow 的幾個優化器,包括 Nelder-Mead、BFGS 和 L-BFGS(用於確定無約束的非線性優化問題),Pyro 實現了 PyTorch 中存在的優化器。模塊 pyro.optim 為 Pyro 中的優化提供支持. 可以說,這兩個 PPL 都依賴於它們的基本模塊(TensorFlow 和 PyTorch)。

資源

8. 雙射器

在 TFP 中,雙射變量包括概率密度的變量變化。 當我們從一個空間映射到另一個空間時,我們也會影響從初始空間上的概率密度到目標空間上的密度的映射。

但是當我們映射到不同的空間時,我們需要跟踪這些映射,以便在計算後一個空間的概率密度時考慮它們。 因此,雙射器用於平滑映射。 在 pyro 中,文檔沒有提到關於雙射器的任何內容,所以我認為它們沒有。

9.時間序列

pyro.contrib.timeseries 模塊提供了一組對預測應用有用的貝葉斯時間序列模型。 這可以通過利用 Pyro 中現有的Forecaster對象來實現。 在我們將輸入數據提供給模型後,我們只需告訴模型如何做出明智的預測。

就這麼簡單,只有數據和概率框架。 然而,TFP 使用了 CNN 和 RNN 等 Tensorflow 的時間序列模型以及其貝葉斯結構時間序列模型框架 (tfp.sts)。 貝葉斯結構時間序列是一個高級接口,用於擬合尚未發布的時間序列模型。

資源

10. 分配

它是用於構建和組織隨機變量(例如,伯努利、高斯)的屬性(例如,均值、方差)的基類。 一個例子可以是正態分佈。 Pyro 中的大多數發行版都是 PyTorch 發行版的薄包裝。 有關 PyTorch 分發接口的詳細信息,您可以查看 torch.distributions.distribution.Distribution。 然而,TFP 有它的模塊 tfp.distributions。

資源

資源

11. 廣義線性模型(GLM)

在統計學中,廣義線性模型是普通線性回歸的靈活推廣,它允許響應變量具有除正態分佈之外的誤差分佈模型。 在 TFP 中,tfp.glm 模塊包含一個用於擬合混合效應回歸模型的高級接口。 然而,Pyro 沒有這樣的 GLM 模塊。

資源

結論

使用這些因素,可以肯定地得出結論,Pyro 與 TFP 沒有太大區別。 它們都基於 Python 編程語言。 Python API 有據可查。 然而,Pytorch 具有良好的加速時間,因此比 TensorFlow 快得多。 在這兩個框架中做出決定將取決於您找到每個框架的學習方法的可訪問性。 您的選擇還取決於您組織的要求。

如果您有興趣了解有關機器學習的更多信息,請查看 IIIT-B 和 upGrad 的機器學習和 AI 執行 PG 計劃,該計劃專為工作專業人士設計,提供 450 多個小時的嚴格培訓、30 多個案例研究和作業、IIIT -B 校友身份,5 個以上實用的實踐頂點項目和頂級公司的工作協助。

參考

入門 – Pyro 文檔

模塊:tfp | TensorFlow 概率

機器學習如何與統計聯繫起來,反之亦然?

統計用於建立統計模型,以表示數據並從中得出結論或推論。 而機器學習利用這種統計模型來獲得對數據的理解並做出準確的預測。 因此,統計數據用於構建統計模型,以幫助正確、輕鬆地進行機器學習。

沒有統計學知識我能知道機器學習嗎?

統計和機器學習是相互關聯的。 如果你懂統計,你可以用統計模型的形式表示數據,然後用機器學習進行分析和預測。 因此,在機器學習之前了解統計數據將非常有幫助。 所以,如果你只知道統計的基礎知識,你就可以開始了。 您不必成為統計學專家也能在機器學習方面表現出色。

TensorFlow 對初學者來說容易學習嗎?

TensorFlow 是一個從頭到尾運行的開源機器學習平台。 TensorFlow 讓初學者和專業人士都能輕鬆創建機器學習模型。 如果你想從事機器學習工作,你需要花費 6 到 12 個月的時間來學習和完善你的 TensorFlow 能力。 但是,如果您了解 R 和 Python 等編程語言的基礎知識,就不會遇到太多麻煩。