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