参考文章:
[1] https://www.cnblogs.com/seniusen/p/9994177.html
[2] https://blog.csdn.net/xdfyoga1/category_2315349.html
问题:向量 b = ( 2 , 3 , 4 ) b = (2, 3, 4) b=(2,3,4) 在 z z z 轴上和在 x y xy xy 平面上的投影是什么,哪个矩阵能产生到一条线上和到一个平面的投影?
1. 投影
当 b b b 被投影到 z z z 轴上时,它的投影 p p p 就是 b b b 沿着那条线的部分。当 b b b 被投影到一个平面时,它的投影就是 b b b 在平面中的部分。
到
z
z
z 轴上的投影为
p
1
=
(
0
,
0
,
4
)
p1=(0,0,4)
p1=(0,0,4),到
x
y
xy
xy 平面上的投影为
p
2
=
(
2
,
3
,
0
)
p2=(2,3,0)
p2=(2,3,0),两个投影矩阵
P
1
P1
P1 和
P
2
P2
P2 分别为
P
1
P1
P1 就是选出每个向量的
z
z
z 分量,
P
2
P2
P2 就是选出每个向量的
x
x
x 和
y
y
y 分量。
上图中的投影矩阵的作用可以理解为:向量
b
b
b 的投影
p
p
p 与向量
b
b
b 的关系,或通过投影矩阵,可以获得向量
b
b
b 的某个投影分量。 (向量
b
b
b 经过矩阵
P
1
P1
P1、
P
2
P2
P2 后得到了其投影
p
1
p_1
p1、
p
2
p_2
p2,所以投影是通过矩阵完成的,我们将该矩阵称为投影矩阵)
在这个例子中, z z z 轴和 x y xy xy 平面是正交子空间,就像地面和两面墙的交线一样。
除此之外,它们还是正交补的。整个空间的任意向量都可以表示为它们在两个子空间中分量的和。
2. 到一条线上的投影
假设一条过原点的直线方向为 a = ( a 1 , a 2 , ⋯ , a m ) a=(a1,a2,⋯,am) a=(a1,a2,⋯,am),我们要将点 b = ( b 1 , b 2 , ⋯ , b m ) b=(b1,b2,⋯,bm) b=(b1,b2,⋯,bm) 投影到这条直线上。
将向量
b
b
b 投影到向量
a
a
a ,
p
p
p 为
b
b
b 在
a
a
a 上的投影,即
p
p
p 是
a
a
a 上离
b
b
b 最近的点,
e
=
b
−
p
e=b-p
e=b−p 这好比
b
b
b 与
p
p
p 之间的误差,这个误差与
a
a
a 相互垂直。
投影
p
p
p 和
a
a
a 在一条直线上,因此有
p
=
x
^
a
p = \hat xa
p=x^a (
x
^
\hat x
x^ 是一个标量);误差
e
=
b
−
p
=
b
−
x
^
a
e=b−p=b−\hat xa
e=b−p=b−x^a,然后由
e
e
e 垂直于
a
a
a,我们可得:
e
⋅
a
=
0
→
(
b
−
x
^
a
)
⋅
a
=
0
→
a
⋅
b
−
x
^
a
⋅
a
=
0
e \cdot a = 0 \to (b-\hat xa) \cdot a = 0 \to a\cdot b - \hat x a\cdot a = 0
e⋅a=0→(b−x^a)⋅a=0→a⋅b−x^a⋅a=0
因此,可求得系数
x
^
\hat x
x^ 为
x
^
=
a
⋅
b
a
⋅
a
=
a
T
b
a
T
a
\hat x = \frac{a\cdot b}{a\cdot a} = \frac{a^Tb}{a^Ta}
x^=a⋅aa⋅b=aTaaTb
投影为
p
=
x
^
a
=
a
T
b
a
T
a
a
p = \hat x a = \frac{a^Tb}{a^Ta} a
p=x^a=aTaaTba
如果
b
=
a
b=a
b=a,那么
x
^
=
1
\hat x=1
x^=1,投影还是它自己,
P
b
=
b
Pb=b
Pb=b ;
如果
b
⊥
a
b⊥a
b⊥a,那么
x
^
=
0
\hat x=0
x^=0,投影为
P
b
=
0
Pb=0
Pb=0 。
第一种就是 b b b 就在列空间里,投影矩阵为 I I I ,即相当于不做任何投影;第二种极端情况就是 b b b 垂直于列空间,此时 P b = 0 Pb=0 Pb=0 ,一般情况下向量会有一分量在列空间里,另一分量与列空间垂直,因此投影完成的功能就是去掉垂直部分,保留另一部分。
将投影重写为
p
=
a
x
^
=
a
a
T
b
a
T
a
=
a
a
T
a
T
a
b
p = a \hat x =a \frac{a^Tb}{a^Ta} = \frac{aa^T}{a^Ta}b
p=ax^=aaTaaTb=aTaaaTb
因此,投影矩阵为
P
=
a
a
T
a
T
a
P = \frac{aa^T}{a^Ta}
P=aTaaaT
可以看出:
投影矩阵的性质:
- 如果向量 a a a 变为两倍,投影矩阵 P P P 不变,它还是投影到 p p p;若 b b b 变成了两倍,投影 p p p 也会变成2倍;
- 用任何向量 b b b 乘以投影矩阵 P P P,结果总在投影矩阵的列空间里。
因为 b b b 给出了对其列的线性组合,而我们又知道任何向量 b b b 乘以投影空间总在向量 a a a 上,因此投影矩阵 P P P 的列空间,是通过 a a a 的一条线,列空间维数是1,投影矩阵的秩是1;- 投影矩阵是对称的,因为 ( a a T ) T = a a T (aa^T)^T=aa^T (aaT)T=aaT;
- 如果投影矩阵平方,那就是进行两次投影,和进行一次投影是一样的结果,因此有 P 2 = P P^2=P P2=P。
同时, I − P I−P I−P 也是一个投影矩阵, ( I − P ) b = b − p = e (I−P)b=b−p=e (I−P)b=b−p=e。当 P P P 投影到一个子空间时, I − P I−P I−P 投影到和它垂直的另一个子空间。
3. 到子空间的投影
假设 n n n 个 R m R_m Rm 空间中的向量 a 1 , ⋯ , a n a1,⋯,an a1,⋯,an 是线性不相关的,我们想找到一个线性组合 p = x ^ 1 a 1 + ⋯ + x ^ n a n p=\hat x_1 a_1+\cdots+\hat x_n a_n p=x^1a1+⋯+x^nan 使得 p p p 距离一个给定向量 b b b 最近。
a
1
,
⋯
,
a
n
a1,⋯,an
a1,⋯,an 可以看做是矩阵
A
A
A 的列,我们要找的线性组合是在矩阵
A
A
A 的列空间中。我们要找的是距离
b
b
b 最近的一个组合
A
x
^
A\hat x
Ax^,也就是
b
b
b 在列空间的投影。
对上图中红框内的公式进行说明:它解释的是 "我们要找的是距离
b
b
b 最近的一个组合
A
x
^
A\hat x
Ax^,也就是
b
b
b 在列空间的投影 " 这句话。第二个等式借用了上面推出来的投影矩阵的表达式。
A
x
^
A\hat x
Ax^,则投影矩阵是关于
A
A
A 的。
同理,误差
e
=
b
−
A
x
^
e=b−A\hat x
e=b−Ax^ 垂直于子空间,也就是垂直于子空间的所有向量。
也即
A
T
(
b
−
A
x
^
)
=
0
→
A
T
A
x
^
=
A
T
b
A^T(b-A\hat x) = 0 \to A^TA\hat x = A^Tb
AT(b−Ax^)=0→ATAx^=ATb
A
T
A
A^TA
ATA 是一个 n×n 的矩阵,因为
A
A
A 的列是线性不相关的,所以其是可逆的。可得线性组合系数为
x
^
=
(
A
T
A
)
−
1
A
T
b
\hat x = (A^TA)^{-1}A^Tb
x^=(ATA)−1ATb
所以有,投影和投影矩阵分别为
p
=
A
x
^
=
A
(
A
T
A
)
−
1
A
T
b
p = A \hat x = A(A^TA)^{-1}A^Tb
p=Ax^=A(ATA)−1ATb
P
=
A
(
A
T
A
)
−
1
A
T
P = A(A^TA)^{-1}A^T
P=A(ATA)−1AT
由
A
T
(
b
−
A
x
^
)
=
0
A^T(b-A\hat x) = 0
AT(b−Ax^)=0 可知,误差
e
e
e 位于
A
A
A 的左零空间
N
(
A
T
)
N(A^T)
N(AT) 中,向量
b
b
b 被分为了投影
p
p
p 和误差
e
e
e 两部分。
A T A A^TA ATA 是可逆的当且仅当 A A A 的列是线性不相关的。
当
A
x
=
0
Ax=0
Ax=0 时,我们有
A
T
A
x
=
0
A^TAx=0
ATAx=0 。而当
A
T
A
x
=
0
A^TAx=0
ATAx=0 时,我们有
x
T
A
T
A
x
=
0
→
(
A
x
)
T
A
x
=
0
→
A
x
=
0
x^TA^TAx=0 \to (Ax)^TAx = 0 \to Ax = 0
xTATAx=0→(Ax)TAx=0→Ax=0
因此
A
T
A
A^TA
ATA 和
A
A
A 有着一样的零空间,当
A
A
A 的列线性不相关时,
A
T
A
A^TA
ATA 是一个方阵,对称并且可逆。
这里有另一种说法,更好理解。
参考:https://blog.csdn.net/xdfyoga1/article/details/37568067
4. 二维空间 R 2 R^2 R2 推广到高维空间 R n R^n Rn 的情况
在这之前,我们需要讨论一下为什么要投影?
- A x = b Ax=b Ax=b 无解,当无解时我们只能求解最接近的那个可解问题来求原方程的最优解,即要将 b b b 作调整,使其变成 A A A 的列空间中最接近 b b b 的那个向量。
那么怎样才算是最接近的呢?
- 这就要将 b b b 向 A A A 的列空间投影得到 p p p ,因为 p p p 在列空间中,因此 A x = p Ax=p Ax=p 是有解的,这就是为什么要作投影,可以用来解决方程无解的情况。
为了理解方便,接下来我主要以三维情况为例,但是要知道更高维和三维本质上是一样的。
假设有三维中的一个平面和一个不在平面上的向量
b
b
b ,现在要将
b
b
b 投影在平面上,平面有两个基向量
a
1
a_1
a1 和
a
2
a_2
a2 ,它们线性无关,回想下和方程组的联系,可知这个平面是矩阵
A
A
A 的列空间,即
A
=
[
a
1
a
2
]
A=\left [ \begin{matrix} a_1 & a_2 \end{matrix} \right ]
A=[a1a2],当然矩阵
A
A
A 可以是两列,也可以是
n
n
n 列,这里写成两列,投影
p
p
p 是基向量的组合,即
p
=
x
^
1
a
1
+
x
^
2
a
2
p=\hat{x}_{1}a_{1}+\hat{x}_{2}a_{2}
p=x^1a1+x^2a2 ,写成矩阵的形式即
p
=
A
x
^
p=A\hat{x}
p=Ax^ ,根据误差向量
e
=
b
−
A
x
^
e=b-A\hat{x}
e=b−Ax^ 垂直于平面,我们可得出等式,
e
e
e 垂直于平面的意思就是
e
e
e 分别垂直于两个基向量
a
1
a_1
a1 和
a
2
a_2
a2 ,因此分别得到
a
1
T
(
b
−
A
x
^
)
=
0
a_{1}^{T}(b-A\hat{x})=0
a1T(b−Ax^)=0
a
2
T
(
b
−
A
x
^
)
=
0
a_{2}^{T}(b-A\hat{x})=0
a2T(b−Ax^)=0
将两个方程合并成矩阵形式:
[
a
1
T
a
2
T
]
(
b
−
A
x
^
)
=
[
0
0
]
\begin{bmatrix} a_{1}^{T}\\ a_{2}^{T} \end{bmatrix}(b-A\hat{x})=\begin{bmatrix} 0\\ 0 \end{bmatrix}
[a1Ta2T](b−Ax^)=[00] 即,
A
T
(
b
−
A
x
^
)
=
0
A^{T}(b-A\hat{x})=0
AT(b−Ax^)=0 对比可发现平面上的投影方程和直线上的投影方程很相似,同样对其进行变形,将其改写为
A
T
A
x
^
=
A
T
b
A^{T}A\hat{x}=A^{T}b
ATAx^=ATb
x
^
=
(
A
T
A
)
−
1
A
T
b
\hat{x}=\left ( A^{T}A \right )^{-1}A^{T}b
x^=(ATA)−1ATb
投影和投影矩阵分别为
p
=
A
x
^
=
A
(
A
T
A
)
−
1
A
T
b
p=A\hat{x}=A\left ( A^{T}A \right )^{-1}A^{T}b
p=Ax^=A(ATA)−1ATb
P
=
A
(
A
T
A
)
−
1
A
T
P=A\left ( A^{T}A \right )^{-1}A^{T}
P=A(ATA)−1AT 这个公式看起来很复杂,根据乘积的逆等于各自逆的反顺序相乘,可得到
P
=
A
A
−
1
(
A
T
)
−
1
A
T
=
I
P=AA^{-1}(A^{T})^{-1}A^{T}=I
P=AA−1(AT)−1AT=I
问题出现了,为什么会这样呢?不应该投影矩阵算出来始终为I的,一定要注意因为 A A A 不是方阵(我们讨论的是 A x = b Ax=b Ax=b 无解的情况,因此A不是方阵),所以A的逆不存在,所以 P = A ( A T A ) − 1 A T P=A\left ( A^{T}A \right )^{-1}A^{T} P=A(ATA)−1AT 不能化简,我们做的这种变换是不成立的,只有 A A A 为可逆阵时才允许做后面的这一步变换。
我们可以看一下当 A A A 是可逆阵时这个式子表示的含义:如果 A A A 是 n ∗ n n*n n∗n 可逆方阵,那么它的列空间是整个 R n R_n Rn ,因为其对于所有的 b b b 均有解,既然 b b b 已经在列空间中,那么投影矩阵 P P P 是单位阵也无可厚非了。
投影矩阵的性质:
- 投影矩阵仍然是对称阵,将P进行转置即可得出结论;
- P 2 = P P^2=P P2=P,即进行第二次投影时还是会投影在第一次投影的地方。
应用
投影思想在最小二乘法中的应用
当我们遇到一个方程组,有太多的方程,未知数却只有几个,现在我们要求它的最优解。假设有三个点(1,1),(2,2),(3,2),这三个点拟合直线
b
=
C
+
D
t
b=C+Dt
b=C+Dt,首先我们要建立矩阵
A
A
A ,只要找到
A
A
A ,我们就能使用上面推导的那些公式,
C
+
D
=
1
C+D=1
C+D=1,
C
+
2
D
=
2
C+2D=2
C+2D=2,
C
+
3
D
=
2
C+3D=2
C+3D=2,所以对于这个例子,对应的无解方程
A
x
=
b
Ax=b
Ax=b 为
[
1
1
1
2
1
3
]
[
C
D
]
=
[
1
2
2
]
\begin{bmatrix} 1 & 1\\ 1 & 2\\ 1 & 3 \end{bmatrix}\begin{bmatrix} C \\ D \end{bmatrix}=\begin{bmatrix} 1\\ 2\\ 2 \end{bmatrix}
⎣⎡111123⎦⎤[CD]=⎣⎡122⎦⎤
所谓的最优解并不是这个方程的解,而是 A x = p Ax=p Ax=p 的解,即 A T A x ^ = A T b A^{T}A\hat{x}=A^{T}b ATAx^=ATb 的解。
附推导过程:
p
=
A
x
^
=
A
x
^
=
A
(
A
T
A
)
−
1
A
T
b
=
A
x
p=A\hat{x}=A\hat{x}=A(A^TA)^{-1}A^Tb=Ax
p=Ax^=Ax^=A(ATA)−1ATb=Ax
→
(
A
T
A
)
−
1
A
T
b
=
x
\rightarrow (A^TA)^{-1}A^Tb=x
→(ATA)−1ATb=x
→
A
T
A
x
=
A
T
b
\rightarrow A^TAx=A^Tb
→ATAx=ATb
解法1:线性代数方法来求解CD
由于
A
T
A
=
[
1
1
1
1
2
3
]
[
1
1
1
2
1
3
]
=
[
3
6
6
14
]
A^{T}A=\begin{bmatrix} 1 & 1 & 1\\ 1 & 2 & 3 \end{bmatrix} \begin{bmatrix} 1 & 1\\ 1 & 2\\ 1 & 3 \end{bmatrix}= \begin{bmatrix} 3 & 6\\ 6 & 14 \end{bmatrix}
ATA=[111213]⎣⎡111123⎦⎤=[36614]
A T b = [ 1 1 1 1 2 3 ] [ 1 2 2 ] = [ 5 11 ] A^{T}b=\begin{bmatrix} 1 & 1 & 1\\ 1 & 2 & 3 \end{bmatrix} \begin{bmatrix} 1\\ 2\\ 2 \end{bmatrix}= \begin{bmatrix} 5\\ 11 \end{bmatrix} ATb=[111213]⎣⎡122⎦⎤=[511]
可以解出 x ^ = [ C D ] = [ 2 3 1 2 ] \hat{x}=\begin{bmatrix} C\\ D \end{bmatrix} =\begin{bmatrix} \frac{2}{3}\\ \frac{1}{2} \end{bmatrix} x^=[CD]=[3221] 。
解法2:微积分求解CD
其误差为 e = b − p = b − A x e=b-p=b-Ax e=b−p=b−Ax 。
最小化误差函数:
e
=
e
1
2
+
e
2
2
+
e
3
2
=
(
b
1
−
p
1
)
+
(
b
2
−
p
2
)
+
(
b
3
−
p
3
)
=
(
C
+
D
−
1
)
2
+
(
C
+
2
D
−
2
)
2
+
(
C
+
3
D
−
2
)
2
\begin{aligned} e &=e_{1}^{2}+e_{2}^{2}+e_3^2 \\ &=(b_1-p_1)+(b_2-p_2)+(b_3-p_3) \\ &=(C+D-1)^2+(C+2D-2)^2+(C+3D-2)^2 \end{aligned}
e=e12+e22+e32=(b1−p1)+(b2−p2)+(b3−p3)=(C+D−1)2+(C+2D−2)2+(C+3D−2)2
对该式求偏导,最终得到
{
3
C
+
6
D
=
5
6
C
+
14
D
=
11
→
{
C
=
2
3
D
=
1
2
\left\{\begin{matrix} 3C+6D=5\\ 6C+14D=11 \end{matrix}\right.\rightarrow \left\{\begin{matrix} C = \frac{2}{3}\\ D = \frac{1}{2} \end{matrix}\right.
{3C+6D=56C+14D=11→{C=32D=21
综上,最优直线是 y = 2 / 3 + 1 / 2 t y=2/3+1/2t y=2/3+1/2t,由此三个点在线上的投影为 p 1 = 7 / 6 p1=7/6 p1=7/6, p 2 = 5 / 3 p2=5/3 p2=5/3, p 3 = 13 / 6 p3=13/6 p3=13/6 (不是垂直投影),各点的误差为 e 1 = − 1 / 6 e1=-1/6 e1=−1/6, e 2 = 2 / 6 e2=2/6 e2=2/6, e 3 = − 1 / 6 e3=-1/6 e3=−1/6 。
b b b, p p p 和 e e e 之间满足 b = p + e b=p+e b=p+e , e e e 不仅垂直于 p p p ,同时还垂直于其他向量, e e e 垂直于整个列空间。