最優化方法 20:對偶近似點梯度下降法

前面講了梯度下降、次梯度下降、近似點梯度下降方法並分析了收斂性。一開始我們還講了對偶原理,那麼如果原問題比較難求解的時候,我們可不可以轉化爲對偶問題並應用梯度法求解呢?當然可以,不過有一個問題就是對偶函數的梯度或者次梯度怎麼計算呢?這就是這一節要關注的問題。

首先一個問題是哪些形式的問題,其對偶問題相比於原問題更簡單呢?可能有很多種,這一節主要關注一種:線性等式/不等式約束的優化問題。之所以考慮此類問題是因爲如果有線性的等式/不等式約束,應用 Lagrange 對偶原理之後,我們可以自然的用原函數的共軛函數來表示其對偶問題,而共軛函數的次梯度是容易求解的,因爲我們可以用 Legendre transformation。那麼接下來就是詳細的原理和例子了。

1. 對偶分解原理

假如我們考慮如下無約束優化問題,通過添加線性等式約束以及對偶原理可以容易獲得對偶問題的形式
(P)min f(x)+g(Ax)(D)max g(z)f(ATz) \begin{aligned} (P)\quad\min \ & f(x)+g(Ax) \\ (D)\quad\max \ & -g^\star(z)-f^\star(-A^Tz) \end{aligned}
如果我們現在想對偶問題應用梯度下降方法,一個關鍵的問題就是如何求解 f,gf^\star,g^\star 的梯度/次梯度?會議一下前面講共軛函數的時候提到了一些性質:

關於共軛函數有以下性質

  1. ff 爲凸的且是閉的(epi f\text{epi }f 爲閉集),則 f=ff^{**}=f (可以聯繫上面提到一系列支撐超平面)
  2. (Fenchel’s inequality) f(x)+f(y)xTyf(x)+f^*(y)\ge x^Ty,這可以類比均值不等式
  3. (Legendre transform)如果 ff 且爲凸的、閉的,設 x=argmax{yTxf(x)}x^*=\arg\max\{y^Tx-f(x)\},那麼有 xf(y)    yf(x)x^*\in\partial f^*(y)\iff y\in\partial f(x^*)。這可以用來求極值,比如 minf(x)0f(x)    xf(0)\min f(x)\Longrightarrow 0\in\partial f(x)\iff x\in\partial f^*(0)

所以只需要找到
x^=argmaxxzTAxf(x)=argminxzTAx+f(x) \hat{x}=\arg\max_x -z^TAx-f(x) = \arg\min_x z^TAx+f(x)
就可以有 x^f(ATz)\hat{x}\in\partial f^\star(-A^Tz)。如果函數 ff嚴格凸函數,意味着上面的 x^\hat{x} 唯一,也說明 f=f\partial f^\star=\nabla f^\star;如果條件加強,ffμ\mu-強凸函數那麼就有
f(y)f(y)1μyy for all y,y \left\|\nabla f^{*}(y)-\nabla f^{*}\left(y^{\prime}\right)\right\| \leq \frac{1}{\mu}\left\|y-y^{\prime}\right\|_{*} \quad \text { for all } y, y^{\prime}
也就是說共軛函數的梯度是 Lipschitz continuous 的,也即共軛函數 ff^\star1/μ1/\mu-smooth 的,因此我們也能證明對偶問題下用梯度方法的收斂性。

例子:現在我們把上面的 gg 換成一個指示函數,也即表示一個線性等式約束
(P)minimize f(x)subject to Ax=b(D)minimize bTzf(ATz) \begin{aligned} (P)\quad\text{minimize } \quad& f(x) \\ \text{subject to } \quad& Ax=b \\ (D)\quad\text{minimize } \quad& -b^Tz-f^\star(-A^Tz) \end{aligned}
怎麼做梯度下降呢?
x^=argminx(f(x)+zTAx)z+=z+t(Ax^b) \begin{aligned} \hat{x} &=\underset{x}{\operatorname{argmin}}\left(f(x)+z^{T} A x\right) \\ z^{+} &=z+t(A \hat{x}-b) \end{aligned}
上面第一步就是爲了求解 ff^\star 的次梯度,第二部就是對 zz 進行梯度上升。我們再來觀察一下 Lagrange 函數
L(x,z)=f(x)+zT(Axb)=bTz+(f(x)+zTAx) \begin{aligned} L(x,z)&=f(x)+z^T(Ax-b) \\ &=-b^Tz+(f(x)+z^TAx) \end{aligned}
我麼前面說過最優解實際上是拉格朗日函數的鞍點,也就是關於 xx 的極小值點,關於 zz 的極大值點。而這裏我們要做的兩部就分別是對 xx 求一個極小值點 x^\hat{x},然後對 zz 並沒有求極大值點,而是做了一個梯度上升。

