機械学習における統計プログラミング:PyroとTFPの対比

公開: 2021-01-29

機械学習では、統計的または確率的プログラミングは、以下に示すように2つのプログラミング言語を使用して行われます。 簡単に紹介すると、確率的プログラミングは統計モデリングのツールです。 それは基本的に、私たちが解決策として統計モデルを作成および設計できる言語を使用して問題を解決することを意味します。

それは、コンピュータープログラミング言語を使用して統計の概念を適用することです。 確率モデルを使用すると、モデルのハイパーパラメータに関する信念が出力をどのように変化させるかを推測できます。

目次

有名な確率的プログラミング言語

1.パイロ

Pyroは、Pythonで記述され、バックエンドのPytorchによってサポートされている確率的プログラミング言語(PPL)です。 Pyroを使用すると、深層確率モデリング、ベイズモデリングにアクセスし、最新の深層学習アルゴリズムの最高のものを組み合わせることができます。 次のようにインストールできます。

pip3Pyro-pplをインストールします

または、ソースからインストールするには、次のコマンドを使用します。

git clone https://github.com/pyro-ppl/pyro.git

cdパイロ

pipinstall。[extras]

簡単なコード行を使用してPyroをインポートします。

パイロをインポート

2.テンソルフロー確率(TFP)

TFPは、TensorFlow上に構築されたPythonライブラリであり、GPUとTPUで確率モデルと深層学習モデルの組み合わせを可能にします。 これは、ドメイン知識を組み込んで関連する予測を理解および作成したい人なら誰でも使用できます。 TFPをインストールするには、コマンドまたはanacondaプロンプトに次のコマンドを入力します。

pip install –テンソルフローのアップグレード-確率

TFPは、次のコマンド行を使用してコードで使用できます。

tensorflow_probabilityをtfpとしてインポートします

世界のトップ大学であるマスター、エグゼクティブポストグラデュエイトプログラム、ML&AIの高度な証明書プログラムからオンラインで人工知能コースに参加して、キャリアを早めましょう。

パイロとTFPの対比

1.ドキュメント

PyroとTFPのドキュメントは優れており、豊富ですが、ニューラルネットワークの見通しからTFPの説明は少なくなっています。 パイロでは、モジュールpyro.nnは、深い確率的プログラミングのコンテキストで役立つニューラルネットワークモジュールの実装を示します。 TFPでは、tfp.layersはニューラルネットワークレイヤーを表し、それらが表す機能に不確実性があり、TensorFlowレイヤーを拡張します。

2.言語

TFPとPyroの両方のユーザーはPythonで書き込みます。 ただし、TFPの場合に関係するAPIは非常に冗長です。 つまり、解決策に到達するために、コードをさらに行わなければならない場合があります。 これは、プログラム全体をより細かく制御できるため、場合によっては良いこともありますが、Pyro内で短い形式で利用できる場合は悪いこともあります。

3.ランプアップ時間

Pyroを使用すると、コードの実行がより高速かつ効率的になり、新しい概念を学ぶ必要がなくなります。 一方、TFPには、プレースホルダー、変数スコープ、セッションなどの概念が必要であるため、実行に時間がかかります。

4.展開

TFPとPyroはどちらも、小規模なサーバー側に簡単に導入できます。 Pytorchとは異なり、モバイルおよびマイクロコンピューターまたは組み込みデプロイメントの場合、TensorFlowは効率的に機能します。 Pytorchと比較して、AndroidおよびIOSでのTensorFlowのデプロイに必要な労力は少なくて済みます。

5.グラフ

Tensorflowは、TorchやTheanoなどの他のライブラリと比較した場合に固有の、より優れた計算グラフの視覚化を備えています。 エドワードはTensorFlowに基づいて構築されており、計算グラフ、分散トレーニング、CPU / GPU統合、自動微分、TensorBoardによる視覚化などの機能を有効にします。 ただし、Pyroは、デモンストレーション機能や視覚化機能を提供していません。

TensorBoardに対するエドワードの干渉、出典:エドワード

6.マルコフ連鎖モンテカルロ

TFPは、大量のマルコフ連鎖モンテカルロ(MCMC)アルゴリズム(Metropolis、Gibbs、Hamiltonianなど)を実装します。このアルゴリズムの使用は、TensorFlowの確率分布といくつかの値反復アルゴリズムのサンプルです。 2018年まで、パイロはマルコフ連鎖モンテカルロを実行しませんでした。 更新され、MCMC、HMC、およびNUTSを完全にサポートしています。

7.オプティマイザ

