ロボットにおける数値最適化 (8) - 準ニュートン法 (前編)

   このシリーズの記事は、主に「数値最適化」を学習する過程での私のメモと関連する考えの一部についてです. 主な学習教材は、Deep Blue Academy のコース「Numerical Optimization in Robots」と、Gao 編集の「Numerical Optimization Method」です。 Li など, このシリーズの記事は多数あり、随時更新されています。前半では制約なしの最適化を紹介し、後半では制約付きの最適化を紹介します。途中にパス プランニングの応用例がいくつか散りばめられます。



   10. 準ニュートン法

   1. 準ニュートン法入門

   ニュートン法の欠点は、ヘッセ行列∇ 2 f ( xk ) \nabla^2 f(x_k) を反復ごとに計算する必要があることです。2 f(x)、この目的のためには、n(n + 1)/2 の 2 次偏導関数を計算する必要があります。この方法で生成された反復点が最小点に十分に近づくことができない場合、 ∇ 2 f ( xk ) \nabla^2 f(x_k)2 f(x)は保証できません。Newton 法の利点は 2 次の収束速度にあるため、2 次の偏導関数の計算を必要とせず、より収束速度の速い方法を構築できないかということが考えられます。

ここに画像の説明を挿入します
   ヘッセ行列を近似する行列 M を構築したいとします。その場合、M はどのような条件を満たす必要がありますか?

   ①:全要素の二次導関数を計算する必要はないはず

   ②: 一次方程式を明示的に解く必要はなく、すぐに解けるように方程式は閉形式の解を持つ必要があります。

   ③:フルランクでなくても良いので収納がコンパクトであること

   ④: 下向きを維持すること、つまり正定値であること

   ⑤: 曲率情報 (局所二次近似) を含む必要があります。つまり、ヘッセ行列を近似する必要があります。

ここに画像の説明を挿入します


   下図の導出から、近似行列 M が正定行列の場合、探索方向が負の勾配方向と鋭角であることが保証され、探索方向が保証できることがわかる。下降方向になります。

