Lagrange 法

理论基础

对于如下带等式约束的优化问题,其中 $f(\boldsymbol{x})$ 为可微凸函数,且该问题对偶间隙为 $0$

$$\begin{equation} \begin{split} \min\;&f(\boldsymbol{x})\\ \text{s.t.}\;&\boldsymbol{Ax}=\boldsymbol{b} \end{split} \end{equation}$$

其拉格朗日函数:

$$\mathcal{L}(\boldsymbol{x, \boldsymbol{\mu}})=f(\boldsymbol{x}) + \boldsymbol{\mu}^\mathsf{T}\left(\boldsymbol{Ax} - \boldsymbol{b}\right)$$

由于问题的对偶间隙为 $0$ ,说明拉格朗日函数的鞍点 $(\boldsymbol{x}^*, \boldsymbol{\mu}^*)$ 对应于原问题和对偶问题的最优解。

在已知 $\boldsymbol{\mu}^*$ 为对偶问题最优解的情况下:

$$\begin{equation} \boldsymbol{x}^*=\arg\min_{\boldsymbol{x}} \mathcal{L}(\boldsymbol{x}, \boldsymbol{\mu}^*) \label{eq-Primal} \end{equation}$$

类似地,在已知 $\boldsymbol{x}$ 为对偶问题最优解的情况下:

$$\begin{equation} \boldsymbol{\mu}^* = \arg\max_{\boldsymbol{\mu}} \mathcal{L}(\boldsymbol{x}^*, \boldsymbol{\mu}) \label{eq-Dual} \end{equation}$$

梯度下降

求解具备强对偶性的凸问题本质上就是求解 KKT 条件的过程,原问题的 KKT 条件如下:

$$\begin{cases} \boldsymbol{A}\boldsymbol{x}^*-\boldsymbol{b} = \boldsymbol{0}\\ \nabla _{\boldsymbol{x}}\mathcal{L}(\boldsymbol{x}^*, \boldsymbol{\mu}^*) = \nabla f(\boldsymbol{x}^*) + \boldsymbol{A}^\mathsf{T}\boldsymbol{\mu}^* = \boldsymbol{0}\\ \nabla _{\boldsymbol{\mu}}\mathcal{L}(\boldsymbol{x}^*, \boldsymbol{\mu}^*) = \boldsymbol{Ax}^* - \boldsymbol{b} \end{cases}$$

以使用梯度下降法分别求解原问题 $\eqref{eq-Primal}$ 和对偶问题 $\eqref{eq-Dual}$

$$\begin{equation} \boldsymbol{x}_{(k+1)} = \boldsymbol{x}_{(k)} - \alpha_{(k)}\left(\nabla f(\boldsymbol{x}_{(k)}) + \boldsymbol{A}^\mathsf{T}\boldsymbol{\mu}_{(k)}\right) \label{eq-PrimalIter} \end{equation}$$
$$\begin{equation} \boldsymbol{\mu}_{(k+1)} = \boldsymbol{\mu}_{(k)} - \alpha_{(k)}\left(\boldsymbol{A}\boldsymbol{x}_{(k)} - \boldsymbol{b} \right) \label{eq-DualIter} \end{equation}$$

很显然,我们无法提前知道 $\boldsymbol{\mu}^*$ 亦或是 $\boldsymbol{x}^*$ 。不过,我们可以将 $\eqref{eq-PrimalIter}$ $\eqref{eq-DualIter}$ 中的 $\boldsymbol{\mu}^*$ $\boldsymbol{x}^*$ 分别替换为其第 $k$ 轮迭代中的近似值 $\boldsymbol{\mu}_{(k)}$ $\boldsymbol{x}_{(k)}$

因此,最终我们得到如下迭代公式:

$$\begin{equation} \boldsymbol{x}_{(k+1)} = \boldsymbol{x}_{(k)} - \alpha_{(k)}\left(\nabla f(\boldsymbol{x}_{(k)}) + \boldsymbol{A}^\mathsf{T}\boldsymbol{\mu}_{(k)}\right) \end{equation}$$
$$\begin{equation} \boldsymbol{\mu}_{(k+1)} = \boldsymbol{\mu}_{(k)} - \alpha_{(k)}\left(\boldsymbol{A}\boldsymbol{x}_{(k)} - \boldsymbol{b} \right) \end{equation}$$