您当前的位置: 首页 > 

B417科研笔记

暂无认证

  • 3浏览

    0关注

    154博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

对偶上升法 (Dual Ascent)

B417科研笔记 发布时间:2021-08-07 23:00:05 ,浏览量:3

对偶上升法

对于一个等式约束的凸优化问题如下: minimize ⁡ f ( x )  subject to  A x = b , \begin{array}{ll} \operatorname{minimize} & f(x) \\ \text { subject to } & A x=b, \end{array} minimize subject to ​f(x)Ax=b,​ 其中, f ( x ) f(x) f(x)为凸函数。 对偶上升法是一种行之有效的方法。 首先,我们将限制条件通过拉格朗日乘子写入目标中, 得到拉格朗日函数为: L ( x , y ) = f ( x ) + y T ( A x − b ) L(x, y)=f(x)+y^{T}(A x-b) L(x,y)=f(x)+yT(Ax−b)

那么,其对偶函数为: g ( y ) = inf ⁡ x L ( x , y ) g(y)=\inf _{x} L(x, y) g(y)=xinf​L(x,y) 相应的对偶问题为:  maximize  g ( y ) (1) \text { maximize } g(y) \tag{1}  maximize g(y)(1) 若强对偶性成立, 则最优解 x ⋆ x^\star x⋆由下式给出: x ⋆ = argmin ⁡ x L ( x , y ⋆ ) , (2) x^{\star}=\underset{x}{\operatorname{argmin}} L\left(x, y^{\star}\right), \tag{2} x⋆=xargmin​L(x,y⋆),(2) 其中 y ⋆ y^\star y⋆为(1)的最优解。 接下来,我们考虑如何求解单变量对偶问题(1), 因为有了(1)的解我们就可以由(2)得到原问题的最优解。

而对偶上升法的算法流程如下:

x k + 1 : = argmin ⁡ x L ( x , y k ) y k + 1 : = y k + α k ( A x k + 1 − b ) , \begin{aligned} &x^{k+1}:=\underset{x}{\operatorname{argmin}} L\left(x, y^{k}\right) \\ &y^{k+1}:=y^{k}+\alpha^{k}\left(A x^{k+1}-b\right), \end{aligned} ​xk+1:=xargmin​L(x,yk)yk+1:=yk+αk(Axk+1−b),​

流程很简单, 也就是说,我们可以通过一种梯度法的方式迭代求解 y y y。 但是,为什么可以这样呢?

对偶上升法的原理

其实对偶上升法的思路就如一开始所说, 寻找一个 y y y最大化 g ( y ) g(y) g(y), 那么给定初始点 y 0 y_0 y0​时, 一种常见的做法就是梯度下降法(这里对应的是梯度上升法),即求取 ∇ g ( y 0 ) \nabla g(y_0) ∇g(y0​), 将 y 1 y_1 y1​更新为 y 0 + α ∇ g ( y 0 ) y_0 + \alpha\nabla g(y_0) y0​+α∇g(y0​)。

就着这个思路,我们事实上就是要求取 ∇ g ( y ) \nabla g(y) ∇g(y)。 注意到,无论 f ( x ) f(x) f(x)是否凸, 对偶函数 g ( y ) g(y) g(y)一定是凹函数 (一族仿射函数的逐点下确界)。 因此, 根据凹函数的一阶条件,我们有: g ( z ) ≤ g ( y ) + ∇ g ( y ) T ( z − y ) ∀ z (3) g(z) \leq g(y)+ \nabla g(y)^T(z-y) \quad \forall z \tag{3} g(z)≤g(y)+∇g(y)T(z−y)∀z(3)

注意到, 根据 g g g的定义, g ( z ) g(z) g(z)可写为: g ( z ) = inf ⁡ x ( f ( x ) + z T ( A x − b ) ) = inf ⁡ x ( f ( x ) + y T ( A x − b ) + ( z − y ) T ( A x − b ) ) g(z) =\inf_x(f(x)+z^{T}(A x-b)) =\inf_x(f(x)+y^{T}(A x-b)+(z-y)^{T}(A x-b)) g(z)=xinf​(f(x)+zT(Ax−b))=xinf​(f(x)+yT(Ax−b)+(z−y)T(Ax−b)) 令 x + ∈ argmin ⁡ L ( x , y ) x^{+} \in \operatorname{argmin} L(x, y) x+∈argminL(x,y), 我们有: g ( z ) = inf ⁡ x ( f ( x ) + y T ( A x − b ) + ( z − y ) T ( A x − b ) ) ≤ ( f ( x + ) + y T ( A x + − b ) + ( z − y ) T ( A x + − b ) ) = g ( y ) + ( A x + − b ) T ( z − y ) (4) g(z) = \inf_x(f(x)+y^{T}(A x-b)+(z-y)^{T}(A x-b)) \le (f(x^+)+y^{T}(A x^+-b)+(z-y)^{T}(A x^+-b))\\=g(y) + (A x^+-b)^T(z-y) \tag{4} g(z)=xinf​(f(x)+yT(Ax−b)+(z−y)T(Ax−b))≤(f(x+)+yT(Ax+−b)+(z−y)T(Ax+−b))=g(y)+(Ax+−b)T(z−y)(4)

第一个不等式是下确界的性质, 第二个等式是 g g g的定义。 这时我们注意到, 对比(3)和(4), 我们发现 ∇ g ( y ) = A x + − b \nabla g(y) = A x^+-b ∇g(y)=Ax+−b.

现在,回过头来看对偶上升法的流程, 第一步在求 x + x^+ x+, 第二步就是根据 ∇ g ( y ) \nabla g(y) ∇g(y) 更新 y y y。 因此,对偶上升法的收敛性是明确的, 因为这本质是就是一种梯度上升法。

可以一提的是, 如果 arg ⁡ min ⁡ x L ( x , y ) \arg\min_x L(x,y) argminx​L(x,y) 在给定 y y y的情况下, 可以很容易得到 x x x的闭式解 x = ϕ ( y ) x=\phi(y) x=ϕ(y)的话, 也可以通过把 ϕ ( y ) \phi(y) ϕ(y)代入 g ( y ) g(y) g(y)中, 这样就无需对偶上升,只需对 y y y一次性迭代求解即可。

次梯度

我们刚忽略了一种情况, 那就是如果 f ( x ) f(x) f(x)并不是严格凸的时候, 会存在 g ( y ) g(y) g(y)不可导的情况,即 ∇ g ( y ) \nabla g(y) ∇g(y)不存在。 此时,则需要引出次梯度的概念, 使得对偶上升法仍可以工作。

关注
打赏
1649265742
查看更多评论
立即登录/注册

微信扫码登录

0.0474s