机器学习:向量空间中的投影
今天介绍向量空间中的投影,以及投影矩阵。
假设空间中有两个向量 a,b\mathbf{a}, \mathbf{b}a,b,b\mathbf{b}b 在 a\mathbf{a}a 上的投影为 p\mathbf{p}p,我们要计算出 p\mathbf{p}p 到底是多少,如下图所示:

为了计算 p\mathbf{p}p,我们可以先假设 p=xa\mathbf{p} = x \mathbf{a}p=xa,因为 p\mathbf{p}p 是在 a\mathbf{a}a 上,所以两者只差系数的关系,如上图所示,我们可以找到 b\mathbf{b}b 和 p\mathbf{p}p 的差:e=b−p=b−xa\mathbf{e} = \mathbf{b} - \mathbf{p} = \mathbf{b} - x\mathbf{a}e=b−p=b−xa,而我们又可以看出,e\mathbf{e}e 是和 a\mathbf{a}a 垂直的,所以 e⋅a=aTe=0\mathbf{e} \cdot \mathbf{a} = \mathbf{a}^{T} \mathbf{e} = 0e⋅a=aTe=0,我们可以进一步得到,
aT(b−xa)=0\mathbf{a}^{T}(\mathbf{b} - x\mathbf{a})=0 aT(b−xa)=0
所以:
aTb−xaTa=0 \mathbf{a}^{T}\mathbf{b} -x\mathbf{a}^{T}\mathbf{a} =0 aTb−xaTa=0
进而:
x=aTbaTa x = \frac{\mathbf{a}^{T}\mathbf{b}}{\mathbf{a}^{T}\mathbf{a}} x=aTaaTb
所以:
p=xa=aaTaTab \mathbf{p} = x \mathbf{a} = \frac{\mathbf{a}\mathbf{a}^{T}}{\mathbf{a}^{T}\mathbf{a}}\mathbf{b}p=xa=aTaaaTb
所以投影矩阵
P=aaTaTa \mathbf{P} = \frac{\mathbf{a}\mathbf{a}^{T}}{\mathbf{a}^{T}\mathbf{a}} P=aTaaaT
这是到直线的投影,如果是到矩阵的投影,我们也可以用类似的方法求得, 只是将上面的向量 a\mathbf{a}a 换成矩阵 A\mathbf{A}A ,假设向量 b\mathbf{b}b 在矩阵 A\mathbf{A}A 上的投影为 Ax\mathbf{A}\mathbf{x}Ax,相当于向量 b\mathbf{b}b 投影到了矩阵 A\mathbf{A}A 的列空间上,而矩阵 A\mathbf{A}A 的列空间与其 left-null 空间是互相垂直的,所以:
AT(b−Ax)=0\mathbf{A}^{T}(\mathbf{b} - \mathbf{A}\mathbf{x})=0 AT(b−Ax)=0
所以:
ATb−ATAx=0 \mathbf{A}^{T}\mathbf{b} -\mathbf{A}^{T}\mathbf{A}\mathbf{x} =0 ATb−ATAx=0
进而:
x=(ATA)−1ATb \mathbf{x} = (\mathbf{A}^{T}\mathbf{A})^{-1} \mathbf{A}^{T}\mathbf{b}x=(ATA)−1ATb
所以:
p=Ax=A(ATA)−1ATb \mathbf{p} = \mathbf{A} \mathbf{x}= \mathbf{A} (\mathbf{A}^{T}\mathbf{A})^{-1} \mathbf{A}^{T}\mathbf{b} p=Ax=A(ATA)−1ATb
所以投影矩阵
P=A(ATA)−1AT \mathbf{P} = \mathbf{A} (\mathbf{A}^{T}\mathbf{A})^{-1} \mathbf{A}^{T}P=A(ATA)−1AT
关于投影,最后多说几句,讲讲点到直线的距离,这个与机器学习中的 SVM 的最初的优化函数有关:

这个图是那本经典的机器学习教材 《Pattern Recognition and Machine Learning》里的,这个是想说明向量空间中,一个点到直线的距离。假设直线的表达式为 f(x)=wTx+w0f(\mathbf{x})=\mathbf{w}^{T}\mathbf{x}+w_0f(x)=wTx+w0,如果我们要求一个点x\mathbf{x}x 到该直线的距离,我们可以用上面说的投影来求这个距离, 假设点 x\mathbf{x}x 到直线上的投影为 x⊥\mathbf{x}_{\perp}x⊥,如上图的 x⊥\mathbf{x}_{\perp}x⊥,而 x⊥\mathbf{x}_{\perp}x⊥ 到 x⊥\mathbf{x}_{\perp}x⊥ 的这个向量与 w\mathbf{w}w 是平行的,所以我们可以得到如下的表达式:
x=x⊥+rw∣∣w∣∣ \mathbf{x} = \mathbf{x}_{\perp} + r \frac{\mathbf{w}}{||\mathbf{w}||} x=x⊥+r∣∣w∣∣w
两边同时乘以 w\mathbf{w}w 并且加上 w0w_0w0, 可以得到:
wTx+w0=wTx⊥+w0+rwTw∣∣w∣∣ \mathbf{w}^{T}\mathbf{x} + w_0 = \mathbf{w}^{T}\mathbf{x}_{\perp} + w_0 + r \frac{\mathbf{w}^{T}\mathbf{w}}{||\mathbf{w}||} wTx+w0=wTx⊥+w0+r∣∣w∣∣wTw
因为 x⊥\mathbf{x}_{\perp}x⊥ 在直线上,所以 wTx⊥+w0=0\mathbf{w}^{T}\mathbf{x}_{\perp} + w_0 = 0wTx⊥+w0=0,进而,我们可以得到:
f(x)=r∣∣w∣∣⇒r=f(x)∣∣w∣∣ f(\mathbf{x}) = r ||\mathbf{w}|| \Rightarrow r = \frac{f(\mathbf{x})}{||\mathbf{w}||} f(x)=r∣∣w∣∣⇒r=∣∣w∣∣f(x)
因为 w∣∣w∣∣\frac{\mathbf{w}}{||\mathbf{w}||}∣∣w∣∣w 是单位向量,所以这个向量的幅值就是 rrr,所以点 x\mathbf{x}x 到该直线的距离就是 rrr。这个距离的表达式,就是机器学习里 SVM 的基础,SVM 要优化的就是寻找这样一个 w\mathbf{w}w 使得所有离该直线最近的点的距离最远,听起来好像有点绕哈~
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)