对人工智能数学课高等数学线性微积分数学教程的学习笔记。主要用于快速回忆已学的数学知识点,不适合基础学习。博客园中同步更新。
求
f
(
x
)
f(x)
f(x) 的极大值或极小值,
x
x
x 是优化变量,就是自变量,
f
(
x
)
f(x)
f(x) 是目标函数,可能带有约束条件,满足约束并在定义域内的集合叫可行域;
max
f
(
x
)
⇔
min
f
(
x
)
g
i
(
x
)
=
0
,
i
=
1
,
⋯
,
m
h
j
(
x
)
≤
0
j
=
1
,
⋯
,
n
\max f(x) \Leftrightarrow\min f(x)\\ g_i(x)=0,\quad i=1,\cdots,m\\ h_j(x)\le 0\quad j=1,\cdots,n
maxf(x)⇔minf(x)gi(x)=0,i=1,⋯,mhj(x)≤0j=1,⋯,n
局部极小值:任意在 x 0 x_0 x0 的领域存在, f ( x ) ≥ f ( x 0 ) , ∀ x ∈ δ ( x 0 ) f(x)\ge f(x_0), \forall x\in \delta (x_0) f(x)≥f(x0),∀x∈δ(x0)
通过大量实践发现在高维度的优化问题中,局部极小值 (local minimum)和全局极小值没有太大的区别,甚至有时候有更好的泛化能力。
为什么要迭代求解?(求导困难,求根困难),(初始值,逼近)
x k + 1 = x k − γ ∇ f ( x k ) \boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\gamma \nabla f(\boldsymbol{x}_k) xk+1=xk−γ∇f(xk)
推导:
η \eta η 是步长,不能太大,否则不满足约等于条件。
x k + 1 = x − H k − 1 g k \boldsymbol{x}_{k+1}=\boldsymbol{x}-\boldsymbol{H}_k^{-1}\boldsymbol{g}_k xk+1=x−Hk−1gk
思想:找梯度为0的点。
推导:
多元函数的泰勒展开公式展开二次以上的项
f
(
x
)
=
f
(
x
0
)
+
[
∇
f
(
x
0
)
]
T
(
x
−
x
0
)
+
1
2
(
x
−
x
0
)
T
H
(
x
0
)
(
x
−
x
0
)
+
o
(
x
−
x
0
)
f(\boldsymbol{x})=f(\boldsymbol{x}_0)+[\nabla f(\boldsymbol{x}_0)]^T(\boldsymbol{x}-\boldsymbol{x}_0)+\frac {1}{2}(\boldsymbol{x}-\boldsymbol{x}_0)^TH(\boldsymbol{x}_0)(\boldsymbol{x}-\boldsymbol{x}_0)+\boldsymbol{o}(\boldsymbol{x}-\boldsymbol{x}_0)
f(x)=f(x0)+[∇f(x0)]T(x−x0)+21(x−x0)TH(x0)(x−x0)+o(x−x0)
取近似
f
(
x
)
≈
f
(
x
0
)
+
[
∇
f
(
x
0
)
]
T
(
x
−
x
0
)
+
1
2
(
x
−
x
0
)
T
H
(
x
0
)
(
x
−
x
0
)
f(\boldsymbol{x})\approx f(\boldsymbol{x}_0)+[\nabla f(\boldsymbol{x}_0)]^T(\boldsymbol{x}-\boldsymbol{x}_0)+\frac {1}{2}(\boldsymbol{x}-\boldsymbol{x}_0)^TH(\boldsymbol{x}_0)(\boldsymbol{x}-\boldsymbol{x}_0)
f(x)≈f(x0)+[∇f(x0)]T(x−x0)+21(x−x0)TH(x0)(x−x0)
由于
(
w
T
x
)
′
=
w
(\boldsymbol{w}^T\boldsymbol{x})'=\boldsymbol{w}
(wTx)′=w,
(
x
T
A
x
)
′
=
(
A
+
A
T
)
x
(\boldsymbol{x}^T\boldsymbol{A}\boldsymbol{x})'= (\boldsymbol{A}+\boldsymbol{A}^T)\boldsymbol{x}
(xTAx)′=(A+AT)x,故有:
∇
f
(
x
)
≈
∇
f
(
x
0
)
+
H
(
x
0
)
(
x
−
x
0
)
=
g
+
H
(
x
−
x
0
)
\nabla f(\boldsymbol{x})\approx \nabla f(\boldsymbol{x}_0)+H(\boldsymbol{x}_0)(\boldsymbol{x}-\boldsymbol{x}_0)=\boldsymbol{g}+\boldsymbol{H}(\boldsymbol{x}-\boldsymbol{x}_0)
∇f(x)≈∇f(x0)+H(x0)(x−x0)=g+H(x−x0)
令
∇
f
(
x
)
=
0
\nabla f(\boldsymbol{x})=0
∇f(x)=0,如果 Hessian 矩阵可逆,则有
g
+
H
(
x
−
x
0
)
=
0
⇒
x
−
x
0
=
−
H
−
1
g
\boldsymbol{g}+\boldsymbol{H}(\boldsymbol{x}-\boldsymbol{x}_0)=0\\ \Rightarrow \boldsymbol{x}-\boldsymbol{x}_0=-\boldsymbol{H}^{-1}\boldsymbol{g}
g+H(x−x0)=0⇒x−x0=−H−1g
对比:
x
k
+
1
=
x
k
−
η
⋅
g
k
x
k
+
1
=
x
k
−
η
⋅
H
k
−
1
⋅
g
k
\boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\eta\cdot\boldsymbol{g}_k\\ \boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\eta\cdot\boldsymbol{H}^{-1}_k\cdot\boldsymbol{g}_k
xk+1=xk−η⋅gkxk+1=xk−η⋅Hk−1⋅gk
牛顿法步长设定不好就有可能不收敛,不是迭代就一定使得函数值下降,一般用 line search 的技术,选择一些值如 1 0 − 4 , 1 0 − 6 10^{-4},10^{-6} 10−4,10−6,看哪个步长使得 f ( x k + 1 ) f(\boldsymbol{x}_{k+1}) f(xk+1) 更小。
牛顿法收敛更快。
前面数值优化面临两个问题,对这类问题进行限定:
同时满足这两个条件的叫凸优化问题,才能说局部极小值就是全局极小值。
目标函数是凸函数,可行域是凸集,则局部最优解一定是全局最优解。
证明:(反证法)
假设有一点
x
x
x 是局部最小值,但不是全局最小值,则存在另一个点
y
y
y 是全局最小值,这时
f
(
y
)
<
f
(
x
)
f(y)
证明 x x x 的领域有一个点 z z z 比 x x x 小即可,取 z = θ y + ( 1 − θ ) x , θ = δ 2 ∥ x − y ∥ 2 z=\theta y+(1-\theta)x,\theta=\frac{\delta}{2\|x-y\|_2} z=θy+(1−θ)x,θ=2∥x−y∥2δ 即可。
min f ( x ) , x ∈ C \min f(x),x\in C minf(x),x∈C
或者
min
f
(
x
)
c
i
(
x
)
≤
0
,
i
=
1
,
⋯
,
m
h
j
(
x
)
=
0
,
j
=
1
,
⋯
,
k
\min f(x)\\ c_i(x)\le0,i=1,\cdots,m\\ h_j(x)=0,j=1,\cdots,k
minf(x)ci(x)≤0,i=1,⋯,mhj(x)=0,j=1,⋯,k
将一个有n 个变量与k 个约束条件的最优化问题转换为一个有n + k个变量的方程组的极值问题,其变量不受任何约束;
(1) 等式约束条件
min
f
(
x
)
s
.
t
.
h
k
(
x
)
=
0
k
=
1
,
2
,
⋯
,
l
\min f(\boldsymbol{x})\\ s.t.\quad h_k(\boldsymbol{x})=0 \quad k=1,2,\cdots,l
minf(x)s.t.hk(x)=0k=1,2,⋯,l
求解步骤:
定义拉格朗日函数:
F
(
x
,
λ
)
=
f
(
x
)
+
∑
k
=
1
l
λ
k
h
k
(
x
)
F(\boldsymbol{x},\boldsymbol{\lambda})=f(\boldsymbol{x})+\sum\limits_{k=1}^l\lambda_kh_k(\boldsymbol{x})
F(x,λ)=f(x)+k=1∑lλkhk(x)
解变量的偏导方程:
∂
F
∂
x
i
=
0
,
⋯
,
∂
F
∂
λ
k
=
0
,
⋯
\frac{\partial F}{\partial x_i}=0,\cdots,\frac{\partial F}{\partial \lambda _k}=0,\cdots
∂xi∂F=0,⋯,∂λk∂F=0,⋯
或者说是分别对
x
\boldsymbol{x}
x 和
λ
\boldsymbol{\lambda}
λ 求梯度,然后解方程组
∇
x
f
+
∑
k
=
1
l
λ
k
∇
x
h
k
=
0
h
k
(
x
)
=
0
\nabla_xf+\sum\limits_{k=1}^l\lambda_k\nabla_xh_k=0\\ h_k(\boldsymbol{x})=0
∇xf+k=1∑lλk∇xhk=0hk(x)=0
(2) 带不等式约束条件
可参考KKT条件。
min f ( x ) g i ( x ) ≤ 0 , i = 1 , ⋯ , m h j ( x ) = 0 , j = 1 , ⋯ , k \min f(x)\\ g_i(x)\le0,i=1,\cdots,m\\ h_j(x)=0,j=1,\cdots,k minf(x)gi(x)≤0,i=1,⋯,mhj(x)=0,j=1,⋯,k
构建一个广义 (包括不等式约束) 的拉格朗日函数:
L
(
x
,
α
,
β
)
=
f
(
x
)
+
∑
i
=
1
m
α
i
g
i
(
x
)
+
∑
j
=
1
k
β
i
h
j
(
x
)
,
α
i
≥
0
L(x,\alpha,\beta)=f(x)+\sum\limits_{i=1}^m\alpha_ig_i(x)+\sum\limits_{j=1}^k\beta_ih_j(x),\alpha_i\ge 0
L(x,α,β)=f(x)+i=1∑mαigi(x)+j=1∑kβihj(x),αi≥0
问题转化为:
p
∗
=
min
x
max
α
,
β
,
α
i
≥
0
L
(
x
,
α
,
β
)
=
min
x
θ
p
(
x
)
p^*=\min_x \max_{\alpha,\beta,\alpha_i\ge 0}L(x,\alpha,\beta)=\min_x\theta_p(x)
p∗=xminα,β,αi≥0maxL(x,α,β)=xminθp(x)
理解可参考:【数学】拉格朗日对偶,从0到完全理解
无论如何, p ∗ p^* p∗ 都不会小于 max α , β , α i ≥ 0 L ( x , α , β ) \max\limits_{\alpha,\beta,\alpha_i\ge 0}L(x,\alpha,\beta) α,β,αi≥0maxL(x,α,β)。
min f ( x ) g i ( x ) ≤ 0 , i = 1 , ⋯ , q h j ( x ) = 0 , j = 1 , ⋯ , p \min f(x)\\ g_i(x)\le0,i=1,\cdots,q\\ h_j(x)=0,j=1,\cdots,p minf(x)gi(x)≤0,i=1,⋯,qhj(x)=0,j=1,⋯,p
L ( x , λ , μ ) = f ( x ) + ∑ j = 1 p λ j h j ( x ) + ∑ i = 1 q μ i g i ( x ) L(x,\lambda,\mu)=f(x)+\sum\limits_{j=1}^p\lambda_jh_j(x)+\sum\limits_{i=1}^q\mu_ig_i(x) L(x,λ,μ)=f(x)+j=1∑pλjhj(x)+i=1∑qμigi(x)
KKT 条件:
∇
x
L
(
x
∗
)
=
∇
f
(
x
∗
)
+
∑
j
=
1
p
λ
i
∗
∇
h
j
(
x
∗
)
+
∑
i
=
1
q
μ
i
∗
∇
g
i
(
x
∗
)
=
0
μ
i
∗
≥
0
μ
i
∗
g
i
(
x
∗
)
=
0
h
j
(
x
∗
)
=
0
g
i
(
x
∗
)
≤
0
\nabla_x L(x^*)=\nabla f(x^*) +\sum\limits_{j=1}^p\lambda_i^*\nabla h_j(x^*)+\sum\limits_{i=1}^q\mu_i^*\nabla g_i(x^*)=0\\ \mu_i^*\ge0\\ \mu_i^*g_i(x^*)=0\\ h_j(x^*)=0\\ g_i(x^*)\le0
∇xL(x∗)=∇f(x∗)+j=1∑pλi∗∇hj(x∗)+i=1∑qμi∗∇gi(x∗)=0μi∗≥0μi∗gi(x∗)=0hj(x∗)=0gi(x∗)≤0