ここに画像の説明を挿入します


   ☆☆☆注: Deep Blue Academy コースのロボットの数値最適化では、H はヘシアン行列を表すために使用され、M はヘシアン行列の近似を表すために使用され、B は M の逆行列を表すために使用されます。および数値最適化法 (Gao Li 編) 本書では、B はヘッセ行列の近似を表すために使用され、H は B の逆行列を表すために使用されます。 数値最適化法 (Gao Li 編)本書の表現方法(以下) ほとんどの図は、Deep Blue Academy コース Robotics の数値最適化コースの PPT を基に、本コースの表現方法を用いて修正・補足したものです。


   現在の反復点がxk + 1 x_{k+1}であると仮定します。バツk + 1、取得したxk x_{k}を使用すると、バツxk + 1 x_{k+1}バツk + 1とその一次導関数情報∇ f ( xk ) \nabla f\left(x_{k}\right)∇f _( ×)∇ f ( xk + 1 ) \nabla f\left(x_{k+1}\right)∇f _( ×k + 1)、正定行列B k + 1 B_{k+1}Bk + 1∇ f 2 ( xk + 1 ) \nabla f^2\left(x_{k+1}\right)として∇f _2( ×k + 1)、下降方向dk + 1 d_{k+1}dk + 1は次の方程式系で与えられます

   B k + 1 d = − ∇ f ( xk + 1 ) {B}_{k+1}d=-\nabla f\left(x_{k+1}\right)Bk + 1d=f( ×k + 1)

   ただし、これを行うには、依然として線形方程式系を解く必要があります。さらなる改善は、同じ情報を使用して行列H k + 1 H_{k+1}を構築することです。Hk + 1∇ f 2 ( xk + 1 ) − 1 \nabla f^2\left(x_{k+1}\right)^{-1}として∇f _2( ×k + 1)1近似なので、下降方向dk + 1 d_{k+1}dk + 1によって与えることができます

   d = − H k + 1 ∇ f ( xk + 1 ) d=-H_{k+1}\nabla f\left(x_{k+1}\right)d=Hk + 1∇f _( ×k + 1)

   近似行列の構築はシンプルかつ効果的である必要があり、次の条件を満たす必要があります。

   ①: f ( x ) f(x)だけf ( x )の 1 次導関数情報

   ②:B k + 1 {B}_{k+1}Bk + 1 ( H k + 1 ) (H_{k+1})( Hk + 1)は下向きの方向を保証するために正定です。

   ③: この方法の方が収束速度が速い。


   勾配のテイラー展開を実行し、高次の微量を除去すると、次の式が得られます。

   ∇ f ( x k + 1 ) − ∇ f ( x k ) ≈ ∇ 2 f ( x ) ∗ ( x k + 1 − x k ) \nabla f\left(x_{k+1}\right)-\nabla f\left(x_{k}\right) ≈ \nabla^2 f(x)*(x_{k+1}-x_k) f(xk+1)f(xk)2f(x)xk+1xk

   若进行以下定义:

   s k = x k + 1 − x k , y k = ∇ f ( x k + 1 ) − ∇ f ( x k ) , \begin{array}{c}s_k=x_{k+1}-x_k,\\ \\ y_k=\nabla f\left(x_{k+1}\right)-\nabla f\left(x_{k}\right),\end{array} sk=xk+1xk,yk=f(xk+1)f(xk),

   B k + 1 {B}_{k+1} Bk+1作为 ∇ f 2 ( x k + 1 ) \nabla f^2\left(x_{k+1}\right) f2(xk+1)的近似,应该满足以下方程:

   B k + 1 s k = y k B_{k+1}s_k=y_k Bk+1sk=yk

   该方程称为拟Newton方程或拟Newton条件。若记 H k + 1 = B k + 1 − 1 , H_{k+1}=B_{k+1}^{-1}, Hk+1=Bk+11, H k + 1 H_{k+1} Hk+1应该满足下式

   H k + 1 y k = s k . H_{k+1}y_k=s_k. Hk+1yk=sk.

   拟Newton方法是指由 B k + 1 d = − ∇ f ( x k + 1 ) {B}_{k+1}d=-\nabla f\left(x_{k+1}\right) Bk+1d=f(xk+1)式或者 d = − H k + 1 ∇ f ( x k + 1 ) d=-H_{k+1}\nabla f\left(x_{k+1}\right) d=Hk+1f(xk+1)式确定迭代方向d的最优化方法,其中的 B k + 1 {B}_{k+1} Bk+1需满足拟 Newton条件 B k + 1 s k = y k B_{k+1}s_k=y_k Bk+1sk=yk H k + 1 {H}_{k+1} Hk+1需满足拟Newton条件 H k + 1 y k = s k H_{k+1}y_k=s_k Hk+1yk=sk

   下面我们给出一般拟Newton方法的结构,其算法以矩阵 H k + 1 H_{k+1} Hk+1的迭代为例.


   在上述算法中,初始矩阵H通常取为单位矩阵,这样算法的第一步迭代的迭代方向取为负梯度方向.

   那么如何修正 H k {H}_{k} Hk H k + 1 {H}_{k+1} Hk+1呢?,即如何确定在下式中的 Δ H k \Delta H_k ΔHk呢?

   H k + 1 = H k + Δ H k H_{k+1}=H_k+\Delta H_k Hk+1=Hk+ΔHk

   Δ H k \Delta H_k ΔHk的取法是多种多样的,但它应具有简单、计算量小、有效的特点.下面介绍几种重要的修正 H k H_k Hk B k B_k Bk的公式.


   1、拟牛顿方法修正公式

   (1)对称秩1公式(SR1)

   对称秩1(Symmetric Rank 1,SR1)公式是由Broyden、Davidon等人独立提出的。

   H k + 1 S R 1 = H k + ( s k − H k y k ) ( s k − H k y k ) T ( s k − H k y k ) T y k , H_{k+1}^{\mathrm{SR1}}=H_k+\dfrac{(s_k-H_ky_k)(s_k-H_ky_k)^{\mathrm{T}}}{(s_k-H_ky_k)^{\mathrm{T}}y_k}, Hk+1SR1=Hk+(skHkyk)Tyk(skHkyk)(skHkyk)T,

   B k + 1 S R 1 = B k + ( y k − B k s k ) ( y k − B k s k ) T ( y k − B k s k ) T s k . B_{k+1}^{\mathrm{SR1}}=B_k+\dfrac{(y_k-B_k s_k)(y_k-B_k s_k)^{\mathrm{T}}}{(y_k-B_k s_k)^{\mathrm{T}}s_k}. Bk+1SR1=Bk+(ykBksk)Tsk(ykBksk)(ykBksk)T.


   (2)DFP公式

   DFP公式,或者说DFP方法,首先是由Davidon于1959年提出,后经Fletcher 和 Powell发展得到的。该方法是第一个被提出的拟 Newton方法,它为拟 Newton方法的建立与发展奠定了基础.

   H k + 1 D F P = H k + s k s k T s k T y k − H k y k y k T H k y k T H k y k . H_{k+1}^{\mathrm{DFP}}=H_k+\frac{s_k s_k^{\mathrm{T}}}{s_k^{\mathrm{T}}y_k}-\frac{H_ky_ky_k^{\mathrm{T}}H_k}{y_k^{\mathrm{T}}H_ky_k}. Hk+1DFP=Hk+skTykskskTykTHkykHkykykTHk.

   我们称采用DFP公式来修正矩阵的拟Newton方法为DFP方法。假定 H k H_k Hk H k + 1 H_{k+1} Hk+1都可逆,根据Shermann-Morrison-Woodbury 公式,由上式可以导出 B k + 1 B_{k+1} Bk+1的修正公式

   B k + 1 D F P = B k + ( 1 + s k T B k s k s k T y k ) y k y k T s k T y k − ( y k s k T B k + B k s k y k T s k T y k ) . B_{k+1}^{\mathrm{DFP}}=B_{k}+\left(1+\frac{s_{k}^{\mathrm{T}}B_{k}s_{k}}{s_{k}^{\mathrm{T}}y_{k}}\right)\frac{y_{k}y_{k}^{\mathrm{T}}}{s_{k}^{\mathrm{T}}y_{k}}-\left(\frac{y_{k}s_{k}^{\mathrm{T}}B_{k}+B_{k}s_{k}y_{k}^{\mathrm{T}}}{s_{k}^{\mathrm{T}}y_{k}}\right). Bk+1DFP=Bk+(1+skTykskTBksk)skTykykykT(skTykykskTBk+BkskykT).

   上式其实也是下面问题的解:

   min ⁡ ∥ W − T ( B − B k ) W − 1 ∥ F , st B = BT , B sk = yk , \begin{array}{l}\min\|W^{-\mathrm T}(B -B_k)W^{-1}\|_{\mathrm F},\\ \text{st}\quad B=B^{\mathrm T},B s_k=y_k,\end{array}∥W _T (BB) W1セントB=BBs _=y

   其中 W ∈ R n × n W ∈R^{n×n} WRn × nは非特異です。WTW = BW^TW=BWTW _=B は準ニュートン条件B sk = yk Bs_k=y_kBs _=y、この問題の目的は、準ニュートン条件を満たすすべての対称行列の中から、重み付き F ノルムの意味でB k B_kに等しい行列を見つけることです。B差が最も小さい行列。この問題で目的関数の行列ノルムを変更すると、他の準ニュートン補正式が得られます。



   参考文献:

   1. 数値最適化手法(Gao Li編)

   2. ロボットの数値最適化


おすすめ

転載: blog.csdn.net/qq_44339029/article/details/129690034