當前位置: 華文星空 > 知識

正交投影的一點總結

2021-06-25知識

最近看了一些線性代數的文章,關於正交投影(orthogonal projection)在這裏做一個小總結,我寫的文章通常都比較短,目的是希望在碎片時間能夠快速讀完並消化。

本文的符號規定:大寫字母表示矩陣,如 X,A,Y ,小寫字母表示向量,如 \boldsymbol{x},\boldsymbol{y},\boldsymbol{z},\boldsymbol{b} ,如不說明預設都是列向量。

1.為什麽要投影

首先,在機器學習中,高維數據通常有這樣一些特征:只有少數幾個特征包含了整個數據集的大部份資訊,其它維通常不是那麽重要;其次呢,我們要壓縮或者視覺化高維數據時,肯定是要做降維處理的,那麽為了盡可能地減少這種降維損失,肯定是希望找到那些能夠表示數據集大部份資訊的維(特征),這方面典型的演算法有「主成分分析(PCA,principle component analysis)」,「深度神經網絡」。

2.投影的數學定義

定義 :假設 V 是一個向量空間, 並且U 是 V 的一個子空間,有一個線性對映 \pi: V \to U ,該線性對映滿足 \pi^2=\pi \circ\pi=\pi , \pi 稱為將 V 變到 U 的投影。

PS:學過線性代數的同學都知道,投影矩陣 P 的一個性質是 P^2=P \times P = P ,上述定義的這個線性對映看起來是不是性質相同。

3.向量在向量上的投影

我們從最簡單的投影開始講,一個向量在另一個向量上的投影。在二維平面上,投影如下圖所示:

這個和中學時做垂線的道理相同。向量 \boldsymbol{x} \in R^n 在向量 \boldsymbol{b} \in R^n 上的投影記為 \pi_U(\boldsymbol{x}) ,這裏 U 是一個一維子空間,為 U=\{ \boldsymbol{x}: \boldsymbol{x}=c \boldsymbol{b}\},c \in R ,也就是這個子空間的向量全部由一個向量 \boldsymbol{b} 張成。投影之後有兩點可以確定:

(1)投影 \pi_U(\boldsymbol{x}) 距離最近。所謂距離最近就是在 \boldsymbol{b} 除了 \pi_U(\boldsymbol{x}) 這個向量,找不到其它向量使得它與 \boldsymbol{x} 的距離,即 ||\boldsymbol{x} - \pi{(\boldsymbol{x})}|| 是最小的,從中學的幾何我們知道,所謂最近就是垂線最近(因為垂線最短),就是 \boldsymbol{x}-\pi_U(\boldsymbol{x}) 與 \boldsymbol{b} 垂直,也就是線性代數中的正交,用內積表示就是 (\boldsymbol{x}-\pi_U(\boldsymbol{x}))^T \boldsymbol{b}=0 ;

(2)投影 \pi_U(\boldsymbol{x}) 在 U 中,而 U 是由 \boldsymbol{b} 張成的,所以 \pi_U(\boldsymbol{x}) 可由 \boldsymbol{b} 線性表示,即 \pi_U(\boldsymbol{x}) = \lambda \boldsymbol{b}, \lambda \in R 。

3.計算 \lambda 和投影矩陣( P_{\pi}

(1) \lambda 的計算

因為:

(\boldsymbol{x}-\pi_U(\boldsymbol{x}))^T\boldsymbol{b}=(\boldsymbol{x} - \lambda \boldsymbol{b})^T \boldsymbol{b}=0 \tag{1}

將(1)式展開可得: \boldsymbol{x} ^T \boldsymbol{b} - \lambda \boldsymbol{b}^T \boldsymbol{b}=0 ,從而有:

\lambda = \frac{\boldsymbol{x} ^T \boldsymbol{b} }{\boldsymbol{b}^T \boldsymbol{b}} =\frac{\boldsymbol{b} ^T \boldsymbol{x} }{\boldsymbol{b}^T \boldsymbol{b}} \tag{2}

如果 \boldsymbol{b} 是一個單位向量( ||\boldsymbol{b}|| = 1 ),那麽 \lambda = \boldsymbol{b}^T \boldsymbol{x}=\boldsymbol{x}^T \boldsymbol{b} 。

(2)投影矩陣 P_{\pi}

計算 \lambda 後,得到:

\pi_U(\boldsymbol{x}) = \lambda \boldsymbol{b}=\frac{\boldsymbol{b}^T \boldsymbol{x}}{\boldsymbol{b}^T \boldsymbol{b}}\boldsymbol{b}=\boldsymbol{b} \lambda=\boldsymbol{b} \frac{\boldsymbol{b}^T \boldsymbol{x}}{\boldsymbol{b}^T \boldsymbol{b}} = \frac{\boldsymbol{b} \boldsymbol{b}^T }{\boldsymbol{b}^T \boldsymbol{b}} \boldsymbol{x} \tag{3}

從(3)式最後一個等式觀察可得到投影矩陣為:

P_{\pi}=\frac{\boldsymbol{b} \boldsymbol{b}^T }{\boldsymbol{b}^T \boldsymbol{b}} \tag{4}

所以,對於任意向量 \mathbf{x} ,它在向量 \mathbf{b} 的投影可以由以下公式計算得到:

\pi_{U}(\boldsymbol{x})=P_{\pi}\boldsymbol{x} \tag{5}

例1 :給定一個向量 \boldsymbol{b}=[1,2,2]^T , \boldsymbol{b} 是一個一維子空間,它代表一個方向,尋找投影矩陣 P_{\pi} ,並計算 \boldsymbol{x}=[1,1,1] 在 \boldsymbol{b} 的投影。

解:由公式(4)得:

P_{\pi}=\frac{\boldsymbol{b} \boldsymbol{b}^T }{\boldsymbol{b}^T \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]

\boldsymbol{x} 的投影:

\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]

