使用拉格朗日乘子法求解二次规划问题
什么是二次规划问题,如何使用拉格朗日乘子法,以及 KKT 条件是什么。
1. 什么是二次规划问题?
二次规划(Quadratic Programming, QP)是一种特殊的优化问题,其目标函数是变量的二次函数,而约束条件通常是线性的。具体形式可以写为:
最小化f(x)=12xTQx+cTx受约束Ax≤b,x≥0, \begin{aligned} &\text{最小化} \quad f(x) = \frac{1}{2} x^T Q x + c^T x \\ &\text{受约束} \quad A x \leq b, \\ &\quad\quad\quad\quad\quad x \geq 0, \end{aligned} 最小化f(x)=21xTQx+cTx受约束Ax≤b,x≥0,
- xxx 是变量向量(x∈Rnx \in \mathbb{R}^nx∈Rn)。
- QQQ 是一个对称矩阵(通常假设是正定或半正定矩阵,以保证问题有解或凸优化)。
- ccc 是一个线性项的系数向量。
- Ax≤bA x \leq bAx≤b 表示线性不等式约束,AAA 是约束矩阵,bbb 是常数向量。
- x≥0x \geq 0x≥0 是非负约束(某些问题可能没有这个约束)。
二次规划广泛应用于机器学习(如支持向量机 SVM)、金融组合优化等领域。
2. 如何用拉格朗日乘子法改写二次规划?
拉格朗日乘子法通常用于处理带约束的优化问题。对于二次规划,我们可以通过引入拉格朗日乘子,将约束问题转化为无约束问题。
标准形式
假设我们有以下二次规划问题:
最小化f(x)=12xTQx+cTx受约束Ax≤b,x≥0。 \begin{aligned} &\text{最小化} \quad f(x) = \frac{1}{2} x^T Q x + c^T x \\ &\text{受约束} \quad A x \leq b, \\ &\quad\quad\quad\quad\quad x \geq 0。 \end{aligned} 最小化f(x)=21xTQx+cTx受约束Ax≤b,x≥0。
构造拉格朗日函数
引入拉格朗日乘子 λ≥0\lambda \geq 0λ≥0(对应不等式约束 Ax≤bA x \leq bAx≤b)和 μ≥0\mu \geq 0μ≥0(对应非负约束 x≥0x \geq 0x≥0),拉格朗日函数为:
L(x,λ,μ)=12xTQx+cTx+λT(Ax−b)−μTx \mathcal{L}(x, \lambda, \mu) = \frac{1}{2} x^T Q x + c^T x + \lambda^T (A x - b) - \mu^T x L(x,λ,μ)=21xTQx+cTx+λT(Ax−b)−μTx
- λ∈Rm\lambda \in \mathbb{R}^mλ∈Rm 是与 Ax≤bA x \leq bAx≤b 对应的乘子向量(mmm 是约束数量)。
- μ∈Rn\mu \in \mathbb{R}^nμ∈Rn 是与 x≥0x \geq 0x≥0 对应的乘子向量。
- λT(Ax−b)\lambda^T (A x - b)λT(Ax−b) 表示不等式约束的惩罚项。
- −μTx-\mu^T x−μTx 表示非负约束的惩罚项。
求解
目标是找到 xxx、λ\lambdaλ、μ\muμ,使得 L(x,λ,μ)\mathcal{L}(x, \lambda, \mu)L(x,λ,μ) 在满足约束的情况下达到最优。这需要用到 KKT 条件(见下文)。
3. KKT 条件是什么?
KKT 条件(Karush-Kuhn-Tucker 条件)是处理带不等式约束的非线性优化问题的最优性条件。对于上述二次规划问题,KKT 条件包括以下几点:
(1) 驻点条件(Stationarity)
对拉格朗日函数 L(x,λ,μ)\mathcal{L}(x, \lambda, \mu)L(x,λ,μ) 关于 xxx 求偏导并置零:
∇xL=Qx+c+ATλ−μ=0 \nabla_x \mathcal{L} = Q x + c + A^T \lambda - \mu = 0 ∇xL=Qx+c+ATλ−μ=0
(2) 原问题约束(Primal Feasibility)
原始问题的约束必须满足:
Ax≤b,x≥0 A x \leq b, \quad x \geq 0 Ax≤b,x≥0
(3) 双重可行性(Dual Feasibility)
拉格朗日乘子是非负的:
λ≥0,μ≥0 \lambda \geq 0, \quad \mu \geq 0 λ≥0,μ≥0
(4) 互补松弛条件(Complementary Slackness)
对于不等式约束,乘子和约束的“松弛量”乘积为零:
λi(Aix−bi)=0,i=1,…,m \lambda_i (A_i x - b_i) = 0, \quad i = 1, \dots, m λi(Aix−bi)=0,i=1,…,m
μjxj=0,j=1,…,n \mu_j x_j = 0, \quad j = 1, \dots, n μjxj=0,j=1,…,n
- 如果约束 Aix<biA_i x < b_iAix<bi 不活跃,则 λi=0\lambda_i = 0λi=0。
- 如果 xj>0x_j > 0xj>0,则 μj=0\mu_j = 0μj=0。
KKT 条件的作用
如果 QQQ 是正定矩阵,二次规划问题是凸优化问题,满足 KKT 条件的解就是全局最优解。通过解这个方程组,可以找到最优的 xxx、λ\lambdaλ、μ\muμ。
总结
- 二次规划问题:目标是二次函数,约束是线性的优化问题。
- 拉格朗日乘子法:通过引入乘子 λ\lambdaλ 和 μ\muμ,构造拉格朗日函数,将约束问题转为无约束问题。
- KKT 条件:包括驻点条件、原问题约束、双重可行性和互补松弛条件,用于求解最优解。
更多推荐
所有评论(0)