梯度投影法理论
投影矩阵
我觉得这篇文章写的还行
https://www.cnblogs.com/bigmonkey/p/9897047.html
梯度投影法
例子
min
f
(
x
)
=
x
2
+
y
2
s
.
t
.
x
+
y
≥
1
\min\quad f(x)=x^2+y^2\\ s.t.\quad x+y≥1
minf(x)=x2+y2s.t.x+y≥1
显然当
x
=
y
=
0.5
x=y=0.5
x=y=0.5时有最小值,且
∇
f
(
x
)
=
(
2
x
1
2
x
2
)
\nabla f(x)= \left( %左括号 \begin{array}{cc} %该矩阵一共3列,每一列都居中放置 2x_1 \\ %第一行元素 2x_2 \\ %第二行元素 \end{array} \right)
∇f(x)=(2x12x2)这里我们假设初始点
x
(
1
)
=
(
3
,
−
2
)
x^{(1)}=(3,-2)
x(1)=(3,−2),积极约束矩阵
A
=
(
1
1
)
,
b
=
(
1
)
A=(1 \ \ \ 1),b=(1)
A=(1 1),b=(1)
几何意义
该例的等高面如图所示
其中,绿点是最小值点,红点是初始点,两条黑线箭头分别是负梯度方向
−
∇
f
(
x
)
-\nabla f(x)
−∇f(x)和负梯度的投影方向
d
(
1
)
=
−
P
∇
f
(
x
)
d^{(1)}=-P\nabla f(x)
d(1)=−P∇f(x)。这里P是投影矩阵,且
P
=
I
−
A
T
(
A
A
T
)
−
1
A
=
(
0.5
−
0.5
−
0.5
0.5
)
P=I-A^T(AA^T)^{-1}A= \left( %左括号 \begin{array}{cc} %该矩阵一共3列,每一列都居中放置 0.5 & -0.5 \\ %第一行元素 -0.5 & 0.5 \\ %第二行元素 \end{array} \right)
P=I−AT(AAT)−1A=(0.5−0.5−0.50.5)
而
−
∇
f
(
x
(
1
)
)
=
(
−
6
4
)
-\nabla f(x^{(1)})= \left( %左括号 \begin{array}{cc} %该矩阵一共3列,每一列都居中放置 -6 \\ %第一行元素 4 \\ %第二行元素 \end{array} \right)
−∇f(x(1))=(−64)
因此
d
(
1
)
=
−
P
∇
f
(
x
)
=
(
−
5
5
)
d^{(1)}=-P\nabla f(x)= \left( %左括号 \begin{array}{cc} %该矩阵一共3列,每一列都居中放置 -5 \\ %第一行元素 5 \\ %第二行元素 \end{array} \right)
d(1)=−P∇f(x)=(−55)
实际上,
d
(
1
)
d^{(1)}
d(1)就是约束矩阵
A
A
A的零空间的基。换言之,如果
- − P ∇ f ( x ) = 0 -P\nabla f(x)=0 −P∇f(x)=0,则当前点在约束下不存在下降方向。
- − P ∇ f ( x ) = ∇ f ( x ) -P\nabla f(x)=\nabla f(x) −P∇f(x)=∇f(x),则当前点在约束下的下降方向就是梯度,即 ∇ f ( x ) \nabla f(x) ∇f(x)在 A A A的零空间上。
- − P ∇ f ( x ) ≠ 0 -P\nabla f(x)\ne 0 −P∇f(x)̸=0,则其为当前点在约束下的下降方向。
那么,为什么是这样呢?
因为
A
A
A是积极约束的矩阵,
A
A
A的每一行都是一个向量(行向量),而
A
A
A的零空间里的向量与这些向量都正交,该投影矩阵又恰好是
A
A
A的零空间投影矩阵,能够把任何向量投影到零空间中(在此题中就是把梯度投影到零空间中)。比如,在上面的例子中,
A
A
A的一个行向量是
(
1
1
)
(1\ \ \ \ 1)
(1 1),与其正交的向量是
(
−
k
k
)
,
k
∈
R
\left( %左括号 \begin{array}{cc} %该矩阵一共3列,每一列都居中放置 -k \\ %第一行元素 k \\ %第二行元素 \end{array} \right) ,k\in R
(−kk),k∈R
也即下降可行方向。
不足之处
如果梯度方向在约束范围的内部,会减速。比如在此例中如果把约束改为 x > − 1 x>-1 x>−1,初始点为 x ( 1 ) = ( − 1 , 2 ) x^{(1)}=(-1,2) x(1)=(−1,2)时,梯度方向只需一次迭代,而梯度投影则还需要进行进一步判断(待更新)
参考资料
上海交大最优化讲义
陈宝林 《最优化理论与算法》