投影是一类重要的线性变换(还有旋转和反射),在图形学、编码理论、统计学和机器学习中都起着重要的作用。在机器学习中,我们经常处理高维的数据,而高维数据通常是难以分析或想象的。而且,高维数据往往具有这样的特性:少数维度包含了大部分信息,而大多数其他维度并不是描述数据关键属性所必需的。
当我们压缩或可视化高维数据时,我们会丢失信息。为了最大限度地减少这种压缩损失,我们最好在数据中找到信息量最大的维度。
正如第一章中所讨论的,数据可以表示为向量,在解析几何中,我们将讨论数据压缩的一些基本工具。更具体地说,我们可以将原始的高维数据投影到一个低维特征空间中,并在这个低维空间中进一步分析数据集并提取相关模式( pattern)。
例如,Pearson(1901)和Hotelling(1933)提出的主成分分析(PCA)和深度神经网络(例如:深度自编码器deep auto encoders(Deng et al.,2010))等机器学习算法就充分地利用了降维思想。
下面,我们将重点讨论正交投影,我们将在第十章降维中使用正交投影进行线性降维,在第十二章分类中使用正交投影进行分类。还有第九章回归中也可以用正交投影来解释。对于给定的低维子空间,高维数据的正交投影能保留原始数据尽可能多的信息并使原始数据和相应投影之间的差异/误差最小化。下面给出正交投影的图示。
图3.9二维数据集(蓝点)到一维子空间(直线)的正交投影(橙色点)。
在我们详细说明如何获得这些投影之前,让我们看看投影是怎么定义的。
定义 3.10 投影
令 V V V为一个向量空间, U ⊆ V U \subseteq V U⊆V为 V V V的一个子空间。如果 π 2 = π ∘ π = π \pi^{2}=\pi \circ \pi=\pi π2=π∘π=π,则线性映射 π : V → U \pi: V \rightarrow U π:V→U称为投影(projection)。
线性映射可以用变换矩阵来表示,所以上述定义同样适用于一类特殊的变换矩阵,即投影矩阵(projection matrices) P π \boldsymbol{P}_{\pi} Pπ,它具有 P π 2 = P π \boldsymbol{P}_{\pi}^{2}=\boldsymbol{P}_{\pi} Pπ2=Pπ的属性。
下面,我们将得到内积空间 ( R n , ⟨ ⋅ , ⋅ ⟩ ) \left(\mathbb{R}^{n},\langle\cdot, \cdot\rangle\right) (Rn,⟨⋅,⋅⟩)到子空间的向量正交投影。我们将从一维子空间(也叫做线)开始。如果没有另外提及,我们默认以 ⟨ x , y ⟩ = x ⊤ y \langle\boldsymbol{x}, \boldsymbol{y}\rangle=\boldsymbol{x}^{\top} \boldsymbol{y} ⟨x,y⟩=x⊤y为内积。
假设我们被给定一条线(一维子空间),它通过原点且基向量为 b ∈ R n \boldsymbol{b} \in \mathbb{R}^{n} b∈Rn。该线为由 b \boldsymbol{b} b张成的一维子空间 U ⊆ R n U \subseteq \mathbb{R}^{n} U⊆Rn。当我们将 x ∈ R n \boldsymbol{x} \in \mathbb{R}^{n} x∈Rn投影到 U U U时,我们目的是寻找最接近 x \boldsymbol{x} x的向量 π U ( x ) ∈ U \pi_{U}(\boldsymbol{x}) \in U πU(x)∈U。利用几何参数,我们来描述投影 π U ( x ) \pi_{U}(\boldsymbol{x}) πU(x)的一些性质(图3.10(a)给出了图解):
图 3.10 一维子空间投影的例子。
通过以下三个步骤中,我们可以确定坐标 λ \lambda λ、投影 π U ( x ) ∈ U \pi_{U}(\boldsymbol{x}) \in U πU(x)∈U以及将任意 x ∈ R n x \in \mathbb{R}^{n} x∈Rn映射到 U U U上的投影矩阵 P π \boldsymbol{P}_{\pi} Pπ:
1、求坐标 λ \lambda λ。在正交条件下有:
⟨ x − π U ( x ) , b ⟩ = 0 ⟺ π U ( x ) = λ b ⟨ x − λ b , b ⟩ = 0 \left\langle\boldsymbol{x}-\pi_{U}(\boldsymbol{x}), \boldsymbol{b}\right\rangle=0 \stackrel{\pi_{U}(\boldsymbol{x})=\lambda \boldsymbol{b}}{\Longleftrightarrow}\langle\boldsymbol{x}-\lambda \boldsymbol{b}, \boldsymbol{b}\rangle=0 ⟨x−πU(x),b⟩=0⟺πU(x)=λb⟨x−λb,b⟩=0
我们现在可以利用内积的双线性,得到
⟨ x , b ⟩ − λ ⟨ b , b ⟩ = 0 ⟺ λ = ⟨ x , b ⟩ ⟨ b , b ⟩ = ⟨ b , x ⟩ ∥ b ∥ 2 ( 3.40 ) \langle\boldsymbol{x}, \boldsymbol{b}\rangle-\lambda\langle\boldsymbol{b}, \boldsymbol{b}\rangle=0 \Longleftrightarrow \lambda=\frac{\langle\boldsymbol{x}, \boldsymbol{b}\rangle}{\langle\boldsymbol{b}, \boldsymbol{b}\rangle}=\frac{\langle\boldsymbol{b}, \boldsymbol{x}\rangle}{\|\boldsymbol{b}\|^{2}}\qquad (3.40) ⟨x,b⟩−λ⟨b,b⟩=0⟺λ=⟨b,b⟩⟨x,b⟩=∥b∥2⟨b,x⟩(3.40)
在最后一步中,我们利用了内积是对称的这一事实。如果我们选择点积作为 ⟨ ⋅ , ⋅ ⟩ \langle\cdot, \cdot\rangle ⟨⋅,⋅⟩,我们得到
λ = b ⊤ x b ⊤ b = b ⊤ x ∥ b ∥ 2 \lambda=\frac{\boldsymbol{b}^{\top} \boldsymbol{x}}{\boldsymbol{b}^{\top} \boldsymbol{b}}=\frac{\boldsymbol{b}^{\top} \boldsymbol{x}}{\|\boldsymbol{b}\|^{2}} λ=b⊤bb⊤x=∥b∥2b⊤x
如果 ∥ b ∥ = 1 \|\boldsymbol{b}\|=1 ∥b∥=1,我们可以看到投影的坐标 λ \lambda λ由 b ⊤ x \boldsymbol{b}^{\top} \boldsymbol{x} b⊤x决定。
2、求投影点 π U ( x ) ∈ U \pi_{U}(\boldsymbol{x}) \in U πU(x)∈U。由于 π U ( x ) = λ b \pi_{U}(\boldsymbol{x})=\lambda \boldsymbol{b} πU(x)=λb,我们立即由(3.40)的结果得到
π U ( x ) = λ b = ⟨ x , b ⟩ ∥ b ∥ 2 b = b ⊤ x ∥ b ∥ 2 b ( 3.42 ) \pi_{U}(\boldsymbol{x})=\lambda \boldsymbol{b}=\frac{\langle\boldsymbol{x}, \boldsymbol{b}\rangle}{\|\boldsymbol{b}\|^{2}} \boldsymbol{b}=\frac{\boldsymbol{b}^{\top} \boldsymbol{x}}{\|\boldsymbol{b}\|^{2}} \boldsymbol{b}\qquad (3.42) πU(x)=λb=∥b∥2⟨x,b⟩b=∥b∥2b⊤xb(3.42)
其中最后一个等式只适用于点积。
我们也可以用定义3.1计算 π U ( x ) \pi_{U}(\boldsymbol{x}) πU(x)的长度
∥ π U ( x ) ∥ = ∥ λ b ∥ = ∣ λ ∣ ∥ b ∥ \left\|\pi_{U}(\boldsymbol{x})\right\|=\|\lambda \boldsymbol{b}\|=|\lambda|\|\boldsymbol{b}\| ∥πU(x)∥=∥λb∥=∣λ∣∥b∥
因此,我们的投影长度是 ∣ λ ∣ |\lambda| ∣λ∣乘以 b \boldsymbol{b} b的长度。这也直观地展示了 λ \lambda λ是 π U ( x ) \pi_{U}(\boldsymbol{x}) πU(x)相对于张成 U U U的基向量 b \boldsymbol{b} b的坐标。
如果我们使用点积作为内积,由 cos ω = ⟨ x , y ⟩ ∥ x ∥ ∥ y ∥ \cos \omega=\frac{\langle\boldsymbol{x}, \boldsymbol{y}\rangle}{\|\boldsymbol{x}\|\|\boldsymbol{y}\|} cosω=∥x∥∥y∥⟨x,y⟩(3.25),我们得到
∥ π U ( x ) ∥ = ( 3.42 ) ∣ b ⊤ x ∣ ∥ b ∥ 2 ∥ b ∥ = ( 3.25 ) ∣ cos ω ∣ ∥ x ∥ ∥ b ∥ ∥ b ∥ ∥ b ∥ 2 = ∣ cos ω ∣ ∥ x ∥ \left\|\pi_{U}(\boldsymbol{x})\right\| \stackrel{(3.42)}{=} \frac{\left|\boldsymbol{b}^{\top} \boldsymbol{x}\right|}{\|\boldsymbol{b}\|^{2}}\|\boldsymbol{b}\| \stackrel{(3.25)}{=}|\cos \omega|\|\boldsymbol{x}\|\|\boldsymbol{b}\| \frac{\|\boldsymbol{b}\|}{\|\boldsymbol{b}\|^{2}}=|\cos \omega|\|\boldsymbol{x}\| ∥πU(x)∥=(3.42)∥b∥2∣∣∣b⊤x∣∣∣∥b∥=(3.25)∣cosω∣∥x∥∥b∥∥b∥2∥b∥=∣cosω∣∥x∥
这里, ω ω ω是 x \boldsymbol{x} x和 b \boldsymbol{b} b之间的夹角。这个方程应该是我们在三角定理中熟悉的:如果 ∥ x ∥ = 1 \|\boldsymbol{x}\|=1 ∥x∥=1,那么 x \boldsymbol{x} x位于单位圆上。此时 b \boldsymbol{b} b在横轴上的投影正好是 cos ω \cos \omega cosω,对应向量 π U ( x ) = ∣ cos ω ∣ \pi_{U}(\boldsymbol{x})=|\cos \omega| πU(x)=∣cosω∣。如图3.10(b)。
3、求投影矩阵 P π \boldsymbol{P}_{\pi} Pπ。我们知道投影是线性映射(定义3.10)。因此,存在一个投影矩阵 P π \boldsymbol{P}_{\pi} Pπ,使得 π U ( x ) = P π x \pi_{U}(\boldsymbol{x})=\boldsymbol{P}_{\pi} \boldsymbol{x} πU(x)=Pπx。以点积为内积,由
π U ( x ) = λ b = b λ = b b ⊤ x ∥ b ∥ 2 = b b ⊤ ∥ b ∥ 2 x ( 3.46 ) \pi_{U}(\boldsymbol{x})=\lambda \boldsymbol{b}=\boldsymbol{b} \lambda=\boldsymbol{b} \frac{\boldsymbol{b}^{\top} \boldsymbol{x}}{\|\boldsymbol{b}\|^{2}}=\frac{\boldsymbol{b} \boldsymbol{b}^{\top}}{\|\boldsymbol{b}\|^{2}} \boldsymbol{x}\quad (3.46) πU(x)=λb=bλ=b∥b∥2b⊤x=∥b∥2bb⊤x(3.46)
我们可以得到:
P π = b b ⊤ ∥ b ∥ 2 \boldsymbol{P}_{\pi}=\frac{\boldsymbol{b b}^{\top}}{\|\boldsymbol{b}\|^{2}} Pπ=∥b∥2bb⊤
注意, ∥ b ∥ 2 = ⟨ b , b ⟩ \|\boldsymbol{b}\|^{2}=\langle \boldsymbol{b}, \boldsymbol{b}\rangle ∥b∥2=⟨b,b⟩是一个标量, b b ⊤ \boldsymbol{b}\boldsymbol{b}^{\top} bb⊤(秩为1)以及投影矩阵 P π \boldsymbol{P}_{\pi} Pπ都是一个对称矩阵。
投影矩阵 P π \boldsymbol{P}_{\pi} Pπ将任意向量 x ∈ R n \boldsymbol{x} \in \mathbb{R}^{n} x∈Rn投影到通过原点的直线上,方向为 b \boldsymbol{b} b(相当于 b \boldsymbol{b} b所张成的子空间 U U U)。
备注:
投影 π U ( x ) ∈ R n \pi_{U}(\boldsymbol{x}) \in \mathbb{R}^{n} πU(x)∈Rn仍然是 n n n维向量而不是标量。我们可以用张成子空间 U U U的基向量 b \boldsymbol{b} b来表示投影,这样我们就只需要一个坐标 λ \lambda λ来表示投影,而不再需要 n n n个坐标。
例 3.10 投影到直线上
求出投影到 b = [ 1 2 2 ] ⊤ \boldsymbol{b}=\left[\begin{array}{lll}1 & 2 & 2\end{array}\right]^{\top} b=[122]⊤所张成的过原点的直线上的投影矩阵 P π \boldsymbol{P}_{\pi} Pπ。 b \boldsymbol{b} b是一维子空间(通过原点的直线)的方向和基。
由(3.46),我们可以得到:
P π = b b ⊤ b ⊤ b = 1 9 [ 1 2 2 ] [ 1 2 2 ] = 1 9 [ 1 2 2 2 4 4 2 4 4 ] \boldsymbol{P}_{\pi}=\frac{\boldsymbol{b b}^{\top}}{\boldsymbol{b}^{\top} \boldsymbol{b}}=\frac{1}{9}\left[\begin{array}{l}1 \\2 \\2\end{array}\right]\left[\begin{array}{lll}1 & 2 & 2\end{array}\right]=\frac{1}{9}\left[\begin{array}{lll}1 & 2 & 2 \\2 & 4 & 4 \\2 & 4 & 4\end{array}\right] Pπ=b⊤bbb⊤=91⎣⎡122⎦⎤[122]=91⎣⎡122244244⎦⎤
现在让我们选择一个特定的 x \boldsymbol{x} x,看看它是否位于 b \boldsymbol{b} b所张成的子空间中。对于 x = [ 1 1 1 ] ⊤ \boldsymbol{x}=\left[\begin{array}{lll}1 & 1 & 1\end{array}\right]^{\top} x=[111]⊤,投影是
π U ( x ) = P π x = 1 9 [ 1 2 2 2 4 4 2 4 4 ] [ 1 1 1 ] = 1 9 [ 5 10 10 ] ∈ span [ [ 1 2 2 ] ] \pi_{U}(\boldsymbol{x})=\boldsymbol{P}_{\pi} \boldsymbol{x}=\frac{1}{9}\left[\begin{array}{lll}1 & 2 & 2 \\2 & 4 & 4 \\2 & 4 & 4\end{array}\right]\left[\begin{array}{l}1 \\1 \\1\end{array}\right]=\frac{1}{9}\left[\begin{array}{c}5 \\10 \\10\end{array}\right] \in \operatorname{span}\left[\left[\begin{array}{l}1 \\2 \\2\end{array}\right]\right] πU(x)=Pπx=91⎣⎡122244244⎦⎤⎣⎡111⎦⎤=91⎣⎡51010⎦⎤∈span⎣⎡⎣⎡122⎦⎤⎦⎤
注意, P π \boldsymbol{P}_{\pi} Pπ应用到 π U ( x ) \pi_{U}(\boldsymbol{x}) πU(x)不会改变任何东西,即 P π π U ( x ) = π U ( x ) \boldsymbol{P}_{\pi} \pi_{U}(\boldsymbol{x})=\pi_{U}(\boldsymbol{x}) PππU(x)=πU(x)。这是意料之中的,因为根据定义3.10,我们知道对于任何 x \boldsymbol{x} x,投影矩阵 P π \boldsymbol{P}_{\pi} Pπ满足 P π 2 x = P π x \boldsymbol{P}_{\pi}^{2} \boldsymbol{x}=\boldsymbol{P}_{\pi} \boldsymbol{x} Pπ2x=Pπx。
备注:
在第四章矩阵分解中,我们将展示 π U ( x ) \pi_{U}(\boldsymbol{x}) πU(x)是 P π \boldsymbol{P}_{\pi} Pπ的特征向量,对应的特征值为1。
图 3.11 x ∈ R 3 \boldsymbol{x} \in \mathbb{R}^{3} x∈R3在 U U U上的投影 π U ( x ) \pi_{U}(\boldsymbol{x}) πU(x)可以表示为 b 1 , b 2 \boldsymbol{b}_{1}, \boldsymbol{b}_{2} b1,b2的线性组合,位移向量 x − π U ( x ) \boldsymbol{x}-\pi_{U}(\boldsymbol{x}) x−πU(x)与 b 1 \boldsymbol{b}_{1} b1和 b 2 \boldsymbol{b}_{2} b2正交。
在下面,我们研究向量 x ∈ R n x \in \mathbb{R}^{n} x∈Rn到低维子空间 U ⊆ R n U \subseteq \mathbb{R}^{n} U⊆Rn的正交投影,其中 dim ( U ) = m ⩾ 1 \operatorname{dim}(U)=m \geqslant 1 dim(U)=m⩾1。图3.11给出了示意图。
假设 ( b 1 , … , b m ) \left(\boldsymbol{b}_{1}, \ldots, \boldsymbol{b}_{m}\right) (b1,…,bm)是 U U U的有序基。 U U U上的任何投影 π U ( x ) \pi_{U}(\boldsymbol{x}) πU(x)必然是 U U U的元素。因此,它们可以表示为 U U U的基向量 ( b 1 , … , b m ) \left(\boldsymbol{b}_{1}, \ldots, \boldsymbol{b}_{m}\right) (b1,…,bm)的线性组合: π U ( x ) = ∑ i = 1 m λ i b i \pi_{U}(\boldsymbol{x})=\sum_{i=1}^{m} \lambda_{i} \boldsymbol{b}_{i} πU(x)=∑i=1mλibi。
与一维的情形一样,我们要用三步来求投影 π U ( x ) \pi_{U}(\boldsymbol{x}) πU(x)和投影矩阵 P π \boldsymbol{P}_{\pi} Pπ:
1、求投影的坐标 λ 1 , … , λ m \lambda_{1}, \ldots, \lambda_{m} λ1,…,λm(相对于 U U U的基)。使线性组合
π U ( x ) = ∑ i = 1 m λ i b i = B λ \pi_{U}(\boldsymbol{x})=\sum_{i=1}^{m} \lambda_{i} \boldsymbol{b}_{i}=\boldsymbol{B} \boldsymbol{\lambda} πU(x)=i=1∑mλibi=Bλ
B = [ b 1 , … , b m ] ∈ R n × m , λ = [ λ 1 , … , λ m ] ⊤ ∈ R m \boldsymbol{B}=\left[\boldsymbol{b}_{1}, \ldots, \boldsymbol{b}_{m}\right] \in \mathbb{R}^{n \times m}, \quad \boldsymbol{\lambda}=\left[\lambda_{1}, \ldots, \lambda_{m}\right]^{\top} \in \mathbb{R}^{m} B=[b1,…,bm]∈Rn×m,λ=[λ1,…,λm]⊤∈Rm
离 x \boldsymbol{x} x最近。与一维情形一样,“最近”表示“最小距离”,这意味着连接 π U ( x ) ∈ U \pi_{U}(\boldsymbol{x}) \in U πU(x)∈U和 x ∈ R n \boldsymbol{x} \in \mathbb{R}^{n} x∈Rn的向量必须与 U U U的所有基向量正交。因此,我们得到 m m m个条件(假设内积为点积)
⟨ b 1 , x − π U ( x ) ⟩ = b 1 ⊤ ( x − π U ( x ) ) = 0 ⋮ ⟨ b m , x − π U ( x ) ⟩ = b m ⊤ ( x − π U ( x ) ) = 0 \begin{array}{c}\left\langle\boldsymbol{b}_{1}, \boldsymbol{x}-\pi_{U}(\boldsymbol{x})\right\rangle=\boldsymbol{b}_{1}^{\top}\left(\boldsymbol{x}-\pi_{U}(\boldsymbol{x})\right)=0 \\\vdots \\\left\langle\boldsymbol{b}_{m}, \boldsymbol{x}-\pi_{U}(\boldsymbol{x})\right\rangle=\boldsymbol{b}_{m}^{\top}\left(\boldsymbol{x}-\pi_{U}(\boldsymbol{x})\right)=0\end{array} ⟨b1,x−πU(x)⟩=b1⊤(x−πU(x))=0⋮⟨bm,x−πU(x)⟩=bm⊤(x−πU(x))=0
再由 π U ( x ) = B λ \pi_{U}(\boldsymbol{x})=\boldsymbol{B} \boldsymbol{\lambda} πU(x)=Bλ,得到:
b 1 ⊤ ( x − B λ ) = 0 : b m ⊤ ( x − B λ ) = 0 \begin{aligned}&\boldsymbol{b}_{1}^{\top}(\boldsymbol{x}-\boldsymbol{B} \boldsymbol{\lambda})=0\\&\text { : }\\&\boldsymbol{b}_{m}^{\top}(\boldsymbol{x}-\boldsymbol{B} \boldsymbol{\lambda})=0\end{aligned} b1⊤(x−Bλ)=0 : bm⊤(x−Bλ)=0
从而得到一个齐次线性方程组:
[ b 1 ⊤ ⋮ b m ⊤ ] [ x − B λ ] = 0 ⟺ B ⊤ ( x − B λ ) = 0 \left[\begin{array}{c}\boldsymbol{b}_{1}^{\top} \\\vdots \\\boldsymbol{b}_{m}^{\top}\end{array}\right][\boldsymbol{x}-\boldsymbol{B} \boldsymbol{\lambda}]=\mathbf{0} \Longleftrightarrow \boldsymbol{B}^{\top}(\boldsymbol{x}-\boldsymbol{B} \boldsymbol{\lambda})=\mathbf{0} ⎣⎢⎡b1⊤⋮bm⊤⎦⎥⎤[x−Bλ]=0⟺B⊤(x−Bλ)=0
⟺ B ⊤ B λ = B ⊤ x \Longleftrightarrow \boldsymbol{B}^{\top} \boldsymbol{B} \boldsymbol{\lambda}=\boldsymbol{B}^{\top} \boldsymbol{x} ⟺B⊤Bλ=B⊤x
最后一个表达式叫做正规方程(normal equation)。因为 b 1 , … , b m \boldsymbol{b}_{1}, \ldots, \boldsymbol{b}_{m} b1,…,bm是 U U U的基,它们是线性独立的。因此, B ⊤ B ∈ R m × m \boldsymbol{B}^{\top} \boldsymbol{B} \in \mathbb{R}^{m \times m} B⊤B∈Rm×m是正则的,是可逆的。这使我们能够求解得到系数/坐标:
λ = ( B ⊤ B ) − 1 B ⊤ x ( 3.57 ) \boldsymbol{\lambda}=\left(\boldsymbol{B}^{\top} \boldsymbol{B}\right)^{-1} \boldsymbol{B}^{\top} \boldsymbol{x}\qquad (3.57) λ=(B⊤B)−1B⊤x(3.57)
矩阵 ( B ⊤ B ) − 1 B ⊤ \left(\boldsymbol{B}^{\top} \boldsymbol{B}\right)^{-1} \boldsymbol{B}^{\top} (B⊤B)−1B⊤称为 B \boldsymbol{B} B的伪逆(pseudo-inverse),适用于非方阵的 B \boldsymbol{B} B。仅需 B ⊤ B \boldsymbol{B}^{\top} \boldsymbol{B} B⊤B是正定的,也就是说 B \boldsymbol{B} B是满秩的。在实际应用中(如线性回归),我们经常在 B ⊤ B \boldsymbol{B}^{\top} \boldsymbol{B} B⊤B中加入一个“抖动项” ϵ I \epsilon \boldsymbol{I} ϵI,以保证数值稳定性和正定性增加。
2、求投影 π U ( x ) ∈ U \pi_{U}(\boldsymbol{x}) \in U πU(x)∈U,我们已经推断出 π U ( x ) = B λ \pi_{U}(\boldsymbol{x})=\boldsymbol{B} \boldsymbol{\lambda} πU(x)=Bλ,则由(3.57)的结果,得到:
π U ( x ) = B ( B ⊤ B ) − 1 B ⊤ x ( 3.58 ) \pi_{U}(\boldsymbol{x})=\boldsymbol{B}\left(\boldsymbol{B}^{\top} \boldsymbol{B}\right)^{-1} \boldsymbol{B}^{\top} \boldsymbol{x}\qquad (3.58) πU(x)=B(B⊤B)−1B⊤x(3.58)
3、 求投影矩阵 P π \boldsymbol{P}_{\pi} Pπ。根据(3.58),我们可以立即看到,求解 P π x = π U ( x ) \boldsymbol{P}_{\pi} \boldsymbol{x}=\pi_{U}(\boldsymbol{x}) Pπx=πU(x)的投影矩阵是
P π = B ( B ⊤ B ) − 1 B ⊤ \boldsymbol{P}_{\pi}=\boldsymbol{B}\left(\boldsymbol{B}^{\top} \boldsymbol{B}\right)^{-1} \boldsymbol{B}^{\top} Pπ=B(B⊤B)−1B⊤
备注:
投影到一般子空间有一维这一特例:如果 dim ( U ) = 1 \operatorname{dim}(U)=1 dim(U)=1,则 B ⊤ B ∈ R \boldsymbol{B}^{\top} \boldsymbol{B} \in \mathbb{R} B⊤B∈R是标量,我们可以将一般子空间的投影矩阵 P π = B ( B ⊤ B ) − 1 B ⊤ \boldsymbol{P}_{\pi}=\boldsymbol{B}\left(\boldsymbol{B}^{\top} \boldsymbol{B}\right)^{-1} \boldsymbol{B}^{\top} Pπ=B(B⊤B)−1B⊤重写为 P π = B B ⊤ B ⊤ B \boldsymbol{P}_{\pi}=\frac{B B^{\top}}{B^{\top} B} Pπ=B⊤BBB⊤,这正是一维子空间的投影矩阵。
例 3.11 二维子空间上的投影
对于子空间 U = span [ [ 1 1 1 ] , [ 0 1 2 ] ] ⊆ R 3 U=\operatorname{span}[\left[\begin{array}{l}1 \\1 \\1\end{array}\right],\left[\begin{array}{l}0 \\1 \\2\end{array}\right]] \subseteq \mathbb{R}^{3} U=span[⎣⎡111⎦⎤,⎣⎡012⎦⎤]⊆R3和 x = [ 6 0 0 ] ∈ R 3 \boldsymbol{x}=\left[\begin{array}{l}6 \\0 \\0\end{array}\right] \in \mathbb{R}^{3} x=⎣⎡600⎦⎤∈R3,求 x \boldsymbol{x} x相对于子空间 U U U的坐标 λ λ λ、投影点 π U ( x ) \pi_{U}(\boldsymbol{x}) πU(x)和投影矩阵 P π \boldsymbol{P}_{\pi} Pπ。
首先,我们看到 U U U的生成集是一个基(线性无关),将 U U U的基向量写入矩阵可以得到:
B = [ 1 0 1 1 1 2 ] \boldsymbol{B}=\left[\begin{array}{ll}1 & 0 \\1 & 1 \\1 & 2\end{array}\right] B=⎣⎡111012⎦⎤
第二,我们计算矩阵 B ⊤ B \boldsymbol{B}^{\top} \boldsymbol{B} B⊤B和 B ⊤ x \boldsymbol{B}^{\top}\boldsymbol{x} B⊤x:
B ⊤ B = [ 1 1 1 0 1 2 ] [ 1 0 1 1 1 2 ] = [ 3 3 3 5 ] , B ⊤ x = [ 1 1 1 0 1 2 ] [ 6 0 0 ] = [ 6 0 ] \boldsymbol{B}^{\top} \boldsymbol{B}=\left[\begin{array}{lll}1 & 1 & 1 \\0 & 1 & 2\end{array}\right]\left[\begin{array}{ll}1 & 0 \\1 & 1 \\1 & 2\end{array}\right]=\left[\begin{array}{ll}3 & 3 \\3 & 5\end{array}\right], \quad \boldsymbol{B}^{\top} \boldsymbol{x}=\left[\begin{array}{lll}1 & 1 & 1 \\0 & 1 & 2\end{array}\right]\left[\begin{array}{l}6 \\0 \\0\end{array}\right]=\left[\begin{array}{l}6 \\0\end{array}\right] B⊤B=[101112]⎣⎡111012⎦⎤=[3335],B⊤x=[101112]⎣⎡600⎦⎤=[60]
第三,我们通过正规方程 B ⊤ B λ = B ⊤ x \boldsymbol{B}^{\top} \boldsymbol{B} \boldsymbol{\lambda}=\boldsymbol{B}^{\top} \boldsymbol{x} B⊤Bλ=B⊤x求解 λ \lambda λ
[ 3 3 3 5 ] [ λ 1 λ 2 ] = [ 6 0 ] ⟺ λ = [ 5 − 3 ] \left[\begin{array}{ll}3 & 3 \\3 & 5\end{array}\right]\left[\begin{array}{l}\lambda_{1} \\\lambda_{2}\end{array}\right]=\left[\begin{array}{l}6 \\0\end{array}\right] \Longleftrightarrow \boldsymbol{\lambda}=\left[\begin{array}{c}5 \\-3\end{array}\right] [3335][λ1λ2]=[60]⟺λ=[5−3]
第四, x \boldsymbol{x} x向 U U U的投影 π U ( x ) \pi_{U}(\boldsymbol{x}) πU(x),即到 B \boldsymbol{B} B的列空间的投影,可以通过直接计算得到:
π U ( x ) = B λ = [ 5 2 − 1 ] \pi_{U}(\boldsymbol{x})=\boldsymbol{B} \boldsymbol{\lambda}=\left[\begin{array}{c}5 \\2 \\-1\end{array}\right] πU(x)=Bλ=⎣⎡52−1⎦⎤
相应的投影误差(projection error,也称为reconstruction error)是原始向量与其在 U U U上的投影之差的范数,即:
∥ x − π U ( x ) ∥ = ∥ [ 1 − 2 1 ] ⊤ ∥ = 6 ( 3.63 ) \left\|\boldsymbol{x}-\pi_{U}(\boldsymbol{x})\right\|=\left\|\left[\begin{array}{lll}1 & -2 & 1\end{array}\right]^{\top}\right\|=\sqrt{6}\qquad (3.63) ∥x−πU(x)∥=∥∥∥[1−21]⊤∥∥∥=6(3.63)
第五,对于任意 x ∈ R 3 \boldsymbol{x} \in \mathbb{R}^{3} x∈R3,投影矩阵为:
P π = B ( B ⊤ B ) − 1 B ⊤ = 1 6 [ 5 2 − 1 2 2 2 − 1 2 5 ] \boldsymbol{P}_{\pi}=\boldsymbol{B}\left(\boldsymbol{B}^{\top} \boldsymbol{B}\right)^{-1} \boldsymbol{B}^{\top}=\frac{1}{6}\left[\begin{array}{ccc}5 & 2 & -1 \\2 & 2 & 2 \\-1 & 2 & 5\end{array}\right] Pπ=B(B⊤B)−1B⊤=61⎣⎡52−1222−125⎦⎤
为了验证结果,我们可以
(a)检查位移向量 π U ( x ) − x \pi_{U}(\boldsymbol{x})-\boldsymbol{x} πU(x)−x是否与 U U U的所有基向量正交,
(b)验证 P π = P π 2 \boldsymbol{P}_{\pi}=\boldsymbol{P}_{\pi}^{2} Pπ=Pπ2(见定义3.10)。
备注:
投影 π U ( x ) \pi_{U}(\boldsymbol{x}) πU(x)虽然位于 m m m维子空间 U ⊆ R n U \subseteq \mathbb{R}^{n} U⊆Rn中,但仍然是 R n \mathbb{R}^{n} Rn中的向量。然而,为了表示投影向量,我们只需要关于 U U U的基向量 b 1 , … , b m \boldsymbol{b}_{1}, \ldots, \boldsymbol{b}_{m} b1,…,bm的 m m m坐标 λ 1 , … , λ m \lambda_{1}, \ldots, \lambda_{m} λ1,…,λm。
备注:
在具有一般内积的向量空间中,计算用内积定义的角和距离在计算时必须注意内积的类型。
通过投影,我们可以近似求解无解的线性方程组 A x = b \boldsymbol{A}\boldsymbol{x}=\boldsymbol{b} Ax=b。线性方程组无解,意味着 b \boldsymbol{b} b不在 A \boldsymbol{A} A的张成空间中,也就是说,向量 b \boldsymbol{b} b不在 A \boldsymbol{A} A的列所张成的子空间内。如果线性方程不能精确求解,那么我们可以尝试找到一个近似解(approximate solution)。其思想是在 A \boldsymbol{A} A的列所张成的子空间中找到最接近 b \boldsymbol{b} b的向量,即计算 b \boldsymbol{b} b在 A \boldsymbol{A} A的列所张成的子空间上的正交投影。这类问题在实践中经常出现,这个解叫做超定系统的最小二乘解(least-squares solution)(假设点积为内积)。这将在9.4节线性回归中进一步讨论。使用重建误差(3.63)是一种推导主成分分析(降维10.3节)的可行的方法。
备注:
我们已经得到了向量 x \boldsymbol{x} x在基向量 { b 1 , … , b k } \left\{\boldsymbol{b}_{1}, \ldots, \boldsymbol{b}_{k}\right\} { b1,…,bk}的投影。如果这个基是标准正交基(orthonormal basis ONB),即有 B ⊤ B = I \boldsymbol{B}^{\top} \boldsymbol{B}=\boldsymbol{I} B⊤B=I,那么坐标可以简化为 λ = B ⊤ x \boldsymbol{\lambda}=\boldsymbol{B}^{\top} \boldsymbol{x} λ=B⊤x,投影方程也简化为
π U ( x ) = B B ⊤ x \pi_{U}(\boldsymbol{x})=\boldsymbol{B} \boldsymbol{B}^{\top} \boldsymbol{x} πU(x)=BB⊤x
这意味着我们不需要计算逆,这节省了计算时间。
投影是Gram-Schmidt方法的核心,它允许我们将 n n n维向量空间 V V V的任何基 ( b 1 , … , b n ) \left(\boldsymbol{b}_{1}, \ldots, \boldsymbol{b}_{n}\right) (b1,…,bn)转换为 V V V的正交/正交基 ( u 1 , … , u n ) \left(\boldsymbol{u}_{1}, \ldots, \boldsymbol{u}_{n}\right) (u1,…,un)。这个基总是存在的(Liesen和Mehrmann,2015)且 span [ b 1 , … , b n ] = span [ u 1 , … , u n ] \operatorname{span}\left[\boldsymbol{b}_{1}, \ldots, \boldsymbol{b}_{n}\right]=\operatorname{span}\left[\boldsymbol{u}_{1}, \ldots, \boldsymbol{u}_{n}\right] span[b1,…,bn]=span[u1,…,un]。Gram-Schmidt正交化方法能从任意基 ( b 1 , … , b n ) \left(\boldsymbol{b}_{1}, \ldots, \boldsymbol{b}_{n}\right) (b1,…,bn)迭代构造正交基 ( u 1 , … , u n ) \left(\boldsymbol{u}_{1}, \ldots, \boldsymbol{u}_{n}\right) (u1,…,un):
u 1 : = b 1 \boldsymbol{u}_{1}:=\boldsymbol{b}_{1} u1:=b1
u k : = b k − π span [ u 1 , … , u k − 1 ] ( b k ) , k = 2 , … , n \boldsymbol{u}_{k}:=\boldsymbol{b}_{k}-\pi_{\operatorname{span}\left[\boldsymbol{u}_{1}, \ldots, \boldsymbol{u}_{k-1}\right]}\left(\boldsymbol{b}_{k}\right), \quad k=2, \ldots, n uk:=bk−πspan[u1,…,uk−1](bk),k=2,…,n
在第二个公式中,第 k k k个基向量 b k \boldsymbol{b}_k bk被投影到由前 k − 1 k−1 k−1个构造的正交向量 u 1 , … , u k − 1 \boldsymbol{u}_{1}, \ldots, \boldsymbol{u}_{k-1} u1,…,uk−1(见8.2)张成的子空间。然后用 b k \boldsymbol{b}_k bk减去该投影,从而产生一个向量 u k \boldsymbol{u}_{k} uk,该向量与由 u 1 , … , u k − 1 \boldsymbol{u}_{1}, \ldots, \boldsymbol{u}_{k-1} u1,…,uk−1张成的 k − 1 k-1 k−1维子空间正交。对所有 n n n个基向量 b 1 , … , b n \boldsymbol{b}_{1}, \ldots, \boldsymbol{b}_{n} b1,…,bn重复此过程,从而产生正交基 ( u 1 , … , u n ) \left(\boldsymbol{u}_{1}, \ldots, \boldsymbol{u}_{n}\right) (u1,…,un)。如果我们再将 u k \boldsymbol{u}_{k} uk标准化,我们得到一个标准正交基(ONB),其中 ∥ u k ∥ = 1 \left\|\boldsymbol{u}_{k}\right\|=1 ∥uk∥=1, k = 1 , … , n k=1, \ldots, n k=1,…,n。
图 3.12Gram-Schmidt正交化。(a) R 2 \mathbb{R}^2 R2的非正交基 ( b 1 , b 2 ) (\boldsymbol{b}_1,\boldsymbol{b}_2) (b1,b2);(b)首先构造基向量 u 1 \boldsymbol{u}_1 u1和 b 2 \boldsymbol{b}_2 b2在 span [ u 1 ] \text{span}[\boldsymbol{u}_1] span[u1]上的正交投影;(c) R 2 \mathbb{R}^2 R2的正交基 ( u 1 , u 2 ) (\boldsymbol{u}_1,\boldsymbol{u}_2) (u1,u2)
例 3.12 Gram-Schmidt 正交化
考虑 R 2 \mathbb{R}^{2} R2的一个基 ( b 1 , b 2 ) \left(\boldsymbol{b}_{1}, \boldsymbol{b}_{2}\right) (b1,b2)(见图3.12(a)):
b 1 = [ 2 0 ] , b 2 = [ 1 1 ] \boldsymbol{b}_{1}=\left[\begin{array}{l}2 \\0\end{array}\right], \quad \boldsymbol{b}_{2}=\left[\begin{array}{l}1 \\1\end{array}\right] b1=[20],b2=[11]
使用Gram-Schmidt 正交化,我们构造 R 2 \mathbb{R}^{2} R2的一个正交基: ( u 1 , u 2 ) \left(\boldsymbol{u}_{1}, \boldsymbol{u}_{2}\right) (u1,u2)如下(假设内积为点积):
u 1 : = b 1 = [ 2 0 ] \boldsymbol{u}_{1}:=\boldsymbol{b}_{1}=\left[\begin{array}{l}2 \\0\end{array}\right] u1:=b1=[20]
u 2 : = b 2 − π s p a n [ u 1 ] ( b 2 ) = b 2 − u 1 u 1 ⊤ ∥ u 1 ∥ 2 b 2 = [ 1 1 ] − [ 1 0 0 0 ] [ 1 1 ] = [ 0 1 ] \boldsymbol{u}_{2}:=\boldsymbol{b}_{2}-\pi_{\mathrm{span}\left[\boldsymbol{u}_{1}\right]}\left(\boldsymbol{b}_{2}\right) {=} \boldsymbol{b}_{2}-\frac{\boldsymbol{u}_{1} \boldsymbol{u}_{1}^{\top}}{\left\|\boldsymbol{u}_{1}\right\|^{2}} \boldsymbol{b}_{2}=\left[\begin{array}{l}1 \\1\end{array}\right]-\left[\begin{array}{ll}1 & 0 \\0 & 0\end{array}\right]\left[\begin{array}{l}1 \\1\end{array}\right]=\left[\begin{array}{l}0 \\1\end{array}\right] u2:=b2−πspan[u1](b2)=b2−∥u1∥2u1u1⊤b2=[11]−[1000][11]=[01]
这些步骤如图3.12(b)和(c )所示,我们可以看到 u 1 , u 2 \boldsymbol{u}_{1},\boldsymbol{u}_{2} u1,u2是正交的,即 u 1 ⊤ u 2 = 0 \boldsymbol{u}_{1}^{\top} \boldsymbol{u}_{2}=0 u1⊤u2=0
图 3.13仿射空间上的投影。(a) 原始设定;(b)将设定的各个对象移动 − x 0 −\boldsymbol{x}_0 −x0,以便 x − x 0 \boldsymbol{x}−\boldsymbol{x}_0 x−x0可以投影到方向空间 U U U上;(c)复原投影 x 0 + π U ( x − x 0 ) \boldsymbol{x}_{0}+\pi_{U}\left(\boldsymbol{x}-\boldsymbol{x}_{0}\right) x0+πU(x−x0),从而得到最终正交投影 π L ( x ) \pi_{L}(\boldsymbol{x}) πL(x)。
到目前为止,我们讨论了如何将向量投影到低维子空间 U U U上。下面,我们将提供了一个将向量投影到仿射子空间的解决方案。
考虑图3.13(a)中的设定。现给出仿射空间 L = x 0 + U L=\boldsymbol{x}_{0}+U L=x0+U,其中 b 1 , b 2 \boldsymbol{b}_{1},\boldsymbol{b}_{2} b1,b2是 U U U的基向量。为了确定 x \boldsymbol{x} x在 L L L上的正交投影 π L ( x ) \pi_{L}(\boldsymbol{x}) πL(x),我们把这个问题转化为一个我们知道如何解决的问题:在向量子空间上的投影。为了达到这个目的,我们将 x \boldsymbol{x} x和 L L L减去支撑点 x 0 \boldsymbol{x}_0 x0,这样 L − x 0 = U L-\boldsymbol{x}_0=U L−x0=U就变成向量子空间 U U U了。然后使用第3.8.2节中讨论的子空间上的正交投影,得到投影 π U ( x − x 0 ) \pi_{U}\left(\boldsymbol{x}-\boldsymbol{x}_{0}\right) πU(x−x0),如图3.13(b)所示。
这个投影现在可以通过加 x 0 \boldsymbol{x}_0 x0转换回 L L L,这样我们就得到了仿射空间 L L L上的正交投影
π L ( x ) = x 0 + π U ( x − x 0 ) \pi_{L}(\boldsymbol{x})=\boldsymbol{x}_{0}+\pi_{U}\left(\boldsymbol{x}-\boldsymbol{x}_{0}\right) πL(x)=x0+πU(x−x0)
其中 π U ( ⋅ ) π_U(·) πU(⋅)是在子空间 U U U上的正交投影,即 L L L的方向空间;见图3.13 (c )。
从图3.13还可以明显看出, x \boldsymbol{x} x到仿射空间 L L L的距离与 x − x 0 \boldsymbol{x}-\boldsymbol{x}_{0} x−x0到 U U U的距离相同,即:
d ( x , L ) = ∥ x − π L ( x ) ∥ = ∥ x − ( x 0 + π U ( x − x 0 ) ) ∥ = d ( x − x 0 , π U ( x − x 0 ) ) = d ( x − x 0 , U ) \begin{aligned}d(\boldsymbol{x}, L) &=\left\|\boldsymbol{x}-\pi_{L}(\boldsymbol{x})\right\|=\left\|\boldsymbol{x}-\left(\boldsymbol{x}_{0}+\pi_{U}\left(\boldsymbol{x}-\boldsymbol{x}_{0}\right)\right)\right\| \\&=d\left(\boldsymbol{x}-\boldsymbol{x}_{0}, \pi_{U}\left(\boldsymbol{x}-\boldsymbol{x}_{0}\right)\right)=d\left(\boldsymbol{x}-\boldsymbol{x}_{0}, U\right)\end{aligned} d(x,L)=∥x−πL(x)∥=∥x−(x0+πU(x−x0))∥=d(x−x0,πU(x−x0))=d(x−x0,U)
在12.1节分类中,我们将使用仿射子空间上的投影引出分离超平面的概念。
图 3.14 旋转使物体绕平面内的一个原点旋转。如果旋转角度是正的,我们就逆时针旋转
图 3.15机械臂需要旋转关节来拾取或正确放置物体。图片来源于(Deisenroth等人,2015)。
3.4节所讨论的长度和角度保持不变,是正交变换矩阵的线性映射的两个特征。在下面,我们将仔细研究描述旋转的特定的正交变换矩阵。
旋转(rotation)是一种线性映射(更具体地说,是欧氏向量空间的自同构),它将平面绕原点旋转 θ θ θ角,即原点是一个不动点。对于 θ > 0 θ>0 θ>0,按照惯例,我们采取逆时针旋转。图3.14对应的转换矩阵是:
R = [ − 0.38 − 0.92 0.92 − 0.38 ] \boldsymbol{R}=\left[\begin{array}{cc}-0.38 & -0.92 \\0.92 & -0.38\end{array}\right] R=[−0.380.92−0.92−0.38]
旋转的重要应用领域包括计算机图形学和机器人学。例如,在机器人学中,需要知道如何旋转机械臂的关节以拾取或放置物体,如图3.15。
图 3.16 R 2 \mathbb{R}^2 R2中的标准基旋转 θ \theta θ
考虑 R 2 \mathbb{R}^{2} R2的标准基 { e 1 = [ 1 0 ] , e 2 = [ 0 1 ] } \left\{e_{1}=\left[\begin{array}{l}1 \\0\end{array}\right], \boldsymbol{e}_{2}=\left[\begin{array}{l}0 \\1\end{array}\right]\right\} { e1=[10],e2=[01]},它定义了 R 2 \mathbb{R}^{2} R2的标准坐标系。我们的目标是将这个坐标系旋转 θ θ θ角,如图3.16所示。注意,旋转后向量仍然是线性独立的,因此是 R 2 \mathbb{R}^{2} R2的基。 这意味着旋转将执行基变换。
旋转 Φ Φ Φ是线性映射,因此我们可以用旋转矩阵(rotation matrix) R ( θ ) \boldsymbol{R}(\theta) R(θ)来表示它们。三角关系(见3.16)允许我们确定被旋转的坐标轴( Φ Φ Φ的像)相对于 R 2 \mathbb{R}^{2} R2中标准基的坐标。我们获得
Φ ( e 1 ) = [ cos θ sin θ ] , Φ ( e 2 ) = [ − sin θ cos θ ] \Phi\left(\boldsymbol{e}_{1}\right)=\left[\begin{array}{c}\cos \theta \\\sin \theta\end{array}\right], \quad \Phi\left(\boldsymbol{e}_{2}\right)=\left[\begin{array}{c}-\sin \theta \\\cos \theta\end{array}\right] Φ(e1)=[cosθsinθ],Φ(e2)=[−sinθcosθ]
因此,将基变换为旋转坐标的旋转矩阵 R ( θ ) \boldsymbol{R}(\theta) R(θ)为:
R ( θ ) = [ Φ ( e 1 ) Φ ( e 2 ) ] = [ cos θ − sin θ sin θ cos θ ] \boldsymbol{R}(\theta)=\left[\begin{array}{ll}\Phi\left(\boldsymbol{e}_{1}\right) & \left.\Phi\left(\boldsymbol{e}_{2}\right)\right]\end{array}=\left[\begin{array}{cc}\cos \theta & -\sin \theta \\\sin \theta & \cos \theta\end{array}\right]\right. R(θ)=[Φ(e1)Φ(e2)]=[cosθsinθ−sinθcosθ]
与 R 2 \mathbb{R}^{2} R2不同的是,在 R 3 \mathbb{R}^{3} R3中,我们可以围绕其中一维的轴旋转任何二维平面。确定通用旋转矩阵的最简单方法是确定标准基 e 1 , e 2 , e 3 e_{1}, e_{2}, e_{3} e1,e2,e3旋转得到的像,并确保这些像 R e 1 , R e 2 , R e 3 \boldsymbol{R e}_{1}, \boldsymbol{R e}_{2}, \boldsymbol{R} \boldsymbol{e}_{3} Re1,Re2,Re3彼此正交。然后,我们可以通过组合标准基的像得到一个通用的旋转矩阵 R \boldsymbol{R} R。
为了得到一个有意义的旋转角度,我们必须定义在两个以上的维度上操作时“逆时针”的含义。按照惯例,绕轴的“逆时针”(平面)旋转的情形是旋转轴“头朝上“,我们从它的尖端看向原点。在 R 3 \mathbb{R}^{3} R3中,围绕三个标准基向量有三个(平面)旋转,如图3.17。
图 3.17 R 3 \mathbb{R}^3 R3中的向量(灰色)绕 e 3 e_3 e3轴旋转一个角 θ θ θ。旋转后的向量用蓝色表示。
绕 e 1 e_1 e1轴旋转:
R 1 ( θ ) = [ Φ ( e 1 ) Φ ( e 2 ) Φ ( e 3 ) ] = [ 1 0 0 0 cos θ − sin θ 0 sin θ cos θ ] \boldsymbol{R}_{1}(\theta)=\left[\begin{array}{lll}\Phi\left(\boldsymbol{e}_{1}\right) & \Phi\left(\boldsymbol{e}_{2}\right) & \Phi\left(\boldsymbol{e}_{3}\right)\end{array}\right]=\left[\begin{array}{ccc}1 & 0 & 0 \\0 & \cos \theta & -\sin \theta \\0 & \sin \theta & \cos \theta\end{array}\right] R1(θ)=[Φ(e1)Φ(e2)Φ(e3)]=⎣⎡1000cosθsinθ0−sinθcosθ⎦⎤
这里, e 1 \boldsymbol{e}_{1} e1坐标是固定的,然后对 e 2 e 3 \boldsymbol{e}_{2}\boldsymbol{e}_{3} e2e3平面中执行逆时针旋转。
绕 e 2 e_2 e2轴旋转:
R 2 ( θ ) = [ cos θ 0 sin θ 0 1 0 − sin θ 0 cos θ ] \boldsymbol{R}_{2}(\theta)=\left[\begin{array}{ccc}\cos \theta & 0 & \sin \theta \\0 & 1 & 0 \\-\sin \theta & 0 & \cos \theta\end{array}\right] R2(θ)=⎣⎡cosθ0−sinθ010sinθ0cosθ⎦⎤
如果我们围绕 e 2 e_2 e2轴旋转 e 1 e 3 e_1e_3 e1e3平面,我们需要从 e 2 e_2 e2轴的“尖端”看向原点。
绕 e 3 e_3 e3轴旋转:
R 3 ( θ ) = [ cos θ − sin θ 0 sin θ cos θ 0 0 0 1 ] \boldsymbol{R}_{3}(\theta)=\left[\begin{array}{ccc}\cos \theta & -\sin \theta & 0 \\\sin \theta & \cos \theta & 0 \\0 & 0 & 1\end{array}\right] R3(θ)=⎣⎡cosθsinθ0−sinθcosθ0001⎦⎤
如图
从二维和三维推广到 n n n维的欧氏向量空间的旋转可以直观地描述为固定其 n − 2 n-2 n−2维,旋转 n n n维空间中的二维平面。就像在三维情况下,我们可以旋转任意平面( R n \mathbb{R}^{n} Rn的二维子空间)。
定义 3.11 Givens旋转(Givens Rotation)
设 V V V是 n n n维欧氏向量空间,对于 1 ⩽ i < j ⩽ n and θ ∈ R 1 \leqslant i\lt j \leqslant n \text { and } \theta \in \mathbb{R} 1⩽i<j⩽n and θ∈R,自同构 Φ : V → V \Phi: V \rightarrow V Φ:V→V具有变换矩阵:
R i j ( θ ) : = [ I i − 1 0 ⋯ ⋯ 0 0 cos θ 0 − sin θ 0 0 0 I j − i − 1 0 0 0 sin θ 0 cos θ 0 0 ⋯ ⋯ 0 I n − j ] ∈ R n × n \boldsymbol{R}_{i j}(\theta):=\left[\begin{array}{ccccc}\boldsymbol{I}_{i-1} & \mathbf{0} & \cdots & \cdots & \mathbf{0} \\\mathbf{0} & \cos \theta & \mathbf{0} & -\sin \theta & \mathbf{0} \\\mathbf{0} & \mathbf{0} & \boldsymbol{I}_{j-i-1} & \mathbf{0} & \mathbf{0} \\\mathbf{0} & \sin \theta & \mathbf{0} & \cos \theta & \mathbf{0} \\\mathbf{0} & \cdots & \cdots & \mathbf{0} & \boldsymbol{I}_{n-j}\end{array}\right] \in \mathbb{R}^{n \times n} Rij(θ):=⎣⎢⎢⎢⎢⎡Ii−100000cosθ0sinθ⋯⋯0Ij−i−10⋯⋯−sinθ0cosθ00000In−j⎦⎥⎥⎥⎥⎤∈Rn×n
R i j ( θ ) \boldsymbol{R}_{i j}(\theta) Rij(θ)称为Givens旋转(Givens Rotation)。可以看到, R i j ( θ ) \boldsymbol{R}_{i j}(\theta) Rij(θ)是由一个单位矩阵 I n \boldsymbol{I}_{n} In作以下改变:
r i i = cos θ , r i j = − sin θ , r j i = sin θ , r j j = cos θ r_{i i}=\cos \theta, \quad r_{i j}=-\sin \theta, \quad r_{j i}=\sin \theta, \quad r_{j j}=\cos \theta rii=cosθ,rij=−sinθ,rji=sinθ,rjj=cosθ
对于二维(即 n = 2 n=2 n=2),我们可以得到:
R ( θ ) = [ Φ ( e 1 ) Φ ( e 2 ) ] = [ cos θ − sin θ sin θ cos θ ] \boldsymbol{R}(\theta)=\left[\Phi\left(\boldsymbol{e}_{1}\right) \quad \Phi\left(\boldsymbol{e}_{2}\right)\right]=\left[\begin{array}{cc}\cos \theta & -\sin \theta \\\sin \theta & \cos \theta\end{array}\right] R(θ)=[Φ(e1)Φ(e2)]=[cosθsinθ−sinθcosθ]
这一特例。
旋转表现出许多有用的性质,这些性质可以通过将它们视为正交矩阵来说明(定义3.8):
翻译自:
《MATHEMATICS FOR MACHINE LEARNING》作者是 Marc Peter Deisenroth,A Aldo Faisal 和 Cheng Soon Ong
公众号后台回复【m4ml】即可获取这本书。
另外,机器学习的数学基础.pdf