SR1法(SR1ほう、別称:対称ランクワン法、たいしょうランクワンほう、英: Symmetric Rank 1)とは、2点の導関数(勾配)の情報に基づいてヘッセ行列を更新する準ニュートン法の一種である。SR1法は多次元の問題に対するセカント法を一般化させたものである。更新される行列は対称行列であることは保証されるが、正定値性については保証されない。
SR1法で近似したヘッセ行列の列は緩い条件下の下で収束することが知られている。実用上でSR1法は他の解法(BFGS法やDFP法)よりも早く真のヘッセ行列に収束することが数値実験により知られている。[1][2]。SR1法は疎な行列や部分分割できる問題に対して計算上の利点を有する[3]。
2階微分可能な連続関数を x ↦ f ( x ) {\displaystyle x\mapsto f(x)} とし、勾配を ∇ f {\displaystyle \nabla f} 、ヘッセ行列を B {\displaystyle B} とする。関数 f {\displaystyle f} の点 x 0 {\displaystyle x_{0}} におけるテイラー展開は以下のように近似される:
また、勾配 ∇ f {\displaystyle \nabla f} に対するテイラー展開は以下のように近似される:
これら二つの近似式から B {\displaystyle B} を更新していく。ただし上記のセカント法による方程式は一意の解 B {\displaystyle B} をもつとは限らない。SR1法では以下のランク1更新式と呼ばれると呼ばれる式を用いて、十分に近似された対称行列 B k {\displaystyle B_{k}} を計算する[要説明]:
ただし、
である。近似した行列の逆行列に対応したヘッセ行列 H k = B k − 1 {\displaystyle H_{k}=B_{k}^{-1}} の更新は以下のようになる:
B k {\displaystyle B_{k}} は行列の更新において B k + 1 = B k + v v T {\displaystyle B_{k+1}=B_{k}+vv^{T}} の形となれば、 B k {\displaystyle B_{k}} が正定値行列であれば B k + 1 {\displaystyle B_{k+1}} も正定値行列となるが、 B k + 1 = B k − v v T {\displaystyle B_{k+1}=B_{k}-vv^{T}} の形となれば、 B k + 1 {\displaystyle B_{k+1}} は正定値性が保証されない。
これまでSR1法の更新式は幾度と再発見されてきた。SR1法において更新式の分母の項がゼロとなることを回避するために、以下の条件を満たす場合にのみ近似ヘッセ行列の更新を行う手法も提案されている:
このとき、 r ∈ ( 0 , 1 ) {\displaystyle r\in (0,1)} は 10 − 8 {\displaystyle 10^{-8}} のような十分に小さい数とする[4]。
SR1更新は密な行列を使用することから、大規模問題においては計算量が高くなることがある。計算効率を高めるためにL-BFGS法と同様に記憶制限SR1法が存在する[5]。L-SR1法では近似したヘッセ行列のすべての情報を持たずに、 m {\displaystyle m} 個の組 { ( s i , y i ) } i = k − m k − 1 {\displaystyle \{(s_{i},y_{i})\}_{i=k-m}^{k-1}} のみを利用して近似の行列を更新する。ただし、 Δ x i := s i {\displaystyle \Delta x_{i}:=s_{i}} とし、 m {\displaystyle m} は問題のサイズ n {\displaystyle n} より十分に小さい整数( m ≪ n {\displaystyle m\ll n} )とする。記憶制限による行列は以下のように表される:
B k = B 0 + J k N k − 1 J k T , J k = Y k − B 0 S k , N k = D k + L k + L k T − S k T B 0 S k {\displaystyle B_{k}=B_{0}+J_{k}N_{k}^{-1}J_{k}^{T},\quad J_{k}=Y_{k}-B_{0}S_{k},\quad N_{k}=D_{k}+L_{k}+L_{k}^{T}-S_{k}^{T}B_{0}S_{k}}
S k = [ s k − m s k − m + 1 … s k − 1 ] , {\displaystyle S_{k}={\begin{bmatrix}s_{k-m}&s_{k-m+1}&\ldots &s_{k-1}\end{bmatrix}},} Y k = [ y k − m y k − m + 1 … y k − 1 ] , {\displaystyle Y_{k}={\begin{bmatrix}y_{k-m}&y_{k-m+1}&\ldots &y_{k-1}\end{bmatrix}},}
( L k ) i j = s i − 1 T y j − 1 , D k = s i − 1 T y i − 1 , k − m ≤ i ≤ k − 1 {\displaystyle {\big (}L_{k}{\big )}_{ij}=s_{i-1}^{T}y_{j-1},\quad D_{k}=s_{i-1}^{T}y_{i-1},\quad k-m\leq i\leq k-1}
SR1法では更新の際に行列が正定値となるとは限らない。L-SR1法では信頼領域法と組み合わせて用いることが望ましい。記憶制限による行列を使用することで、信頼領域・L-SR1法は問題のサイズに対して線形のオーダーで計算することができ、L-BFGS法と同様に扱うことができる。