로봇의 수치 최적화 (14) - 페널티 방법, 배리어 방법, 라그랑지안 이완

   이 시리즈의 기사는 주로 "수치 최적화"를 학습하는 과정에서 제가 메모한 내용과 관련 생각을 담고 있습니다. 주요 학습 자료는 Deep Blue Academy의 "Numerical Optimization in Robots" 과정과 Gao가 편집한 "Numerical Optimization Method"입니다. Li 등, 이 시리즈 기사는 양이 많고 수시로 업데이트됩니다. 전반부는 무제한 최적화를 소개하고 후반부는 제한된 최적화를 소개합니다. 경로 계획의 일부 적용 예가 중간에 삽입됩니다.



   이 기사에서는 제한된 최적화를 처리하기 위해 시퀀스 비제약 최적화를 사용하는 세 가지 방법인 페널티 방법, 장벽 방법 및 라그랑지안 완화를 주로 소개합니다.

   21. 벌칙방법

   1. 등식 제약 조건을 2차 페널티 항으로 변환

   페널티 함수 방법은 부등식 제약 조건과 등식 제약 조건 모두에 적합합니다. 등식 제약 조건의 경우 목적 함수와 등식 제약 조건이 다음과 같다고 가정하여 2차 페널티 함수(L2-Penalty)를 정의할 수 있습니다.

   최소 ⁡ xf ( x ) s . t . ci ( x ) = 0 , i ∈ E \begin{array}{cc}\min_{x} & f(x)\\ \mathrm{st} & c_{i}(x)=0,\quad i\ in\mathcal{E}\end{배열}엑스에프 ( 엑스 )( x )=0 ,전자

   다음 공식에서 볼 수 있듯이 등식 제약 조건을 페널티 항으로 구성한 다음 이를 목적 함수에 추가하여 제약 조건 최적화를 페널티 조건이 있는 제약 조건 없는 최적화로 변환하고 제약 없는 최적화 방법을 사용하여 문제를 풀 수 있습니다.

   PE ( x , σ ) = f ( x ) + 12 σ ∑ i ∈ E ci 2 ( x ) P_E(x,\sigma)=f(x)+\color{red}{\frac12}\sigma\sum_ {i\in\mathcal{E}}c_i^2(x)전자( 엑스 ,)=에프 ( 엑스 )+21나는 E2( x )

   위 공식의 σ \sigmaσ 는 페널티 가중치입니다. 등식 제약 조건을 충족하지 않는 솔루션의 경우 불만족도가 높아집니다.ci ( x ) c_i(x)( x )가 0에서 더 벗어날 때,ci 2 (x) c_i^2(x)2( x ) 도 더 크고 페널티 항도더 큽니다.σ 의 값이 큰 경우 ci(x)=0을만족하는 것에 비해( x )=0 해인 경우, 만족하지 않는 해는 더 큰 페널티 항을 갖게 되며, 제약 조건이 없는 최적화 알고리즘을 사용하면 등식 제약 조건을 대략 만족하는 국소 최소값을 얻을 수 있으며 그 정확도는 σ \ sigma에 따라 달라집니다.σ 의 크기 . σ \sigma일 때σ가 무한대에 가까워 지면

여기에 이미지 설명을 삽입하세요.

   아래 예에서 σ \sigmaσ 가 100인 경우, 페널티 항이 있는 제약 없는 목적 함수의 최적 솔루션은 등식 제약 조건이 있는 원래 목적 함수의 최적 솔루션과 거의 동일합니다.

