Skip to main content
QUICK REVIEW

[論文レビュー] Provably Correct Automatic Subdifferentiation for Qualified Programs

Sham M. Kakade, Jason D. Lee|arXiv (Cornell University)|Sep 23, 2018
Numerical Methods and Algorithms参考文献 12被引用数 4
ひとこと要約

本稿では、機械学習でよく用いられる非滑らかで区分的定義された関数のクラスに対して、一般化(クラーク)部分勾配を計算する、証明可能に正しい自動部分微分法を提案する。この手法は、自動微分を拡張して、滑らかでない関数に対しても部分勾配を計算するものであり、弱い制約適合条件のもとで、関数評価コストの最大6倍のコストで部分勾配が計算可能であることを示す「安価な部分勾配原理」を確立する。この原理により、従来のライブラリが失敗する非微分可能点であっても正しく計算できる。

ABSTRACT

The Cheap Gradient Principle (Griewank 2008) --- the computational cost of computing the gradient of a scalar-valued function is nearly the same (often within a factor of $5$) as that of simply computing the function itself --- is of central importance in optimization; it allows us to quickly obtain (high dimensional) gradients of scalar loss functions which are subsequently used in black box gradient-based optimization procedures. The current state of affairs is markedly different with regards to computing subderivatives: widely used ML libraries, including TensorFlow and PyTorch, do not correctly compute (generalized) subderivatives even on simple examples. This work considers the question: is there a Cheap Subgradient Principle? Our main result shows that, under certain restrictions on our library of nonsmooth functions (standard in nonlinear programming), provably correct generalized subderivatives can be computed at a computational cost that is within a (dimension-free) factor of $6$ of the cost of computing the scalar function itself.

研究の動機と目的

  • TensorFlow や PyTorch のような人気のある機械学習ライブラリが非微分可能点で正しく部分勾配を計算できないという問題を解消すること。
  • 滑らかでない局所リプシッツ連続関数に対して、滑らかな関数における「安価な勾配原理」と類似した「安価な部分勾配原理」を確立できるかを調査すること。
  • 制約適合条件を満たすプログラムに対して、一般化(クラーク)部分勾配を証明的に正しく計算する計算モデルとアルゴリズムフレームワークを構築すること。
  • 自動微分を非滑らか関数(例:ReLU、絶対値、線形代数演算(SVD、固有値など))に拡張し、部分勾配の正しさを保証すること。
  • 物理シミュレーターやオンライン学習システムなどの安全が求められる応用分野における数値的に安定で正しく部分勾配を計算する基盤を構築すること。

提案手法

  • 本手法は、区分的関数の構造を尊重するチェインルールを用いて、逆モード自動微分を拡張し、制限的総微分(limiting total derivative)を計算する。
  • 各関数を線形不等式で定義される領域の有限和として表現する新しい計算モデルを導入し、各領域で多項式としての滑らか成分を定義する。
  • 各関数について、入力摂動の方向に基づいて有効な領域を特定し、極限過程を用いて正しい部分勾配を選択する。
  • コアアルゴリズムであるアルゴリズム6は、摂動の方向における有効な多項式成分の勾配を評価することで部分勾配を計算する。
  • ライブラリ関数はアルゴリズム7によりオーバーロードされ、関数値、方向微分、および部分勾配を返す。この際、摂動の方向で「活性化」される領域を特定する。
  • 制約適合条件(仮定3.1)に依存することで、有効な領域が一意に定まり、同値なプログラム表現間で部分勾配が一貫することが保証される。

実験結果

リサーチクエスチョン

  • RQ1機械学習で広く用いられる非滑らかで区分的定義された関数の広いクラスに対して、証明的に正しい自動部分微分法を設計できるか?
  • RQ2関数評価コストの定数倍(次元に依存しない)で済むような「安価な部分勾配原理」が存在するか?
  • RQ3なぜ既存のライブラリ(例:TensorFlow や PyTorch)は数学的に同値なプログラムに対して一貫しない部分勾配を出力するのか?この問題を形式的に解消できるか?
  • RQ4SVD や固有値、QR分解といった非滑らか線形代数演算に対しても、正しい部分勾配計算を可能にするフレームワークを拡張できるか?
  • RQ5丸め誤差や近似的退化状態の存在下でも、部分勾配計算における数値的安定性と正しさを保証する条件は何か?

主な発見

  • 本稿では、「安価な部分勾配原理」を確立し、一般化部分勾配が関数評価コストの最大6倍で計算可能であることを示した。これは入力次元に依存しない。
  • 現在のライブラリ(例:TensorFlow や PyTorch)が失敗する非微分可能点(例:ReLU(x) や |x| の原点)でも、本手法は正しく部分勾配を計算できる。
  • 数学的に同値なプログラム(例:f1(x)=x、f2(x)=ReLU(x)−ReLU(−x)、f3(x)=10f1(x)−9f2(x))に対しても、本手法は一貫した部分勾配を出力する。これに対して既存のライブラリは一貫性がない。
  • 摂動の方向に基づく極限過程を用いることで、アルゴリズムは正しく有効な領域に対応する部分勾配を保証する。
  • フレームワークは単変数区分的多項式へも拡張可能であり、制約適合条件下ではより複雑な関数へ一般化可能である。
  • 本手法は、物理シミュレーションやオンライン学習などの安全が求められる応用分野における数値的に安定で、証明的に正しい部分微分計算の基盤を提供する。

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

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

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

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