4.在一般子空間上的投影

註意:粗體的向量需要多輸入一些字首,下面我就不輸入了,除非特別說明,否則預設以常規的字母表示。

對於一般的子空間 U \in R^n, dim(U)=m \geq 1 ,假設 U 的一個基是 \boldsymbol{b}_1,\boldsymbol{b}_2,\dots,\boldsymbol{b}_m ,因為任何向量 \boldsymbol{x} 投影到 U 後所得投影 \pi_U(\boldsymbol{x}) 均在 U 上,因此 \pi_U(\boldsymbol{x}) 可由這組基線性表示:

\pi_U(\boldsymbol{x}) = \sum_{i=1}^{m} \lambda_i \boldsymbol{b}_i = \lambda_1 b_1 + \lambda_2 \boldsymbol{b}_2 + \dots + \lambda_m \boldsymbol{b}_m \tag{6}

其中, \lambda_i \in R,\boldsymbol{b}_i \in R^n,i=1,2,\dots,m 。

令 B = [b_1, b_2,\dots,b_m],\boldsymbol{\lambda}=[\lambda_1, \lambda_2, \lambda_3,\dots, \lambda_m]^T ,覆寫公式(6)得到:

\pi_U(\boldsymbol{x}) =\sum_{i=1}^{m} \lambda_i \boldsymbol{b}_i = B \boldsymbol{\lambda} \tag{7}

和向量在向量上的投影一樣(一維上的投影),在 U 上 \pi_U(\boldsymbol{x}) 也是離 \boldsymbol{x} 是最近的,最近意味著就是最短距離,也就是 \boldsymbol{x}-\pi_U(\boldsymbol{x}) 這個向量垂直(線性空間叫正交)於 U 的任何一個向量,當然也正交於 U 的基 \boldsymbol{b}_1,\boldsymbol{b}_2,\dots,\boldsymbol{b}_m ,所以有:

\begin{aligned} \boldsymbol{b}_1^T(x - \pi_U(\boldsymbol{x})) & = 0 \\ \boldsymbol{b}_2^T(x - \pi_U(\boldsymbol{x})) & = 0 \\ \vdots \\ \boldsymbol{b}_m^T(x - \pi_U(\boldsymbol{x})) & = 0 \end{aligned} \tag{8} <math xmlns="

將公式(7)

< style data-emotion-css="19xugg7"> .css-19xugg7{position:absolute;width:100%;bottom:0;background-image:linear-gradient(to bottom,transparent,#ffffff 50px);} < style data-emotion-css="12cv0pi"> .css-12cv0pi{box-sizing:border-box;margin:0;min-width:0;height:100px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:absolute;width:100%;bottom:0;background-image:linear-gradient(to bottom,transparent,#ffffff 50px);}
< style data-emotion-css="1pr2waf"> .css-1pr2waf{font-size:15px;color:#09408e;}
編輯於 2021-06-25 22:36
< style data-emotion-css="ch8ocw"> .css-ch8ocw{position:relative;display:inline-block;height:30px;padding:0 12px;font-size:14px;line-height:30px;color:#1772F6;vertical-align:top;border-radius:100px;background:rgba(23,114,246,0.1);}.css-ch8ocw:hover{background-color:rgba(23,114,246,0.15);}
< style data-emotion-css="1xlfegr"> .css-1xlfegr{background:transparent;box-shadow:none;} < style data-emotion-css="1gomreu"> .css-1gomreu{position:relative;display:inline-block;}
矩陣分析