🦎PyroはPythonで書かれ、バックエンドでPyTorchによってサポートされるユニバーサルな確率プログラミング言語(PPL)です。

Pyroは、最新のディープラーニングとベイズモデリングの長所を統合し、柔軟で表現力豊かな深層確率モデリングを可能にします。Pyroは、以下の主要原則に基づいて設計されています:

https://pyro.ai/

確率的プログラミング言語(PPL:Probabilistic Programming Languages)は、確率モデルを構築し、それらのモデルの推論を行うために使用されます。多くのPPLはベイズ統計に基づいているので、ベイズ推論を採用していることが一般的です。しかし、すべてのPPLがベイズ統計に限定されているわけではありません。

ベイズ統計学は、事前知識や観測データを組み合わせて、未知のパラメーターの確率的な推定を行う方法論です。このアプローチは、不確実性を扱う強力なフレームワークを提供しますが、PPLは他の統計的手法やアルゴリズムをサポートすることもできます。たとえば、非ベイズ的な頻度主義的アプローチや、機械学習のアルゴリズムを利用するPPLも存在します。

非ベイズ的な頻度主義的アプローチは、統計学の一分野であり、特にデータからの推定や検定に関して異なる視点を提供します。ベイズ統計と対比されることが多く、以下にその特徴や一般的な方法論をいくつか示します。

  1. 最尤推定(Maximum Likelihood Estimation, MLE): 最尤推定は、観測されたデータが得られる確率(尤度)を最大化するパラメータを見つける方法です。これは、特定の確率モデルの下でのパラメータの点推定を行う際に広く用いられます。

  2. 信頼区間(Confidence Intervals): 信頼区間は、パラメータが含まれると考えられる区間を提供します。これは、パラメータの不確実性の範囲を示すために使用され、指定された信頼水準(通常95%など)で計算されます。

  3. 仮説検定(Hypothesis Testing): 仮説検定は、統計的な仮説(例えば、平均値の差、比率の差など)を検証するプロセスです。これには、帰無仮説(何も変化がない、または差がないという仮説)と対立仮説(帰無仮説に対する仮説)の設定が含まれます。

  4. t検定、ANOVA(分散分析): これらは特定の種類の仮説検定であり、例えばt検定は2つのグループ間の平均値の差を検証し、ANOVAは3つ以上のグループ間での平均値の差異を検討します。

  5. 回帰分析: 回帰分析では、一つまたは複数の予測変数と応答変数との関係をモデル化します。線形回帰やロジスティック回帰などがあります。

これらの方法は、パラメータやモデルに対する確率的な解釈を提供するのではなく、長期的な頻度に基づいた解釈を行います。すなわち、同じ実験を多数回繰り返した場合に観測されるパターンや性質に焦点を当てます。ベイズ統計とは異なり、これらのアプローチは事前分布の使用を必要とせず、データ自体からの推論に重点を置きます。

SVI
エルボ
重要性
再重み付けウェイク-スリープ
逐次モンテカルロ法
スタイン法
尤度フリー法
離散推論
予測ユーティリティ
MCMC
自動ガイド生成
リパラメータライザ
推論ユーティリティ

確率は、微積分が変化率に関する推論を行う数学であるのと同様に、不確実性の下での推論を行う数学である。確率の言語で構築されたモデルは、複雑な推論を理解し、知らないことを知り、監視なしにデータの構造を明らかにすることができる。
確率モデルを直接指定するのは面倒であり、また実装する際にエラーが発生しやすい。確率プログラミング言語(PPL)は、確率とプログラミング言語の表現力を結びつけることによって、これらの問題を解決する。確率プログラムは、通常の決定論的な計算と、データの生成過程を表すランダムにサンプリングされた値をミックスしたものである。
確率プログラムの結果を観察することで、推論問題を記述することができる: 「もしこのランダムな選択がある観測値を持つなら、何が真でなければならないか。PPLは、モデルの指定、答えとなるクエリ、答えを計算するアルゴリズムとの間で、確率の数学ですでに暗黙の了解となっている関心事の分離を明示的に強制する。
PyroはPythonとPyTorchで構築された確率プログラミング言語です。Pyroのプログラムは単なるPythonプログラムですが、主な推論技術は確率変分推論であり、抽象的な確率論的計算をPyTorchの確率的勾配降下で解かれる具体的な最適化問題に変換し、確率論的手法をこれまで困難であったモデルやデータセットのサイズに適用できるようにします
このチュートリアルでは、確率的機械学習と Pyro を使った確率的プログラミングの基本的な概念について、簡単な解説を行います。機械学習で最も一般的で基本的なタスクの1つである線形回帰を含むデータ分析問題の例を通して行います。Pyroのモデリング言語と推論アルゴリズムを使って、回帰係数の推定値に不確実性を組み込む方法を紹介します。

https://pyro.ai/examples/intro_long.html

はじめに

概要

セットアップ

背景:確率的機械学習

背景:確率モデル

背景:推論、学習、評価

例 地理と国民所得

Pyroのモデル

モデルの例 最尤線形回帰

背景: pyro.sampleプリミティブ

背景: pyro.paramプリミティブ

背景: pyro.plateプリミティブ

例: 最尤回帰からベイズ回帰へ

Pyroでの推論

背景: 変分推論

背景 柔軟な近似後置としての "ガイド "プログラム

例: Pyroでのベイズ線形回帰の平均場変分近似

背景 証拠下界(ELBO)の推定と最適化

例 確率的変分推論(SVI)によるベイズ回帰

Pyroでのモデル評価

背景 事後予測チェックによるベイズモデル評価

例: Pyroにおける事後予測の不確実性

例: フルランクガイドによるベイズ回帰の再検討


お願い致します