確率的プログラミング言語入門

確率的プログラミングは、機械学習の分野で最も活発な開発分野の1つになっています。 私たちが知っておくべきトップの言語は何ですか?

ジーザス-ロドリゲス

フォローしている

2020年8月7日•7分読み取り

ソース: https://devclass.com/2019/07/01/mit-presents-gen-to-get-probabilistic-programming-for-ai-up-and-running/

私は最近、AI教育に焦点を当てた新しいニュースレターを開始しました。 これらの質問は、5分で読むことができる、no-BS(誇大宣伝、ニュースなどの意味はありません)AIに焦点を当てたニュースレターです。 目標は、機械学習プロジェクト、研究論文、概念を最新の状態に保つことです。 以下の購読して試してみてください:

確率的思考は、意思決定のための非常に貴重なツールです。 経済学者からポーカープレーヤーまで、確率の面で考えることができる人々は、不確実な状況に直面したときにより良い意思決定を行う傾向があります。 確率とゲーム理論の分野は何世紀にもわたって確立されてきましたが、人工知能(AI)の急速な進化とルネッサンスを経験していません。 ソフトウェアコードのファーストクラスの市民として確率を組み込むことはできますか? 確率的プログラミング言語(PPLs)の世界へようこそ

不確実性を克服するための統計の使用は、機械学習市場の大きなセグメントの柱の一つです。 確率論的推論は、長い推論アルゴリズムの基礎の一つと考えられており、表現されているすべての主要な機械学習のフレームワークとプラット 最近、確率論的推論は、Uber、Facebook、Microsoftのようなハイテク巨人の中で大きな採用を見て、研究と技術の議題を宇宙に押し進めるのを助けています。…………facebookを利用して、 具体的には、Pplは、いくつかの新しいエキサイティングな技術のリリースを引き起こす機械学習の開発の最も活発な分野の1つになっています。

概念的には、確率的プログラミング言語(PPLs)は、確率的モデルとそれらのモデルで推論を実行するための力学を記述するドメイン固有言語です。 PPLの魔法は、確率的手法の推論能力とプログラミング言語の表現力を組み合わせることに依存しています。

PPLプログラムでは、仮定はモデルの変数上の事前分布で符号化されます。 PPLプログラムは、実行中に、観測されたデータに基づいてモデルのパラメータの事後分布を自動的に計算する推論手順を起動します。 言い換えれば、推論は、より正確なモードを与えるために、観測されたデータを使用して事前分布を調整します。 PPLプログラムの出力は確率分布であり、プログラマは結果に関連する不確実性を明示的に視覚化して操作することができます。

Pplの単純さを説明するために、現代の統計の最も有名な問題の1つ、偏ったコイントスを使用しましょう。 この問題の考え方は、コインのバイアスを計算することです。 I番目のコイントスの結果がheadの場合はxi=1、tailの場合はxi=0と仮定しましょう。 我々の文脈では、個々のコイントスは独立しており、同一分布(IID)であり、各トスはパラメータλ:p(xi=1|λ)=λおよびp(xi=0|λ)=1−λを持つベルヌーイ分布に従うと仮定している。 潜在的な(すなわち、観測されていない)変数λは、コインのバイアスである。 タスクは、以前に観測されたコイントスの結果、すなわちp(π|x1,x2,. . . 、xN)。

汎用プログラミング言語で偏ったコイントスのような単純なプログラムをモデル化すると、何百行ものコードが生成される可能性があります。 しかし、EdwardのようなPplは、この問題をいくつかの単純なコードで表現しています。

The Holy Grail:Deep PPL

何十年もの間、機械学習空間は2つの相容れないキャンプ、すなわち統計とニューラルネットワークに分割されていました。 一つのキャンプは確率的プログラミングを生み出し、もう一つは深い学習のような変革の動きの背後にあった。 最近では、深層学習とベイズモデリングを単一のプログラムに統合するために、二つの思考の学校が一緒になってきました。 この努力の究極の表現は、deep probabilistic programming languages(Deep PPLs)です。

概念的には、深いPPLsは、確率的重みとバイアスを持つベイズニューラルネットワークを表現することができます。 実際に言えば、Deep Pplは、一般的なdeep learningフレームワークとシームレスに統合された新しい確率的言語およびライブラリとして具体化されています。

