数値微分

数値微分

執筆済 数学数値計算
f′(x)≈f(x+h)−f(x)h(前進差分) f′(x)≈f(x+h)−f(x−h)2h(中心差分)

2 つの誤差の綱引き#

誤差 h を小さくすると
打ち切り誤差 𝒪(h) or 𝒪(h2) 減る
丸め誤差 𝒪(ε/h) 増える(桁落ち)

合計を最小にする h が存在する。

  • 前進差分 … h≈ε≈10−8
  • 中心差分 … h≈ε1/3≈6×10−6

h を小さくすればよい、は誤り。

コスト#

n 次元の勾配を求めるには

  • 前進差分 … n+1 回の評価
  • 中心差分 … 2n 回の評価

この n 倍が、量子計算で SPSA(次元によらず 2 回)が 選ばれる直接の理由。

自動微分という別解#

自動微分は差分ではなく連鎖律を機械的に適用する。

  • 打ち切り誤差が無い(機械精度)
  • 逆モードなら、全パラメータの勾配が関数評価 1 回ぶん程度のコスト

微分可能な計算グラフとして書けるなら、数値微分を使う理由はほぼ無い。

参考文献#

ノート一覧を閉じる