여기에 이미지 설명을 삽입하세요.


   2. 부등식 제약 조건을 2차 페널티 항으로 변환

   최소 ⁡ f ( x ) s . t . ci ( x ) ⩽ 0 , i ∈ I \begin{aligned}\min&\quad f(x)\\\mathrm{st}&\quad c_i(x)\leqslant0,\quad i\in\mathcal{I} \end{정렬됨}에프 ( 엑스 )( x )0 ,나는

   부등식 제약 조건의 경우 ci ( x ) ⩽ 0 c_i(x)\leqslant0 과 같이 2차 벌점 항으로 변환할 수도 있습니다.( x )ci ( x ) c_i(x)일 때 그러한 부등식 제약 조건은 0개입니다 .( x )가 0보다 작거나 같으면 제약 조건이 충족되고 페널티 항은 0이 됩니다.ci ( x ) c_i(x)언제 ( _ __( x ) ,0) 함수를 사용하여 페널티 항을 다음과 같이 구성합니다.

   PI ( x , σ ) = f ( x ) + 12 σ ∑ i ∈ I max ⁡ [ ci ( x ) , 0 ] 2 P_I(x,\sigma)=f(x)+\color{red}{\ frac12}\sigma\sum_{i\in\mathcal{I}}\max[c_i(x),0]^2나는( 엑스 ,)=에프 ( 엑스 )+21m a x [ c( x ) ,0 ]2

   需要注意的是上式中的二次惩罚项,其一阶导是连续的,但二阶导是不连续的,所有可以用基于梯度的无约束优化方法,或者带cautious update条件的L-BFGS无优化方法进行优化求解。

   其精度同样受 σ \sigma σ的影响。当 σ \sigma σ趋于无穷大时,其极限收敛于原约束问题的最优解。

여기에 이미지 설명을 삽입하세요.

   在下图中的例子中,灰红色曲面的左侧是不等式约束的可行域,随着 σ \sigma σ的增大,可以看出该灰红色曲面右侧的函数值在快速变大,当 σ \sigma σ取1000时,该灰红色曲面右侧的函数值急剧变大,带惩罚项的无约束目标函数的最优解几乎等价于原有带不等式约束的目标函数的最优解。

여기에 이미지 설명을 삽입하세요.

   所以对于带约束的优化问题,当 c i ( x ) c_i(x) ci(x)有物理意义,且精度在0.01或0.001时是可接受的,而不是很高的 1 0 − 5 10^{-5} 105这种高精度的时候,可以采用罚函数法将其转换为无约束问题就行求解。


   3、将等式约束或不等式约束转换为一次惩罚项

   有些时候,我们可以不把等式约束或不等式约束转换为二次惩罚项,而是转换为更简单的一次惩罚项,如下式所示

   min ⁡ f ( x ) s . t . c i ( x ) = 0 , i ∈ E c j ( x ) ⩽ 0 , j ∈ I \begin{aligned}\min&\quad f(x)\\\mathrm{s.t.}&\quad c_i(x)=0,\quad i\in\mathcal{E}\\&\quad c_j(x)\leqslant0,\quad j\in\mathcal{I}\end{aligned} mins.t.f(x)ci(x)=0,iEcj(x)0,jI

   转换为下式:

   P ( x , σ ) = f ( x ) + σ ∑ i ∈ E ∣ c i ( x ) ∣ + σ ∑ j ∈ I max ⁡ [ c j ( x ) , 0 ] P(x,\sigma)=f(x)+\color{red}{\sigma\sum_{i\in\mathcal{E}}|c_i(x)|+\sigma\sum_{j\in\mathcal{I}}\max[c_j(x),0]} P(x,σ)=f(x)+σiEci(x)+σjImax[cj(x),0]

   红色部分为L1罚函数,值得注意的是其导数是不连续的,在某个点处导数不存在。但也有一些优点,当 σ \sigma σ足够大的时候(有限的),不需要趋于无穷,比如 σ > 10000 \sigma>10000 σ>10000时,可以使得转换后的无约束的目标函数的最优值,跟原有的带约束的目标函数的最优值精确的相等,不是收敛意义的相等而是精确的相等。所有L1惩罚项具有精确性。

