交替方向乘子法(ADMM)簡明梳理
本文對ADMM所涉及的一些數學知識進行簡單的講解, 並在最后匯總, 寫出ADMM的基本形式.
本文對推導過程酌情省略.
拉格朗日乘子法
給定二元函數\(z=f(x,y)\)和約束條件\(\psi(x,y)=0\), 求二元函數\(z=f(x,y)\)在約束條件下的極值點. 該問題可以用拉格朗日乘子法解:
首先做拉格朗日函數
\[L(x,y,\lambda)=f(x,y)+\lambda\psi(x,y) \]
其中\(\lambda\)為參數.
令上式對所有自變量的一階偏導等於零, 即
\[\begin{cases} \frac{\partial L(x,y,\lambda)}{\partial x}=0\\ \frac{\partial L(x,y,\lambda)}{\partial y}=0\\ \frac{\partial L(x,y,\lambda)}{\partial\lambda}=0 \end{cases} \]
由上式解出\(x\), \(y\)及\(\lambda\), 如此求得的\((x,y)\), 就是函數\(z=f(x,y)\)在約束條件\(\psi(x,y)=0\)下的可能極值點. 若這樣的點只有一個, 由實際問題可直接確定此點即所求的點.
對偶上升法
首先需要簡單介紹一下凸函數的定義. 凸函數比較直觀的含義即為函數上任意兩點的連線都在函數值之上, 二維上的典型是\(y=x^2\), 形如下凸的曲線, 三維上的典型是\(z=x^2+y^2\), 形如山谷.
接下來提出一個基礎問題:
設函數\(f(x)\)是一個凸函數, 約束條件為\(Ax=b\), 求函數\(f(x)\)的最小值.
即
\[\text{min}\ f(x)\\ \text{s.t.}\ Ax=b \]
寫出該問題的拉格朗日函數
\[L(x,y)=f(x)+y^T(Ax-b) \]
其中\(y\)是拉格朗日乘子, 也稱為對偶變量.
對偶函數為
\[g(x)=\mathop{\text{inf}}\limits_xL(x,y)=-f^*(-A^Ty)-b^Ty \]
其中inf代表下確界, \(f^*\)代表\(f\)的共軛函數.
在滿足一定條件的情況下, 對偶問題和原問題的最優值相等. 設原問題最優值為\(x^*\), 對偶問題最優值為\(y^*\), 則
\[x^*=\mathop{\text{arg min}}\limits_xL(x,y^*) \]
則可以通過對偶上升法, 通過梯度上升法迭代求解, 即
\[x^{k+1}=\mathop{\text{arg min}}\limits_xL(x,y^k)\\ y^{k+1}=y^k+\alpha_k(Ax^{k+1}-b) \]
增廣拉格朗日乘子法
在原拉格朗日乘子法的基礎上加入懲罰項, 即為增廣拉格朗日乘子法, 形如
\[L_\rho(x,y)=f(x)+y^T(Ax-b)+\frac{\rho}{2}\Vert Ax-b\Vert_2^2 \]
其中\(\rho>0\), 稱為懲罰參數.
在增廣拉格朗日乘子法下, 原問題變為
\[\mathop{\text{min}}\limits_xf(x)+\frac{\rho}{2}\Vert Ax-b\Vert_2^2\\ \text{s.t.}\ Ax=b \]
對偶上升迭代更新為
\[x^{k+1}=\mathop{\text{arg min}}\limits_xL_\rho(x,y^k)\\ y^{k+1}=y^k+\rho(Ax^{k+1}-b) \]
交替方向乘子法
將原問題推廣到多個參數的情形下
\[\mathop{\text{min}}\limits_xf(x)+g(z)\\ \text{s.t.}\ Ax+Bz=c \]
其中\(x\in\mathbb{R}^n,z\in\mathbb{R}^m,c\in\mathbb{R}^p,A\in\mathbb{R}^{p\times n},B\in\mathbb{R}^{p\times m}\).
其拉格朗日函數可以寫為
\[L_\rho(x,z,y)=f(x)+g(z)+y^T(Ax+Bz-c)+\frac{\rho}{2}\Vert Ax+Bz-c\Vert_2^2 \]
其更新迭代形式為
\[x^{k+1}=\mathop{\text{arg min}}\limits_xL_\rho(x,z^k,y^k)\\ z^{k+1}=\mathop{\text{arg min}}\limits_zL_\rho(x^{k+1},z,y^k)\\ y^{k+1}=y^k+\rho(Ax^{k+1}+Bz^{k+1}-c) \]
其中\(\rho>0\).