好了,對偶問題的梯度下降方法原理就這些,但是標題裏面“對偶分解”還有一個“分解”是什麼意思呢?我們說如果原問題比較複雜就可以考慮解對偶問題,那麼具體是哪一種問題呢?看個例子
minimize f1(x1)+f2(x2)subject to A1x1+A2x2b \begin{aligned} \text{minimize } \quad& f_1(x_1)+f_2(x_2) \\ \text{subject to } \quad& A_1x_1+A_2x_2\preceq b \\ \end{aligned}
這個問題有什麼特點呢?目標函數實際上是由兩個不相關的函數 f1(x1),f2(x2)f_1(x_1),f_2(x_2) 求和得到的,注意不僅是 f1,f2f_1,f_2 不同,他們的自變量 x1,x2x_1,x_2 也是相互獨立的,也即是說假如沒有這個約束條件,我們完全可以分解爲兩個獨立的最小化問題分別求解。但是現在由於這個約束條件,這兩個問題耦合在一起了,這就有點麻煩了。那麼在對偶問題中能不能解耦合呢?好消息是可以!他們的對偶問題可以寫爲
minimize f1(A1Tz)f2(A2Tz)bTzsubject to z0 \begin{aligned} \text{minimize } \quad& -f_1^\star(-A_1^Tz)-f_2^\star(-A_2^Tz)-b^Tz \\ \text{subject to } \quad& z\succeq 0 \\ \end{aligned}
這個時候我們只需要分別求解 f1,f2f_1^\star,f_2^\star 的次梯度,這兩個是可以並行計算的,即下面的 x^1,x^2\hat{x}_1,\hat{x}_2 可以並行計算
x^j=argminxj(fj(xj)+zTAjxj) for j=1,2z+=(z+t(A1x^1+A2x^2b))+ \begin{aligned} &\hat{x}_{j}=\underset{x_{j}}{\operatorname{argmin}}\left(f_{j}\left(x_{j}\right)+z^{T} A_{j} x_{j}\right) \quad \text { for } j=1,2\\ &z^{+}=\left(z+t\left(A_{1} \hat{x}_{1}+A_{2} \hat{x}_{2}-b\right)\right)_{+} \end{aligned}
所以每次迭代我們都可以先並行計算 x^j\hat{x}_j,然後把他們傳給中心節點,中心節點再對 zz 計算梯度上升。需要注意的一點是這裏對 z+z^+ 只取正值,這是因爲有 z0z\succeq 0 的約束,從另一個角度理解也是向 C={zz0}C=\{z|z\succeq0\} 做了投影(回憶上一節的近似點算子與投影的關係,以及近似點梯度下降實際上就是先算梯度再做投影)。

例子 1:來看一個二次優化的例子,假設其中的 Pj0P_j\succ0
 minimize j=1r(12xjTPjxj+qjTxj) subject to Bjxjdj,j=1,,rj=1rAjxjb \begin{array}{ll} \text { minimize } & \sum_{j=1}^{r}\left(\frac{1}{2} x_{j}^{T} P_{j} x_{j}+q_{j}^{T} x_{j}\right) \\ \text { subject to } & B_{j} x_{j} \preceq d_{j}, \quad j=1, \ldots, r \\ & \sum_{j=1}^{r} A_{j} x_{j} \preceq b \end{array}