여기에 이미지 설명을 삽입하세요.

   在下图所示的例子中,当 σ \sigma σ取100时,转换后的无约束目标函数最优值与转换前的带约束目标函数的最优值就可以相等

여기에 이미지 설명을 삽입하세요.


   二十二、障碍函数法(Barrier Method)

   障碍函数法一般只考虑不等式约束,对于下式所示的带不等式约束的目标函数的优化问题

   min ⁡ f ( x ) s . t . c i ( x ) ⩽ 0 , i ∈ I \begin{aligned}\min&\quad f(x)\\\mathrm{s.t.}&\quad c_i(x)\leqslant0,\quad i\in\mathcal{I}\end{aligned} mins.t.f(x)ci(x)0,iI

   1、对数障碍(logarithmic barrier)

   使用不等式约束构造对数障碍物添加到目标函数中,转换为无约束优化,如下式所示:

   B ln ⁡ ( x , σ ) = f ( x ) − σ ∑ i ∈ I ln ⁡ ( − c i ( x ) ) B_{\ln}(x,\sigma)=f(x)-\color{red}{\sigma\sum_{i\in\mathcal{I}}\ln(-c_i(x))} Bln(x,σ)=f(x)σiIln(ci(x))
   c i ( x ) c_i(x) ci(x)从小于0的方向接近于0时,附加的对数障碍项的值会以log的速率急剧增大,从而使得转换后的无约束优化目标函数更趋向于选择满足不等式约束且离界限0有一定距离的解。

여기에 이미지 설명을 삽입하세요.


   2、逆障碍(inverse barrier)

   使用不等式约束构造逆障碍添加到目标函数中,转换为无约束优化,如下式所示:

   B i n v ( x , σ ) = f ( x ) + σ ∑ i ∈ I i n v ( − c i ( x ) ) B_{\mathrm{inv}}(x,\sigma)=f(x)+\color{red}{\sigma\sum_{i\in\mathcal{I}}\mathrm{inv}(-c_i(x))} Binv(x,σ)=f(x)+σiIinv(ci(x))

   其中,inv表示逆或倒数的含义,如下所示

     i f   z > 0 ,   i n v ( z ) : = 1 / z   i f   z < 0 ,   i n v ( z ) : = i n f \mathrm{~if~}z>0 , \mathrm{~inv}(z):=1/z \\\\\mathrm{~if~}z<0 , \mathrm{~inv}(z):=inf  if z>0 inv(z):=1/z if z<0 inv(z):=inf

   c i ( x ) c_i(x) ci(x)从小于0的方向接近于0时,附加的逆障碍项的值会急剧增大,从而使得转换后的无约束优化目标函数更趋向于选择满足不等式约束且离界限0有一定距离的解。

여기에 이미지 설명을 삽입하세요.


   3、指数障碍(inverse barrier)

   使用不等式约束构造指数障碍添加到目标函数中,转换为无约束优化,如下式所示:

   B e x p i ( x , σ ) = f ( x ) + σ ∑ i ∈ I e x p i ( − c i ( x ) ) B_{\mathrm{expi}}(x,\sigma)=f(x)+\color{red}{\sigma\sum_{i\in\mathcal{I}}\mathrm{expi}(-c_i(x))} Bexpi(x,σ)=f(x)+σiIexpi(ci(x))

   其中,expi表示指数的含义,如下所示

     e x p i ( z ) : = e 1 / z   i f   z > 0 \mathrm{~expi}(z):=e^{1/z}\mathrm{~if~}z>0  expi(z):=e1/z if z>0

   c i ( x ) c_i(x) ci(x)从小于0的方向接近于0时,附加的指数障碍项的值会急剧增大,从而使得转换后的无约束优化目标函数更趋向于选择满足不等式约束且离界限0有一定距离的解。


   4、障碍函数法特点

   σ \sigma σ从正向趋于0时,采用障碍函数法将带不等式约束的目标函数转换为无约束的目标函数后,转换前后的最优解几乎相等, σ \sigma σ从正向越接近于0,即随着障碍权值的衰减,无约束最小值趋于约束最小值。下图中的例子,当 σ \sigma σ取0.1时,转换前后的最优解几乎相等。