TFPがNelder-Mead、BFGS、L-BFGS(制約のない非線形最適化問題を決定するため)を含むTensorFlowのいくつかのオプティマイザーを実装するのと同様に、PyroはPyTorchに存在するオプティマイザーを実装します。モジュールpyro.optimはPyroでの最適化のサポートを提供します。 。 2つのPPLは、基本モジュール(TensorFlowとPyTorch)に依存していると言えます。

ソース

8.バイジェクター

TFPでは、バイジェクターには確率密度の変数変換が含まれます。 ある空間から別の空間にマップする場合、初期空間の確率密度からターゲット空間の密度へのマップにも影響を与えます。

ただし、別の空間にマッピングしているため、後者の空間の確率密度の計算では、これらのマッピングアカウントを追跡する必要があります。 したがって、バイジェクターはスムーズなマッピングに使用されます。 パイロでは、ドキュメントにはバイジェクターについて何も記載されていないので、それらは持っていないと思います。

9.時系列

pyr.contrib.timeseriesモジュールは、アプリケーションの予測に役立つベイジアン時系列モデルのコレクションを提供します。 これは、Pyroの既存のForecasterオブジェクトを利用することで実現できます。 モデルに入力データを提供した後、情報に基づいた予測を行う方法をモデルに指示するだけです。

それはとても簡単で、データと確率論的フレームワークだけです。 ただし、TFPは、ベイズ構造時系列モデル(tfp.sts)のフレームワークとともに、CNNやRNNなどのTensorflowの時系列モデルを利用します。 ベイジアン構造時系列は、まだリリースされていない時系列モデルをフィッティングするための高レベルのインターフェースです。

ソース

10.ディストリビューション

これは、確率変数(たとえば、ベルヌーイ、ガウス)のプロパティ(たとえば、平均、分散)を構築および整理するための基本クラスです。 一例として、正規分布があります。 Pyroのほとんどのディストリビューションは、PyTorchディストリビューションの薄いラッパーです。 PyTorch配布インターフェースの詳細については、torch.distributions.distribution.Distributionを確認してください。 ただし、TFPにはモジュールtfp.distributionsがあります。

ソース

ソース

11.一般化線形モデル(GLM)

統計では、一般化線形モデルは、正規分布以外の誤差分布モデルを持つ応答変数を可能にする通常の線形回帰の柔軟な一般化です。 TFPでは、tfp.glmモジュールに、混合効果回帰モデルを近似するための高レベルのインターフェースが含まれています。 ただし、PyroにはGLM用のそのようなモジュールはありません。

ソース

結論

これらの要素を使用すると、PyroはTFPとそれほど変わらないと結論付けるのが安全です。 どちらもPythonプログラミング言語に基づいています。 PythonAPIは十分に文書化されています。 ただし、Pytorchの立ち上げ時間は良好であるため、TensorFlowよりもはるかに高速です。 これらの2つのフレームワークのどちらを選択するかは、それぞれの学習方法をどれだけアクセスできるかに依存します。 選択は、組織の要件によっても異なります。

機械学習について詳しく知りたい場合は、IIIT-BとupGradの機械学習とAIのエグゼクティブPGプログラムをご覧ください。このプログラムは、働く専門家向けに設計されており、450時間以上の厳格なトレーニング、30以上のケーススタディと課題、IIITを提供しています。 -B卒業生のステータス、5つ以上の実践的なキャップストーンプロジェクト、トップ企業との雇用支援。

参考文献

はじめに–Pyroのドキュメント

モジュール:tfp | TensorFlowの確率

機械学習は統計とどのように関連しており、その逆もありますか?

統計は、データを表現し、そこから結論または推論を引き出すために、統計モデルを構築するために使用されます。 機械学習はこの統計モデルを利用してデータを理解し、正確な予測を行います。 したがって、統計は、機械学習を適切かつ簡単に実行するのに役立つ統計モデルの構築に使用されます。

統計の知識がなくても機械学習を知ることはできますか?

統計と機械学習は相互に関連しています。 統計を知っている場合は、統計モデルの形式でデータを表現し、機械学習を使用して分析および予測を行うことができます。 したがって、機械学習の前に統計を知ることは非常に役立ちます。 ですから、統計の基本を知っているだけなら、行ってもいいでしょう。 機械学習でうまくいくために、統計学のプロである必要はありません。

TensorFlowは初心者にとって簡単に習得できますか?

TensorFlowは、最初から最後まで実行されるオープンソースの機械学習プラットフォームです。 TensorFlowを使用すると、初心者と専門家の両方が機械学習モデルを簡単に作成できます。 機械学習で作業したい場合は、TensorFlowの能力を研究して完成させるために6か月から12か月を費やす必要があります。 ただし、RやPythonなどのプログラミング言語の基礎を知っていれば、それほど問題はありません。