基于梯度的优化
深度学习中,输入输出都是向量,不同于单输入输出的梯度优化,输出对于输入的梯度有许多个,数学上将这些梯度组成一个矩阵,称为Jacobian矩阵。
- Jacobian矩阵
由输出对输入的一阶导数组成,定义为: J i , j = d f ( x ) i d x j J_{i,j}=\frac{df(x)_i}{dx_j} Ji,j=dxjdf(x)i
有时候,我们也对二阶导数感兴趣,他会给我们关于极大极小的信息。同样的,对于多维输入与输出,其二阶导数组成Hessian矩阵。
-
Hessian矩阵
由二阶导数组成的矩阵,定义为: H ( f ) ( x ) i , j = d 2 f ( x ) d x i d x j H(f)(x)_{i,j}=\frac{d^2f(x)}{dx_idx_j} H(f)(x)i,j=dxidxjd2f(x) -
Hessian矩阵的性质(在一阶导数为0处,看二阶导)
- Hessian矩阵正定,此处为极小值点。
- Hessian矩阵负定,此处为极大值点。
- Hessian矩阵至少有一正一负,此处为鞍点。
Hessian矩阵可以提供搜索极点的信息,最简单的牛顿法就是用该矩阵完成临界点计算的。
约束优化
约束优化指带有输入约束的优化问题,比较通用的解决方法是KKT方法。
该方法的核心是将约束用函数的形式加到优化项里去,即定义新的优化目标(称为广义Lagrange函数),转化为无约束的优化问题。
例如:
对于输入约束:
S
=
{
x
∣
g
(
i
)
(
x
)
=
0
,
a
n
d
,
h
(
j
)
(
x
)
≤
0
}
S = \{x | g^{(i)}(x)=0, and, h^{(j)}(x) \le 0 \}
S={x∣g(i)(x)=0,and,h(j)(x)≤0}
则对于原始优化目标
f
(
x
)
f(x)
f(x),定义Lagrange函数为:
L
(
x
,
λ
,
α
)
=
f
(
x
)
+
∑
i
λ
i
g
(
i
)
(
x
)
+
∑
j
α
j
h
(
j
)
(
x
)
L(x,\lambda,\alpha)=f(x)+\sum_i \lambda_i g^{(i)}(x)+\sum_j \alpha_j h^{(j)}(x)
L(x,λ,α)=f(x)+i∑λig(i)(x)+j∑αjh(j)(x)
则可以通过优化无约束的广义Lagrange函数解决约束最小化问题,只要存在至少一个可行点,且f(x)不取无穷,那么
m
i
n
x
m
a
x
λ
m
a
x
(
α
,
α
>
0
)
L
(
x
,
λ
,
α
)
min_x max_\lambda max_{(\alpha,\alpha>0)} L(x,\lambda,\alpha)
minxmaxλmax(α,α>0)L(x,λ,α)
和
m
i
n
x
∈
S
f
(
x
)
min_{x\in S}f(x)
minx∈Sf(x)
有相同的最优目标函数值和最优点集。