여기에 이미지 설명을 삽입하세요.


   罚函数法随着 σ \sigma σ的增大,在约束边界的外侧罚函数越趋向于直角,障碍函数法随着 σ \sigma σ的减小(从正向趋于0),在约束边界的内侧罚函数越趋向于直角,在这些地方(下图中虚线圈所示的位置)Hessian矩阵的条件数是趋于无穷大的,所以若使用梯度的方法求解转换后的无约束问题,会遇到求解速度越来越慢的问题。

   若对于罚函数法一开始 σ \sigma σ的值设为一个较小值,然后随着迭代逐步增大 σ \sigma σ的值,而不是一上来就给一个很大的值,会一定程度上减缓以上问题,同理,对于障碍函数法一开始也不要给一个很小值,而是随着迭代减小 σ \sigma σ值,也可以在一定程度上减缓以上问题。

여기에 이미지 설명을 삽입하세요.

   虽然与罚函数法相比,障碍函数法不能处理等式约束,但是罚函数法可以处理在不等式约束在约束外没有定义的问题,而罚函数法不能处理在约束外没有定义的问题。


   二十三、拉格朗日松弛法(Lagrangian Relaxation)

   拉格朗日松弛方法是针对带等式约束的凸优化问题而言的,如下式所示的凸优化问题:

   min ⁡ x f ( x ) s . t . A x = b \begin{array}{cc}\min_x&f(x)\\\mathrm{s.t.}&Ax=b\end{array} minxs.t.f(x)Ax=b

   构造拉格朗日函数,在目标函数的基础上,增加λ与等式约束Ax-b的内积项,如下式所示

   L ( x , λ ) : = f ( x ) + ⟨ λ , A x − b ⟩ \mathcal{L}(x,\lambda):=f(x)+\langle\lambda,Ax-b\rangle L(x,λ):=f(x)+λ,Axb

   首先,我们需要找一个λ值,使得上述拉格朗日函数取到最大值,对于满足等式约束的x,Ax-b=0,则其与λ的内积必然为0,此时, L ( x , λ ) \mathcal{L}(x,\lambda) L(x,λ)的最大值即为 f ( x ) f(x) f(x),若Ax-b不等于0,比如其值为 [ 1 , − 1 ] T [1,-1]^T [1,1]T,则必然可以找到一个λ,其值为 k ∗ [ 1 , − 1 ] T = [ k , − k ] T k*[1,-1]^T=[k,-k]^T k[1,1]T=[k,k]T,此时λ与Ax-b的内积为2k,若k趋于inf,则 L ( x , λ ) \mathcal{L}(x,\lambda) L(x,λ)的最大值即为inf,如下式所示:

   max ⁡ λ L ( x , λ ) = max ⁡ λ { f ( x ) + ⟨ λ , A x − b ⟩ } = { f ( x ) , A x − b = 0 ∞ , o t h e r w i s e \max_{\lambda}\mathcal{L}(x,\lambda)=\max_{\lambda}\left\lbrace f(x)+\langle\lambda,Ax-b\rangle\right\rbrace=\left\{\begin{aligned} & f(x),Ax-b=0\\ & \infty,\mathrm{otherwise}\end{aligned}\right. λmaxL(x,λ)=λmax{ f(x)+λ,Axb}={ f(x),Axb=0,otherwise

   所以带等式约束的目标函数求解问题,可以转换成如下所示的,先找一个λ值使得拉个朗日方程 L ( x , λ ) \mathcal{L}(x,\lambda) L(x,λ)取得极大值,然后再找一个x,使得 max ⁡ λ L ( x , λ ) = f ( x ) 或 i n f \max_\lambda\mathcal{L}(x,\lambda)=f(x)或inf maxλL(x,λ)=f(x)inf取极小值。(当然对于不满足约束inf情况,极小值依然为inf)

   min ⁡ x f ( x ) ,   s . t .   A x = b ⟺ min ⁡ x max ⁡ λ L ( x , λ ) \color{red}{\min_xf(x),\mathrm{~s.t.~}Ax=b\quad\Longleftrightarrow\quad\min_x\max_\lambda\mathcal{L}(x,\lambda)} xminf(x), s.t. Ax=bxminλmaxL(x,λ)

여기에 이미지 설명을 삽입하세요.

   下图中给出一个例子,最优解在 L ( x , λ ) \mathcal{L}(x,\lambda) L(x,λ)的鞍点处,其梯度等于0,Hessian是不定的。、拉格朗日松弛法把带等式约束的问题转换成求鞍点的问题

여기에 이미지 설명을 삽입하세요.


   如果我们不知道f(x)、h(x)的具体表达式,那么我们该如何求呢?现在,我们假设f(x)是严格凸的函数,h(x)是一个线性函数,若直接求 min ⁡ x max ⁡ λ L ( x , λ ) \min_x\max_\lambda\mathcal{L}(x,\lambda) minxmaxλL(x,λ),由于求 max ⁡ λ L ( x , λ ) \max_\lambda\mathcal{L}(x,\lambda) maxλL(x,λ)后得到的值为f(x)或inf,是不连续的,对其再求 min ⁡ x \min_x minx是不容易的,若交换一下顺序,求 max ⁡ λ min ⁡ x L ( x , λ ) \max_\lambda\min_x\mathcal{L}(x,\lambda) maxλminxL(x,λ),由于f(x)是严格凸的,则求 min ⁡ x L ( x , λ ) \min_x\mathcal{L}(x,\lambda) minxL(x,λ)是一个无约束的最优化问题,可以很好的求出来,对其再求 max ⁡ λ \max_\lambda maxλ也是一个相对容易得问题。

   可以通过以下的迭代式来求解 max ⁡ λ min ⁡ x L ( x , λ ) \max_\lambda\min_x\mathcal{L}(x,\lambda) maxλminxL(x,λ),先通过第一个式子计算内层,得到k+1时刻的最优解x,然后利用第二个式子使用梯度上升的方式计算外层的 λ \lambda λ,α是步长, A x k + 1 − b Ax^{k+1}-b Axk+1b是梯度上升方向。

   { x k + 1 = argmin ⁡ x L ( x , λ k ) λ k + 1 = λ k + α ( A x k + 1 − b ) \begin{cases}x^{k+1}=\operatorname{argmin}_x\mathcal{L}(x,\lambda^k)\\\lambda^{k+1}=\lambda^k+\alpha(Ax^{k+1}-b)\end{cases} { xk+1=argminxL(x,λk)λk+1=λk+α(Axk+1b)

   这种模式称为Uzawa’s方法

여기에 이미지 설명을 삽입하세요.

   아래 그림의 예에서는 먼저 내부 레이어, 즉 첫 번째 공식의 비제약 문제의 최적화 문제를 계산한 다음 외부 레이어 λ \lambda를 계산합니다.λ , 예제에 사용된 단계 크기는 1입니다.

여기에 이미지 설명을 삽입하세요.

   Uzawa의 방법에는 아래 그림과 같이 몇 가지 결함이 있는데 초기 최적화 문제는 볼록해야 하고 라그랑지안은 엄격하게 볼록해야 하며 이중 리프팅 단계 크기를 조정해야 하며 수렴 속도가 만족스럽지 않습니다.

여기에 이미지 설명을 삽입하세요.


   참고자료:

   1. 수치 최적화 방법(Gao Li 편집)

   2. 로봇의 수치 최적화


추천

출처blog.csdn.net/qq_44339029/article/details/132045432