35
Nonlinear Optimization 2008/06/26 1.7 Quasi-Newton Method (準ニュートン法) 1.8 gradientも使えない時の話 1.7L-BFGSが出てくるので,1.7方が重要だと思うので,1.7中心に やります. 江原 遥

Nonlinear programming輪講スライド with 最適化法

Embed Size (px)

Citation preview

Page 1: Nonlinear programming輪講スライド with 最適化法

Nonlinear Optimization 2008/06/26

1.7 Quasi-Newton Method (準ニュートン法)

1.8 :gradientも使えない時の話 1.7でL-BFGSが出てくるので,1.7の方が重要だと思うので,1.7中心に

やります. 江原 遥

Page 2: Nonlinear programming輪講スライド with 最適化法

Newton Method復習:何でヘシアンの逆行列が必要だったんだっけ?

12

12

2

22

))((

)())((

0))(()(

0d)(

)||(||))(('2

1)'()()(

)(

xf

xfxfd

dxfxf

dxf

dodxfddxfxfdxf

xf

ヘシアンの逆行列:

ニュートン方向:

.で微分しての二次近似が最小

を二次で近似.

ヘシアンの逆行列が必要

Page 3: Nonlinear programming輪講スライド with 最適化法

ヘシアンは正定値がいい

ヘシアンが正定値⇒進めば必ず減尐

0)(';0

0)(';0

0)(';0

12

12

2

zxfzz

zxfzz

zxfzz

k

k

k

0)('

0)()()'(

)(

12

k

k

kkk

k

xfd

xfxfxf

xfz とおいて,

特に書いていませんが,次の事実も,一応,再確認: fが凸関数⇔ヘシアンは半正定値 (最適化法p.99) 行列Mが正定値⇔M^(-1)も正定値

)0)'(( k

k dxf

Page 4: Nonlinear programming輪講スライド with 最適化法

Newton Method →Quasi Newton Method

Newton

Quasi-Newton

1)Dkが常に正定値だと嬉しい 2)Naïveに実装するとメモリがたくさん必要 →実は,メモリは省メモリで済むよ=L-BFGS

Page 5: Nonlinear programming輪講スライド with 最適化法

どうやってヘシアンを近似するか: セカント条件

が成り立つ.

だから,