這裏約束條件比較多,我們可以轉化一下,考慮 fj(xj)=12xjTPjxj+qjTxjf_j(x_j)=\frac{1}{2} x_{j}^{T} P_{j} x_{j}+q_{j}^{T} x_{j},定義域爲 {xjBjxjdj}\{x_j|B_jx_j\preceq d_j\}。對偶問題就變成了
minimize bTzj=1rfj(AjTz)subject to z0 \begin{aligned} \text{minimize } \quad& -b^Tz-\sum_{j=1}^r f_j^\star(-A_j^Tz) \\ \text{subject to } \quad& z\succeq 0 \\ \end{aligned}
爲了保證梯度下降方法的收斂性,還需要驗證目標函數的 Lipschitz smooth 性質,考慮 h(z)=jfj(AjTz)h(z)=\sum_j f_j^\star(-A_j^Tz),有
h(z)h(z)2A22minjλmin(Pj)zz2 \left\|\nabla h(z)-\nabla h\left(z^{\prime}\right)\right\|_{2} \leq \frac{\|A\|_{2}^{2}}{\min _{j} \lambda_{\min }\left(P_{j}\right)}\left\|z-z^{\prime}\right\|_{2}
其中 A=[A1Ar]A=[\begin{array}{ccc}A_1&\cdots&A_r\end{array}]。那麼怎麼求 x^j=fj(AjTz)\hat{x}_j=\partial f_j^\star(-A_j^Tz) 呢?就是求解下面的優化問題
 minimize 12xjTPjxj+(qj+AjTz)Txj subject to Bjxjdj \begin{array}{ll} \text { minimize } & \frac{1}{2} x_{j}^{T} P_{j} x_{j}+(q_{j}+A_j^Tz)^T x_{j} \\ \text { subject to } & B_{j} x_{j} \preceq d_{j} \end{array}
例子 2:網絡優化問題
(P) maximize j=1nUj(xj) subject to Rxc(D) minimize cTz+j=1n(Uj)(rjTz) subject to z0 \begin{aligned} (P) \quad \text { maximize } \quad& \sum_{j=1}^{n} U_{j}\left(x_{j}\right)\\ \text { subject to } \quad& R x \leq c\\ (D) \quad \text { minimize } \quad& c^{T} z+\sum_{j=1}^{n}\left(-U_{j}\right)^{*}\left(-r_{j}^{T} z\right)\\ \text { subject to } \quad& z \geq 0 \end{aligned}
只需要將 RR 的各列拆分開就行了。

2. 對偶近似點梯度方法

