L-BFGS法
L-BFGS法の基となるBFGS法では、逆ヘッセ行列は以下のような漸化式で推定される。
H k + 1 = ( I − ρ k s k y k ⊤ ) H k ( I − ρ k y k s k ⊤ ) + ρ k s k s k ⊤ {\displaystyle H_{k+1}=(I-\rho _{k}s_{k}y_{k}^{\top })H_{k}(I-\rho _{k}y_{k}s_{k}^{\top })+\rho _{k}s_{k}s_{k}^{\top }}
kを一定として、ベクトル列qk−m, ..., qkをqk := gkおよびqi := (I − ρiyisi)qi+1により定義する。αi :=ρisiqi+1と定義すると、qi = qi+1 − αiyiによりqiをqi+1から再帰的に計算することができる。別のベクトル列zk−m, ..., zkをzi := Hiziにより定義する。このベクトル列はzk−m = H0kqk−m、βi :=ρisizi+1と定義することによりzi+1 = (αi − βi)siのように再帰的に計算でき、zkにより上昇方向を推定できる。
したがって、下降方向は次の疑似コードのようにして計算できる。
q = g k F o r i = k − 1 , k − 2 , .
L-BFGS-B法は、li ≤ xi ≤ uiの不等式で表わせる制約、いわゆるsimple box constraints (aka bound constraints)を変数に課すことができるようL-BFGS法を拡張したものである。ここで、liおよびuiは各xiごとの下限と上限を表わす定数である(変数によっては片方、もしくは両方がない場合もある)。このアルゴリズムは、(単純な勾配法を用いて)すべてのステップで固定変数と自由変数を分け、自由変数に対してのみ L-BFGS法を適用し、これを繰り返すことで問題を解く。