SR1法

提供: testwiki
ナビゲーションに移動 検索に移動

SR1法(SR1ほう、別称:対称ランクワン法、たいしょうランクワンほう、テンプレート:Lang-en-short)とは、2点の導関数(勾配)の情報に基づいてヘッセ行列を更新する準ニュートン法の一種である。SR1法は多次元の問題に対するセカント法を一般化させたものである。更新される行列は対称行列であることは保証されるが、正定値性については保証されない。

SR1法で近似したヘッセ行列の列は緩い条件下の下で収束することが知られている。実用上でSR1法は他の解法(BFGS法DFP法)よりも早く真のヘッセ行列に収束することが数値実験により知られている。[1][2]。SR1法は疎な行列や部分分割できる問題に対して計算上の利点を有する[3]

2階微分可能な連続関数を xf(x) とし、勾配fヘッセ行列B とする。関数 f の点 x0 におけるテイラー展開は以下のように近似される:

f(x0+Δx)f(x0)+f(x0)TΔx+12ΔxTBΔx;

また、勾配 f に対するテイラー展開は以下のように近似される:

f(x0+Δx)f(x0)+BΔx,

これら二つの近似式から B を更新していく。ただし上記のセカント法による方程式は一意の解 B をもつとは限らない。SR1法では以下のランク1更新式と呼ばれると呼ばれる式を用いて、十分に近似された対称行列 Bk を計算するテンプレート:要説明:

Bk+1=Bk+(ykBkΔxk)(ykBkΔxk)T(ykBkΔxk)TΔxk

ただし、

yk=f(xk+Δxk)f(xk)

である。近似した行列の逆行列に対応したヘッセ行列 Hk=Bk1 の更新は以下のようになる:

Hk+1=Hk+(ΔxkHkyk)(ΔxkHkyk)T(ΔxkHkyk)Tyk.

Bk は行列の更新において Bk+1=Bk+vvT の形となれば、Bk が正定値行列であれば Bk+1 も正定値行列となるが、Bk+1=BkvvT の形となれば、Bk+1 は正定値性が保証されない。

これまでSR1法の更新式は幾度と再発見されてきた。SR1法において更新式の分母の項がゼロとなることを回避するために、以下の条件を満たす場合にのみ近似ヘッセ行列の更新を行う手法も提案されている:

|ΔxkT(ykBkΔxk)|rΔxkykBkΔxk,

このとき、r(0,1)108 のような十分に小さい数とする[4]

記憶制限

SR1更新は密な行列を使用することから、大規模問題においては計算量が高くなることがある。計算効率を高めるためにL-BFGS法と同様に記憶制限SR1法が存在する[5]。L-SR1法では近似したヘッセ行列のすべての情報を持たずに、m 個の組 {(si,yi)}i=kmk1 のみを利用して近似の行列を更新する。ただし、Δxi:=si とし、m は問題のサイズ n より十分に小さい整数(mn)とする。記憶制限による行列は以下のように表される:

Bk=B0+JkNk1JkT,Jk=YkB0Sk,Nk=Dk+Lk+LkTSkTB0Sk

Sk=[skmskm+1sk1], Yk=[ykmykm+1yk1],

(Lk)ij=si1Tyj1,Dk=si1Tyi1,kmik1

SR1法では更新の際に行列が正定値となるとは限らない。L-SR1法では信頼領域法と組み合わせて用いることが望ましい。記憶制限による行列を使用することで、信頼領域・L-SR1法は問題のサイズに対して線形のオーダーで計算することができ、L-BFGS法と同様に扱うことができる。

脚注

テンプレート:脚注ヘルプ テンプレート:Reflist

関連項目

テンプレート:最適化アルゴリズム