這節的一開始我們考慮的問題是
(P)min f(x)+g(Ax)(D)min g(z)+f(ATz) \begin{aligned} (P)\quad\min \ & f(x)+g(Ax) \\ (D)\quad\min \ & g^\star(z)+f^\star(-A^Tz) \end{aligned}
不過舉得幾個例子中都沒有見到 gg 的影子,這是因爲我們都加了線性等式/不等式約束,也就等價於 g=δC(x)g=\delta_C(x) 是一個指示函數的形式。那如果考慮一般的(不光滑的) gg 呢?很簡單,我們本質上還是在做梯度下降(上升),如果函數不光滑,就可以用上一篇文章的近似點梯度方法,還記得近似點梯度下降的公式嗎?
z+=proxtg(z+tAf(ATz)) z^{+}=\operatorname{prox}_{t g^{*}}\left(z+t A \nabla f^{*}\left(-A^{T} z\right)\right)
實際上剛剛舉得幾個例子也都是在做近似點梯度下降,只不過對於指示函數的近似點就是在做投影,比較簡單。所以對上面的問題求解實際上就是兩步:
x^=argminx(f(x)+zTAx)z+=proxtg(z+tAx^) \begin{aligned} \hat{x} &=\underset{x}{\operatorname{argmin}}\left(f(x)+z^{T} A x\right) \\ z^{+} &=\operatorname{prox}_{t g^{*}}(z+t A \hat{x}) \end{aligned}
如果有時候 gg^\star 的近似點不好計算,也可以利用 Moreau 分解(參見上上一節近似點算子),那麼可以計算
z+=z+tAx^tproxt1g(t1z+Ax^) z^{+} =z+tA\hat{x}-t\operatorname{prox}_{t^{-1} g}(t^{-1}z+A \hat{x})
這個式子其實可以跟增廣拉格朗日方法(後面會講)聯繫起來。我們可以令 y^\hat{y}
y^=proxt1g(t1z+Ax^)=argminy(g(y)+t2Ax^t1zy22)=argminy(g(y)+zT(Ax^y)+t2Ax^y22) \begin{aligned} \hat{y} &=\operatorname{prox}_{t^{-1} g}\left(t^{-1} z+A \hat{x}\right) \\ &=\underset{y}{\operatorname{argmin}}\left(g(y)+\frac{t}{2}\left\|A \hat{x}-t^{-1} z-y\right\|_{2}^{2}\right) \\ &=\underset{y}{\operatorname{argmin}}\left(g(y)+z^{T}(A \hat{x}-y)+\frac{t}{2}\|A \hat{x}-y\|_{2}^{2}\right) \end{aligned}
那麼就有 z+=z+t(Ax^y^)z^{+}=z+t(A\hat{x}-\hat{y}),所以這裏 y^\hat{y} 一定程度上可以理解爲 g(z)g^\star(z) 的次梯度。把前面的分析綜合起來,我們梯度下降的每次迭代過程實際上可以由下面 3 個步驟組成
x^=argminx(f(x)+zTAx)y^=argminy(g(y)zTy+t2Ax^y22)z+=z+t(Ax^y^) \begin{aligned} \hat{x} &=\underset{x}{\operatorname{argmin}}\left(f(x)+z^{T} A x\right) \\ \hat{y} &=\underset{y}{\operatorname{argmin}}\left(g(y)-z^{T} y+\frac{t}{2}\|A \hat{x}-y\|_{2}^{2}\right) \\ z^{+} &=z+t(A \hat{x}-\hat{y}) \end{aligned}
這個時候可以跟**增廣拉格朗日方法(augmented Lagrangian method)**比較一下,ALM 的計算公式爲
(x^,y^)=argminx,y(f(x)+g(y)+zT(Axy)+t2Axy22) (\hat{x}, \hat{y})=\underset{x, y}{\operatorname{argmin}}\left(f(x)+g(y)+z^{T}(A x-y)+\frac{t}{2}\|A x-y\|_{2}^{2}\right)
首先 ALM 要優化的這個增廣拉格朗日函數函數是在普通拉格朗日函數的基礎上加了一個最後的二階項,然後對增廣拉函數優化 x,yx,y。而前面的對偶近似梯度方法是怎麼做呢?觀察增廣拉函數實際上可以分解爲兩項
L(x,y,z)=(f(x)+zTAx)+(g(y)zTy+t2Axy22) L(x,y,z)=\left(f(x)+z^{T}A x\right)+\left(g(y)-z^Ty+\frac{t}{2}\|A x-y\|_{2}^{2}\right)
而對偶近似梯度方法實際上就是先優化第一項,只考慮 xx,計算得到 x^\hat{x} 以後再代入到第二項單獨優化 yy 得到 y^\hat{y},最後對 zz 做梯度上升!巧妙不巧妙!顯然對偶近似梯度方法計算起來更簡單,但是也有代價,那就是 ALM 並不要求函數 ff 是強凸的,而對偶近似梯度方法則要求 ff 爲強凸的。

基本的理論就完了,下面主要是一些例子。

