Skip to main content
QUICK REVIEW

[論文レビュー] Differentiation of the Cholesky decomposition

Iain Murray|arXiv (Cornell University)|Feb 24, 2016
Parallel Computing and Optimization Techniques参考文献 11被引用数 21
ひとこと要約

この論文は、レベル3 BLAS演算を用いた、非常に効率的でブロック化されたアルゴリズムを導入し、Cholesky分解の微分を実行する。既存の手法よりも最大10倍の高速化を達成した。小さな行列に対しては記号的微分を、大きな行列に対してはLAPACKのDPOTRFに基づくアルゴリズム的更新を組み合わせることで、機械学習および最適化分野における高速な前向きおよび逆向きの自動微分を実現した。

ABSTRACT

We review strategies for differentiating matrix-based computations, and derive symbolic and algorithmic update rules for differentiating expressions containing the Cholesky decomposition. We recommend new `blocked' algorithms, based on differentiating the Cholesky algorithm DPOTRF in the LAPACK library, which uses `Level 3' matrix-matrix operations from BLAS, and so is cache-friendly and easy to parallelize. For large matrices, the resulting algorithms are the fastest way to compute Cholesky derivatives, and are an order of magnitude faster than the algorithms in common usage. In some computing environments, symbolically-derived updates are faster for small matrices than those based on differentiating Cholesky algorithms. The symbolic and algorithmic approaches can be combined to get the best of both worlds.

研究の動機と目的

  • 統計的および機械学習モデルにおいて重要な操作であるCholesky分解の微分を、より高速かつスケーラブルな方法で実現すること。
  • レベル2 BLASに依存する、Smith (1995) のような従来のアルゴリズム的手法の非効率性——特に大きな行列に対して遅いこと——を是正すること。
  • 小さな行列では記号的微分を、大きな行列ではアルゴリズム的更新を組み合わせることで、行列サイズに依存しない最適なパフォーマンスを達成すること。
  • 現在、Cholesky微分のネイティブサポートを備えていない現代の機械学習フレームワークにおいて、効率的な前向きおよび逆向きの自動微分を可能にすること。
  • 微分最適化されたルーチンを標準的な線形代数ライブラリに統合するよう提言し、微分可能なプログラミングにおけるパフォーマンスと使いやすさを向上させること。

提案手法

  • 行列微積分を用いて、Cholesky微分の記号的更新ルールを導出し、入力行列の摂動に対するCholesky因子の感度の正確な表現を提供する。
  • LAPACKのDPOTRFに基づくブロック化アルゴリズムを提案し、レベル3 BLAS演算(例:行列×行列乗算)を用いてキャッシュ効率と並列化を向上させる。
  • 前向きおよび逆向きの微分ルーチンを設計し、$O(N^4)$のフルヤコビ行列を明示的に計算せずに、Cholesky分解を通過する感度を伝搬する。
  • 行列のブロック分割を用いて計算を構造化し、行列積の必要最小限の三角部分のみを更新することで、無駄な計算を最小限に抑える。
  • 小さな行列では記号的更新を、大きな行列ではアルゴリズム的更新を組み合わせ、両アプローチの長所を活かす。
  • 標準的なBLASプリミティブを用いた効率的な実装を提供し、小さな三角ブロックを更新する補助ルーチンを備え、前向きおよび逆向き微分モードの両方をサポートする。

実験結果

リサーチクエスチョン

  • RQ1Smith (1995) のような従来のアルゴリズム的手法よりも、Cholesky分解をどのようにより効率的に微分できるか?
  • RQ2レベル2アプローチと比較して、ブロック化され、レベル3 BLASに基づくアルゴリズムがCholesky微分計算に与えるパフォーマンスへの影響は何か?
  • RQ3小さな行列では記号的微分を、大きな行列ではアルゴリズム的更新を組み合わせることで、さまざまな行列サイズで最適なパフォーマンスを達成できるか?
  • RQ4Theano や TensorFlow といった既存の自動微分ツールはなぜCholesky分解の微分を効率的に行えないのか。その問題はどのように是正できるか?
  • RQ5線形代数ライブラリにどのような変更を加えることで、Cholesky分解のような行列関数のネイティブで高性能な微分が可能になるか?

主な発見

  • レベル3 BLAS演算を用いたブロック化アルゴリズムは、大きな行列に対して広く使われているSmith (1995) アルゴリズムよりも最大10倍の高速化を達成した。
  • 小さな行列では、記号的微分更新がアルゴリズム的更新よりも高速であり、この範囲では好ましい。
  • 小さな行列では記号的更新、大きな行列ではブロック化アルゴリズム的更新を組み合わせることで、行列サイズに依存しない最良の全体的パフォーマンスが達成された。
  • 本研究で導出された前向きおよび逆向き微分ルーチンは計算的に効率的であり、数行のコードで実装可能である。
  • Theano や AutoGrad、TensorFlow の初期バージョンといった既存の自動微分フレームワークは、効率的なCholesky微分をネイティブにサポートしていないため、その必要があるモデルではパフォーマンスが制限される。
  • 三角行列および部分行列演算のための標準化されておらず、微分最適化されたBLASに類するルーチンの欠如がパフォーマンスを阻害している。今後のライブラリは、このギャップを埋めるべきである。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。