aleximmer/Laplace

Laplace approximations for Deep Learning.

Laplaceとは?

Laplaceは、あらゆるPyTorchニューラルネットワークにベイズ的な不確実性推論をもたらすPythonライブラリです。これはLaplace近似を実装しており、ネットワークのパラメータ周辺にガウス分布を当てはめることで、学習済みの決定論的モデルを確率的モデルに変換します。このライブラリを使用すると、以下のことが可能です:

  • すべての重み、選択したサブネットワーク、または最後の層のみに対する事後分布の近似。
  • 周辺尤度の推定(モデル比較に有用)。
  • 分類または回帰のための予測分布の生成(校正された不確実性の推定値を提供)。

このパッケージは研究論文 Laplace Redux – Effortless Bayesian Deep Learning (NeurIPS 2021) に関連しており、著者らはその論文の実験を再現するための別のリポジトリを提供しています。


使用方法

  1. インストール – コアパッケージはPyPIで laplace-torch として公開されています:
    pip install laplace-torch
    
    (2つ目の pip install コマンドでオプションのバックエンドを追加できます。)
  2. 学習済みモデルのラップ – PyTorchモデルを用意した後、Laplace オブジェクトを作成します:
    from laplace import Laplace
    la = Laplace(model, "classification",
                 subset_of_weights="all",
                 hessian_structure="diag")
    
    解決するタスク、確率的に扱うパラメータ、およびHessianの近似方法(例:対角行列)をクラスに指定します。
  3. 近似のフィッティング – 学習データローダーを使用して fit を呼び出します。ライブラリはMAP点における損失関数の(近似)Hessianを計算します。
  4. 事前分布の調整 – ガウス事前分布の精度はハイパーパラメータです。Laplaceは、グリッドサーチによる交差検証など、いくつかの自動化スキームを提供しています:
    la.optimize_prior_precision(method="gridsearch",
                                pred_type="glm",
                                link_approx="probit",
                                val_loader=val_loader)
    
  5. 不確実性を伴う予測 – フィッティング後、選択した予測近似を使用して予測確率(または回帰の場合は平均値/分散)を取得できます:
    pred = la(x, pred_type="glm", link_approx="probit")
    
    結果は単一点の推定値ではなく分布となり、校正された信頼度、分布外検知、モデル選択などに使用できます。

READMEには、より詳細なカスタマイズのための広範なドキュメントと開発者ガイドへのリンクがあります。


どのような人に役立つか?

  • 研究者:ベイズ深層学習、モデル選択、継続学習シナリオを探索しており、すぐに使える十分にテストされたLaplace実装が必要な方。
  • 実務者:すでにPyTorchモデルを持っており、完全なベイズニューラルネットワークを再学習することなく不確実性の定量化を追加したい方。
  • 学生:事後分布の近似を学習中の方。ライブラリのAPIは数学的なステップ(フィッティング → 事前分布の最適化 → 予測)を反映しており、実験が容易です。

制限事項と実務上の注意点

  • 近似は完全自動ではありません。Hessian構造(diag, kron, fullなど)、事前分布精度の最適化手法、および予測近似(GLM, MCなど)を選択する必要があります。READMEでは、これらの選択によってパフォーマンスが大きく変動する可能性があると警告されています。
  • 完全なHessianの計算はコストが高いため、ほとんどのユーザーは対角行列またはKronecker積による近似に依存しています。
  • このライブラリは現在 PyTorch のみを対象としており、他のフレームワークは標準ではサポートされていません。

クイックスタートチェックリスト

  1. pip install laplace-torch
  2. PyTorchモデルを学習またはロードする。
  3. Laplace(...) でラップし、タスクとHessianスタイルを指定する。
  4. fit(train_loader) を呼び出す。
  5. optimize_prior_precision で事前分布を調整する(gridsearchが安全なデフォルトです)。
  6. la(x, ...) を使用して予測分布を取得する。

詳細情報

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト