Your SlideShare is downloading. ×
CVIM#11 3. 最小化のための数値計算
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

CVIM#11 3. 最小化のための数値計算

7,427
views

Published on

CVIM勉強会#11 1章バンドルアジャストメント 3. 最小化のための数値計算

CVIM勉強会#11 1章バンドルアジャストメント 3. 最小化のための数値計算

Published in: Technology

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,427
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
56
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 第11回CV勉強会1章 バンドルアジャストメント3. 最小化のための数値計算 (勉強会後修正版) 2011-04-16 Yoshihiko Suhara @sleepy_yoshi
  • 2. 目次• 3. 最小化のための数値計算 – 3.1 最小二乗のためのニュートン法 – 3.2 ニュートン法以外の方法 – 3.3 実装方法 – 3.4 数値計算ライブラリの利用 2
  • 3. 3. 最小化のための数値計算 3
  • 4. 誤差の数値最小化• 誤差関数の最小化 (最適化) – 観測データを用いて表現される誤差関数を最小化するパ ラメータを計算する• 今回の範囲では 2 1 2 = 2 – 誤差 • 二乗誤差 – パラメータ • カメラのパラメータ • 特徴点 4
  • 5. 3.1. 最小二乗のためのニュートン法 5
  • 6. 最小二乗法の計算• 線形最小二乗法 – 閉じた解で求まる (正規方程式)• 非線形最小二乗法 – 反復計算が必要 – (+1) = () + 6
  • 7. 3.1.1 ガウス・ニュートン法 7
  • 8. 最急降下法• 一次微分 (一次近似) を利用する方法 (+1) = − ( )• 誤差関数のパラメータに関する微分がわかればよい – ただし,進む方向しかわからないので,学習率が必要 – 学習率が大きいと最適解を飛び越えてしまう可能性 E(x) 8 (1) (2) x
  • 9. ニュートン法• 二次微分 (二次近似) を利用する方法 (+1) = − −1 – 解の周辺での収束が早い• 二階微分の情報 (ヘッセ行列) が必要 – さらにヘッセ行列の逆行列計算も必要 E(x) 9 (1) (2) (3) x
  • 10. ニュートン法 (一変数の場合)• テイラー展開 (二次の項まで) 1 ′′ + = + ′ + 2 2 ′ 1 ′′ 2• + + 2• これを最小化するを求める – で微分して0とおく ′ + ′′ = 0 ′ = − ′′ 10
  • 11. ニュートン法 (多変数の場合)• 多変数の場合 1 • + = + + H 2 • gはEの勾配ベクトル,Hはヘッセ行列• 右辺をで微分して0とおくと以下を得る = −H −1 11
  • 12. ヘッセ行列が正定値である必要性• ヘッセ行列が正定値=二次微分が正 – 二次近似が全てのxについて凸関数になっていると いう保証 – そうでなければ,どこかで凹となる次元が発生 E(x) これはマズい 12 (+1) () x
  • 13. ガウス・ニュートン法 ≠ ニュートン法• ガウス・ニュートン法 ∈ ニュートン法 – ニュートン法の実現方法の一種• ガウス・ニュートン法を利用する目的 – ヘッセ行列を計算するのは大変 – 逆行列を計算してはいけない (数値計算の常識) – ヤコビ行列の積によって表現 13
  • 14. ガウス・ニュートン法とは• ≈ という近似を用いたニュートン法 – はヤコビ行列• ≈ の精度が高くなるのは最小解付近や eの二階微分が小さい場合など (後で証明) 14
  • 15. ヤコビ行列 1 1 ⋯ 1 • J= = ⋮ ⋱ ⋮ ⋯ 1 • ≈ J J 2 =1 ⋯ =1 1 1 • J J = ⋮ ⋱ ⋮ 2 =1 ⋯ =1 1 15
  • 16. ヤコビ行列を使った表現• ≡ − = −J なぜ? 1 1 2 • = ⋮ = 2 = 1 1 1 1 ⋯ 1 1 1• JT = ⋮ ⋱ ⋮ = ⋮ 1 ⋯ 16
  • 17. ガウス・ニュートン近似の導出• 誤差関数を で微分 = • さらに で微分 2 = + • が解に近いと ≈ 0 ∀ より ≈ 17
  • 18. アルゴリズム1. 適当な初期値を設定2. パラメータにおけるJ Jおよび−J を計算3. JT J = −J を解いて を算出4. 更新 ← + 5. 収束判定 – 変化量 /||あるいは / が十分小さ いとき終了.そうでなければ2へ. 18
  • 19. おさらい• 線形最小二乗法は閉じた解でパラメータが求 まる – そもそも反復計算がいらない• ガウス・ニュートン法は誤差関数を二乗和の 形で表現できないと利用できない• よって,ガウス・ニュートン法はまさしく非線形 最小二乗法のための方法 19
  • 20. 3.1.2. レベンバーグ・マーカート法 20
  • 21. レベンバーグ・マーカート法• ガウス・ニュートン法+最急降下法 – 初期は最急降下法で進み,解の近くでガウス・ ニュートン法に切り替える – ダンピングファクタを利用 ( ≥ 0) • 大: 最急降下法 • = 0: ガウス・ニュートン法 – J J + I = −J • 解釈 – = − J J + I −1 J 21
  • 22. の設定方法1. 適当な値から始める2. (21)式を解いてを求める3. E + ≥ ()の場合,を10倍する.そ うでなければ,を0.1倍する4. 収束しなければ2.に戻るE(x) 上ってしまったら最急降下法気味に 下がる限りはガウス・ニュートン法気味に 22 x
  • 23. 3.2. ニュートン法以外の方法 23
  • 24. ニュートン法以外の方法• ニュートン法の派生アルゴリズムは,標準的 に使用すべし – 準ニュートン法• ヘッセ行列の分解コストが大きい場合にのみ 共役勾配法の使用を検討すればよい• ニュートン法の計算を削減することは可能 – 後述 24
  • 25. 補足• NLPや機械学習応用分野においては準 ニュートン法であるBFGS (L-BFGS) 法がよく使 われる – 基本的に誤差関数は凸関数であることが多い – 他には共役勾配法も有効な場合もある 25
  • 26. 3.3. 実装方法 26
  • 27. 3.3.1 更新量の計算 27
  • 28. 線型方程式の計算• ニュートン法における反復では,以下の線型 方程式を効率よく計算することがカギとなる A = • 逆行列を使えば以下の式で求まるが,計算 量,精度で問題あり = A−1 – 数値計算の常識 28
  • 29. 線型方程式の解法• 一般の行列Aに対する選択肢 – ガウスの消去法 – LU分解 – コレスキー分解 • 行列Aが対称かつ正定値の場合 29
  • 30. LU分解とコレスキー分解• LU分解 (A = LU) ⋯ ⋯ A= ⋮ ⋱ ⋮ ⋮ ⋱ ⋮ ⋯ ⋯• コレスキー分解 (A = LLT ) ⋯ ⋯ A= ⋮ ⋱ ⋮ ⋮ ⋱ ⋮ ⋯ ⋯ 30
  • 31. コレスキー分解を用いた解法• 準備 – ≡ L とおく – A = LL = L = • 手順 1. Aをコレスキー分解し,Lを得る 2. L = をについて解く • Lが三角行列なので,Lの行を上から順番に処理すれ ば計算できる 3. LT δ = をδについて解く • 上記の逆 31
  • 32. 補足: 前進代入と後退代入 1 2 = 1 −1 = 32
  • 33. コレスキー分解の処理• 省略 – 行列の数値計算の文献を参照• 行列の行数分だけ平方根の計算が必要 – 修正コレスキー分解 33
  • 34. その他の方法• ガウスの消去法 – 計算量が若干大きい• 等価な線型最小二乗法を解く J + 2 → min. – 導出 • JT J = −JT • J + = 0 • 閉じた解で求めるために二乗 – その際のレベンバーグ・マーカート法は(23)となる • 優決定線型方程式の計算 34
  • 35. 補足: 優決定,劣決定• 優決定 – 変数の数<方程式の数 – 解が存在しない可能性• 劣決定 – 変数の数>方程式の数 – 解は複数存在 35
  • 36. 3.3.2 疎行列の扱い 36
  • 37. 疎行列• バンドル調整が対象とする多くの問題ではヤ コビ行列やヘッセ行列は疎行列になる – が に依存していなければ / は常に0• SFMの例 – はある画像上の像の誤差 – この画像に関連しないカメラの姿勢に依存しない – 図1.3 37
  • 38. 疎行列の活用方法• (1) 行列の実装方法 – 非ゼロ成分だけを保存しておく – 例) Boost, Sparse BLAS – 図1.3(c) # y軸は対数スケール• (2) 得られる行列を疎行列にする – 元の行列が疎でも,計算途中で非ゼロ成分が発 生することがある (fill-in) – Aを直接コレスキー分解するよりも,PAPT を分解 する方が疎となるような置換Pを利用 • ただ,最適な置換Pを計算するのはNP 38
  • 39. 3.3.4 パラメータの分割 39
  • 40. Resection-intersection• SFMの未知パラメータ の分割 – カメラのパラメータ 1 – 点の空間座標 2• 片方を固定して交互にパラメータ探索 (1) 1 を固定して,/2 = の解2 を計算 (2) 2 を固定して,/1 = の解1 を計算• 利点 – (1), (2)いずれかが線形に行える場合,反復計算なしに解 を求めれ,残ったパラメータを反復計算して求めることが できる 40
  • 41. ブロック分割の利用 A11 A12 1 1 = … (24) A21 A22 2 2 A11 1 + A12 2 = 1 A21 1 + A22 2 = 2• 2 = −1 (−21 1 + 2 ) を代入し,以下を得る 22 A11 − A12 A−1 A21 1 = 1 − A12 A−1 2 … (25a) 22 22 A22 2 = 2 − A21 1 … (25b)• これを順に計算すれば,(24)式を直接解いたが得られる 41
  • 42. 補足: シューア補行列• A11 − A12 A−1 A21 はA11 のシューア補行列と 22 呼ばれる −1A11 A12 11 12 ≡ としたとき,A21 A22 21 22• 11 = A11 − A12 A−1 A21 となる性質がある 22 42
  • 43. ブロック小行列を用いた逆行列の計算• ブロック分解を用いると,効率よく計算可能 A1 ⋯ • A22 = ⋮ ⋱ ⋮ ⋯ A A−1 1 ⋯ • A−1 22 = ⋮ ⋱ ⋮ ⋯ −1 43
  • 44. 3.4. 数値計算ライブラリの利用 44
  • 45. 数値計算ライブラリ• 最適化ライブラリ – MATLAB (Optimization Toolbox) • lsqnonlin関数 – Trust-region法,レベンバーグ・マーカート法,ガウス・ニュートン法 –R • optim関数 – Nelder-Mead法,BFGS法, L-BFGS-B法, CG法,SANN法• 線型代数演算ライブラリ – LAPACK• 数値計算ライブラリ – BLAS – BLAS亜種 45
  • 46. まとめ 46
  • 47. まとめ• 非線形最小二乗法の最適化手法の紹介 – ガウス・ニュートン法 – レベンバーグ・マーカート法• 実装方法の解説 – コレスキー分解を用いた線型方程式の計算 – 疎行列の活用方法 – パラメータ分割• 数値計算ライブラリの紹介 47
  • 48. 感想• フリーで利用可能な最適化ライブラリはかな り充実している – けど,何をどう選択すればよいのかわからない • 解きたい問題をどう定式化するかによって利 用可能な/得意なツールは異なってくる – その勘所をつけたいなぁ• 数値計算の常識を身につけたい 48
  • 49. 参考文献• 金谷健一.これなら分かる最適化数学.共立 出版 (2005). – ガウス・ニュートン近似やレベンバーグ・マーカー ト法の導出もあり• 伊理正夫・藤野和建.数値計算の常識.共立 出版 (1985). – 「逆行列よさようなら」 – 数値計算のノウハウが詰まっている 49
  • 50. Thank you! 50