例子 1gg 爲範數正則項
(P)minimizef(x)+Axb(D)maximizebTzf(ATz)subject toz1 \begin{aligned} (P)\quad\text{minimize}\quad& f(x)+\|A x-b\| \\ (D)\quad\text{maximize} \quad& -b^{T} z-f^{*}\left(-A^{T} z\right)\\ \text{subject to} \quad& \|z\|_{*} \leq 1 \end{aligned}
我們可以取 g(y)=ybg(y)=\Vert y-b\Vert
g(z)={bTzz1+ otherwise proxtg(z)=PC(ztb) g^{*}(z)=\left\{\begin{array}{ll} b^{T} z & \|z\|_{*} \leq 1 \\ +\infty & \text { otherwise } \end{array} \quad \operatorname{prox}_{t g *}(z)=P_{C}(z-t b)\right.
對偶近似梯度下降方法每次迭代過程爲
x^=argminx(f(x)+zTAx)z+=PC(z+t(Ax^b)) \begin{aligned} \hat{x} &=\underset{x}{\operatorname{argmin}}\left(f(x)+z^{T} A x\right) \\ z^{+} &=P_{C}(z+t(A \hat{x}-b)) \end{aligned}
例子 2(重要) :前面都只有 1 個 gg,這次考慮 gg 爲多個 gig_i 求和
(P) minimize f(x)+i=1pBix2(D) maximize f(B1Tz1BpTzp) subject to zi21,i=1,,p \begin{aligned} (P) \quad \text { minimize } \quad& f(x)+\sum_{i=1}^{p}\left\|B_{i} x\right\|_{2}\\ (D) \quad \text { maximize } \quad& -f^{*}\left(-B_{1}^{T} z_{1}-\cdots-B_{p}^{T} z_{p}\right)\\ \text { subject to }\quad& \left\|z_{i}\right\|_{2} \leq 1, \quad i=1, \ldots, p \end{aligned}
這個推導就有點麻煩了,我們考慮一般的情況 g(x)=g1(B1x)+...+gp(Bpx)g(x)=g_1(B_1x)+...+g_p(B_px),那麼可以取 B=[B1;...;Bp]B=[B_1;...;B_p](排成一列),g(x)=g^(Bx)g(x)=\hat{g}(Bx),那麼原問題實際上等價於
minimize f(x)+g^(y)subject to y=Bx \begin{aligned} \text{minimize } \quad& f(x)+\hat{g}(y) \\ \text{subject to } \quad& y=Bx \\ \end{aligned}
拉格朗日函數爲 L(x,y,z)=f(x)+igi(yi)+iziT(Bixyi)L(x,y,z)=f(x)+\sum_i g_i(y_i) + \sum_i z_i^T(B_ix-y_i),對偶問題就變成了
maximizef(iBiTzi)igi(zi) \text{maximize}\quad -f^\star(-\sum_i B_i^Tz_i) - \sum_i g_i^\star(z_i)
注意到對偶問題中 g(z)=igi(zi)g^\star(z)=\sum_i g^\star_i(z_i),利用近似點算子公式就可以得到
proxtg(x)=[proxtg1(x1)proxtgp(xp)] \operatorname{prox}_{tg^\star}(x)=\left[\begin{array}{c}\operatorname{prox}_{tg^\star_1}(x_1)\\ \vdots \\ \operatorname{prox}_{tg^\star_p}(x_p) \end{array}\right]
所以我們的 zi+z_i^+ 之間的計算是互不相關的,可以並行進行,也即下面的式子中 x^\hat{x}此時不能並行計算了,但是 zi+z_i^+可以分別計算
x^=argminx(f(x)+(i=1pBiTzi)Tx)zi+=PCi(zi+tBix^),i=1,,p \begin{aligned} \hat{x} &=\underset{x}{\operatorname{argmin}}\left(f(x)+\left(\sum_{i=1}^{p} B_{i}^{T} z_{i}\right)^{T} x\right) \\ z_{i}^{+} &=P_{C_{i}}\left(z_{i}+t B_{i} \hat{x}\right), \quad i=1, \ldots, p \end{aligned}
注意第一部分當中我們考慮 f1(x1)+f2(x2)f_1(x_1)+f_2(x_2) 形式的優化問題,這使得對偶問題可以分解爲 if(AiTz)\sum_i f^\star(-A_i^Tz),可以並行計算 x^i\hat{x}_i,而這裏我們考慮 ig(x)\sum_i g(x) 則對偶問題可以表示爲 ig(zi)\sum_i g^\star(z_i),這使得計算近似點梯度的時候可以對 zi+z_i^+ 並行計算,非常的對稱!

最後給我的博客打個廣告,歡迎光臨
https://glooow1024.github.io/
https://glooow.gitee.io/

前面的一些博客鏈接如下
凸優化專欄
凸優化學習筆記 1:Convex Sets
凸優化學習筆記 2:超平面分離定理
凸優化學習筆記 3:廣義不等式
凸優化學習筆記 4:Convex Function
凸優化學習筆記 5:保凸變換
凸優化學習筆記 6:共軛函數
凸優化學習筆記 7:擬凸函數 Quasiconvex Function
凸優化學習筆記 8:對數凸函數
凸優化學習筆記 9:廣義凸函數
凸優化學習筆記 10:凸優化問題
凸優化學習筆記 11:對偶原理
凸優化學習筆記 12:KKT條件
凸優化學習筆記 13:KKT條件 & 互補性條件 & 強對偶性
凸優化學習筆記 14:SDP Representablity
最優化方法 15:梯度方法
最優化方法 16:次梯度
最優化方法 17:次梯度下降法
最優化方法 18:近似點算子 Proximal Mapping
最優化方法 19:近似梯度下降
最優化方法 20:對偶近似點梯度下降法
最優化方法 21:加速近似梯度下降方法
最優化方法 22:近似點算法 PPA
最優化方法 23:算子分裂法 & ADMM
最優化方法 24:ADMM

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章