のとき,

))(()()(

)(,)(,)(

''2

1)(

121

112

kkkkk

kkkkk

xxxfxfxf

AxxfAxxfAxf

xbAxxxf

1.181のDを近似したい.

ここには書いてありませんが,1.182式はセカント条件というものです.

Page 6: Nonlinear programming輪講スライド with 最適化法

セカント条件:この辺で文字をまとめる

1.181のDを近似したい.

この本の記法はちょっと特殊 普通は,右のように表記する:

kkkkkk

kkk

kkk

k

k

syHysB

xfxfy

xxs

B

H

11

1

1

1

1

,

)()(

ヘシアンの近似:

似:ヘシアンの逆行列の近

Page 7: Nonlinear programming輪講スライド with 最適化法

セカント条件はこう考えれば当たり前

))(()()(

)(

)(

111 kkkkk

k

xxxdx

df

dx

dx

dx

dfx

dx

df

xdx

df

xf

るだけ.の一次近似をやってい数一次元で考えると,関

書いただけ.の一次近似をまとめて各成分ごとに見れば,

Page 8: Nonlinear programming輪講スライド with 最適化法

どうやって近似するか

))(()()( 121 kkkkk xxxfxfxf

q,pを次のように定義: kkk

kkk

xxp

xfxfq

1

1 )()(

より,すると, kkk pxfq )(2

Page 9: Nonlinear programming輪講スライド with 最適化法

で,BFGSに入るわけですが・・・

この本の書き方は,次のようになっています.

• いきなりBFGS公式が出現する

• 後から,その妥当性を説明する

Prop. 1.7.1 ヘシアン逆行列の近似行列が,必ず正定値になるように設計されている

Prop. 1.7.2, 1.7.3 共役勾配法との関係(目的関数がQuadraticなら最初のn個の結果は共役勾配法と一致) ただし,nは入力xの次元数.

Page 10: Nonlinear programming輪講スライド with 最適化法

に注意してDFPとBFGS を導入

.が最適),両者は一致線形探索が最適なら(

.の時,

.の時,

k

k

k

k

k

BFGS1;

DFP0;

)(

1

kkk

kkkk

xfDd

dxx

Page 11: Nonlinear programming輪講スライド with 最適化法

この本には書いていないこと:1

Hyy

HHyy

ys

ssHH

DFPybvyau

syH

yHvsu

bvvauuHH

vu

qxfxfy

pxxs

B

DH

kk

kk

kkk

kkkkk

kk

kkkk

kkkk

k

kk

'

'

'

'

1',1'

,

''

,

)(:)()(

)(:

)(:

1

1

1

1

1

1

11

公式が出てくる.として正規化すると,

を満たすようにして,セカント条件

とおいて,ここで,

ようにする.を用いて更新式を次のとりあえず,ベクトル

この本の

この本の

ヘシアンの近似:

この本の似:ヘシアンの逆行列の近

だから,DFP公式,BFGS公式がセカント条件を満たすのは,ある意味当たり前.

Page 12: Nonlinear programming輪講スライド with 最適化法

この本には書いていないこと:2 DFP公式→BFGS公式

).公式が出てくる(はずとに関する更新式に直す

列をとってに関する更新式の逆行できた

,に関して更新式を作りとして,セカント条件

の更新式でやって同じことを,ヘシアン

を課した式.セカント条件

として

行列の更新式をこれは,ヘシアンの逆

BFGS

''

''

'

'

'

'

1

1

1

1

1

k

k

kkk

kk

kkk

kk

kk

H

B

syB

bvvauuBB

syH

bvvauuHH

Hyy

HHyy

ys

ssHH

Page 13: Nonlinear programming輪講スライド with 最適化法

正定値性の証明

にしたいが正定値 1 kk DD

参考:Wolfの基準

を直線探索する.となるように

について,

k

kkkk dxfdxf

)'()'(

10

1

Page 14: Nonlinear programming輪講スライド with 最適化法

の意味 kkkk dxfdxf )'()'( 1

k

←この傾き<↓この傾き

kkkk dxfdxf )'()'( 1

Page 15: Nonlinear programming輪講スライド with 最適化法

BFGS公式の正定値性の証明 方針:正定値の定義そのまま

Page 16: Nonlinear programming輪講スライド with 最適化法

共役勾配法との関係

Page 17: Nonlinear programming輪講スライド with 最適化法

prop. 1.7.2の証明概要

1.195は次のようにしめす:

より,:

Page 18: Nonlinear programming輪講スライド with 最適化法

もうっちょっと言うと:

Page 19: Nonlinear programming輪講スライド with 最適化法

共役勾配法とBFGS

Page 20: Nonlinear programming輪講スライド with 最適化法

計算速度の観点

共役勾配法:

共役勾配が分かれば,共役方向の計算はO(n)

だけど,共役勾配の計算に時間がかかる

準ニュートン法:

ヘシアンの(逆行列の)計算にO(n^2)

Page 21: Nonlinear programming輪講スライド with 最適化法

L-BFGS

は,式を変形すると,こう書ける.: (実際,共立出版最適化法には,こっちで書いてある.)

Page 22: Nonlinear programming輪講スライド with 最適化法

L-BFGS

Page 23: Nonlinear programming輪講スライド with 最適化法

最初のD0をスケーリングすると 実際には重要な改善が見込める

重要:理論的には,ニュートン法は,アフィン変換(スケーリング)に対して,不変.しかし,実際には,最初のD0をスケーリングすると性能が改善して,よくあるのは次のような選び方:

condition number:

は,行列の正則性を見るための指標.この値が大きいほど,特異性(正則でない度合い)が強くなるので,これが,iterationの間に増加しないよう

にしたい.スケーリングすると,これができる(というか,むしろ,これを減尐させられる)

Page 24: Nonlinear programming輪講スライド with 最適化法

L-BFGSの高速実装

結論: 自分の知る限り,辻井研の岡崎直観さんのlibbfgsが最速っぽい.岡崎さんは,これをオープンソースにしているので,これを使うのがよさげ.

理由: 同じL-BFGSライブラリでも,直線探索はバラバラ.

libbfgsは,直線探索も吟味してある.また,計算をSSE2命令を使って高速化するのも試されていて,10%ほど早くなる.(ご本人は,これを大して早くならないと書いていますが・・・)

Page 25: Nonlinear programming輪講スライド with 最適化法

主なBFGSの実装

J. Nocedalコード 2000 :L-BFGSの原論文(1989)

f2c(J. Nocedal) 上記をf2cでC言語に.

Tsuruoka 2007

libbfgs (Okazakiさん) 2008

Page 26: Nonlinear programming輪講スライド with 最適化法

CRFとBFGSの対応表

工藤さん:CRF++,mecab:f2c(J.Nocedal)

岡崎さん:CRFsuite: libbfgs

清水さん:機械学習テンプレートライブラリ:Tsuruoka 2007

Page 27: Nonlinear programming輪講スライド with 最適化法

1.8 NONDERIVATIVE METHODS

central differenceはforward differenceの2倍の計算量だが,その分精度がいい.central differenceだと,ついでにHessianも計算できてしまう:

Page 28: Nonlinear programming輪講スライド with 最適化法

hの選び方

• 小さいhを使ってgradientを近似している

→どういうhを選べばいいのか?

hを(丸め誤差に対して)固定すると,丸め誤差に対して近似誤差が分かりやすくなる:

Page 29: Nonlinear programming輪講スライド with 最適化法

forward -> centralの切り替え タイミング

普通は,計算の楽なforwardで初めて,ある時からcentralで正確に計算し始める.その,切り替えるタイミングは,適当なεを決めておいて,

が成り立たなくなった時に,centralに切り替える.

Page 30: Nonlinear programming輪講スライド with 最適化法

Hessian

• 次のようにして二回微分(Hessian)を計算してNewton法をするという手もある.このとき,経験的には,このHessianの計算の精度はそこまで収束の早さに影響しないので,普通は,forwardで十分.余力があればcentralで.

Page 31: Nonlinear programming輪講スライド with 最適化法

Coordinate Discent

• あらかじめ独立なベクトルの集合を決めておいて,各ベクトルの方向に最適化していく.

Page 32: Nonlinear programming輪講スライド with 最適化法

並列化に使えます

Page 33: Nonlinear programming輪講スライド with 最適化法

steepest discentとの比較

Page 34: Nonlinear programming輪講スライド with 最適化法

Direct Search Methods

Coordinate Discentでは,あらかじめ,独立なベクトルの集合を決めておいて,各ベクトルの方向に最適化していった.

→「独立なベクトルの集合」そのものも,改善していけるとうれしい.それが,Direct Search Methods.

残念ながら,ヒューリスティクスでしかないが,一応,やり方はあって,Simplex Methodという(線形計画問題の単体法とは何の関係もない)

方針:「与えられた独立なベクトルの集合」の凸包を考えて,その頂点の中で最悪なコストを持つ頂点を,ましな頂点に変えていく.

Page 35: Nonlinear programming輪講スライド with 最適化法

終わり