最优化算法期末复习
2-1: 一维无约束优化 (min f ( x ) , x ∈ R \min f(x), x \in \mathbb{R} min f ( x ) , x ∈ R )
分类 方法 无导数信息 黄金分割法, 斐波那契法 一阶可导 二分法, 割线法 二阶可导 牛顿法
1. 单峰函数
在定义域区间有唯一局部极小点。
性质: [ a 0 , b 0 ] [a_0, b_0] [ a 0 , b 0 ] 上的单峰函数在区间上任取两点 a 1 , b 1 a_1, b_1 a 1 , b 1 且 a 1 < b 1 a_1 < b_1 a 1 < b 1 :
若 f ( a 1 ) ≥ f ( b 1 ) f(a_1) \ge f(b_1) f ( a 1 ) ≥ f ( b 1 ) ,则极小值 x ∗ ∈ [ a 1 , b 0 ] x^* \in [a_1, b_0] x ∗ ∈ [ a 1 , b 0 ]
若 f ( a 1 ) < f ( b 1 ) f(a_1) < f(b_1) f ( a 1 ) < f ( b 1 ) ,则极小值 x ∗ ∈ [ a 0 , b 1 ] x^* \in [a_0, b_1] x ∗ ∈ [ a 0 , b 1 ]
证明:反证法。
2. 方法一:等比例压缩法
设 a 1 = a 0 + p ( b 0 − a 0 ) a_1 = a_0 + p(b_0 - a_0) a 1 = a 0 + p ( b 0 − a 0 ) ,b 1 = b 0 − p ( b 0 − a 0 ) b_1 = b_0 - p(b_0 - a_0) b 1 = b 0 − p ( b 0 − a 0 ) ,其中 p < 1 2 p < \frac{1}{2} p < 2 1 。
[ a 0 , b 1 ] [a_0, b_1] [ a 0 , b 1 ] 和 [ a 1 , b 0 ] [a_1, b_0] [ a 1 , b 0 ] 都是原来的 1 − p 1-p 1 − p 倍。
N N N 次迭代:总压缩比 ( 1 − p ) N (1-p)^N ( 1 − p ) N ,调用 f ( x ) f(x) f ( x ) 次数 2 N 2N 2 N 。
优化:令 1 − p = p + ( 1 − p ) ⋅ p 1-p = p + (1-p) \cdot p 1 − p = p + ( 1 − p ) ⋅ p ,解得 p = 3 ± 5 2 p = \frac{3 \pm \sqrt{5}}{2} p = 2 3 ± 5 。
为了使上一次计算的点能被重复使用,取 p = 3 − 5 2 ≈ 0.382 p = \frac{3 - \sqrt{5}}{2} \approx 0.382 p = 2 3 − 5 ≈ 0.382 。
3. 方法二:黄金分割法
即 p = 0.382 p = 0.382 p = 0.382 的等比例压缩法。
N N N 次迭代:总压缩比 ( 0.618 ) N (0.618)^N ( 0.618 ) N ,调用 f ( x ) f(x) f ( x ) 次数 N + 1 N+1 N + 1 。
4. 方法三:斐波那契法
给定迭代次数,允许 ρ \rho ρ 动态改变使得 N N N 次迭代后的压缩比最小。
满足 ρ k + 1 = 1 − ρ k 1 − ρ k \rho_{k+1} = 1 - \frac{\rho_k}{1-\rho_k} ρ k + 1 = 1 − 1 − ρ k ρ k ,其中 0 ≤ ρ k ≤ 1 2 0 \le \rho_k \le \frac{1}{2} 0 ≤ ρ k ≤ 2 1 。
最优解满足 ρ k = 1 − F N + 1 − k F N + 2 − k \rho_k = 1 - \frac{F_{N+1-k}}{F_{N+2-k}} ρ k = 1 − F N + 2 − k F N + 1 − k ,其中 F − 1 = 0 , F 0 = 1 F_{-1}=0, F_0=1 F − 1 = 0 , F 0 = 1 。
最优压缩比为 1 F N + 1 \frac{1}{F_{N+1}} F N + 1 1 。
注意:由于第 N N N 次迭代 ρ N = 1 2 \rho_N = \frac{1}{2} ρ N = 2 1 时两个点会重叠,实际操作需在第 N N N 次迭代的比例上加一个小的扰动量 ε \varepsilon ε 。
总结:虽然斐波那契法能获得更优的压缩比,但黄金分割法更简单易行,且当 N → + ∞ N \to +\infty N → + ∞ 时,二者拥有相同的压缩比。
二、二分法
要求 f ( x ) f(x) f ( x ) 是连续可微的。
x ( 0 ) = a 0 + b 0 2 x^{(0)} = \frac{a_0 + b_0}{2} x ( 0 ) = 2 a 0 + b 0
若 f ′ ( x ( 0 ) ) > 0 → [ a 0 , x ( 0 ) ] f'(x^{(0)}) > 0 \to [a_0, x^{(0)}] f ′ ( x ( 0 ) ) > 0 → [ a 0 , x ( 0 ) ]
若 f ′ ( x ( 0 ) ) < 0 → [ x ( 0 ) , b 0 ] f'(x^{(0)}) < 0 \to [x^{(0)}, b_0] f ′ ( x ( 0 ) ) < 0 → [ x ( 0 ) , b 0 ]
压缩比 ( 1 2 ) N (\frac{1}{2})^N ( 2 1 ) N ,优于黄金分割和斐波那契法。
三、如何确定初始迭代范围 (Bracket Minimum 算法)
随机确定初始区间 [ a , b ] [a, b] [ a , b ] ,通过交换 a , b a, b a , b 使 f ( a ) > f ( b ) f(a) > f(b) f ( a ) > f ( b ) 。
考虑点 b + s b+s b + s :
如果 f ( b + s ) > f ( b ) f(b+s) > f(b) f ( b + s ) > f ( b ) ,返回 [ a , b + s ] [a, b+s] [ a , b + s ]
如果 f ( b + s ) < f ( b ) f(b+s) < f(b) f ( b + s ) < f ( b ) ,返回 [ b , b + s ] [b, b+s] [ b , b + s ] ,并继续搜索
s s s 初始值一般为 1 × 10 − 2 1 \times 10^{-2} 1 × 1 0 − 2 ,通过 s × k s \times k s × k 扩展,k k k 通常为 2。没有局部极小值的函数无法被包围,会导致算法失败。
2-2: 一维无约束优化 (牛顿法、割线法、二次拟合法)
分类 方法 一阶可导 割线法 → \to → 多维拟牛顿法 二阶可导 牛顿法 → \to → 多维牛顿法
一、牛顿法
从 x 0 x^0 x 0 出发,迭代 x k x^k x k 直至 f ′ ( x ) ≈ 0 f'(x) \approx 0 f ′ ( x ) ≈ 0 。
由 Taylor 公式近似 q ( x ) = f ( x k ) + f ′ ( x k ) ( x − x k ) + 1 2 f ′ ′ ( x k ) ( x − x k ) 2 q(x) = f(x^k) + f'(x^k)(x - x^k) + \frac{1}{2} f''(x^k)(x - x^k)^2 q ( x ) = f ( x k ) + f ′ ( x k ) ( x − x k ) + 2 1 f ′′ ( x k ) ( x − x k ) 2 ,令 q ′ ( x ) = 0 q'(x) = 0 q ′ ( x ) = 0 。
迭代公式:x k + 1 = x k − f ′ ( x k ) f ′ ′ ( x k ) x^{k+1} = x^k - \frac{f'(x^k)}{f''(x^k)} x k + 1 = x k − f ′′ ( x k ) f ′ ( x k ) 。
当 f ′ ′ ( x ) > 0 f''(x) > 0 f ′′ ( x ) > 0 时收敛;f ′ ′ ( x ) < 0 f''(x) < 0 f ′′ ( x ) < 0 时牛顿法可能失效。
可用 ∣ x k + 1 − x k ∣ < ε |x^{k+1} - x^k| < \varepsilon ∣ x k + 1 − x k ∣ < ε 作为停机条件。
牛顿法也可用于求解 g ( x ) = f ′ ( x ) = 0 g(x) = f'(x) = 0 g ( x ) = f ′ ( x ) = 0 。
二、割线法
用一阶导数近似二阶导数:
f ′ ′ ( x k ) ≈ f ′ ( x k ) − f ′ ( x k − 1 ) x k − x k − 1 f''(x^k) \approx \frac{f'(x^k) - f'(x^{k-1})}{x^k - x^{k-1}} f ′′ ( x k ) ≈ x k − x k − 1 f ′ ( x k ) − f ′ ( x k − 1 )
迭代公式:x k + 1 = x k − x k − x k − 1 f ′ ( x k ) − f ′ ( x k − 1 ) f ′ ( x k ) x^{k+1} = x^k - \frac{x^k - x^{k-1}}{f'(x^k) - f'(x^{k-1})} f'(x^k) x k + 1 = x k − f ′ ( x k ) − f ′ ( x k − 1 ) x k − x k − 1 f ′ ( x k ) 。
三、二次拟合搜索 (无需计算一阶导数)
通过三个点 ( x k , f ( x k ) ) , ( x k − 1 , f ( x k − 1 ) ) , ( x k − 2 , f ( x k − 2 ) ) (x^k, f(x^k)), (x^{k-1}, f(x^{k-1})), (x^{k-2}, f(x^{k-2})) ( x k , f ( x k )) , ( x k − 1 , f ( x k − 1 )) , ( x k − 2 , f ( x k − 2 )) 拟合二次函数。
实际计算极小点只需计算 − b 2 a → − det ( X 2 ) 2 det ( X 1 ) -\frac{b}{2a} \to -\frac{\det(X_2)}{2\det(X_1)} − 2 a b → − 2 d e t ( X 1 ) d e t ( X 2 ) 。
补充:正定矩阵
正定:∀ x ∈ R n , x ≠ 0 , x T Q x > 0 \forall x \in \mathbb{R}^n, x \neq 0, x^T Q x > 0 ∀ x ∈ R n , x = 0 , x T Q x > 0
半正定:∀ x ∈ R n , x ≠ 0 , x T Q x ≥ 0 \forall x \in \mathbb{R}^n, x \neq 0, x^T Q x \ge 0 ∀ x ∈ R n , x = 0 , x T Q x ≥ 0
正定 ↔ \leftrightarrow ↔ 所有特征值为正 / 所有顺序主子式为正。
半正定 ↔ \leftrightarrow ↔ 所有特征值为非负。
∇ f ( x ) = [ ∂ f ( x ) ∂ x 1 ⋮ ∂ f ( x ) ∂ x n ] \nabla f(x) = \begin{bmatrix} \frac{\partial f(x)}{\partial x_1} \\ \vdots \\ \frac{\partial f(x)}{\partial x_n} \end{bmatrix} ∇ f ( x ) = ∂ x 1 ∂ f ( x ) ⋮ ∂ x n ∂ f ( x ) 为 f ( x ) f(x) f ( x ) 在 x x x 处的梯度,读作 Nabla,记作 g g g 。
常数 gradient: c ∈ R n , ∇ c = 0 c \in \mathbb{R}^n, \nabla c = 0 c ∈ R n , ∇ c = 0
c , x ∈ R n , f ( x ) = c T x , ∇ f ( x ) = c c, x \in \mathbb{R}^n, f(x) = c^T x, \nabla f(x) = c c , x ∈ R n , f ( x ) = c T x , ∇ f ( x ) = c
x ∈ R n , f ( x ) = x T x , ∇ f ( x ) = 2 x x \in \mathbb{R}^n, f(x) = x^T x, \nabla f(x) = 2x x ∈ R n , f ( x ) = x T x , ∇ f ( x ) = 2 x
A A A 是 n n n 阶对称矩阵, f ( x ) = x T A x , ∇ f ( x ) = 2 A x f(x) = x^T A x, \nabla f(x) = 2Ax f ( x ) = x T A x , ∇ f ( x ) = 2 A x
A A A 为对称矩阵, f ( x ) = 1 2 x T A x + b T x + c , ∇ f ( x ) = A x + b f(x) = \frac{1}{2} x^T A x + b^T x + c, \nabla f(x) = Ax + b f ( x ) = 2 1 x T A x + b T x + c , ∇ f ( x ) = A x + b
1. Jacobi 矩阵
f : R n → R m f: \mathbb{R}^n \to \mathbb{R}^m f : R n → R m , f ( x ) = [ f 1 ( x ) ⋮ f m ( x ) ] f(x) = \begin{bmatrix} f_1(x) \\ \vdots \\ f_m(x) \end{bmatrix} f ( x ) = f 1 ( x ) ⋮ f m ( x ) 且 f 1 ( x ) , … , f m ( x ) f_1(x), \dots, f_m(x) f 1 ( x ) , … , f m ( x ) 可微,那么 D f ( x ) Df(x) D f ( x ) 为其 Jacobi Matrix:
D f ( x ) = [ ∂ f 1 ( x ) ∂ x 1 … ∂ f 1 ( x ) ∂ x n ⋮ ⋮ ∂ f m ( x ) ∂ x 1 … ∂ f m ( x ) ∂ x n ] ⇒ f ( x ) 在 x 处的导数, 记为 D f ( x ) / J ( x ) Df(x) = \begin{bmatrix} \frac{\partial f_1(x)}{\partial x_1} & \dots & \frac{\partial f_1(x)}{\partial x_n} \\ \vdots & & \vdots \\ \frac{\partial f_m(x)}{\partial x_1} & \dots & \frac{\partial f_m(x)}{\partial x_n} \end{bmatrix} \Rightarrow f(x) \text{ 在 } x \text{ 处的导数, 记为 } Df(x) / J(x) D f ( x ) = ∂ x 1 ∂ f 1 ( x ) ⋮ ∂ x 1 ∂ f m ( x ) … … ∂ x n ∂ f 1 ( x ) ⋮ ∂ x n ∂ f m ( x ) ⇒ f ( x ) 在 x 处的导数 , 记为 D f ( x ) / J ( x )
★ D f ( x ) = ∇ f ( x ) T Df(x) = \nabla f(x)^T D f ( x ) = ∇ f ( x ) T (m = 1 m=1 m = 1 )
2. 多维函数求导的链式法则
h ( t ) = g ( x ( t ) ) ( g ( x ) = g ( x 1 , x 2 , … , x n ) , x i = x i ( t 1 , t 2 , … , t m ) ) h(t) = g(x(t)) \quad (g(x) = g(x_1, x_2, \dots, x_n), x_i = x_i(t_1, t_2, \dots, t_m)) h ( t ) = g ( x ( t )) ( g ( x ) = g ( x 1 , x 2 , … , x n ) , x i = x i ( t 1 , t 2 , … , t m ))
∇ h ( t ) = D x ( t ) T ∇ g ( x ( t ) ) \nabla h(t) = D x(t)^T \nabla g(x(t)) ∇ h ( t ) = D x ( t ) T ∇ g ( x ( t ))
其中 x ( t ) : R m → R n x(t): \mathbb{R}^m \to \mathbb{R}^n x ( t ) : R m → R n , g ( t ) : R n → R 1 g(t): \mathbb{R}^n \to \mathbb{R}^1 g ( t ) : R n → R 1 。
推导: D h ( t ) = D g ( x ) D x ( t ) Dh(t) = Dg(x) Dx(t) D h ( t ) = D g ( x ) D x ( t )
∇ h ( t ) T = ∇ g ( x ) T D x ( t ) \nabla h(t)^T = \nabla g(x)^T Dx(t) ∇ h ( t ) T = ∇ g ( x ) T D x ( t )
∇ h ( t ) = D x ( t ) T ∇ g ( x ) \nabla h(t) = Dx(t)^T \nabla g(x) ∇ h ( t ) = D x ( t ) T ∇ g ( x )
3. 梯度的性质
① 沿 g g g 方向函数具有最大增长率。
设 ∥ d ∥ = 1 \|d\|=1 ∥ d ∥ = 1 ,则单位向量的方向导数为:
∂ f ( x ) ∂ d = d ( f ( x + a d ) ) d a = lim a → 0 f ( x + a d ) − f ( x ) a = lim a → 0 a ∇ f ( x ) T d + o ( d ) a = ∇ f ( x ) T d \begin{aligned}\frac{\partial f(x)}{\partial d} &= \frac{d(f(x+ad))}{da} \\ &= \lim_{a \to 0} \frac{f(x+ad) - f(x)}{a} \\ &= \lim_{a \to 0} \frac{a \nabla f(x)^T d + o(d)}{a} \\ &= \nabla f(x)^T d\end{aligned} ∂ d ∂ f ( x ) = d a d ( f ( x + a d )) = a → 0 lim a f ( x + a d ) − f ( x ) = a → 0 lim a a ∇ f ( x ) T d + o ( d ) = ∇ f ( x ) T d
② ∀ \forall ∀ 经过 x 0 x_0 x 0 的水平集 f ( x ) = f ( x 0 ) f(x) = f(x_0) f ( x ) = f ( x 0 ) ,x 0 x_0 x 0 处的切向量与 ∇ f ( x 0 ) \nabla f(x_0) ∇ f ( x 0 ) 正交。
③ d ∈ R n ( d ≠ 0 ) d \in \mathbb{R}^n (d \neq 0) d ∈ R n ( d = 0 ) , x ∈ Ω x \in \Omega x ∈ Ω , ∃ a 0 > 0 \exists a_0 > 0 ∃ a 0 > 0 , a ∈ [ 0 , a 0 ] a \in [0, a_0] a ∈ [ 0 , a 0 ] , x + a d ∈ Ω x + ad \in \Omega x + a d ∈ Ω ,d d d 为 x x x 处的可行方向。对于约束集的内点 x x x ,任意方向均为可行方向。
4. Hessian Matrix
∇ 2 f ( x ) = [ ∂ 2 f ( x ) ∂ x 1 2 ∂ 2 f ( x ) ∂ x 2 ∂ x 1 ⋯ ∂ 2 f ∂ x n ∂ x 1 ⋮ ⋱ ⋮ ∂ 2 f ( x ) ∂ x 1 ∂ x n ⋯ ⋯ ∂ 2 f ( x ) ∂ x n 2 ] → F ( x ) / D 2 f ( x ) \nabla^2 f(x) = \begin{bmatrix} \frac{\partial^2 f(x)}{\partial x_1^2} & \frac{\partial^2 f(x)}{\partial x_2 \partial x_1} & \cdots & \frac{\partial^2 f}{\partial x_n \partial x_1} \\ \vdots & \ddots & & \vdots \\ \frac{\partial^2 f(x)}{\partial x_1 \partial x_n} & \cdots & \cdots & \frac{\partial^2 f(x)}{\partial x_n^2} \end{bmatrix} \rightarrow F(x) / D^2 f(x) ∇ 2 f ( x ) = ∂ x 1 2 ∂ 2 f ( x ) ⋮ ∂ x 1 ∂ x n ∂ 2 f ( x ) ∂ x 2 ∂ x 1 ∂ 2 f ( x ) ⋱ ⋯ ⋯ ⋯ ∂ x n ∂ x 1 ∂ 2 f ⋮ ∂ x n 2 ∂ 2 f ( x ) → F ( x ) / D 2 f ( x )
二阶导连续,对称 Matrix。
5. 多维 Taylor
f ( n ) ( x ) → ∇ ( n ) f ( x ) T Δ f^{(n)}(x) \rightarrow \nabla^{(n)} f(x)^T \Delta f ( n ) ( x ) → ∇ ( n ) f ( x ) T Δ
4-1: 多维无约束优化
一、Linear Regression
令 w ^ = ( w , b ) ∈ R l + 1 \hat{w} = (w, b) \in R^{l+1} w ^ = ( w , b ) ∈ R l + 1 , y = ( y 1 , y 2 , … , y m ) y = (y_1, y_2, \dots, y_m) y = ( y 1 , y 2 , … , y m )
X = ( x 11 x 12 ⋯ x 1 l 1 ⋮ ⋮ ⋮ ⋮ x m 1 x m 2 ⋯ x m l 1 ) = ( x 1 T 1 ⋮ ⋮ x m T 1 ) X = \begin{pmatrix} x_{11} & x_{12} & \cdots & x_{1l} & 1 \\ \vdots & \vdots & & \vdots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{ml} & 1 \end{pmatrix} = \begin{pmatrix} x_1^T & 1 \\ \vdots & \vdots \\ x_m^T & 1 \end{pmatrix} X = x 11 ⋮ x m 1 x 12 ⋮ x m 2 ⋯ ⋯ x 1 l ⋮ x m l 1 ⋮ 1 = x 1 T ⋮ x m T 1 ⋮ 1
最小二乘问题从 min ( w , b ) ∈ R l + 1 ∑ i = 1 m ( w T x i + b − y i ) 2 \min_{(w, b) \in R^{l+1}} \sum_{i=1}^m (w^T x_i + b - y_i)^2 min ( w , b ) ∈ R l + 1 ∑ i = 1 m ( w T x i + b − y i ) 2 转化为 min w ^ ∈ R l + 1 ∣ ∣ X w ^ − y ∣ ∣ 2 2 \min_{\hat{w} \in R^{l+1}} ||X\hat{w} - y||_2^2 min w ^ ∈ R l + 1 ∣∣ X w ^ − y ∣ ∣ 2 2 。
L 1 L_1 L 1 范数正则项: min w ^ ∈ R l + 1 ∣ ∣ X w ^ − y ∣ ∣ 2 2 + μ ∣ ∣ w ^ ∣ ∣ 1 → LASSO模型 \min_{\hat{w} \in R^{l+1}} ||X\hat{w} - y||_2^2 + \mu ||\hat{w}||_1 \rightarrow \text{LASSO模型} min w ^ ∈ R l + 1 ∣∣ X w ^ − y ∣ ∣ 2 2 + μ ∣∣ w ^ ∣ ∣ 1 → LASSO 模型
二、Ridge Regression
min w ^ ∈ R l + 1 ∣ ∣ X w ^ − y ∣ ∣ 2 2 + μ ∣ ∣ w ^ ∣ ∣ 2 2 → 合理设置 μ 值可使目标函数变成严格凸函数 \min_{\hat{w} \in R^{l+1}} ||X\hat{w} - y||_2^2 + \mu ||\hat{w}||_2^2 \rightarrow \text{合理设置 } \mu \text{ 值可使目标函数变成严格凸函数} min w ^ ∈ R l + 1 ∣∣ X w ^ − y ∣ ∣ 2 2 + μ ∣∣ w ^ ∣ ∣ 2 2 → 合理设置 μ 值可使目标函数变成严格凸函数
分析: 一个函数是凸函数 ⟺ \iff ⟺ Hessian Matrix 半正定。
J 1 ( w ^ ) = ( X w ^ − y ) T ( X w ^ − y ) J_1(\hat{w}) = (X\hat{w} - y)^T (X\hat{w} - y) J 1 ( w ^ ) = ( X w ^ − y ) T ( X w ^ − y )
H 1 = ∇ 2 J 1 ( w ^ ) = 2 X T X H_1 = \nabla^2 J_1(\hat{w}) = 2X^T X H 1 = ∇ 2 J 1 ( w ^ ) = 2 X T X (半正定矩阵,若行列满秩则为正定 Matrix)。
J 2 ( w ^ ) = μ w ^ T w ^ J_2(\hat{w}) = \mu \hat{w}^T \hat{w} J 2 ( w ^ ) = μ w ^ T w ^
H 2 = ∇ 2 J 2 ( w ^ ) = 2 μ I H_2 = \nabla^2 J_2(\hat{w}) = 2\mu I H 2 = ∇ 2 J 2 ( w ^ ) = 2 μ I
若 μ ≥ 0 \mu \ge 0 μ ≥ 0 , 则 H 2 H_2 H 2 也呈半正定。两个凸函数的和仍为凸函数。
三. 无约束优化的最优性条件
FONC (一阶必要条件): 设 f : R n → R f: \mathbb{R}^n \to \mathbb{R} f : R n → R 一阶连续可微,如果 x ∗ x^* x ∗ 是局部最小点,则 ∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 ∇ f ( x ∗ ) = 0 。驻点(平稳点)包括极大值、极小值和鞍点。
SONC (二阶必要条件): 设 f : R n → R f: \mathbb{R}^n \to \mathbb{R} f : R n → R 二阶连续可微,∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 ∇ f ( x ∗ ) = 0 且 ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) ∇ 2 f ( x ∗ ) 半正定。
SOSC (二阶充分条件): ∇ f ( x ∗ ) = 0 \nabla f(x^*) = 0 ∇ f ( x ∗ ) = 0 且 ∇ 2 f ( x ∗ ) \nabla^2 f(x^*) ∇ 2 f ( x ∗ ) 正定。
无约束凸函数 FONC → \to → 全局极小点。
4-2: 多维无约束优化 - 下降法
一、下降方向: f ( x k + α d ) = f ( x k ) + α ∇ f ( x k ) T d < f ( x k ) f(x^k + \alpha d) = f(x^k) + \alpha \nabla f(x^k)^T d < f(x^k) f ( x k + α d ) = f ( x k ) + α ∇ f ( x k ) T d < f ( x k ) ,其中 ∇ f ( x k ) T d < 0 \nabla f(x^k)^T d < 0 ∇ f ( x k ) T d < 0 ,d d d 是 f f f 在 x k x^k x k 的下降方向。
下降算法
梯度下降法 (一阶)
共轭梯度法 (一阶)
牛顿下降法 (二阶)
拟牛顿法 (二阶)
步长因子 α k \alpha_k α k 的确定:
α k \alpha_k α k 太小,收敛太慢;α k \alpha_k α k 太大,可能产生锯齿状的函数曲线。
步长衰减因子:α k = α 0 γ k − 1 , γ ∈ ( 0 , 1 ] \alpha_k = \alpha_0 \gamma^{k-1}, \gamma \in (0, 1] α k = α 0 γ k − 1 , γ ∈ ( 0 , 1 ]
精确/近似线搜索:令 ϕ k ( α ) = f ( x k + α p k ) \phi_k(\alpha) = f(x^k + \alpha p^k) ϕ k ( α ) = f ( x k + α p k ) ,则 α k = argmin α ≥ 0 ϕ k ( α ) \alpha_k = \underset{\alpha \ge 0}{\text{argmin}} \phi_k(\alpha) α k = α ≥ 0 argmin ϕ k ( α )
二、精确线搜索
min α ≥ 0 f ( x k + α d k ) \min_{\alpha \ge 0} f(x^k + \alpha d^k) min α ≥ 0 f ( x k + α d k )
性质:方向正交,即 ∇ f ( x k + 1 ) T d k = 0 \nabla f(x^{k+1})^T d^k = 0 ∇ f ( x k + 1 ) T d k = 0 (驻点),意味着 ∇ f ( x k + 1 ) ⊥ d k \nabla f(x^{k+1}) \perp d^k ∇ f ( x k + 1 ) ⊥ d k 。
三、近似线搜索
步长 α \alpha α 的充分下降条件 (Armijo 条件):选择合适 α \alpha α 满足
f ( x k + 1 ) ≤ f ( x k ) + α β ∇ f ( x k ) T d f(x^{k+1}) \le f(x^k) + \alpha \beta \nabla f(x^k)^T d f ( x k + 1 ) ≤ f ( x k ) + α β ∇ f ( x k ) T d
其中 β ∈ ( 0 , 1 ) \beta \in (0, 1) β ∈ ( 0 , 1 ) (如 1 × 10 − 4 1 \times 10^{-4} 1 × 1 0 − 4 )。
β = 0 \beta = 0 β = 0 :选择一个 α \alpha α 使得 f ( x k + 1 ) f(x^{k+1}) f ( x k + 1 ) 变小即可。
β = 1 \beta = 1 β = 1 :f ( x k + 1 ) f(x^{k+1}) f ( x k + 1 ) 至少要小于 f ( x ) f(x) f ( x ) 在 x k x^k x k 处的一阶 Taylor 近似。
充分下降条件不够精细,可能导致算法过早收敛,引入曲率条件:
∇ f ( x k + 1 ) T d k ≥ σ ∇ f ( x k ) T d k ( 0 < β < σ < 1 ) \nabla f(x^{k+1})^T d_k \ge \sigma \nabla f(x^k)^T d_k \quad (0 < \beta < \sigma < 1) ∇ f ( x k + 1 ) T d k ≥ σ ∇ f ( x k ) T d k ( 0 < β < σ < 1 )
防止了 α \alpha α 太小导致收敛过慢。若 α \alpha α 太小,∇ f ( x k + 1 ) T d k \nabla f(x^{k+1})^T d_k ∇ f ( x k + 1 ) T d k 仍会非常负,意味着有很大的下降空间没有利用。
强曲率条件:∣ ∇ f ( x k + 1 ) T d k ∣ ≤ − σ ∇ f ( x k ) T d k |\nabla f(x^{k+1})^T d_k| \le -\sigma \nabla f(x^k)^T d_k ∣∇ f ( x k + 1 ) T d k ∣ ≤ − σ ∇ f ( x k ) T d k
防止了 α \alpha α 太大导致过大下降。
Wolfe 条件:Armijo + 曲率条件
强 Wolfe 条件:Armijo + 强曲率条件
停机准则:
{ ∥ ∇ f ( x k ) ∥ < ε k > k m a x ∣ f ( x k + 1 ) − f ( x k ) ∣ < ε ∣ f ( x k + 1 ) − f ( x k ) ∣ ∣ f ( x k ) ∣ < ε \begin{cases} \|\nabla f(x^k)\| < \varepsilon \\ k > k_{max} \\ |f(x^{k+1}) - f(x^k)| < \varepsilon \\ \frac{|f(x^{k+1}) - f(x^k)|}{|f(x^k)|} < \varepsilon \end{cases} ⎩ ⎨ ⎧ ∥∇ f ( x k ) ∥ < ε k > k ma x ∣ f ( x k + 1 ) − f ( x k ) ∣ < ε ∣ f ( x k ) ∣ ∣ f ( x k + 1 ) − f ( x k ) ∣ < ε
重要结论:二次型优化
形如 f ( x ) = 1 2 x T Q x + b T x + c f(x) = \frac{1}{2}x^T Q x + b^T x + c f ( x ) = 2 1 x T Q x + b T x + c 的二次型,其梯度为 ∇ f ( x ) = Q T x + b = g \nabla f(x) = Q^T x + b = g ∇ f ( x ) = Q T x + b = g 。
通过求导 ∇ φ ( α k ) = 0 \nabla \varphi(\alpha_k) = 0 ∇ φ ( α k ) = 0 可得最优步长:
α k = g T g g T Q g \alpha_k = \frac{g^T g}{g^T Q g} α k = g T Q g g T g
四、共轭梯度法
① 一阶方法;② 对于 n n n 维二次凸优化问题,能够在 n n n 步之内得到结果。
何为共轭?
设 Q ∈ R n × n Q \in \mathbb{R}^{n \times n} Q ∈ R n × n 且 Q = Q T Q = Q^T Q = Q T ,对于方向 d ( 1 ) , … , d ( m ) d^{(1)}, \dots, d^{(m)} d ( 1 ) , … , d ( m ) ,如果对于所有 i ≠ j i \neq j i = j ,都有 d ( i ) T Q d ( j ) = 0 d^{(i)^T} Q d^{(j)} = 0 d ( i ) T Q d ( j ) = 0 ,则这些方向关于 Q Q Q 是共轭的。
共轭不保证正交,但可保证线性无关。
n n n 维空间中相互共轭的非零向量不超过 n n n 个。
共轭性的优势
由于 { d 0 , d 1 , … , d n } \{d^0, d^1, \dots, d^n\} { d 0 , d 1 , … , d n } 线性无关,构成 R n R^n R n 空间的基。沿着共轭方向 d k d^k d k 迭代,每一步找到的最优步长不会破坏前一步在 d k − 1 d^{k-1} d k − 1 上已经找到的最优性。理论上不超过 n n n 次迭代就能精确找到二次函数的全局最优解。
计算过程
min x f ( x ) = 1 2 x T Q x − b T x + c , x k + 1 = x k + α k d k \min_x f(x) = \frac{1}{2}x^T Qx - b^T x + c, \quad x^{k+1} = x^k + \alpha_k d_k min x f ( x ) = 2 1 x T Q x − b T x + c , x k + 1 = x k + α k d k
① d 0 = − g 0 = − ( A x 0 − b ) d_0 = -g_0 = -(Ax_0 - b) d 0 = − g 0 = − ( A x 0 − b )
② 精确线搜索:α k = − g k T d k d k T Q d k \alpha_k = \frac{-g_k^T d_k}{d_k^T Q d_k} α k = d k T Q d k − g k T d k
③ x k + 1 = x k + α k d k x_{k+1} = x_k + \alpha_k d_k x k + 1 = x k + α k d k
④ g k + 1 = A x k + 1 − b g_{k+1} = Ax_{k+1} - b g k + 1 = A x k + 1 − b
⑤ 计算共轭系数 β k = g k + 1 T Q d k d k T Q d k \beta_k = \frac{g_{k+1}^T Q d_k}{d_k^T Q d_k} β k = d k T Q d k g k + 1 T Q d k
⑥ 更新下降方向:d k + 1 = − g k + 1 + β k d k d_{k+1} = -g_{k+1} + \beta_k d_k d k + 1 = − g k + 1 + β k d k
实际应用时的变体
① α k \alpha_k α k 变为近似线搜索。
② 非线性 CG 法使 β k \beta_k β k 的计算与 Q Q Q 无关。
A. HS 公式:
β k = g k + 1 T ( g k + 1 − g k ) d k T ( g k + 1 − g k ) \beta_k = \frac{g_{k+1}^T (g_{k+1} - g_k)}{d_k^T (g_{k+1} - g_k)} β k = d k T ( g k + 1 − g k ) g k + 1 T ( g k + 1 − g k )
B. PR 公式:
β k = g k + 1 T ( g k + 1 − g k ) g k T g k \beta_k = \frac{g_{k+1}^T (g_{k+1} - g_k)}{g_k^T g_k} β k = g k T g k g k + 1 T ( g k + 1 − g k )
C. FR 公式:
β k = g k + 1 T g k + 1 g k T g k \beta_k = \frac{g_{k+1}^T g_{k+1}}{g_k^T g_k} β k = g k T g k g k + 1 T g k + 1
↑ 首先 g k + 1 T d k = 0 g_{k+1}^T dk = 0 g k + 1 T d k = 0 , g k T d k k − 1 = 0 g_k^T dk_{k-1} = 0 g k T d k k − 1 = 0
d k = − g k + β k − 1 d k k − 1 dk = -g_k + \beta_{k-1} dk_{k-1} d k = − g k + β k − 1 d k k − 1
由共轭 ⇒ d k T α d k d k j = 0 \Rightarrow dk^T \alpha_{dk} dk_j = 0 ⇒ d k T α d k d k j = 0 (j ≠ k j \neq k j = k )
g k + 1 = α x k + 1 − b g_{k+1} = \alpha x_{k+1} - b g k + 1 = α x k + 1 − b
= α ( x k + α k d k ) − b = \alpha (x_k + \alpha_k dk) - b = α ( x k + α k d k ) − b
= α x k − b + α k α d k d k = g k + α k α d k d k = \alpha x_k - b + \alpha_k \alpha_{dk} dk = g_k + \alpha_k \alpha_{dk} dk = α x k − b + α k α d k d k = g k + α k α d k d k
d k k − 1 T g k + 1 = d k k − 1 T g k ⏟ = 0 + α k α d k d k k − 1 T d k ⏟ = 0 dk_{k-1}^T g_{k+1} = \underbrace{dk_{k-1}^T g_k}_{=0} + \underbrace{\alpha_k \alpha_{dk} dk_{k-1}^T dk}_{=0} d k k − 1 T g k + 1 = = 0 d k k − 1 T g k + = 0 α k α d k d k k − 1 T d k
4-4: 无约束高维优化 → 牛顿法
令 g ( x ( k ) ) = ∇ f ( x ( k ) ) g(x^{(k)}) = \nabla f(x^{(k)}) g ( x ( k ) ) = ∇ f ( x ( k ) ) , F ( x ( k ) ) = ∇ 2 f ( x ( k ) ) F(x^{(k)}) = \nabla^2 f(x^{(k)}) F ( x ( k ) ) = ∇ 2 f ( x ( k ) )
一、牛顿法的思想
令 q ( x ) = f ( x ( k ) ) + ( x − x ( k ) ) T ∇ f ( x ( k ) ) + 1 2 ( x − x ( k ) ) T ∇ 2 f ( x ( k ) ) ( x − x ( k ) ) q(x) = f(x^{(k)}) + (x - x^{(k)})^T \nabla f(x^{(k)}) + \frac{1}{2} (x - x^{(k)})^T \nabla^2 f(x^{(k)}) (x - x^{(k)}) q ( x ) = f ( x ( k ) ) + ( x − x ( k ) ) T ∇ f ( x ( k ) ) + 2 1 ( x − x ( k ) ) T ∇ 2 f ( x ( k ) ) ( x − x ( k ) )
利用 q ( x ) q(x) q ( x ) 在 x ( k ) x^{(k)} x ( k ) 近似 f ( x ) f(x) f ( x ) → 找 q ( x ) q(x) q ( x ) 极小点 → ∇ q ( x ) = g ( x ( k ) ) + F ( x ( k ) ) ( x − x ( k ) ) = 0 \nabla q(x) = g(x^{(k)}) + F(x^{(k)}) (x - x^{(k)}) = 0 ∇ q ( x ) = g ( x ( k ) ) + F ( x ( k ) ) ( x − x ( k ) ) = 0
若 F ( x ( k ) ) > 0 F(x^{(k)}) > 0 F ( x ( k ) ) > 0 , q ( x ) q(x) q ( x ) 极小点为 x ( k ) − F ( x ( k ) ) − 1 g ( x ( k ) ) x^{(k)} - F(x^{(k)})^{-1} g(x^{(k)}) x ( k ) − F ( x ( k ) ) − 1 g ( x ( k ) )
二、注意
计算 F ( x ( k ) ) d ( k ) = − g ( x ( k ) ) F(x^{(k)}) d^{(k)} = -g(x^{(k)}) F ( x ( k ) ) d ( k ) = − g ( x ( k ) ) 需要求解 n n n 维非齐次方程组
牛顿法可用于求解 g ( x ) = 0 g(x) = 0 g ( x ) = 0
三、牛顿法缺点
基于二次近似,可能发散
在 x ( k ) x^{(k)} x ( k ) 处 F ( x ( k ) ) F(x^{(k)}) F ( x ( k ) ) 非正定,d ( k ) d^{(k)} d ( k ) 非下降方向
x ( k ) x^{(k)} x ( k ) 处 F ( x ( k ) ) F(x^{(k)}) F ( x ( k ) ) 奇异,无法求解 F ( x ( k ) ) d ( k ) = − g ( x ( k ) ) F(x^{(k)}) d^{(k)} = -g(x^{(k)}) F ( x ( k ) ) d ( k ) = − g ( x ( k ) )
Hessian Matrix 计算量太大 ⇒ 拟牛顿法
四、修正牛顿法
定理: F ( x ( k ) ) > 0 F(x^{(k)}) > 0 F ( x ( k ) ) > 0 , g ( k ) = ∇ f ( x ( k ) ) ≠ 0 g^{(k)} = \nabla f(x^{(k)}) \neq 0 g ( k ) = ∇ f ( x ( k ) ) = 0 , d ( k ) = − F ( x ( k ) ) − 1 g ( k ) d^{(k)} = -F(x^{(k)})^{-1} g^{(k)} d ( k ) = − F ( x ( k ) ) − 1 g ( k ) 是一个下降方向
解决 f ( x ( k ) + d ( k ) ) > f ( x ( k ) ) → f(x^{(k)} + d^{(k)}) > f(x^{(k)}) \rightarrow f ( x ( k ) + d ( k ) ) > f ( x ( k ) ) → 设置步长 → \rightarrow → 阻尼牛顿法
F ( x ( k ) ) F(x^{(k)}) F ( x ( k ) ) 不正定 → \rightarrow → Levenberg-Marquardt 修正 → x ( k + 1 ) = x ( k ) − ( F ( x ( k ) ) + μ k I ) − 1 g ( k ) \rightarrow x^{(k+1)} = x^{(k)} - (F(x^{(k)}) + \mu_k I)^{-1} g^{(k)} → x ( k + 1 ) = x ( k ) − ( F ( x ( k ) ) + μ k I ) − 1 g ( k )
→ μ k \rightarrow \mu_k → μ k 足够大可保证正定
定理: 若 F ( x ( k ) ) + μ k I F(x^{(k)}) + \mu_k I F ( x ( k ) ) + μ k I 正定, 则 [ F ( x ( k ) ) + μ k I ] − 1 g ( k ) [F(x^{(k)}) + \mu_k I]^{-1} g^{(k)} [ F ( x ( k ) ) + μ k I ] − 1 g ( k ) 也是一个下降方向
μ k → 0 \mu_k \to 0 μ k → 0 , 接近牛顿法
μ k → ∞ \mu_k \to \infty μ k → ∞ , 表现出步长较小的梯度方法的特征.
实际可先选择较小的 μ k \mu_k μ k , 逐渐增大直至出现下降特性.
F ( x ( k ) ) F(x^{(k)}) F ( x ( k ) ) 奇异: 这一步换成最速梯度下降法.
由于 z ( k ) z ( k ) T ⏟ 外积 = rank ( [ z 1 ( k ) ⋮ z n ( k ) ] [ z 1 ( k ) … z n ( k ) ] ) = 1 \underbrace{z^{(k)} z^{(k)T}}_{\text{外积}} = \text{rank} \left( \begin{bmatrix} z_1^{(k)} \\ \vdots \\ z_n^{(k)} \end{bmatrix} [z_1^{(k)} \dots z_n^{(k)}] \right) = 1 外积 z ( k ) z ( k ) T = rank z 1 ( k ) ⋮ z n ( k ) [ z 1 ( k ) … z n ( k ) ] = 1
→ 如果 H k H_k H k 对称, 则 H k + 1 H_{k+1} H k + 1 对称
秩 1 修正法步骤:
① 任选一个对称正定矩阵 H 0 H_0 H 0 (一般为 I I I )
② 若 g ( k ) = 0 g^{(k)} = 0 g ( k ) = 0 , 停止, 否则 d ( k ) = − H k g ( k ) d^{(k)} = -H_k g^{(k)} d ( k ) = − H k g ( k )
③ 计算 α k = arg min α ≥ 0 f ( x ( k ) + α d ( k ) ) , x ( k + 1 ) = x ( k ) + α k d ( k ) \alpha_k = \arg \min_{\alpha \ge 0} f(x^{(k)} + \alpha d^{(k)}), x^{(k+1)} = x^{(k)} + \alpha_k d^{(k)} α k = arg min α ≥ 0 f ( x ( k ) + α d ( k ) ) , x ( k + 1 ) = x ( k ) + α k d ( k )
④ 计算: Δ x ( k ) = α k d ( k ) = x ( k + 1 ) − x ( k ) \Delta x^{(k)} = \alpha_k d^{(k)} = x^{(k+1)} - x^{(k)} Δ x ( k ) = α k d ( k ) = x ( k + 1 ) − x ( k )
Δ g ( k ) = g ( k + 1 ) − g ( k ) \Delta g^{(k)} = g^{(k+1)} - g^{(k)} Δ g ( k ) = g ( k + 1 ) − g ( k )
⋆ H k + 1 = H k + ( Δ x ( k ) − H k Δ g ( k ) ) ( Δ x ( k ) − H k Δ g ( k ) ) T Δ g ( k ) T ( Δ x ( k ) − H k Δ g ( k ) ) \star H_{k+1} = H_k + \frac{(\Delta x^{(k)} - H_k \Delta g^{(k)}) (\Delta x^{(k)} - H_k \Delta g^{(k)})^T}{\Delta g^{(k)T} (\Delta x^{(k)} - H_k \Delta g^{(k)})} ⋆ H k + 1 = H k + Δ g ( k ) T ( Δ x ( k ) − H k Δ g ( k ) ) ( Δ x ( k ) − H k Δ g ( k ) ) ( Δ x ( k ) − H k Δ g ( k ) ) T
推导: 由 H k + 1 Δ g ( k ) = Δ x ( k ) H_{k+1} \Delta g^{(k)} = \Delta x^{(k)} H k + 1 Δ g ( k ) = Δ x ( k )
即 ( H k + α k z ( k ) z ( k ) T ) Δ g ( k ) = Δ x ( k ) (H_k + \alpha_k z^{(k)} z^{(k)T}) \Delta g^{(k)} = \Delta x^{(k)} ( H k + α k z ( k ) z ( k ) T ) Δ g ( k ) = Δ x ( k )
α k z ( k ) z ( k ) T Δ g ( k ) = Δ x ( k ) − H k Δ g ( k ) \alpha_k z^{(k)} z^{(k)T} \Delta g^{(k)} = \Delta x^{(k)} - H_k \Delta g^{(k)} α k z ( k ) z ( k ) T Δ g ( k ) = Δ x ( k ) − H k Δ g ( k )
性质:
① H 1 , … , H k H_1, \dots, H_k H 1 , … , H k 满足拟牛顿条件
② H k H_k H k 一定是对称 Matrix (H 1 = I H_1 = I H 1 = I 对称, α k z ( k ) z ( k ) T \alpha_k z^{(k)} z^{(k)T} α k z ( k ) z ( k ) T 对称)
③ 秩 1 法也是一种共轭方向法, 具有和共轭法相同的收敛速度
f ( x 1 , x 2 ) = x 1 2 + 1 2 x 2 2 + 3 = 1 2 [ x 1 , x 2 ] [ 2 0 0 1 ] [ x 1 x 2 ] + 3 f(x_1, x_2) = x_1^2 + \frac{1}{2}x_2^2 + 3 = \frac{1}{2} [x_1, x_2] \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} + 3 f ( x 1 , x 2 ) = x 1 2 + 2 1 x 2 2 + 3 = 2 1 [ x 1 , x 2 ] [ 2 0 0 1 ] [ x 1 x 2 ] + 3
Q = [ 2 0 0 1 ] , x ( 0 ) = [ 1 2 ] , H 0 = I Q = \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix}, x^{(0)} = \begin{bmatrix} 1 \\ 2 \end{bmatrix}, H_0 = I Q = [ 2 0 0 1 ] , x ( 0 ) = [ 1 2 ] , H 0 = I
∇ f ( x ) = Q T x + b = Q T x \nabla f(x) = Q^T x + b = Q^T x ∇ f ( x ) = Q T x + b = Q T x
g ( 0 ) = [ 2 0 0 1 ] [ 1 2 ] = [ 2 2 ] ⇒ d ( 0 ) = − g ( 0 ) = [ − 2 − 2 ] g^{(0)} = \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 2 \end{bmatrix} = \begin{bmatrix} 2 \\ 2 \end{bmatrix} \Rightarrow d^{(0)} = -g^{(0)} = \begin{bmatrix} -2 \\ -2 \end{bmatrix} g ( 0 ) = [ 2 0 0 1 ] [ 1 2 ] = [ 2 2 ] ⇒ d ( 0 ) = − g ( 0 ) = [ − 2 − 2 ]
α k = argmin α ≥ 0 f ( x ( 0 ) + α d ( 0 ) ) \alpha_k = \underset{\alpha \ge 0}{\text{argmin}} f(x^{(0)} + \alpha d^{(0)}) α k = α ≥ 0 argmin f ( x ( 0 ) + α d ( 0 ) )
⇒ φ ( α ) = ( x ( 0 ) + α d ( 0 ) ) T Q ( x ( 0 ) + α d ( 0 ) ) + c \Rightarrow \varphi(\alpha) = (x^{(0)} + \alpha d^{(0)})^T Q (x^{(0)} + \alpha d^{(0)}) + c ⇒ φ ( α ) = ( x ( 0 ) + α d ( 0 ) ) T Q ( x ( 0 ) + α d ( 0 ) ) + c
= x ( 0 ) T Q x ( 0 ) + 2 α d ( 0 ) T Q d ( 0 ) + x ( 0 ) T Q α d ( 0 ) + α d ( 0 ) T Q x ( 0 ) = x^{(0)T} Q x^{(0)} + 2\alpha d^{(0)T} Q d^{(0)} + x^{(0)T} Q \alpha d^{(0)} + \alpha d^{(0)T} Q x^{(0)} = x ( 0 ) T Q x ( 0 ) + 2 α d ( 0 ) T Q d ( 0 ) + x ( 0 ) T Q α d ( 0 ) + α d ( 0 ) T Q x ( 0 )
∇ φ ( α ) = 2 α ⋅ d ( 0 ) T Q d ( 0 ) + d ( 0 ) T Q T x ( 0 ) + d ( 0 ) T Q x ( 0 ) = 0 \nabla \varphi(\alpha) = 2\alpha \cdot d^{(0)T} Q d^{(0)} + d^{(0)T} Q^T x^{(0)} + d^{(0)T} Q x^{(0)} = 0 ∇ φ ( α ) = 2 α ⋅ d ( 0 ) T Q d ( 0 ) + d ( 0 ) T Q T x ( 0 ) + d ( 0 ) T Q x ( 0 ) = 0
x 0 = [ 1 2 ] , d 0 = [ − 2 − 2 ] x_0 = \begin{bmatrix} 1 \\ 2 \end{bmatrix}, d_0 = \begin{bmatrix} -2 \\ -2 \end{bmatrix} x 0 = [ 1 2 ] , d 0 = [ − 2 − 2 ]
2 α ⋅ [ − 2 , − 2 ] [ 2 0 0 1 ] [ − 2 − 2 ] + 2 ⋅ [ − 2 , − 2 ] [ 2 0 0 1 ] [ 1 2 ] 2\alpha \cdot [-2, -2] \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} -2 \\ -2 \end{bmatrix} + 2 \cdot [-2, -2] \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 2 \end{bmatrix} 2 α ⋅ [ − 2 , − 2 ] [ 2 0 0 1 ] [ − 2 − 2 ] + 2 ⋅ [ − 2 , − 2 ] [ 2 0 0 1 ] [ 1 2 ]
[ − 4 , − 2 ] [ − 2 − 2 ] = 8 + 4 = 12 , [ − 4 , − 2 ] [ 1 2 ] = − 8 [-4, -2] \begin{bmatrix} -2 \\ -2 \end{bmatrix} = 8 + 4 = 12, [-4, -2] \begin{bmatrix} 1 \\ 2 \end{bmatrix} = -8 [ − 4 , − 2 ] [ − 2 − 2 ] = 8 + 4 = 12 , [ − 4 , − 2 ] [ 1 2 ] = − 8
α = 2 3 ☆ \alpha = \frac{2}{3} \text{ ☆} α = 3 2 ☆
x 1 = [ 1 2 ] + 2 3 [ − 2 − 2 ] = [ − 1 3 , 2 3 ] T x_1 = \begin{bmatrix} 1 \\ 2 \end{bmatrix} + \frac{2}{3} \begin{bmatrix} -2 \\ -2 \end{bmatrix} = [-\frac{1}{3}, \frac{2}{3}]^T x 1 = [ 1 2 ] + 3 2 [ − 2 − 2 ] = [ − 3 1 , 3 2 ] T
Δ x 0 = x 1 − x 0 = [ − 4 3 , − 4 3 ] T \Delta x^0 = x_1 - x_0 = [-\frac{4}{3}, -\frac{4}{3}]^T Δ x 0 = x 1 − x 0 = [ − 3 4 , − 3 4 ] T
Δ g 0 = g 1 − g 0 = [ 2 0 0 1 ] [ − 1 3 2 3 ] − [ 2 2 ] = [ − 2 3 2 3 ] − [ 2 2 ] = [ − 8 3 − 4 3 ] , H 0 = I \Delta g^0 = g^1 - g^0 = \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} -\frac{1}{3} \\ \frac{2}{3} \end{bmatrix} - \begin{bmatrix} 2 \\ 2 \end{bmatrix} = \begin{bmatrix} -\frac{2}{3} \\ \frac{2}{3} \end{bmatrix} - \begin{bmatrix} 2 \\ 2 \end{bmatrix} = \begin{bmatrix} -\frac{8}{3} \\ -\frac{4}{3} \end{bmatrix}, H_0 = I Δ g 0 = g 1 − g 0 = [ 2 0 0 1 ] [ − 3 1 3 2 ] − [ 2 2 ] = [ − 3 2 3 2 ] − [ 2 2 ] = [ − 3 8 − 3 4 ] , H 0 = I
H 1 = H 0 + ( Δ x ( 0 ) − H 0 Δ g ( 0 ) ) ( Δ x ( 0 ) − H 0 Δ g ( 0 ) ) T g ( 0 ) T ( Δ x ( 0 ) − H 0 Δ g ( 0 ) ) = [ 1 6 0 0 1 6 ] H_1 = H_0 + \frac{(\Delta x^{(0)} - H_0 \Delta g^{(0)}) (\Delta x^{(0)} - H_0 \Delta g^{(0)})^T}{g^{(0)T} (\Delta x^{(0)} - H_0 \Delta g^{(0)})} = \begin{bmatrix} \frac{1}{6} & 0 \\ 0 & \frac{1}{6} \end{bmatrix} H 1 = H 0 + g ( 0 ) T ( Δ x ( 0 ) − H 0 Δ g ( 0 ) ) ( Δ x ( 0 ) − H 0 Δ g ( 0 ) ) ( Δ x ( 0 ) − H 0 Δ g ( 0 ) ) T = [ 6 1 0 0 6 1 ]
Δ 1 = H 1 Δ g ( 0 ) = [ 1 3 − 2 3 ] T \Delta^1 = H_1 \Delta g^{(0)} = \begin{bmatrix} \frac{1}{3} & -\frac{2}{3} \end{bmatrix}^T Δ 1 = H 1 Δ g ( 0 ) = [ 3 1 − 3 2 ] T
注意:
秩1修正法并不一定能满足下降性质,对于二次型问题也不一定下降。
→ 当 g ( k ) T ( Δ x ( k ) − H k Δ g ( k ) ) < 0 g^{(k)T} (\Delta x^{(k)} - H_k \Delta g^{(k)}) < 0 g ( k ) T ( Δ x ( k ) − H k Δ g ( k ) ) < 0 时,H k H_k H k 不一定正定。
6. DFP算法 (秩2修正法)
H k + 1 = H k + α k z 1 ( k ) z 1 ( k ) T + β k z 2 ( k ) z 2 ( k ) T H_{k+1} = H_k + \alpha_k z_1^{(k)} z_1^{(k)T} + \beta_k z_2^{(k)} z_2^{(k)T} H k + 1 = H k + α k z 1 ( k ) z 1 ( k ) T + β k z 2 ( k ) z 2 ( k ) T
如何确定 α k z 1 ( k ) z 1 ( k ) T \alpha_k z_1^{(k)} z_1^{(k)T} α k z 1 ( k ) z 1 ( k ) T 和 β k z 2 ( k ) z 2 ( k ) T \beta_k z_2^{(k)} z_2^{(k)T} β k z 2 ( k ) z 2 ( k ) T ?
Δ g ( k ) = g ( k + 1 ) − g ( k ) , Δ x ( k ) = x ( k + 1 ) − x ( k ) \Delta g^{(k)} = g^{(k+1)} - g^{(k)}, \quad \Delta x^{(k)} = x^{(k+1)} - x^{(k)} Δ g ( k ) = g ( k + 1 ) − g ( k ) , Δ x ( k ) = x ( k + 1 ) − x ( k )
H k + 1 Δ g ( k ) = Δ x ( k ) → ( H k + α k z 1 ( k ) z 1 ( k ) T + β k z 2 ( k ) z 2 ( k ) T ) Δ g ( k ) = Δ x ( k ) H_{k+1} \Delta g^{(k)} = \Delta x^{(k)} \rightarrow (H_k + \alpha_k z_1^{(k)} z_1^{(k)T} + \beta_k z_2^{(k)} z_2^{(k)T}) \Delta g^{(k)} = \Delta x^{(k)} H k + 1 Δ g ( k ) = Δ x ( k ) → ( H k + α k z 1 ( k ) z 1 ( k ) T + β k z 2 ( k ) z 2 ( k ) T ) Δ g ( k ) = Δ x ( k )
⇒ α k z 1 ( k ) z 1 ( k ) T Δ g ( k ) ⏟ 1 ◯ + β k z 2 ( k ) z 2 ( k ) T Δ g ( k ) ⏟ 2 ◯ = Δ x ( k ) ⏟ a ◯ − H k Δ g ( k ) ⏟ b ◯ → 假设 1 ◯ = a ◯ , 2 ◯ = b ◯ \Rightarrow \underbrace{\alpha_k z_1^{(k)} z_1^{(k)T} \Delta g^{(k)}}_{\textcircled{1}} + \underbrace{\beta_k z_2^{(k)} z_2^{(k)T} \Delta g^{(k)}}_{\textcircled{2}} = \underbrace{\Delta x^{(k)}}_{\textcircled{a}} - \underbrace{H_k \Delta g^{(k)}}_{\textcircled{b}} \rightarrow \text{假设 } \textcircled{1} = \textcircled{a}, \textcircled{2} = \textcircled{b} ⇒ 1 ◯ α k z 1 ( k ) z 1 ( k ) T Δ g ( k ) + 2 ◯ β k z 2 ( k ) z 2 ( k ) T Δ g ( k ) = a ◯ Δ x ( k ) − b ◯ H k Δ g ( k ) → 假设 1 ◯ = a ◯ , 2 ◯ = b ◯
由于 z 1 ( k ) T Δ g ( k ) z_1^{(k)T} \Delta g^{(k)} z 1 ( k ) T Δ g ( k ) 和 z 2 ( k ) T Δ g ( k ) z_2^{(k)T} \Delta g^{(k)} z 2 ( k ) T Δ g ( k ) 是标量,那么可假设存在 θ 1 , θ 2 \theta_1, \theta_2 θ 1 , θ 2 :
z 1 ( k ) = θ 1 Δ x ( k ) , z 2 ( k ) = θ 2 H k Δ g ( k ) z_1^{(k)} = \theta_1 \Delta x^{(k)}, \quad z_2^{(k)} = \theta_2 H_k \Delta g^{(k)} z 1 ( k ) = θ 1 Δ x ( k ) , z 2 ( k ) = θ 2 H k Δ g ( k )
代回可得:α k θ 1 2 ( Δ x ( k ) T Δ g ( k ) ) Δ x ( k ) = Δ x ( k ) \alpha_k \theta_1^2 (\Delta x^{(k)T} \Delta g^{(k)}) \Delta x^{(k)} = \Delta x^{(k)} α k θ 1 2 ( Δ x ( k ) T Δ g ( k ) ) Δ x ( k ) = Δ x ( k )
α k θ 1 2 = 1 Δ x ( k ) T Δ g ( k ) \alpha_k \theta_1^2 = \frac{1}{\Delta x^{(k)T} \Delta g^{(k)}} α k θ 1 2 = Δ x ( k ) T Δ g ( k ) 1
同理可得:β k θ 2 2 = 1 ( H k Δ g ( k ) ) T Δ g ( k ) \beta_k \theta_2^2 = \frac{1}{(H_k \Delta g^{(k)})^T \Delta g^{(k)}} β k θ 2 2 = ( H k Δ g ( k ) ) T Δ g ( k ) 1
我们要找到的是 α k z 1 ( k ) z 1 ( k ) T \alpha_k z_1^{(k)} z_1^{(k)T} α k z 1 ( k ) z 1 ( k ) T 和 β k z 2 ( k ) z 2 ( k ) T \beta_k z_2^{(k)} z_2^{(k)T} β k z 2 ( k ) z 2 ( k ) T :
H k + 1 = H k + Δ x ( k ) Δ x ( k ) T Δ x ( k ) T Δ g ( k ) − ( H k Δ g ( k ) ) ( H k Δ g ( k ) ) T ( H k Δ g ( k ) ) T Δ g ( k ) H_{k+1} = H_k + \frac{\Delta x^{(k)} \Delta x^{(k)T}}{\Delta x^{(k)T} \Delta g^{(k)}} - \frac{(H_k \Delta g^{(k)}) (H_k \Delta g^{(k)})^T}{(H_k \Delta g^{(k)})^T \Delta g^{(k)}} H k + 1 = H k + Δ x ( k ) T Δ g ( k ) Δ x ( k ) Δ x ( k ) T − ( H k Δ g ( k ) ) T Δ g ( k ) ( H k Δ g ( k ) ) ( H k Δ g ( k ) ) T
○ DFP 能够修正秩 1 法中不定的问题。
示例
f ( x ) = 1 2 x T [ 4 2 2 2 ] x − x T [ 1 1 ] , x ∈ R 2 , x ( 0 ) = [ 0 , 0 ] T , H 0 = I f(x) = \frac{1}{2} x^T \begin{bmatrix} 4 & 2 \\ 2 & 2 \end{bmatrix} x - x^T \begin{bmatrix} 1 \\ 1 \end{bmatrix}, x \in \mathbb{R}^2, x^{(0)} = [0, 0]^T, H_0 = I f ( x ) = 2 1 x T [ 4 2 2 2 ] x − x T [ 1 1 ] , x ∈ R 2 , x ( 0 ) = [ 0 , 0 ] T , H 0 = I
f ( x ) = 1 2 x T Q x − x T b f(x) = \frac{1}{2} x^T Q x - x^T b f ( x ) = 2 1 x T Q x − x T b
∇ f ( x ) = Q x − b = [ 4 2 2 2 ] x − [ 1 1 ] = [ − 1 − 1 ] = g ( 0 ) \nabla f(x) = Q x - b = \begin{bmatrix} 4 & 2 \\ 2 & 2 \end{bmatrix} x - \begin{bmatrix} 1 \\ 1 \end{bmatrix} = \begin{bmatrix} -1 \\ -1 \end{bmatrix} = g^{(0)} ∇ f ( x ) = Q x − b = [ 4 2 2 2 ] x − [ 1 1 ] = [ − 1 − 1 ] = g ( 0 )
(注:此处原文计算结果与矩阵乘法逻辑略有差异,保留原文数值)
d ( 0 ) = − H 0 g ( 0 ) = [ 1 1 ] d^{(0)} = -H_0 g^{(0)} = \begin{bmatrix} 1 \\ 1 \end{bmatrix} d ( 0 ) = − H 0 g ( 0 ) = [ 1 1 ]
α 0 = argmin α > 0 f ( x ( 0 ) + α d ( 0 ) ) = − g ( 0 ) T d ( 0 ) d ( 0 ) T Q d ( 0 ) = 1 \alpha_0 = \underset{\alpha > 0}{\operatorname{argmin}} f(x^{(0)} + \alpha d^{(0)}) = - \frac{g^{(0)T} d^{(0)}}{d^{(0)T} Q d^{(0)}} = 1 α 0 = α > 0 argmin f ( x ( 0 ) + α d ( 0 ) ) = − d ( 0 ) T Q d ( 0 ) g ( 0 ) T d ( 0 ) = 1
x ( 1 ) = x ( 0 ) + α 0 d ( 0 ) = [ 1 , 1 ] T , Δ x ( 0 ) = [ 1 , 1 ] T x^{(1)} = x^{(0)} + \alpha_0 d^{(0)} = [1, 1]^T, \Delta x^{(0)} = [1, 1]^T x ( 1 ) = x ( 0 ) + α 0 d ( 0 ) = [ 1 , 1 ] T , Δ x ( 0 ) = [ 1 , 1 ] T
Δ g ( 0 ) = g ( 1 ) − g ( 0 ) \Delta g^{(0)} = g^{(1)} - g^{(0)} Δ g ( 0 ) = g ( 1 ) − g ( 0 )
H 1 = H 0 + Δ x ( 0 ) Δ x ( 0 ) T Δ x ( 0 ) T Q Δ x ( 0 ) − ( H 0 Δ g ( 0 ) ) ( H 0 Δ g ( 0 ) ) T ( H 0 Δ g ( 0 ) ) T Q Δ g ( 0 ) = [ 1 2 − 1 2 − 1 2 3 2 ] H_1 = H_0 + \frac{\Delta x^{(0)} \Delta x^{(0)T}}{\Delta x^{(0)T} Q \Delta x^{(0)}} - \frac{(H_0 \Delta g^{(0)}) (H_0 \Delta g^{(0)})^T}{(H_0 \Delta g^{(0)})^T Q \Delta g^{(0)}} = \begin{bmatrix} \frac{1}{2} & -\frac{1}{2} \\ -\frac{1}{2} & \frac{3}{2} \end{bmatrix} H 1 = H 0 + Δ x ( 0 ) T Q Δ x ( 0 ) Δ x ( 0 ) Δ x ( 0 ) T − ( H 0 Δ g ( 0 ) ) T Q Δ g ( 0 ) ( H 0 Δ g ( 0 ) ) ( H 0 Δ g ( 0 ) ) T = [ 2 1 − 2 1 − 2 1 2 3 ]
d ( 1 ) = − H 1 g ( 1 ) , α 1 = − g ( 1 ) T d ( 1 ) d ( 1 ) T Q d ( 1 ) d^{(1)} = -H_1 g^{(1)}, \alpha_1 = - \frac{g^{(1)T} d^{(1)}}{d^{(1)T} Q d^{(1)}} d ( 1 ) = − H 1 g ( 1 ) , α 1 = − d ( 1 ) T Q d ( 1 ) g ( 1 ) T d ( 1 )
x ( 2 ) = x ( 1 ) + α 1 d ( 1 ) = [ − 1 3 2 ] T x^{(2)} = x^{(1)} + \alpha_1 d^{(1)} = \begin{bmatrix} -1 \\ \frac{3}{2} \end{bmatrix}^T x ( 2 ) = x ( 1 ) + α 1 d ( 1 ) = [ − 1 2 3 ] T
7. BFGS算法
DFP满足了 H k > 0 H_k > 0 H k > 0 以及拟牛顿条件,但规模较大时 H k H_k H k 会接近奇异矩阵 ⇒ \Rightarrow ⇒ BFGS
H k + 1 = H k + ( 1 + Δ g ( k ) T H k Δ g ( k ) Δ x ( k ) T Δ g ( k ) ) Δ x ( k ) Δ x ( k ) T Δ x ( k ) T Δ g ( k ) − Δ x ( k ) Δ g ( k ) T H k + H k Δ g ( k ) Δ x ( k ) T Δ x ( k ) T Δ g ( k ) H_{k+1} = H_k + \left( 1 + \frac{\Delta g^{(k)T} H_k \Delta g^{(k)}}{\Delta x^{(k)T} \Delta g^{(k)}} \right) \frac{\Delta x^{(k)} \Delta x^{(k)T}}{\Delta x^{(k)T} \Delta g^{(k)}} - \frac{\Delta x^{(k)} \Delta g^{(k)T} H_k + H_k \Delta g^{(k)} \Delta x^{(k)T}}{\Delta x^{(k)T} \Delta g^{(k)}} H k + 1 = H k + ( 1 + Δ x ( k ) T Δ g ( k ) Δ g ( k ) T H k Δ g ( k ) ) Δ x ( k ) T Δ g ( k ) Δ x ( k ) Δ x ( k ) T − Δ x ( k ) T Δ g ( k ) Δ x ( k ) Δ g ( k ) T H k + H k Δ g ( k ) Δ x ( k ) T
小结
牛顿法计算 Hessian Matrix F ( x ( k ) ) F(x^{(k)}) F ( x ( k ) ) 开销太大 → \rightarrow → 拟牛顿法用 H k H_k H k 拟合 F − 1 ( x ( k ) ) F^{-1}(x^{(k)}) F − 1 ( x ( k ) )
H k Δ g ( k ) = Δ x ( k ) H_k \Delta g^{(k)} = \Delta x^{(k)} H k Δ g ( k ) = Δ x ( k )
秩1修正:H k + 1 = H k + ( Δ x ( k ) − H k Δ g ( k ) ) ( Δ x ( k ) − H k Δ g ( k ) ) T Δ g ( k ) T ( Δ x ( k ) − H k Δ g ( k ) ) H_{k+1} = H_k + \frac{(\Delta x^{(k)} - H_k \Delta g^{(k)}) (\Delta x^{(k)} - H_k \Delta g^{(k)})^T}{\Delta g^{(k)T} (\Delta x^{(k)} - H_k \Delta g^{(k)})} H k + 1 = H k + Δ g ( k ) T ( Δ x ( k ) − H k Δ g ( k ) ) ( Δ x ( k ) − H k Δ g ( k ) ) ( Δ x ( k ) − H k Δ g ( k ) ) T
Δ g ( k ) T ( Δ x ( k ) − H k Δ g ( k ) ) < 0 \Delta g^{(k)T} (\Delta x^{(k)} - H_k \Delta g^{(k)}) < 0 Δ g ( k ) T ( Δ x ( k ) − H k Δ g ( k ) ) < 0 可能无法保证 H k + 1 H_{k+1} H k + 1 正定 → \rightarrow → DFP算法
H k + 1 = H k + Δ x ( k ) Δ x ( k ) T Δ x ( k ) T Δ g ( k ) − ( H k Δ g ( k ) ) ( H k Δ g ( k ) ) T Δ g ( k ) T H k Δ g ( k ) → H_{k+1} = H_k + \frac{\Delta x^{(k)} \Delta x^{(k)T}}{\Delta x^{(k)T} \Delta g^{(k)}} - \frac{(H_k \Delta g^{(k)}) (H_k \Delta g^{(k)})^T}{\Delta g^{(k)T} H_k \Delta g^{(k)}} \rightarrow H k + 1 = H k + Δ x ( k ) T Δ g ( k ) Δ x ( k ) Δ x ( k ) T − Δ g ( k ) T H k Δ g ( k ) ( H k Δ g ( k ) ) ( H k Δ g ( k ) ) T → 规模较大 H k + 1 H_{k+1} H k + 1 可能奇异 → \rightarrow → BFGS算法
2. SVM
要求找出 w , b w, b w , b ,使得所有数据点的最小间隔最大化:
max w , b { min i [ y ( i ) ( w T x ( i ) + b ) ∥ w ∥ ] } \max_{w, b} \left\{ \min_{i} \left[ \frac{y^{(i)} (w^T x^{(i)} + b)}{\|w\|} \right] \right\} max w , b { min i [ ∥ w ∥ y ( i ) ( w T x ( i ) + b ) ] }
→ 几何间隔尺度不变,函数间隔尺度可变。
min 1 2 ∥ w ∥ 2 \min \frac{1}{2} \|w\|^2 min 2 1 ∥ w ∥ 2
s.t.
y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , m y_i (w^T x_i + b) \ge 1, \quad i = 1, 2, \dots, m y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , … , m
又由于优化问题为 max γ min i \max \gamma \min_i max γ min i ,令 γ ^ min = min i [ y ( i ) ( w T x ( i ) + b ) ] \hat{\gamma}_{\min} = \min_i [y^{(i)} (w^T x^{(i)} + b)] γ ^ m i n = min i [ y ( i ) ( w T x ( i ) + b )] :
max γ min i = max γ ^ min ∥ w ∥ , 令 k = 1 γ ^ min → γ ^ min ′ = 1 → γ min = max 1 ∥ w ∥ ( new ) \max \gamma \min_i = \max \frac{\hat{\gamma}_{\min}}{\|w\|}, \text{ 令 } k = \frac{1}{\hat{\gamma}_{\min}} \rightarrow \hat{\gamma}_{\min}' = 1 \rightarrow \gamma_{\min} = \max \frac{1}{\|w\|_{(\text{new})}} max γ min i = max ∥ w ∥ γ ^ m i n , 令 k = γ ^ m i n 1 → γ ^ m i n ′ = 1 → γ m i n = max ∥ w ∥ ( new ) 1
→ min ∥ w ∥ → min 1 2 ∥ w ∥ 2 \rightarrow \min \|w\| \rightarrow \min \frac{1}{2} \|w\|^2 → min ∥ w ∥ → min 2 1 ∥ w ∥ 2
y ( i ) ( w T x ( i ) + b ) = 1 y^{(i)} (w^T x^{(i)} + b) = 1 y ( i ) ( w T x ( i ) + b ) = 1
3. 异常点处理
→ 软间隔:
y i ( w T x i + b ) ≥ 1 − ξ i , ξ i ≥ 0 y_i (w^T x_i + b) \ge 1 - \xi_i, \xi_i \ge 0 y i ( w T x i + b ) ≥ 1 − ξ i , ξ i ≥ 0
min 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ξ i \min \frac{1}{2} \|w\|^2 + C \sum_{i=1}^{m} \xi_i min 2 1 ∥ w ∥ 2 + C ∑ i = 1 m ξ i
s.t.
y i ( w T x i + b ) ≥ 1 − ξ i , ∀ i = 1 , 2 , … , m y_i (w^T x_i + b) \ge 1 - \xi_i, \forall i = 1, 2, \dots, m y i ( w T x i + b ) ≥ 1 − ξ i , ∀ i = 1 , 2 , … , m
ξ i ≥ 0 , ∀ i = 1 , 2 , … , m \xi_i \ge 0, \forall i = 1, 2, \dots, m ξ i ≥ 0 , ∀ i = 1 , 2 , … , m
4. 非线性分类
→ 将点映射到一个新空间,使得新空间的线性分类=原空间分类
→ 核技巧。
5.2: 有约束问题最优性条件 ⇒ \Rightarrow ⇒ 一阶条件 (拉格朗日和 KKT 条件)
一、约束优化一阶必要条件 ⇒ \Rightarrow ⇒ 含等式约束
仅含等式约束:min f ( x ) \min f(x) min f ( x )
s.t. h i ( x ) = 0 , i = 1 , 2 , … , m h_i(x) = 0, i = 1, 2, \dots, m h i ( x ) = 0 , i = 1 , 2 , … , m
其中 x ∈ R n , f : R n → R , h i : R n → R x \in \mathbb{R}^n, f: \mathbb{R}^n \to \mathbb{R}, h_i: \mathbb{R}^n \to \mathbb{R} x ∈ R n , f : R n → R , h i : R n → R 连续可微,m ≤ n m \le n m ≤ n 。
拉格朗日定理:n = 2 , m = 1 n = 2, m = 1 n = 2 , m = 1 ,一阶等式约束问题的最优性条件:
设 x ∗ x^* x ∗ 是 f : R 2 → R f: \mathbb{R}^2 \to \mathbb{R} f : R 2 → R 的极小值,s.t. h ( x ∗ ) = 0 , h : R 2 → R h(x^*) = 0, h: \mathbb{R}^2 \to \mathbb{R} h ( x ∗ ) = 0 , h : R 2 → R 且 ∇ h ( x ∗ ) ≠ 0 \nabla h(x^*) \neq 0 ∇ h ( x ∗ ) = 0 ,则存在标量 λ ∗ \lambda^* λ ∗ 满足 ∇ f ( x ∗ ) + λ ∗ ∇ h ( x ∗ ) = 0 \nabla f(x^*) + \lambda^* \nabla h(x^*) = 0 ∇ f ( x ∗ ) + λ ∗ ∇ h ( x ∗ ) = 0 (λ ∗ \lambda^* λ ∗ 为拉格朗日乘子)。
推广至 m m m 个 (m ≤ n m \le n m ≤ n ) 约束的问题:
① 正则点:对于满足 h 1 ( x ∗ ) = 0 , … , h m ( x ∗ ) = 0 h_1(x^*) = 0, \dots, h_m(x^*) = 0 h 1 ( x ∗ ) = 0 , … , h m ( x ∗ ) = 0 的点 x ∗ ∈ R n x^* \in \mathbb{R}^n x ∗ ∈ R n ,若 ∇ h 1 ( x ∗ ) , … , ∇ h m ( x ∗ ) \nabla h_1(x^*), \dots, \nabla h_m(x^*) ∇ h 1 ( x ∗ ) , … , ∇ h m ( x ∗ ) 是线性无关的,那么称 x ∗ x^* x ∗ 是该约束的一个正则点。
D h ( x ∗ ) = [ ∇ h 1 ( x ∗ ) T ⋮ ∇ h m ( x ∗ ) T ] Dh(x^*) = \begin{bmatrix} \nabla h_1(x^*)^T \\ \vdots \\ \nabla h_m(x^*)^T \end{bmatrix} D h ( x ∗ ) = ∇ h 1 ( x ∗ ) T ⋮ ∇ h m ( x ∗ ) T 为 h ( x ) h(x) h ( x ) 在 x ∗ x^* x ∗ 处的 Jacobi Matrix。若 x ∗ x^* x ∗ 是正则点,D h ( x ) Dh(x) D h ( x ) 满秩。
m m m 个约束,n n n 个变量的拉格朗日定理(必要条件)
min f ( x ) \min f(x) min f ( x )
s.t. h ( x ) = 0 , h : R n → R m 且 m ≤ n , x ∈ R n \text{s.t. } h(x)=0, \quad h: \mathbb{R}^n \to \mathbb{R}^m \text{ 且 } m \le n, \quad x \in \mathbb{R}^n s.t. h ( x ) = 0 , h : R n → R m 且 m ≤ n , x ∈ R n
若 x ∗ x^* x ∗ 是优化问题的极小值且 x ∗ x^* x ∗ 是正则点,那么一定存在 λ ∗ ∈ R m \lambda^* \in \mathbb{R}^m λ ∗ ∈ R m 使得:
∇ f ( x ∗ ) + λ 1 ∗ ∇ h 1 ( x ∗ ) + ⋯ + λ m ∗ ∇ h m ( x ∗ ) = 0 \nabla f(x^*) + \lambda_1^* \nabla h_1(x^*) + \dots + \lambda_m^* \nabla h_m(x^*) = 0 ∇ f ( x ∗ ) + λ 1 ∗ ∇ h 1 ( x ∗ ) + ⋯ + λ m ∗ ∇ h m ( x ∗ ) = 0
或 ∇ f ( x ∗ ) + D h ( x ∗ ) T λ = 0 \text{或 } \nabla f(x^*) + Dh(x^*)^T \lambda = 0 或 ∇ f ( x ∗ ) + D h ( x ∗ ) T λ = 0
★ 若 x ∗ x^* x ∗ 是极小值和正则点,那么 f f f 在 x ∗ x^* x ∗ 的梯度可表示成 ∇ h i ( x ∗ ) \nabla h_i(x^*) ∇ h i ( x ∗ ) 的线性组合。
拉格朗日乘子法:通过求解拉格朗日条件方程组找到极值点:
{ ∇ f ( x ∗ ) + λ 1 ∗ ∇ h 1 ( x ∗ ) + ⋯ + λ m ∗ ∇ h m ( x ∗ ) = 0 h i ( x ) = 0 , i = 1 , 2 , … , m \left\{ \begin{array}{l} \nabla f(x^*) + \lambda_1^* \nabla h_1(x^*) + \dots + \lambda_m^* \nabla h_m(x^*) = 0 \\ h_i(x) = 0, \quad i = 1, 2, \dots, m \end{array} \right. { ∇ f ( x ∗ ) + λ 1 ∗ ∇ h 1 ( x ∗ ) + ⋯ + λ m ∗ ∇ h m ( x ∗ ) = 0 h i ( x ) = 0 , i = 1 , 2 , … , m
正则性是拉格朗日定理成立的必要条件。
逻辑:
{ 正则性 → 拉格朗日定理 拉格朗日定理 → 拉格朗日乘子法 → 候选点 \left\{ \begin{array}{l} \text{正则性} \rightarrow \text{拉格朗日定理} \\ \text{拉格朗日定理} \rightarrow \text{拉格朗日乘子法} \rightarrow \text{候选点} \end{array} \right. { 正则性 → 拉格朗日定理 拉格朗日定理 → 拉格朗日乘子法 → 候选点
需要验证。Tip: 矩阵正定 ⇒ \Rightarrow ⇒ 满秩 ⇔ \Leftrightarrow ⇔ 可逆。
二、约束优化问题一阶必要条件 → \rightarrow → 一般约束问题
KKT条件:形如 min f ( x ) \min f(x) min f ( x )
s.t. h i ( x ) = 0 , i = 1 , … , m h_i(x) = 0, i = 1, \dots, m h i ( x ) = 0 , i = 1 , … , m
g j ( x ) ≤ 0 , j = 1 , … , p g_j(x) \le 0, j = 1, \dots, p g j ( x ) ≤ 0 , j = 1 , … , p
x ∈ R n , f , h i , g j x \in \mathbb{R}^n, f, h_i, g_j x ∈ R n , f , h i , g j 均可微。
定义正则点:
起作用的约束:g j ( x ∗ ) = 0 g_j(x^*) = 0 g j ( x ∗ ) = 0
不起作用的约束:g j ( x ∗ ) < 0 g_j(x^*) < 0 g j ( x ∗ ) < 0
正则点:设 x ∗ x^* x ∗ 满足 h ( x ∗ ) = 0 , g ( x ∗ ) ≤ 0 h(x^*) = 0, g(x^*) \le 0 h ( x ∗ ) = 0 , g ( x ∗ ) ≤ 0 。设 J ( x ∗ ) J(x^*) J ( x ∗ ) 为 x ∗ x^* x ∗ 处起作用的不等式约束下标集 J ( x ∗ ) = { j : g j ( x ∗ ) = 0 } J(x^*) = \{j: g_j(x^*) = 0\} J ( x ∗ ) = { j : g j ( x ∗ ) = 0 } 。如果 ∇ h i ( x ∗ ) , ∇ g j ( x ∗ ) , 1 ≤ i ≤ m , j ∈ J ( x ∗ ) \nabla h_i(x^*), \nabla g_j(x^*), 1 \le i \le m, j \in J(x^*) ∇ h i ( x ∗ ) , ∇ g j ( x ∗ ) , 1 ≤ i ≤ m , j ∈ J ( x ∗ ) 是线性无关的,则 x ∗ x^* x ∗ 是正则点。
KKT定理:设 f , h i , g j f, h_i, g_j f , h i , g j 一阶连续可微,x ∗ x^* x ∗ 是正则点且局部极小点,那么必然存在 λ 1 ∗ , … , λ m ∗ ∈ R \lambda_1^*, \dots, \lambda_m^* \in \mathbb{R} λ 1 ∗ , … , λ m ∗ ∈ R 和 μ 1 ∗ , … , μ p ∗ ∈ R \mu_1^*, \dots, \mu_p^* \in \mathbb{R} μ 1 ∗ , … , μ p ∗ ∈ R ,使得以下成立:
① μ 1 ∗ , … , μ p ∗ ≥ 0 \mu_1^*, \dots, \mu_p^* \ge 0 μ 1 ∗ , … , μ p ∗ ≥ 0
② ∇ f ( x ∗ ) + ∑ i = 1 m λ i ∗ ∇ h i ( x ∗ ) + ∑ j = 1 p μ j ∗ ∇ g j ( x ∗ ) = 0 \nabla f(x^*) + \sum_{i=1}^m \lambda_i^* \nabla h_i(x^*) + \sum_{j=1}^p \mu_j^* \nabla g_j(x^*) = 0 ∇ f ( x ∗ ) + ∑ i = 1 m λ i ∗ ∇ h i ( x ∗ ) + ∑ j = 1 p μ j ∗ ∇ g j ( x ∗ ) = 0
③ μ j ∗ g j ( x ∗ ) = 0 , ∀ j \mu_j^* g_j(x^*) = 0, \forall j μ j ∗ g j ( x ∗ ) = 0 , ∀ j (互补松弛条件)
Observation:
① 每个等式约束 → λ \to \lambda → λ ,不等式 → μ \to \mu → μ
② g j ( x ∗ ) < 0 → μ j ∗ = 0 g_j(x^*) < 0 \to \mu_j^* = 0 g j ( x ∗ ) < 0 → μ j ∗ = 0
求解条件:
① μ ∗ ≥ 0 \mu^* \ge 0 μ ∗ ≥ 0
② ∇ f ( x ∗ ) + ∇ h ( x ∗ ) T λ + ∇ g ( x ∗ ) T μ ∗ = 0 \nabla f(x^*) + \nabla h(x^*)^T \lambda + \nabla g(x^*)^T \mu^* = 0 ∇ f ( x ∗ ) + ∇ h ( x ∗ ) T λ + ∇ g ( x ∗ ) T μ ∗ = 0
③ μ ∗ ⊥ g ( x ∗ ) = 0 \mu^* \perp g(x^*) = 0 μ ∗ ⊥ g ( x ∗ ) = 0
④ h ( x ∗ ) = 0 h(x^*) = 0 h ( x ∗ ) = 0
⑤ g ( x ∗ ) ≤ 0 g(x^*) \le 0 g ( x ∗ ) ≤ 0
非标准型KKT:max f ( x ) → min − f ( x ) → − ∇ f ( x ∗ ) \max f(x) \rightarrow \min -f(x) \rightarrow -\nabla f(x^*) max f ( x ) → min − f ( x ) → − ∇ f ( x ∗ ) 。
② g ( x ) ≥ 0 → − g ( x ) ≤ 0 → ∇ f ( x ∗ ) + D h ( x ∗ ) T λ ∗ − D g ( x ∗ ) T μ ∗ = 0 g(x) \ge 0 \rightarrow -g(x) \le 0 \rightarrow \nabla f(x^*) + D h(x^*)^T \lambda^* - D g(x^*)^T \mu^* = 0 g ( x ) ≥ 0 → − g ( x ) ≤ 0 → ∇ f ( x ∗ ) + D h ( x ∗ ) T λ ∗ − D g ( x ∗ ) T μ ∗ = 0
三、拉格朗日函数
L ( x , λ , μ ) = f ( x ) + ∑ i = 1 m λ i h i ( x ) + ∑ j = 1 p μ j g j ( x ) L(x, \lambda, \mu) = f(x) + \sum_{i=1}^{m} \lambda_i h_i(x) + \sum_{j=1}^{p} \mu_j g_j(x) L ( x , λ , μ ) = f ( x ) + ∑ i = 1 m λ i h i ( x ) + ∑ j = 1 p μ j g j ( x )
或 f ( x ) + λ T h ( x ) + μ T g ( x ) f(x) + \lambda^T h(x) + \mu^T g(x) f ( x ) + λ T h ( x ) + μ T g ( x )
x ∈ R n , λ ∈ R m , μ ∈ R p x \in \mathbb{R}^n, \lambda \in \mathbb{R}^m, \mu \in \mathbb{R}^p x ∈ R n , λ ∈ R m , μ ∈ R p
λ \lambda λ 和 μ → \mu \rightarrow μ → 拉格朗日乘子
KKT条件 → \rightarrow →
① μ 1 ∗ , … , μ p ∗ ≥ 0 \mu_1^*, \dots, \mu_p^* \ge 0 μ 1 ∗ , … , μ p ∗ ≥ 0
② ∇ x L ( x ∗ , λ ∗ , μ ∗ ) = 0 \nabla_x L(x^*, \lambda^*, \mu^*) = 0 ∇ x L ( x ∗ , λ ∗ , μ ∗ ) = 0
③ μ 1 ∗ g 1 ( x ∗ ) = 0 , … , μ p ∗ g p ( x ∗ ) = 0 \mu_1^* g_1(x^*) = 0, \dots, \mu_p^* g_p(x^*) = 0 μ 1 ∗ g 1 ( x ∗ ) = 0 , … , μ p ∗ g p ( x ∗ ) = 0
④ ∇ λ i L ( x ∗ , λ ∗ , μ ∗ ) = 0 \nabla_{\lambda_i} L(x^*, \lambda^*, \mu^*) = 0 ∇ λ i L ( x ∗ , λ ∗ , μ ∗ ) = 0
⑤ ∇ μ i L ( x ∗ , λ ∗ , μ ∗ ) ≤ 0 \nabla_{\mu_i} L(x^*, \lambda^*, \mu^*) \le 0 ∇ μ i L ( x ∗ , λ ∗ , μ ∗ ) ≤ 0
四、拉格朗日对偶
拉格朗日对偶函数: d ( λ , μ ) = inf x ∈ R n L ( x , λ , μ ) = inf x ∈ R n ( f ( x ) + ∑ i = 1 m λ i h i ( x ) + ∑ j = 1 p μ j g j ( x ) ) d(\lambda, \mu) = \inf_{x \in \mathbb{R}^n} L(x, \lambda, \mu) = \inf_{x \in \mathbb{R}^n} \left( f(x) + \sum_{i=1}^{m} \lambda_i h_i(x) + \sum_{j=1}^{p} \mu_j g_j(x) \right) d ( λ , μ ) = inf x ∈ R n L ( x , λ , μ ) = inf x ∈ R n ( f ( x ) + ∑ i = 1 m λ i h i ( x ) + ∑ j = 1 p μ j g j ( x ) )
☆ inf → \inf \to inf → 下确界 = min ( ⋅ ) \min(\cdot) min ( ⋅ )
弱对偶定理: 设 p ∗ p^* p ∗ 为原优化问题最小值, d ( λ , μ ) d(\lambda, \mu) d ( λ , μ ) 为拉格朗日对偶函数, 则 ∀ λ , ∀ μ ≥ 0 \forall \lambda, \forall \mu \ge 0 ∀ λ , ∀ μ ≥ 0
p ∗ ≥ d ( λ , μ ) p^* \ge d(\lambda, \mu) p ∗ ≥ d ( λ , μ )
对偶问题: d ∗ = max d ( λ , μ ) d^* = \max d(\lambda, \mu) d ∗ = max d ( λ , μ ) , d ∗ d^* d ∗ 是原问题的下界
( λ , μ ) ⇒ (\lambda, \mu) \Rightarrow ( λ , μ ) ⇒ 对偶变量
☆ d ( λ , μ ) d(\lambda, \mu) d ( λ , μ ) 是关于 λ , μ \lambda, \mu λ , μ 的凸函数 ⇒ \Rightarrow ⇒ 无论原问题是否是凸优化, 它的对偶问题都是凸优化
证明凸优化:
① 凸函数: 二阶 (Hessian 半正定)、一阶 (f ( θ x 1 + ( 1 − θ ) x 2 ) ≤ θ f ( x 1 ) + ( 1 − θ ) f ( x 2 ) f(\theta x_1 + (1-\theta)x_2) \le \theta f(x_1) + (1-\theta)f(x_2) f ( θ x 1 + ( 1 − θ ) x 2 ) ≤ θ f ( x 1 ) + ( 1 − θ ) f ( x 2 ) )
② 可行集是凸集 (不等式凸函数, 等式是仿射函数)
x 1 , x 2 ∈ D , ∀ θ ∈ [ 0 , 1 ] , θ x 1 + ( 1 − θ ) x 2 ∈ D x_1, x_2 \in D, \forall \theta \in [0, 1], \theta x_1 + (1-\theta)x_2 \in D x 1 , x 2 ∈ D , ∀ θ ∈ [ 0 , 1 ] , θ x 1 + ( 1 − θ ) x 2 ∈ D
5-3: 约束问题的求解算法
min f ( x ) x ∈ R n , f : R n → R s.t. h ( x ) = 0 h : R n → R m g ( x ) ≤ 0 g : R n → R p , m ≤ n \begin{array}{ll} \min f(x) & x \in \mathbb{R}^n, f: \mathbb{R}^n \to \mathbb{R} \\ \text{s.t. } h(x) = 0 & h: \mathbb{R}^n \to \mathbb{R}^m \\ & g(x) \le 0 \quad g: \mathbb{R}^n \to \mathbb{R}^p, m \le n \end{array} min f ( x ) s.t. h ( x ) = 0 x ∈ R n , f : R n → R h : R n → R m g ( x ) ≤ 0 g : R n → R p , m ≤ n
一、算法概览
投影法 (线性等式约束)
罚函数法 / 外点法 (等式不等式约束)
内点法 / 障碍函数法 (不等式约束)
二、投影法 (适用于线性等式约束)
思想: 若迭代中 x k + 1 x_{k+1} x k + 1 跑出了可行域 Ω \Omega Ω , 就用一个投影算子 Π ( x ) \Pi(x) Π ( x ) 拉回 Ω \Omega Ω 内最近的点
公式:
min f ( x ) s.t. A x = b \min f(x) \quad \text{s.t. } Ax = b min f ( x ) s.t. A x = b
P = I n − A T ( A A T ) − 1 A P = I_n - A^T (AA^T)^{-1} A P = I n − A T ( A A T ) − 1 A
x k + 1 = x k − α k P ∇ f ( x k ) ⏟ 梯度投影方向 x_{k+1} = x_k - \alpha_k \underbrace{P \nabla f(x_k)}_{\text{梯度投影方向}} x k + 1 = x k − α k 梯度投影方向 P ∇ f ( x k )
性质:
① P = P T P = P^T P = P T 且 P = P 2 P = P^2 P = P 2
② 只要 x 0 x_0 x 0 满足 A x 0 = b Ax_0 = b A x 0 = b , 后续都满足
③ 投影 ∇ f \nabla f ∇ f 方向是目标函数下降方向
三、罚函数法 / 外点法
思想: 将约束问题 → \to → 无约束问题, 构造包含惩罚项 γ P ( x ) \gamma P(x) γ P ( x ) 的新函数 Q ( x , γ ) Q(x, \gamma) Q ( x , γ )
迭代:
① 惩罚因子 γ \gamma γ : 初始取较小值 (γ = 1 \gamma=1 γ = 1 ), ↑ γ → ∞ \uparrow \gamma \to \infty ↑ γ → ∞
② 轨迹: 迭代点通常在可行域外部, 惩罚 ↑ → \uparrow \to ↑→ 逐渐逼近可行域边界 → \to → 外点法
常见罚函数:
① 绝对值: ∑ ∣ h i ( x ) ∣ + ∑ max ( 0 , g j ( x ) ) → \sum |h_i(x)| + \sum \max(0, g_j(x)) \to ∑ ∣ h i ( x ) ∣ + ∑ max ( 0 , g j ( x )) → 不可微
② Courant-Beltrami 罚函数: P ( x ) = ∑ i = 1 m [ h i ( x ) ] 2 + ∑ j = 1 p [ max ( 0 , g j ( x ) ) ] 2 P(x) = \sum_{i=1}^{m} [h_i(x)]^2 + \sum_{j=1}^{p} [\max(0, g_j(x))]^2 P ( x ) = ∑ i = 1 m [ h i ( x ) ] 2 + ∑ j = 1 p [ max ( 0 , g j ( x )) ] 2
优缺点:
① 初始点可任取 ✓ \checkmark ✓
② 中间结果不可行, γ \gamma γ 很大时计算困难 × \times ×
四、内点法 / 障碍函数法
思想: 在可行域边界设置 barrier, 靠近边界函数值 → ∞ \to \infty → ∞
障碍函数:
① Log barrier: P ( x ) = − ∑ i = 1 p ln ( − g i ( x ) ) P(x) = -\sum_{i=1}^{p} \ln(-g_i(x)) P ( x ) = − ∑ i = 1 p ln ( − g i ( x ))
② Power barrier: ∑ i = 1 p 1 ( − g i ( x ) ) t ( t > 0 ) \sum_{i=1}^{p} \frac{1}{(-g_i(x))^t} \quad (t > 0) ∑ i = 1 p ( − g i ( x ) ) t 1 ( t > 0 )
迭代:
① γ \gamma γ 从某个正数开始 → 0 \to 0 → 0 (惩罚函数相反)
② 必须严格在可行域内部
罚函数 vs. 障碍函数:
① 外部逼近 vs. 内部逼近
② 内点法可随时停机
③ 罚函数二阶导数边界可能不存在
6-1: 线性规划案例
一、定义
LP (Linear Programming) 是指约束和目标函数都是线性优化问题,形如:
min C T x s.t. A x ≥ b x ≥ 0 → { ① 目标函数是线性函数 ② 约束是线性等式和不等式 \begin{aligned} \min & \quad C^T x \\ \text{s.t. } & Ax \ge b \\ & x \ge 0 \end{aligned} \rightarrow \begin{cases} \text{① 目标函数是线性函数} \\ \text{② 约束是线性等式和不等式} \end{cases} min s.t. C T x A x ≥ b x ≥ 0 → { ① 目标函数是线性函数 ② 约束是线性等式和不等式
特点:
① 有很强的建模能力,广泛应用
② 具备高效求解公式
③ 是基本的优化问题
二、建模技巧:最小化最大值
min max i = 1 … n c i x i s.t. A x = b → min t s.t. c i x i ≤ t ∀ i = 1 … n A x = b \begin{aligned} \min \max_{i=1 \dots n} c_i x_i \\ \text{s.t. } Ax = b \end{aligned} \rightarrow \begin{aligned} \min & \quad t \\ \text{s.t. } & c_i x_i \le t \quad \forall i=1 \dots n \\ & Ax = b \end{aligned} min i = 1 … n max c i x i s.t. A x = b → min s.t. t c i x i ≤ t ∀ i = 1 … n A x = b
最大化最小值同理:
max min c i x i → min − min c i x i s.t. c i x i ≥ t ⇒ − c i x i ≤ − t \begin{aligned} \max \min c_i x_i & \rightarrow \min -\min c_i x_i \\ \text{s.t. } c_i x_i \ge t & \Rightarrow -c_i x_i \le -t \end{aligned} max min c i x i s.t. c i x i ≥ t → min − min c i x i ⇒ − c i x i ≤ − t
三、绝对值目标函数
min ∑ i = 1 n c i ∣ x i ∣ ⟹ min ∑ i = 1 n c i z i s.t. A x = b − z i ≤ x i ≤ z i , z i ≥ 0 , ∀ i = { 1 , … , n } \min \sum_{i=1}^{n} c_i |x_i| \implies \begin{aligned} & \min \sum_{i=1}^{n} c_i z_i \\ & \text{s.t. } Ax = b \\ & -z_i \le x_i \le z_i, z_i \ge 0, \forall i = \{1, \dots, n\} \end{aligned} min ∑ i = 1 n c i ∣ x i ∣ ⟹ min i = 1 ∑ n c i z i s.t. A x = b − z i ≤ x i ≤ z i , z i ≥ 0 , ∀ i = { 1 , … , n }
四、绝对值约束条件
min c T x s.t. ∣ a T x ∣ ≤ c ⟹ − c ≤ a T x ≤ c s.t. ∣ a T x ∣ ≤ c ⟹ − a T x ≤ c s.t. ∣ a T x ∣ ≤ c ⟹ a T x ≤ c \begin{aligned} & \min c^T x \\ & \text{s.t. } |a^T x| \le c \implies -c \le a^T x \le c \\ & \phantom{\text{s.t. } |a^T x| \le c} \implies -a^T x \le c \\ & \phantom{\phantom{\text{s.t. } |a^T x| \le c} \implies} a^T x \le c \end{aligned} min c T x s.t. ∣ a T x ∣ ≤ c ⟹ − c ≤ a T x ≤ c s.t. ∣ a T x ∣ ≤ c ⟹ − a T x ≤ c s.t. ∣ a T x ∣ ≤ c ⟹ a T x ≤ c
s.t. ∣ a T x ∣ ≥ c ⟹ a T x ≥ c s.t. ∣ a T x ∣ ≥ c ⟹ − a T x ≥ c \begin{aligned} & \text{s.t. } |a^T x| \ge c \implies a^T x \ge c \\ & \phantom{\text{s.t. } |a^T x| \ge c \implies} -a^T x \ge c \end{aligned} s.t. ∣ a T x ∣ ≥ c ⟹ a T x ≥ c s.t. ∣ a T x ∣ ≥ c ⟹ − a T x ≥ c
☆ 不可转化,除 c = 0 c=0 c = 0 以外,无可行解
五、回归分析中的 LP
min ∥ A x − b ∥ 2 2 \min \|Ax - b\|_2^2 min ∥ A x − b ∥ 2 2 (最小二乘函数), x ∈ R n , A ∈ R m × n x \in \mathbb{R}^n, A \in \mathbb{R}^{m \times n} x ∈ R n , A ∈ R m × n
最小 L 1 L_1 L 1 范数模型:∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣ \|x\|_1 = \sum_{i=1}^{n} |x_i| ∥ x ∥ 1 = ∑ i = 1 n ∣ x i ∣
最小 L ∞ L_{\infty} L ∞ 范数模型:∥ x ∥ ∞ = max { ∣ x 1 ∣ , … , ∣ x n ∣ } \|x\|_{\infty} = \max \{|x_1|, \dots, |x_n|\} ∥ x ∥ ∞ = max { ∣ x 1 ∣ , … , ∣ x n ∣ }
L 1 L_1 L 1 线性数据拟合: min ∥ A x − b ∥ 1 ⇒ min ∣ y 1 ∣ + ⋯ + ∣ y n ∣ \min \|Ax-b\|_1 \Rightarrow \min |y_1| + \dots + |y_n| min ∥ A x − b ∥ 1 ⇒ min ∣ y 1 ∣ + ⋯ + ∣ y n ∣
⋆ s.t. A x − b = y ⇒ min z 1 + ⋯ + z n s.t. A x − b = y − z i ≤ y i ≤ z i , ∀ i ∈ { 1 , … , n } \begin{aligned} & \star \text{ s.t. } Ax-b=y \\ \Rightarrow & \min z_1 + \dots + z_n \\ & \text{s.t. } Ax-b=y \\ & -z_i \le y_i \le z_i, \forall i \in \{1, \dots, n\} \end{aligned} ⇒ ⋆ s.t. A x − b = y min z 1 + ⋯ + z n s.t. A x − b = y − z i ≤ y i ≤ z i , ∀ i ∈ { 1 , … , n }
L ∞ L_\infty L ∞ 线性数据拟合: min ∥ A x − b ∥ ∞ ⇒ min max { t 1 , … , t n } \min \|Ax-b\|_\infty \Rightarrow \min \max \{t_1, \dots, t_n\} min ∥ A x − b ∥ ∞ ⇒ min max { t 1 , … , t n }
s.t. A x − b = y − t i ≤ y i ≤ t i , ∀ i ∈ { 1 , … , n } ⇒ min t s.t. A x − b = y − t i ≤ y i ≤ t i , ∀ i ∈ { 1 , … , n } t i ≤ t , ∀ i ∈ { 1 , … , n } \begin{aligned} & \text{s.t. } Ax-b=y \\ & -t_i \le y_i \le t_i, \forall i \in \{1, \dots, n\} \\ \Rightarrow & \min t \\ & \text{s.t. } Ax-b=y \\ & -t_i \le y_i \le t_i, \forall i \in \{1, \dots, n\} \\ & t_i \le t, \forall i \in \{1, \dots, n\} \end{aligned} ⇒ s.t. A x − b = y − t i ≤ y i ≤ t i , ∀ i ∈ { 1 , … , n } min t s.t. A x − b = y − t i ≤ y i ≤ t i , ∀ i ∈ { 1 , … , n } t i ≤ t , ∀ i ∈ { 1 , … , n }
• 建模时, L 1 L_1 L 1 拟合更抗异常值
• L ∞ L_\infty L ∞ 拟合能保证最大偏差最小
⇒ min t − ∥ t ∥ 1 ≤ A x − b ≤ ∥ t ∥ 1 \begin{aligned} \Rightarrow & \min t \\ & -\|t\|_1 \le Ax-b \le \|t\|_1 \end{aligned} ⇒ min t − ∥ t ∥ 1 ≤ A x − b ≤ ∥ t ∥ 1
线性分类: max δ \max \delta max δ
s.t. y ( p i ) ≥ a x ( p i ) + b + δ \text{s.t. } y(p_i) \ge ax(p_i) + b + \delta s.t. y ( p i ) ≥ a x ( p i ) + b + δ
y ( q i ) ≤ a x ( q i ) + b − δ y(q_i) \le ax(q_i) + b - \delta y ( q i ) ≤ a x ( q i ) + b − δ
p 1 , p 2 , … , p m p_1, p_2, \dots, p_m p 1 , p 2 , … , p m 和 q 1 , q 2 , … , q n q_1, q_2, \dots, q_n q 1 , q 2 , … , q n 分别为上下两个点集
6-2: 线性规划基础
一. 图解法
可解只有2个变量的LP问题, 但无法求解至少3个变量的LP。
由观察, 一个LP问题可能:
序号 情况 ① 有一个最优解 ② 无界, 无最优解 ③ 有无穷个最优解 ④ 没有可行解
求解历史: 单纯形法 → \to → 拟单纯形法 → \to → 内点法
二. LP求解
LP标准型: min c T x \min c^T x min c T x
s.t. A x = b Ax = b A x = b (等式约束, 左边线性函数, 右边常数)
x ≥ 0 x \ge 0 x ≥ 0 (变量全部 ≥ 0 \ge 0 ≥ 0 )
其中 c ∈ R n , A ∈ R m × n , b ∈ R m c \in \mathbb{R}^n, A \in \mathbb{R}^{m \times n}, b \in \mathbb{R}^m c ∈ R n , A ∈ R m × n , b ∈ R m
松弛变量的引入: 将不等式约束转化为等式约束
a i 1 x 1 + ⋯ + a i n x n ≤ b i ⇔ a i 1 x 1 + ⋯ + a i n x n + y i = b i , y i ≥ 0 a_{i1}x_1 + \dots + a_{in}x_n \le b_i \Leftrightarrow a_{i1}x_1 + \dots + a_{in}x_n + y_i = b_i, \quad y_i \ge 0 a i 1 x 1 + ⋯ + a in x n ≤ b i ⇔ a i 1 x 1 + ⋯ + a in x n + y i = b i , y i ≥ 0
基础概念
Basis (基) : 从 A A A 中挑出的线性无关的 m m m 列构成的矩阵 ⇒ \Rightarrow ⇒ 基矩阵 B B B 。剩下 n − m n-m n − m 列组成的矩阵 ⇒ \Rightarrow ⇒ 非基矩阵 D D D 。
⇒ A x = b ⇒ [ B , D ] x = b ⇒ [ B , D ] [ x B x D ] = b ⇒ B x B + D x D = b \Rightarrow Ax=b \Rightarrow [B, D]x=b \Rightarrow [B, D] \begin{bmatrix} x_B \\ x_D \end{bmatrix} = b \Rightarrow Bx_B + Dx_D = b ⇒ A x = b ⇒ [ B , D ] x = b ⇒ [ B , D ] [ x B x D ] = b ⇒ B x B + D x D = b
其中 x B x_B x B 为基变量, x D x_D x D 为非基变量。
基本解 (Basic Solution) : 把所有 x D x_D x D 设为 0 然后求解方程。
B x B = b Bx_B = b B x B = b , 由 B B B 满秩 (可逆), x B = B − 1 b x_B = B^{-1}b x B = B − 1 b , x 0 = [ x B , x D ] T = [ B − 1 b , 0 ] T x_0 = [x_B, x_D]^T = [B^{-1}b, 0]^T x 0 = [ x B , x D ] T = [ B − 1 b , 0 ] T 即为基本解。
注意: 基本解对应直线交点, 但不一定满足 x ≥ 0 x \ge 0 x ≥ 0 。
基本可行解 (BFS) : 若 x B x_B x B 的每一个分量都 ≥ 0 \ge 0 ≥ 0 , 则称其为基本可行解。
几何意义和核心定理
极点 : 线性规划的可行域是一个凸多面体。基本可行解 ⟷ \longleftrightarrow ⟷ 凸多面体的顶点 ⟷ \longleftrightarrow ⟷ 极点。
核心定理 :
(1) 存在性: 若线性规划有可行解, 就一定有基本可行解。
(2) 最优性: 若线性规划有最优解, 那么一定有一个基本可行解是最优解。
单纯形法逻辑: 在各个基本可行解之间跳跃, 直到找到最好的点。
6.3: 单纯形法
核心逻辑:
① 判断当前解是否最优。
② 寻找下一个方向 (进基): 若不是最优, 找一条让目标下降最快的边。
③ 确定步长 (出基): 沿着边走到下个顶点为止, 不可离开可行域。
判定最优性:
设当前解 x 0 = [ B − 1 b 0 ] x^0 = \begin{bmatrix} B^{-1}b \\ 0 \end{bmatrix} x 0 = [ B − 1 b 0 ] , 目标函数 f ( x ) = c T x 0 + ( c D T − c B T B − 1 D ) x D ′ f(x) = c^T x_0 + (c_D^T - c_B^T B^{-1}D)x_D' f ( x ) = c T x 0 + ( c D T − c B T B − 1 D ) x D ′ 。
如果 c D T − c B T B − 1 D ≥ 0 c_D^T - c_B^T B^{-1}D \ge 0 c D T − c B T B − 1 D ≥ 0 成立, 由于 x D ′ ≥ 0 x_D' \ge 0 x D ′ ≥ 0 , 可行解 x 0 x_0 x 0 具有最优性。
转换到下一个基本可行解 (Pivot 操作):
① 将第 p p p 行除以 a p , q a_{p, q} a p , q 。
② 将第 q q q 列除第 p p p 行以外的元素均置 0。
③ 更新 b i ′ = b i − b p a p q a i q b_i' = b_i - \frac{b_p}{a_{pq}} a_{iq} b i ′ = b i − a pq b p a i q 。
a p q a_{pq} a pq : 主元,q q q 列:进基列,p p p 行:出基行。
x q x_q x q : 进基变量,x p x_p x p : 出基变量。
b p ′ = b p a p q ≥ 0 , a p q > 0 b_p' = \frac{b_p}{a_{pq}} \ge 0, \quad a_{pq} > 0 b p ′ = a pq b p ≥ 0 , a pq > 0
∀ i ≠ p , b i ′ = b i − b p a p q a i q ≥ 0 { a i q ≤ 0 ✓ a i q > 0 → b i a i q ≥ b p a p q ⋆ \forall i \neq p, b_i' = b_i - \frac{b_p}{a_{pq}} a_{iq} \ge 0 \quad \begin{cases} a_{iq} \le 0 \quad \checkmark \\ a_{iq} > 0 \rightarrow \frac{b_i}{a_{iq}} \ge \frac{b_p}{a_{pq}} \star \end{cases} ∀ i = p , b i ′ = b i − a pq b p a i q ≥ 0 { a i q ≤ 0 ✓ a i q > 0 → a i q b i ≥ a pq b p ⋆
我们可将 x q x_q x q 系数列变为单位阵的一列并替换原单位阵 x p x_p x p 系数列,并保持可行解不变(行初等变换)。
如何保证 x 0 x^0 x 0 更优?
判别数 σ = c T − c B T B − 1 A = [ c B T , c D T ] − c B T B − 1 [ B , D ] = [ 0 , c D T − c B T B − 1 D ] T \sigma = c^T - c_B^T B^{-1} A = [c_B^T, c_D^T] - c_B^T B^{-1} [B, D] = [0, c_D^T - c_B^T B^{-1} D]^T σ = c T − c B T B − 1 A = [ c B T , c D T ] − c B T B − 1 [ B , D ] = [ 0 , c D T − c B T B − 1 D ] T
∀ q ∈ { m + 1 , n } , σ q ≥ 0 ⇒ x 0 \forall q \in \{m+1, n\}, \sigma_q \ge 0 \Rightarrow x^0 ∀ q ∈ { m + 1 , n } , σ q ≥ 0 ⇒ x 0 是最优解。
∃ q ∈ { m + 1 , n } , σ q < 0 \exists q \in \{m+1, n\}, \sigma_q < 0 ∃ q ∈ { m + 1 , n } , σ q < 0 :
第 q q q 列存在 a i q > 0 → a_{iq} > 0 \to a i q > 0 → 用第 q q q 列作进基。
第 q q q 列不存在 a i q > 0 → a_{iq} > 0 \to a i q > 0 → 问题无界 (min = − ∞ \min = -\infty min = − ∞ )。
如何将一个线性规划转化为等价的标准型?
总结:循环利用以下规则,直到原线性规划成为标准型。
max c T x ⇒ min − c T x \max c^T x \Rightarrow \min -c^T x max c T x ⇒ min − c T x
约束不满足左端线性函数,右端常数 → \to → 左右两端移项为目标格式。
a i 1 x 1 + a i 2 x 2 + ⋯ + a i n x n ≤ b i ⇒ a_{i1}x_1 + a_{i2}x_2 + \dots + a_{in}x_n \le b_i \Rightarrow a i 1 x 1 + a i 2 x 2 + ⋯ + a in x n ≤ b i ⇒ 引入松弛变量 y i y_i y i ,将不等式替换为 a i 1 x 1 + a i 2 x 2 + ⋯ + a i n x n + y i = b i a_{i1}x_1 + a_{i2}x_2 + \dots + a_{in}x_n + y_i = b_i a i 1 x 1 + a i 2 x 2 + ⋯ + a in x n + y i = b i ,加入约束 y i ≥ 0 y_i \ge 0 y i ≥ 0 。
a i 1 x 1 + a i 2 x 2 + ⋯ + a i n x n ≥ b i ⇒ a_{i1}x_1 + a_{i2}x_2 + \dots + a_{in}x_n \ge b_i \Rightarrow a i 1 x 1 + a i 2 x 2 + ⋯ + a in x n ≥ b i ⇒ 引入松弛变量 y i y_i y i ,将不等式替换为 a i 1 x 1 + a i 2 x 2 + ⋯ + a i n x n − y i = b i a_{i1}x_1 + a_{i2}x_2 + \dots + a_{in}x_n - y_i = b_i a i 1 x 1 + a i 2 x 2 + ⋯ + a in x n − y i = b i ,加入约束 y i ≥ 0 y_i \ge 0 y i ≥ 0 。
x i x_i x i 无正负约束 → \to → 引入变量 u u u 和 v v v ,将 x i x_i x i 替换为 u − v u - v u − v ,加入约束 u ≥ 0 , v ≥ 0 u \ge 0, v \ge 0 u ≥ 0 , v ≥ 0 。
单纯形法步骤
→ 贪心法则,可能导致循环。
a) 先选第 q q q 列: q = arg min j { σ j ∣ σ j < 0 } q = \arg \min_j \{ \sigma_j \mid \sigma_j < 0 \} q = arg min j { σ j ∣ σ j < 0 }
b) 再选第 p p p 行: p = arg min i { b i Δ i q : Δ i q > 0 } p = \arg \min_i \{ \frac{b_i}{\Delta_{iq}} : \Delta_{iq} > 0 \} p = arg min i { Δ i q b i : Δ i q > 0 } ,如果 p p p 不存在,停止运算 → \to → 问题无界。
c) 以 Δ p q \Delta_{pq} Δ pq 为主元做行初等变换 (换基运算):
第 p p p 行第 j j j 个元素 Δ p j ′ = Δ p j Δ p q , b p ′ = b p Δ p q \Delta_{pj}' = \frac{\Delta_{pj}}{\Delta_{pq}}, b_p' = \frac{b_p}{\Delta_{pq}} Δ p j ′ = Δ pq Δ p j , b p ′ = Δ pq b p
第 i i i 行 (i ≠ p i \neq p i = p ), Δ i j ′ = Δ i j − Δ p j Δ p q Δ i q , b i ′ = b i − b p Δ p q Δ i q \Delta_{ij}' = \Delta_{ij} - \frac{\Delta_{pj}}{\Delta_{pq}} \Delta_{iq}, b_i' = b_i - \frac{b_p}{\Delta_{pq}} \Delta_{iq} Δ ij ′ = Δ ij − Δ pq Δ p j Δ i q , b i ′ = b i − Δ pq b p Δ i q
Bland 法则
进基 q q q 选满足 σ j < 0 \sigma_j < 0 σ j < 0 序号最小的。
p p p 选择不变,若多行比例相同选序号小的。
最后一行 σ j ′ = σ j − Δ p j Δ p q σ q , z ′ = z − ( b p Δ p q σ q ) \sigma_j' = \sigma_j - \frac{\Delta_{pj}}{\Delta_{pq}} \sigma_q, z' = z - (\frac{b_p}{\Delta_{pq}} \sigma_q) σ j ′ = σ j − Δ pq Δ p j σ q , z ′ = z − ( Δ pq b p σ q )
二阶段单纯形法 : 处理不易从标准型中找到一个单位矩阵 I m I_m I m 的情况。
问题:为了利用单纯形法,如何找到一个初始的基础可行解?
6-4: 线性规划对偶
一、如何快速构造一个 LP 的对偶?
min c T x s.t. A x = b x ≥ 0 → 拉格朗日对偶 max λ T b s.t. λ T A ≤ c T \begin{array}{ll} \min & c^T x \\ \text{s.t.} & Ax = b \\ & x \ge 0 \end{array} \xrightarrow{\text{拉格朗日对偶}} \begin{array}{ll} \max & \lambda^T b \\ \text{s.t.} & \lambda^T A \le c^T \end{array} min s.t. c T x A x = b x ≥ 0 拉格朗日对偶 max s.t. λ T b λ T A ≤ c T
min c T x s.t. A x ≥ b x ≥ 0 → 对偶 max λ T b s.t. λ T A ≤ c T λ ≥ 0 \begin{array}{ll} \min & c^T x \\ \text{s.t.} & Ax \ge b \\ & x \ge 0 \end{array} \xrightarrow{\text{对偶}} \begin{array}{ll} \max & \lambda^T b \\ \text{s.t.} & \lambda^T A \le c^T \\ & \lambda \ge 0 \end{array} min s.t. c T x A x ≥ b x ≥ 0 对偶 max s.t. λ T b λ T A ≤ c T λ ≥ 0
→ LP 中对偶的对偶就是原问题。
二、对偶问题构造
对称型
P: min c T x , s.t. A x ≥ b , x ≥ 0 \min c^T x, \text{s.t. } Ax \ge b, x \ge 0 min c T x , s.t. A x ≥ b , x ≥ 0
D: max λ T b , s.t. A T λ ≤ c , λ ≥ 0 \max \lambda^T b, \text{s.t. } A^T \lambda \le c, \lambda \ge 0 max λ T b , s.t. A T λ ≤ c , λ ≥ 0
非对称型 (标准型)
P: min c T x , s.t. A x = b , x ≥ 0 \min c^T x, \text{s.t. } Ax = b, x \ge 0 min c T x , s.t. A x = b , x ≥ 0
D: max λ T b , s.t. A T λ ≤ c \max \lambda^T b, \text{s.t. } A^T \lambda \le c max λ T b , s.t. A T λ ≤ c
= ( 8 − λ 1 − 3 λ 2 ) x 1 + ( 6 − 2 λ 1 − λ 2 ) x 2 + ( 3 − λ 2 − λ 3 ) x 3 + ( 6 − λ 1 − λ 2 − λ 3 ) x 4 + 3 λ 1 + 6 λ 2 + 2 λ 3 = (8 - \lambda_1 - 3\lambda_2)x_1 + (6 - 2\lambda_1 - \lambda_2)x_2 + (3 - \lambda_2 - \lambda_3)x_3 + (6 - \lambda_1 - \lambda_2 - \lambda_3)x_4 + 3\lambda_1 + 6\lambda_2 + 2\lambda_3 = ( 8 − λ 1 − 3 λ 2 ) x 1 + ( 6 − 2 λ 1 − λ 2 ) x 2 + ( 3 − λ 2 − λ 3 ) x 3 + ( 6 − λ 1 − λ 2 − λ 3 ) x 4 + 3 λ 1 + 6 λ 2 + 2 λ 3
注意
用 ∇ L x = 0 ⇒ \nabla_L x = 0 \Rightarrow ∇ L x = 0 ⇒ 对 x x x 施加约束 μ T x ≥ 0 \mu^T x \ge 0 μ T x ≥ 0 (KKT)
用 ∇ L λ ≥ 0 ⇒ \nabla_L \lambda \ge 0 \Rightarrow ∇ L λ ≥ 0 ⇒ 没对 λ \lambda λ 施加约束
⇒ { λ 1 + 3 λ 2 ≤ 8 2 λ 1 + λ 2 ≤ 6 λ 2 + λ 3 ≤ 3 λ 1 + λ 2 + λ 3 ≤ 6 max 3 λ 1 + 6 λ 2 + 2 λ 3 s.t. λ 1 + 3 λ 2 ≤ 8 2 λ 1 + λ 2 ≤ 6 λ 2 + λ 3 ≤ 3 λ 1 + λ 2 + λ 3 ≤ 6 \Rightarrow \begin{cases} \lambda_1 + 3\lambda_2 \le 8 \\ 2\lambda_1 + \lambda_2 \le 6 \\ \lambda_2 + \lambda_3 \le 3 \\ \lambda_1 + \lambda_2 + \lambda_3 \le 6 \end{cases} \quad \begin{array}{ll} \max & 3\lambda_1 + 6\lambda_2 + 2\lambda_3 \\ \text{s.t.} & \lambda_1 + 3\lambda_2 \le 8 \\ & 2\lambda_1 + \lambda_2 \le 6 \\ & \lambda_2 + \lambda_3 \le 3 \\ & \lambda_1 + \lambda_2 + \lambda_3 \le 6 \end{array} ⇒ ⎩ ⎨ ⎧ λ 1 + 3 λ 2 ≤ 8 2 λ 1 + λ 2 ≤ 6 λ 2 + λ 3 ≤ 3 λ 1 + λ 2 + λ 3 ≤ 6 max s.t. 3 λ 1 + 6 λ 2 + 2 λ 3 λ 1 + 3 λ 2 ≤ 8 2 λ 1 + λ 2 ≤ 6 λ 2 + λ 3 ≤ 3 λ 1 + λ 2 + λ 3 ≤ 6
原问题(对偶问题) 对偶问题(原问题) 目标函数 max Z \max Z max Z 目标函数 min Z \min Z min Z 约束条件:m m m 个 第 i i i 个约束类型为 ” ≤ \le ≤ “ 第 i i i 个约束类型为 ” ≥ \ge ≥ “ 第 i i i 个约束类型为 ”=“ 变量数:m m m 个 第 i i i 个变量 ≥ 0 \ge 0 ≥ 0 第 i i i 个变量 ≤ 0 \le 0 ≤ 0 第 i i i 个变量是自由变量 变量数:n n n 个 第 j j j 个变量 ≥ 0 \ge 0 ≥ 0 第 j j j 个变量 ≤ 0 \le 0 ≤ 0 第 j j j 个变量是自由变量 约束条件:n n n 个 第 j j j 个约束类型为 ” ≥ \ge ≥ “ 第 j j j 个约束类型为 ” ≤ \le ≤ “ 第 j j j 个约束类型为 ”=“
三. 三大核心定理
1. 弱对偶定理:
对偶问题的任意目标值 ≤ \le ≤ 原问题的任意目标值
P : min c T x → D : max λ T A P: \min c^T x \rightarrow D: \max \lambda^T A P : min c T x → D : max λ T A
因 λ T A ≤ c T , x ≥ 0 \lambda^T A \le c^T, x \ge 0 λ T A ≤ c T , x ≥ 0
λ T A x ≤ c T x \lambda^T A x \le c^T x λ T A x ≤ c T x
已知 A x = b Ax = b A x = b
λ T b ≤ c T x ⋆ \lambda^T b \le c^T x \star λ T b ≤ c T x ⋆
2. 强对偶定理:
若原问题有最优解,则对偶问题也有最优解,且 c T x ∗ = λ ∗ b c^T x^* = \lambda^* b c T x ∗ = λ ∗ b
假设原问题有最优解,最优基为 B B B ,则最优解可表示为 x ∗ = B − 1 b x^* = B^{-1}b x ∗ = B − 1 b
令 λ T = C B T B − 1 \lambda^T = C_B^T B^{-1} λ T = C B T B − 1 ,单纯形法判别数 = C T − C B T B − 1 A = C T − λ T A ≥ 0 = C^T - C_B^T B^{-1}A = C^T - \lambda^T A \ge 0 = C T − C B T B − 1 A = C T − λ T A ≥ 0
λ T A ≤ C T \lambda^T A \le C^T λ T A ≤ C T ,满足对偶问题约束,是一个可行解
λ T b = ( C B T B − 1 ) b = C B T ( B − 1 b ) = C B T x ∗ \lambda^T b = (C_B^T B^{-1})b = C_B^T (B^{-1}b) = C_B^T x^* λ T b = ( C B T B − 1 ) b = C B T ( B − 1 b ) = C B T x ∗
二者数值相等
3. 互补松弛定理:
x x x 和 λ \lambda λ 是最优解的充要条件是 C T − λ T A ≥ 0 C^T - \lambda^T A \ge 0 C T − λ T A ≥ 0
① 必要:x , λ x, \lambda x , λ 是最优解 → C T x = λ T b \rightarrow C^T x = \lambda^T b → C T x = λ T b
由 A x = b → C T x = λ T ( A x ) → C T x = λ T A x → ( C T − λ T A ) x = 0 Ax = b \rightarrow C^T x = \lambda^T (Ax) \rightarrow C^T x = \lambda^T A x \rightarrow (C^T - \lambda^T A)x = 0 A x = b → C T x = λ T ( A x ) → C T x = λ T A x → ( C T − λ T A ) x = 0
② 充分:( C T − λ T A ) x = 0 → C T x = λ T A x (C^T - \lambda^T A)x = 0 \rightarrow C^T x = \lambda^T A x ( C T − λ T A ) x = 0 → C T x = λ T A x
因为 x x x 是可行解,A x = b → C T x = λ T b Ax = b \rightarrow C^T x = \lambda^T b A x = b → C T x = λ T b
由弱对偶 → \rightarrow → 此时 x x x 和 λ \lambda λ 是各自最优解
四. 对偶的经济意义: 影子价格
最优状态下,Z ∗ = λ ∗ T b = ∑ i = 1 m λ i ∗ b i Z^* = \lambda^*{}^T b = \sum_{i=1}^{m} \lambda_i^* b_i Z ∗ = λ ∗ T b = ∑ i = 1 m λ i ∗ b i
∂ Z ∗ ∂ b i = λ i ∗ → \frac{\partial Z^*}{\partial b_i} = \lambda_i^* \rightarrow ∂ b i ∂ Z ∗ = λ i ∗ → 若资源 b i b_i b i 变化一点,最优成本 Z ∗ Z^* Z ∗ 会变化多少
结合互补松弛条件: λ i ∗ ( A i x ∗ − b i ) = 0 \lambda_i^* (A_i x^* - b_i) = 0 λ i ∗ ( A i x ∗ − b i ) = 0
A. A i x ∗ − b i > 0 → λ i ∗ = 0 → ∂ Z ∗ ∂ b i = 0 → A_i x^* - b_i > 0 \rightarrow \lambda_i^* = 0 \rightarrow \frac{\partial Z^*}{\partial b_i} = 0 \rightarrow A i x ∗ − b i > 0 → λ i ∗ = 0 → ∂ b i ∂ Z ∗ = 0 → 资源的边际价值为 0
B. A i x ∗ − b i = 0 → λ i ∗ 可以 > 0 → ∂ Z ∗ ∂ b i = λ i ∗ > 0 → b i A_i x^* - b_i = 0 \rightarrow \lambda_i^* \text{ 可以 } > 0 \rightarrow \frac{\partial Z^*}{\partial b_i} = \lambda_i^* > 0 \rightarrow b_i A i x ∗ − b i = 0 → λ i ∗ 可以 > 0 → ∂ b i ∂ Z ∗ = λ i ∗ > 0 → b i 是优化瓶颈
7-1: 整数规划 → \to → 部分或全部变量为整数的规划问题
整数线性规划:目标函数和约束函数是线性函数的整数规划问题
0-1 规划:所有变量定义域为 0 或 1
纯整数规划:所有变量定义域为整数
混合整数规划:变量中同时包含整数和非整数变量
一、主要关注:纯整数规划
{ min c T x s.t. A x = b x ≥ 0 x ∈ Z n \begin{cases} \min c^T x \\ \text{s.t. } Ax = b \\ x \ge 0 \\ x \in \mathbb{Z}^n \end{cases} ⎩ ⎨ ⎧ min c T x s.t. A x = b x ≥ 0 x ∈ Z n
问题:线性松弛 → \to → 去掉整数条件 → \to → 变成普通 LP
为什么不能四舍五入?松弛最优解 ( 5.2 , 1.8 ) → ( 5 , 2 ) → (5.2, 1.8) \to (5, 2) \to ( 5.2 , 1.8 ) → ( 5 , 2 ) → 可能超出约束 / 不是真实整数最优解
什么时候可以偷懒?→ \to → TU Matrix (完全幺模矩阵) → \to → 若不等式系数矩阵是 TU Matrix
考虑 IP: min c T x , s.t. A x ≤ b , x ≥ 0 且 x ∈ Z n \min c^T x, \text{s.t. } Ax \le b, x \ge 0 \text{ 且 } x \in \mathbb{Z}^n min c T x , s.t. A x ≤ b , x ≥ 0 且 x ∈ Z n
① A ∈ R m × n A \in \mathbb{R}^{m \times n} A ∈ R m × n 的任意子方阵行列式均为 0 或 1
② b ∈ Z m b \in \mathbb{Z}^m b ∈ Z m
则线性松弛解就是整数
TU Matrix 的判定:
① 所有子方阵的行列式(所有非零子式都为 ± 1 \pm 1 ± 1 )
② 充分条件:
A. 元素只有 0, 1, -1
B. 每一列至多 2 个非 0 元素
C. 如果一列有 2 个非 0 元素,它们相加为 0
网络流问题:约束
容量限制:流经任一条边的流量不超过最大流量
流量守恒:流入 = 流出
二. 整数规划如何求解?
割平面法
① 思路:使用单纯形法对线性松弛问题 LP 求最优解 → \to → 若最优解是整数,则找到了原问题的最优解 → \to → 如果 x x x 至少包含一个非整数元素,添加一个新的约束,使得 x x x 违反该约束,但是任何可行的整数解却不违反 → \to → 求解添加约束后的 LP 问题直到发现最优解。
由于一个线性约束对应一个分割平面,所以叫割平面法。
② 举例:min c T x , s.t. A x = b , x ≥ 0 \min c^T x, \text{s.t. } Ax = b, x \ge 0 min c T x , s.t. A x = b , x ≥ 0
松弛 LP 最优解时单纯形表:
[ 1 0 … 0 d 1 , m + 1 … d 1 , n b 1 0 1 … 0 ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮ ⋮ 0 0 … 1 d m , m + 1 … d m , n b m 0 0 … 0 σ m + 1 … σ n z ] \begin{bmatrix} 1 & 0 & \dots & 0 & d_{1,m+1} & \dots & d_{1,n} & b_1 \\ 0 & 1 & \dots & 0 & \vdots & & \vdots & \vdots \\ \vdots & \vdots & \ddots & \vdots & \vdots & & \vdots & \vdots \\ 0 & 0 & \dots & 1 & d_{m,m+1} & \dots & d_{m,n} & b_m \\ 0 & 0 & \dots & 0 & \sigma_{m+1} & \dots & \sigma_n & z \end{bmatrix} 1 0 ⋮ 0 0 0 1 ⋮ 0 0 … … ⋱ … … 0 0 ⋮ 1 0 d 1 , m + 1 ⋮ ⋮ d m , m + 1 σ m + 1 … … … d 1 , n ⋮ ⋮ d m , n σ n b 1 ⋮ ⋮ b m z
Z = C B T x B + C D T x D Z = C_B^T x_B + C_D^T x_D Z = C B T x B + C D T x D
s.t. A x = b → B x B + D x D = b → B − 1 B x B + B − 1 D x D = B − 1 b → I x B + ( B − 1 D ) x D = B − 1 b \text{s.t. } Ax = b \to Bx_B + Dx_D = b \to B^{-1}Bx_B + B^{-1}Dx_D = B^{-1}b \to Ix_B + (B^{-1}D)x_D = B^{-1}b s.t. A x = b → B x B + D x D = b → B − 1 B x B + B − 1 D x D = B − 1 b → I x B + ( B − 1 D ) x D = B − 1 b
→ x B + ( B − 1 D ) ⏟ A x D = B − 1 b ⏟ b \to x_B + \underbrace{(B^{-1}D)}_{A} x_D = \underbrace{B^{-1}b}_{b} → x B + A ( B − 1 D ) x D = b B − 1 b
Z = C B ( b − A x D ) + C D x D Z = C_B (b - Ax_D) + C_D x_D Z = C B ( b − A x D ) + C D x D
= C B b ⏟ Z + ( C D − C B A ) ⏟ 0 x D = \underbrace{C_B b}_{Z} + \underbrace{(C_D - C_B A)}_{0} x_D = Z C B b + 0 ( C D − C B A ) x D
①
针对第 i i i 个等式约束,x i + ∑ j = m + 1 n a i j x j = b i → x i + ∑ j = m + 1 n ⌊ a i j ⌋ x j ≤ ⌊ b i ⌋ x_i + \sum_{j=m+1}^{n} a_{ij} x_j = b_i \to x_i + \sum_{j=m+1}^{n} \lfloor a_{ij} \rfloor x_j \le \lfloor b_i \rfloor x i + ∑ j = m + 1 n a ij x j = b i → x i + ∑ j = m + 1 n ⌊ a ij ⌋ x j ≤ ⌊ b i ⌋
→ \to → 不会排除任何可行解
②
x j x_j x j 是整数,a i j a_{ij} a ij 是整数 → x i + ∑ j = m + 1 n a i j x j ≤ b i \to x_i + \sum_{j=m+1}^{n} a_{ij} x_j \le b_i → x i + ∑ j = m + 1 n a ij x j ≤ b i
可引入松弛变量:∑ j = m + 1 n ( a i j − ⌊ a i j ⌋ ) x j − x n + i = b i − ⌊ b i ⌋ \sum_{j=m+1}^{n} (a_{ij} - \lfloor a_{ij} \rfloor)x_j - x_{n+i} = b_i - \lfloor b_i \rfloor ∑ j = m + 1 n ( a ij − ⌊ a ij ⌋) x j − x n + i = b i − ⌊ b i ⌋ ☆☆☆
(1-②)
→ \to → 即为新的约束。
分支定界法:二分搜索
① 解线性松弛问题
{ 是整数解 → \to → stop
不是 → \to → next step
比如 x = ( 1.5 , 2.5 ) x = (1.5, 2.5) x = ( 1.5 , 2.5 )
② 分支
{ x 1 ≤ 1 → x_1 \le 1 \to x 1 ≤ 1 → 加入约束 → \to → 若有整数解 stop,否则继续分 (得到 Z 1 Z_1 Z 1 )
x 1 ≥ 2 → x_1 \ge 2 \to x 1 ≥ 2 → 加入约束 → \to → 继续分 (得到 Z 2 Z_2 Z 2 )
③ 若 Z 1 Z_1 Z 1 是整数解
{ Z 2 ≥ Z 1 Z_2 \ge Z_1 Z 2 ≥ Z 1 ,剪枝 Z 2 Z_2 Z 2
Z 2 < Z 1 Z_2 < Z_1 Z 2 < Z 1 但不是整数解 → \to → 继续分支
Linked Notes No outgoing note links.
Referenced By No backlinks yet.