机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法

   本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例



  

   二十九、锥增广的拉格朗日

   我们想要保持问题的凸性,然后找一个g(x)<=0与x属于锥等价,且该增广项g(x)应该是凸的,并且至少是可微的。

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第1张图片

   我们回顾一下一般的等式约束的情况,

   min ⁡ x ∈ R n f ( x ) s . t .   h ( x ) = 0 \begin{aligned}&\min_{x\in\mathbb{R}^n}f(x)\\&\mathrm{s.t.~}\left.h(x)=0\right.\end{aligned} xRnminf(x)s.t. h(x)=0

   其增广拉格朗日形式如下(灰色部分可省略):

   L ρ ( x , λ ) : = f ( x ) + ρ 2 ∥ h ( x ) + λ ρ ∥ 2 − 1 2 ρ ∥ λ ∥ 2 \mathcal{L}_\rho(x,\lambda):=f(x)+\frac\rho2\left\|h(x)+\frac\lambda\rho\right\|^2\color{grey}-\frac1{2\rho}\|\lambda\|^2 Lρ(x,λ):=f(x)+2ρ h(x)+ρλ 22ρ1λ2
   如何将其推广到锥中呢?

   min ⁡ x ∈ R n c T x s.t. A i x + b i ∈ K i ,   i = 1 , … , m G x = h \begin{aligned} &\min_{x\in\mathbb{R}^n} c^{\mathrm{T}}x \\ &\text{s.t.} A_ix+b_i\in\mathcal{K}_i,~i=1,\ldots,m \\ &Gx=h \end{aligned} xRnmincTxs.t.Aix+biKi, i=1,,mGx=h

   还记得前面,我们使用平方项来将不等式约束转化为等式约束,如下式所示:

   g ( x ) ≤ 0 ⟺ g ( x ) + [ s ] 2 = 0 g(x)\leq0\quad\Longleftrightarrow\quad g(x)+[s]^2=0 g(x)0g(x)+[s]2=0
   幸运的是,对称锥可以表示成平方项的形式,所以可以借助以上思想来推广到锥中。

   min ⁡ x ∈ R n c T x s.t. A i x + b i ∈ K i ,   i = 1 , … , m G x = h \begin{aligned} &\min_{x\in\mathbb{R}^n} c^{\mathrm{T}}x \\ &\text{s.t.} A_ix+b_i\in\mathcal{K}_i,~i=1,\ldots,m \\ &Gx=h \end{aligned} xRnmincTxs.t.Aix+biKi, i=1,,mGx=h

   上式可等价表示成如下的形式:

   min ⁡ x , s c T x s.t. A i x + b i = s i ∘ s i ,   i = 1 , … , m G x = h \begin{aligned} &\operatorname*{min}_{x,s} c^{\mathrm{T}}x \\ &\text{s.t.} A_ix+b_i=\color{red}{s_i\circ s_i},\color{black}\mathrm{~}i=1,\ldots,m \\ &Gx=h \end{aligned} x,smincTxs.t.Aix+bi=sisi, i=1,,mGx=h
   该对称锥对应的拉格朗日函数如下:

   L ρ ( x , s , λ , ν ) : = c T x + ρ 2 ∥ G x − h + λ ρ ∥ 2 + ρ 2 ∑ i = 1 m ∥ A i x + b i − s i ∘ s i + ν i ρ ∥ 2 \mathcal{L}_\rho(x,s,\lambda,\nu):=c^\mathrm{T}x+\frac\rho2\left\|Gx-h+\frac\lambda\rho\right\|^2+\frac\rho2\sum_{i=1}^m\left\|A_ix+b_i-s_i\circ s_i+\frac{\nu_i}\rho\right\|^2 Lρ(x,s,λ,ν):=cTx+2ρ Gxh+ρλ 2+2ρi=1m Aix+bisisi+ρνi 2

   该问题包含以下子问题:

   min ⁡ s L ρ ( x , s , λ , ν ) = c T x + ρ 2 ∥ G x − h + λ ρ ∥ 2 + ρ 2 ∑ i = 1 m min ⁡ s i ∥ A i x + b i − s i ∘ s i + ν i ρ ∥ 2 \min_s\mathcal{L}_\rho(x,s,\lambda,\nu)=c^\mathrm{T}x+\frac\rho2\left\|Gx-h+\frac\lambda\rho\right\|^2+\frac\rho2\sum_{i=1}^m\boxed{\min_{s_i}\|A_ix+b_i-s_i\circ s_i+\frac{\nu_i}\rho\|^2} sminLρ(x,s,λ,ν)=cTx+2ρ Gxh+ρλ 2+2ρi=1msiminAix+bisisi+ρνi2

   其中,下式可进行转换

   min ⁡ s ∥ v − s i ∘ s i ∥ 2 = min ⁡ x ∈ K ∥ v − x ∥ 2 \min_s\left\|v-s_i\circ s_i\right\|^2=\min_{x\in\mathcal{K}}\left\|v-x\right\|^2 sminvsisi2=xKminvx2

   转换后的形式如下:

   P K ( v ) : = arg ⁡ min ⁡ x ∈ K ∥ v − x ∥ 2 P_{\mathcal{K}}(v):=\arg\min_{x\in\mathcal{K}}\left\|v-x\right\|^2 PK(v):=argxKminvx2
   上式可通过谱分解的方法进行计算:

   P K ( v = ∑ i = 1 θ λ i q i ) = ∑ i = 1 θ max ⁡ [ λ i , 0 ] q i P_{\mathcal{K}}\Big(v=\sum_{i=1}^{\theta}\lambda_iq_i\Big)=\sum_{i=1}^{\theta}\max[\lambda_i,0]q_i PK(v=i=1θλiqi)=i=1θmax[λi,0]qi

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第2张图片

   下式中分别给出了positive orthant和second-order cone的谱分解计算公式

   P K = R ≥ 0 n ( v ) = max ⁡ [ v , 0 ] P_{\mathcal{K}=\mathbb{R}_{\geq0}^n}(v)=\max[v,0] PK=R0n(v)=max[v,0]

   P K = Q n ( v ) = { 0 , v 0 ≤ − ∥ v 1 ∥ 2 v 0 + ∥ v 1 ∥ 2 2 ∥ v 1 ∥ 2 ( ∥ v 1 ∥ 2 , v 1 ) T , ∣ v 0 ∣ < ∥ v 1 ∥ 2 v , v 0 ≥ ∥ v 1 ∥ 2 P_{\mathcal{K}=\mathcal{Q}^n}(v)=\left\{\begin{aligned}&0,\quad&v_0\leq-\|v_1\|_2\\&\frac{v_0+\|v_1\|_2}{2\|v_1\|_2}(\|v_1\|_2,v_1)^\mathrm{T},\quad&|v_0|<\|v_1\|_2\\&v,\quad&v_0\geq\|v_1\|_2\end{aligned}\right. PK=Qn(v)= 0,2∥v12v0+v12(v12,v1)T,v,v0v12v0<v12v0v12

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第3张图片

   我们可以得到下式:

   min ⁡ s ∥ v − s i ∘ s i ∥ 2 = ∥ P K ( − v ) ∥ 2 \min_s\left\|v-s_i\circ s_i\right\|^2=\left\|P_{\mathcal{K}}(-v)\right\|^2 sminvsisi2=PK(v)2

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第4张图片

   进一步可以得到对称锥的增广拉格朗日函数如下(灰色部分可以省略)

   L ρ ( x , λ , μ ) : = c T x + ρ 2 { ∥ G x − h + λ ρ ∥ 2 + ∑ i = 1 m ∥ P χ i ( μ i ρ − A i x − b i ) ∥ 2 } − 1 2 ρ { ∥ λ ∥ 2 + ∥ μ ∥ 2 } \mathcal{L}_\rho(x,\lambda,\mu):=c^\mathrm{T}x+\frac\rho2\left\{\left\|Gx-h+\frac\lambda\rho\right\|^2+\sum_{i=1}^m\left\|P\chi_i\left(\frac{\mu_i}\rho-A_ix-b_i\right)\right\|^2\right\}\color{grey}-\frac1{2\rho}\left\{\left\|\lambda\right\|^2+\left\|\mu\right\|^2\right\} Lρ(x,λ,μ):=cTx+2ρ{ Gxh+ρλ 2+i=1m Pχi(ρμiAixbi) 2}2ρ1{λ2+μ2}

   其对偶变量的更新如下

   μ i ← P K i ( μ i − ρ ( A i x + b i ) ) \mu_i\leftarrow P_{\mathcal{K}_i}(\mu_i-\rho(A_ix+b_i)) μiPKi(μiρ(Aix+bi))

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第5张图片

   扩充项的几何理解如下所示:

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第6张图片


  • →→→→→←♪←→←←→→→☆→→←←→→→←←☆→→→→←↑←→←←♬→→→→→♦→←←♩→→←←◑←←←←→←←→♥→←←→←→←←★→→→→→→→→→→◐←←→→→↙→→→←↓←→→→◀→→→←←→→→→◆→→←←→→→→→★←→→→←→←←→→→→→←☆→→←←→→→→→♫↔→→→→←←←←↕←←←♬←←←↖←←◑←←→←←→▶→→→→←←←←→←★←→→→

   现在,我们来总结一下,对于任意一个对称锥 K i \mathcal{K}_{i} Ki,其对应的增广拉格朗日形式如下(灰色部分可省略):

   L ρ ( x , λ , μ ) : = c T x + ρ 2 { ∥ G x − h + λ ρ ∥ 2 + ∑ i = 1 m ∥ P χ i ( μ i ρ − A i x − b i ) ∥ 2 } − 1 2 ρ { ∥ λ ∥ 2 + ∥ μ ∥ 2 } \mathcal{L}_\rho(x,\lambda,\mu):=c^\mathrm{T}x+\frac\rho2\left\{\left\|Gx-h+\frac\lambda\rho\right\|^2+\sum_{i=1}^m\left\|P\chi_i\left(\frac{\mu_i}\rho-A_ix-b_i\right)\right\|^2\right\}\color{grey}-\frac1{2\rho}\left\{\left\|\lambda\right\|^2+\left\|\mu\right\|^2\right\} Lρ(x,λ,μ):=cTx+2ρ{ Gxh+ρλ 2+i=1m Pχi(ρμiAixbi) 2}2ρ1{λ2+μ2}

   求解流程如下:

   { x ← argmin ⁡ x L ρ ( x , λ , μ ) λ ← λ + ρ ( G x − h ) μ i ← P K i ( μ i − ρ ( A i x + b i ) ) ρ ← min ⁡ [ ( 1 + γ ) ρ ,   β ] \begin{cases}x\leftarrow\operatorname{argmin}_x\mathcal{L}_\rho(x,\lambda,\mu)\\\lambda\leftarrow\lambda+\rho(Gx-h)\\\mu_i\leftarrow P_{\mathcal{K}_i}(\mu_i-\rho(A_ix+b_i))\\\rho\leftarrow\min[(1+\gamma)\rho,\mathrm{~}\beta]&\end{cases} xargminxLρ(x,λ,μ)λλ+ρ(Gxh)μiPKi(μiρ(Aix+bi))ρmin[(1+γ)ρ, β]

   其中:

   ρ i n i = 1 , λ i n i = μ i n i = 0 , γ = 1 , β = 1 0 3 \rho_{\mathrm{ini}}=1,\lambda_{\mathrm{ini}}=\mu_{\mathrm{ini}}=0,\gamma=1,\beta=10^3 ρini=1,λini=μini=0,γ=1,β=103

   首先,我们还是更新外层的优化变量x,再利用内层的等式约束更新 λ \lambda λ μ \mu μ,最后更新惩罚项 ρ \rho ρ

   停止条件,我们同样可以采用如下的表达式:

   max ⁡ [ ∥ G x − h ∥ ∞ , max ⁡ i ∥ μ ρ − P K i ( μ ρ − A i x − b i ) ∥ ∞ ] < ϵ c o n s , ∥ ∇ x L ρ ( x , λ , μ ) ∥ ∞ < ϵ p r e c \max\left[\|Gx-h\|_\infty,\max_i\left\|\frac\mu\rho-P_{\mathcal{K}_i}\left(\frac\mu\rho-A_ix-b_i\right)\right\|_\infty\right]<\epsilon_{\mathrm{cons}},\left\|\nabla_x\mathcal{L}_\rho(x,\lambda,\mu)\right\|_\infty<\epsilon_{\mathrm{prec}} max[Gxh,imax ρμPKi(ρμAixbi) ]<ϵcons,xLρ(x,λ,μ)<ϵprec

  

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第7张图片


  • →→→→→←♪←→←←→→→☆→→←←→→→←←☆→→→→←↑←→←←♬→→→→→♦→←←♩→→←←◑←←←←→←←→♥→←←→←→←←★→→→→→→→→→→◐←←→→→↙→→→←↓←→→→◀→→→←←→→→→◆→→←←→→→→→★←→→→←→←←→→→→→←☆→→←←→→→→→♫↔→→→→←←←←↕←←←♬←←←↖←←◑←←→←←→▶→→→→←←←←→←★←→→→

   那么如何求解外层优化 L ρ ( x , λ , μ ) \mathcal{L}_\rho(x,\lambda,\mu) Lρ(x,λ,μ)呢?,在下图中的例子中,令 λ , μ \lambda,\mu λ,μ为0,该子问题是凸的且可微的,但其具有不连续的Hessian。因此,可以使用梯度下降法或改进的拟牛顿法进行求解(尽管求解速度并不总是理想的)。

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第8张图片

   如果我们应用修正的阻尼牛顿法去求解会怎样? 假设可以拿类似于牛顿的方法去解,他应该是怎样的过程?

   该子问题就是增广拉格朗日函数对x求最小值,即求 L ρ ( x , λ , μ )   w . r . t .   x \mathcal{L}_\rho(x,\lambda,\mu)\mathrm{~w.r.t.~}x Lρ(x,λ,μ) w.r.t. x,它的梯度和Hessian分别为(如果存在的话): g = ∇ x L ρ ( x , λ , μ ) ,   H = ∇ x 2 L ρ ( x , λ , μ ) g=\nabla_x\mathcal{L}_\rho(x,\lambda,\mu),~H=\nabla_x^2\mathcal{L}_\rho(x,\lambda,\mu) g=xLρ(x,λ,μ), H=x2Lρ(x,λ,μ),对称锥的增广拉格朗日关于x是凸的,可以保证 H ⪰ 0 H\succeq0 H0,即可以保证它是半正定的。

   回想一下之前介绍的修正阻尼牛顿法,我们是否可以进行如下更新? d就是得到的近似步长

   ( H + ϵ I ) d = − g ,   ϵ = min ⁡ ( 1 , ∥ g ∥ ∞ ) (H+\epsilon I)d=-g,\mathrm{~}\epsilon=\min(1,\|g\|_\infty) (H+ϵI)d=g, ϵ=min(1,g)

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第9张图片

   但很多问题的最优解就在边界上(锥的边缘上),很有可能在Hessian不存在的区域,可以采用如下介绍的半光滑的牛顿方法


   三十、半光滑的牛顿方法(Semi-Smooth Newton Method)

   对于一个以n维向量为输入,以n维向量为输出的函数F(x),它是局部Lipschitz的,它的导数 F ′ ( x ) \color{red}{F^{\prime}(x)} F(x)几乎总是存在的,即雅克比几乎是处处存在的,我们把雅克比存在的集合称为 D F \color{red}{D_F} DF,它的B次微分可以定义为下式:

   ∂ B F ( x ) : = { lim ⁡ k → ∞ F ′ ( x k ) ∣ x k ∈ D F , x k → x } \partial_BF(x):=\left\{\lim_{k\to\infty}F^{\prime}(x^k)\mid x^k\in\color{red}{D_F }\color{black} ,x^k\to x\right\} BF(x):={klimF(xk)xkDF,xkx}

   举个例子,对于y=|x|这个函数,它的B次微分就是1和-1

   这个B次微分与常用的(Clarke)次微分是取凸包的关系,如下式所示:

   ∂ F ( x ) = conv ⁡ ( ∂ B F ( x ) ) \partial F(x)=\operatorname{conv}(\partial_BF(x)) F(x)=conv(BF(x))

   我们把Lipschitz的F(x)称为半光滑的,其需要满足下式

   lim ⁡ d ∈ R n ,   d → 0 ∥ F ( x + d ) − F ( x ) − J ( d ) d ∥ ∥ d ∥ = 0 ,   ∀ J ( d ) ∈ ∂ F ( x + d ) \color{blue}\lim_{d\in\mathbb{R}^n,\mathrm{~}d\to0}{\frac{\|F(x+d)-F(x)-J(d)d\|}{\|d\|}}=0,\mathrm{~}\forall J(d)\in\partial F(x+d) dRn, d0limdF(x+d)F(x)J(d)d=0, J(d)F(x+d)

   如果它是强半光滑的,则它进一步满足下式:

   lim ⁡ d ∈ R n ,   d → 0 ∥ F ( x + d ) − F ( x ) − J ( d ) d ∥ ∥ d ∥ 2 < ∞ ,   ∀ J ( d ) ∈ ∂ F ( x + d ) \color{red}\lim_{d\in\mathbb{R}^n,\mathrm{~}d\to0}{\frac{\|F(x+d)-F(x)-J(d)d\|}{\|d\|^2}}<\infty,\mathrm{~}\forall J(d)\in\partial F(x+d) dRn, d0limd2F(x+d)F(x)J(d)d<, J(d)F(x+d)

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第10张图片

   如果F(x)是半光滑,或强半光滑的,则其存在如下的性质:(强)半光滑在标量乘法、求和和合成下是封闭的。当一个向量值函数的分量是(强)半光滑时,它就是(强)半光滑的。

   那么我们常见的函数中那些是半光滑或强半光滑的呢?

   •所有的Lipschitz连续光滑函数都是半光滑的,如 x 2 x^2 x2 x 3 x^3 x3

   •所有Lipschitz连续凸函数(例如范数)都是半光滑的。

   •所有的Lipschitz,且一次分片连续函数都是半光滑的。

   •所有具有Lipschitz梯度的Lipschitz一次连续函数都是强半光滑的。

   •所有p>=1的p范数都是强半光滑的。

   •所有Lipschitz连续分段仿射函数都是强半光滑的。

   •所有Lipschitz的,分片二阶连续可微的函数都是强半光滑的。

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第11张图片

   半光滑或强半光滑的优点有哪些?

   若F(x)是半光滑的,求F(x)=0, J ( x ) ∈ ∂ B F ( x ) J(x)\in\partial_BF(x) J(x)BF(x),下面的迭代可以获得局部超线性收敛。

   x k + 1 = x k − J ( x k ) − 1 F ( x k ) x^{k+1}=x^k-J(x^k)^{-1}F(x^k) xk+1=xkJ(xk)1F(xk)

   若F(x)是强半光滑的,则迭代可达到局部二次收敛速度。

   g ( x ) : = ∇ x L ρ ( x , λ , μ ) g(x):=\nabla_x\mathcal{L}_\rho(x,\lambda,\mu) g(x):=xLρ(x,λ,μ)

   锥增广拉格朗日函数的梯度是强半光滑的,因为它是二次分段连续的。因此,我们可以计算如下半光滑牛顿步长,进行无约束优化。

   ( H + ϵ I ) d = − g g = ∇ x L ρ ( x , λ , ρ ) H ∈ ∂ B ∇ x L ρ ( x , λ , ρ ) ϵ = min ⁡ ( 1 , ∥ g ∥ ∞ ) / 10 \begin{aligned} &(\color{black}{H+\epsilon}I)d=-\color{black}{g} \\ &g=\nabla_x\mathcal{L}_\rho(x,\lambda,\rho) \\ &H\in\partial_B\nabla_x\mathcal{L}_\rho(x,\lambda,\rho) \\ &\color{black}{\epsilon=\min(1,\|g\|_\infty)/10} \end{aligned} (H+ϵI)d=gg=xLρ(x,λ,ρ)HBxLρ(x,λ,ρ)ϵ=min(1,g)/10

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第12张图片

   如何计算上面的梯度和梯度的B次微分?

   梯度可以利用下式直接计算:

   ∇ x L ρ ( x , λ , μ ) = c + G T ( λ + ρ ( G x − h ) ) − ∑ i = 1 m A i T P K i ( μ − ρ ( A i x + b i ) ) \nabla_x\mathcal{L}_\rho(x,\lambda,\mu)=c+G^\mathrm{T}(\lambda+\rho(Gx-h))-\sum_{i=1}^mA_i^\mathrm{T}P_{\mathcal{K}_i}(\mu-\rho(A_ix+b_i)) xLρ(x,λ,μ)=c+GT(λ+ρ(Gxh))i=1mAiTPKi(μρ(Aix+bi))

   广义的Hessian,即梯度的b次微分可通过下式计算:

   ∂ B ∇ x L ρ ( x , λ , μ ) = ρ ( G T G + ∑ i = 1 m A i T ∂ B P K i ( μ − ρ ( A i x + b i ) ) A i ) \partial_B\nabla_x\mathcal{L}_\rho(x,\lambda,\mu)=\rho{\left(G^\mathrm{T}G+\sum_{i=1}^mA_i^\mathrm{T}\partial_BP_{\mathcal{K}_i}(\mu-\rho(A_ix+b_i))A_i\right)} BxLρ(x,λ,μ)=ρ(GTG+i=1mAiTBPKi(μρ(Aix+bi))Ai)

   具体来说,对于SOCP情况, b次微分可以采用下式进行计算

   ∂ B P K i ( x ) ∋ { I n ∥ x 2 ∥ ≤ x 1 , 0 ∥ x 2 ∥ ≤ − x 1 , ( 1 2 x 2 T 2 ∥ x 2 ∥ x 2 2 ∥ x 2 ∥ x 1 + ∥ x 2 ∥ 2 ∥ x 2 ∥ I n − 1 − x 1 x 2 x 2 T 2 ∥ x 2 ∥ 3 ) ∥ x 2 ∥ > ∣ x 1 ∣ . \partial_BP_{\mathcal{K}_i}(x)\ni\begin{cases}I_n&\|x_2\|\leq x_1,\\0&\|x_2\|\leq-x_1,\\\begin{pmatrix}\frac12&\frac{x_2^\mathrm{T}}{2\|x_2\|}\\\\\frac{x_2}{2\|x_2\|}&\frac{x_1+\|x_2\|}{2\|x_2\|}I_{n-1}-\frac{x_1x_2x_2^\mathrm{T}}{2\|x_2\|^3}\end{pmatrix}&\|x_2\|>|x_1|.&\end{cases} BPKi(x) In0 212∥x2x22∥x2x2T2∥x2x1+x2In12∥x23x1x2x2T x2x1,x2x1,x2>x1∣.

机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法_第13张图片



   参考资料:

   1、数值最优化方法(高立 编著)

   2、机器人中的数值优化


你可能感兴趣的:(数值优化方法,机器人,机器学习,人工智能,数值优化,最优化方法,拉格朗日法,牛顿法)