3深いPPLsあなたが知っておく必要がある

確率的プログラミング言語(PPLs)の分野は、近年の研究と革新で爆発しています。 その革新のほとんどは、Pplと深層学習の手法を組み合わせて、不確実性を効率的に処理できるニューラルネットワークを構築することから来ています。 Google、Microsoft、Uberなどのハイテク大手は、深いPplの境界を大規模なシナリオに押し込む責任があります。 これらの努力は、機械学習コミュニティ内でますます人気が高まっている完全に新しい深いPPLsスタックに変換されました。 のは、深いPPLスペースでの最新の進歩のいくつかを探検してみましょう。

Edward

EdwardはPythonで書かれたチューリング完全確率プログラミング言語(PPL)である。 EdwardはもともとGoogle Brainチームによって支持されていましたが、現在は貢献者の広範なリストを持っています。 Edwardのオリジナルの研究論文は2017年3月に出版され、それ以来、スタックは機械学習コミュニティ内で多くの採用を見てきました。 エドワードは、ベイズ統計と機械学習、ディープラーニング、確率的プログラミングの三つの分野を融合させています。 このライブラリは、KerasやTensorFlowなどの深層学習フレームワークとシームレスに統合されています。

Pyro

PyroはUber AI Labsからリリースされたdeep probabilistic programming language(PPL)である。 PyroはPyTorchの上に構築されており、4つの基本原則に基づいています:

  • 普遍:Pyroは普遍的なPPLであり、任意の計算可能な確率分布を表すことができます。 どう? 反復と再帰(任意のPythonコード)を持つ普遍的な言語から始め、ランダムサンプリング、観測、推論を追加することによって。
  • スケーラブル:Pyroは、手書きのコードよりもオーバーヘッドが少ない大規模なデータセットにスケールします。 どう? データのミニバッチを使用して推論を近似する現代のブラックボックス最適化技術を構築することによって。
  • Minimal:Pyroは機敏で保守性があります。 どう? Pyroは、強力で構成可能な抽象化の小さなコアで実装されています。 可能な限り、重い持ち上げはPyTorchや他のライブラリに委任されます。
  • 柔軟性:Pyroは、必要なときに自動化し、必要なときに制御することを目指しています。 どう? Pyroは、高レベルの抽象化を使用して生成モデルと推論モデルを表現し、専門家は推論を簡単にカスタマイズできます。

他のPplと同じように、Pyroは次のコードに示すように単純な構文を使用して深層学習モデルと統計推論を組み合わせます。

Infer.Net

マイクロソフトは最近オープンソースInfer.Net Net開発者のための確率的プログラミングを簡素化するフレームワーク。 Microsoft ResearchはInferに取り組んでいます。ネット2004年以来、それはフレームワークが本当に人気となっていることを、深い学習の出現で、ごく最近されています。 Infer.Net 深いPPLスペースに進出する開発者のための強力な選択肢になるいくつかの強力な差別化要因を提供します:

  • リッチモデリング言語”連続および離散の両方の単変量および多変量変数のサポート。 モデルは、算術演算、線形代数、範囲と正の制約、ブール演算子、ディリクレ離散、ガウス、および他の多くを含む要因の広い範囲から構築することができます。
  • 複数推論アルゴリズム”組み込みアルゴリズムには、期待伝播、信念伝播(EPの特殊な場合)、変分メッセージパッシング、ギブスサンプリングが含まれます。
  • 大規模な推論のために設計されています:Infer.NET モデルを推論ソースコードにコンパイルし、オーバーヘッドなしで独立して実行できます。 それはまたあなたの適用に直接統合することができる。
  • User-extendable:確率分布、因子、メッセージ操作、推論アルゴリズムはすべてユーザーが追加できます。 推論する。NETは、オープンエンドで適応可能なプラグインアーキテクチャを使用しています。

コイントスの例を見てみましょうInfer.Net

Deep PPLの分野は着実に機械学習エコシステムの重要な基礎ブロックになっています。 パイロ、エドワードとInfer.Net 深いPplの最近の3つの例だけですが、関連する唯一のものではありません。 深い学習フレームワークとPPLの交差点は、革新のための信じられないほどの大きなフットプリントを提供し、新しいユースケースは、近い将来に深いPPLsの境界

コメントを残す

メールアドレスが公開されることはありません。