上次寫了篇文章來闡述幾何投影與傅里葉級數的聯系,今天我想談談幾何投影與最小二乘法的聯系,這種聯系的好處是不管多復雜的公式,又可以被瞬間記住了。本文的中心思想是:最小二乘法中的幾何意義是高維空間中的一個向量在低維子空間的投影。這個思想在MIT教授Gilbert Strang的線性代數的公開課程上有討論,這里我會把這個思想詳細的闡述一遍。文章最后會把傅里葉級數和最小二乘法放在一起做個比較和總結,希望大家能體會到兩個看起來風馬牛不相及的概念其實是如此相似。
1. 三維空間的向量在二維平面的投影
首先我們需要先復習一下三維空間的向量在二維平面的投影。這是高維空間的向量到低維子空間投影的最簡單的例子,理解了三維到二維的投影,更高維的情況大家是很容易擴展的,因為二維子空間(即二維平面)和更高維子空間都可以由矩陣來表示。這里我不用二維到一維的投影做例子是因為這個時候低維子空間只是由一個向量表示,並不具備矩陣的一般性。
如圖片1所示,在三維空間中給定一個向量 u,以及由向量 v1,v2 構成的一個二維平面,向量 p 為 u 到這個平面的投影,它是 v1,v2 的線性組合:
(1)
我們要回答的問題是:如何求出 c1,c2 的表達式?相信看過我上篇日志的朋友都知道怎么求了,只要利用 u - P 這個向量分別與 v1,v2 垂直這兩個條件,就能求出 c1,c2。用數學語言來表示,就是下面這兩個式子。
(2)
為了方便之后擴展到更高維的情況,我們把它們合並成一個式子,令 V = [v1,v2],則 (2) 式等價於
(3)
把 (1) 式帶入 (3) 式,然后矩陣轉置(transpose)一下(這么做只是為了方便求解),得到以下這個式子
(4)
這里的 c = [c1,c2]T。所以系數 c 的表達式為
(5)
注意這個表達式明顯適用於更高維的情況。如果我們用二維到一維的投影來舉例,那么上式中的 VTV (這里的T是矩陣轉置,本來在word里是上標的,傳到人人格式就變了)將會出現在分母當中,就像上篇日志的 (3) 式那樣,這個形式就太有局限性了。另外值得注意的是我們考慮的 v1,v2 不是正交的,所以 c1,c2 不能由 u 到 v1,v2 分別投影來求。
2. 最小二乘法
我們來回顧一下什么是最小二乘法。假設我們手上有n組成對的數據,{(xi,yi): i = 1, 2, ... , n},為了探究 y 變量和 x 變量的關系,我們希望用一個多項式來匹配它,可是多項式中的系數怎么確定呢?拿來拼湊肯定是不行的,最小二乘法告訴我們,這個多項式的系數應該讓每個點的“誤差”的平方之和最小。舉個簡單的例子,如下圖所示,我可以用一個線性函數來匹配這些數據(也叫做線性回歸),也就是
(6)

那么每個點的誤差可以寫成
(7)
我們想要最小化誤差的平方和,也就是下面這個關於 a0,a1 的函數(注意,xi,yi都是已知的數據):
(8)
這是個函數求極值的問題,我們很快想到可以用微積分中的求導為零來列出兩個方程,從而求得 a0,a1。這里我就不羅列整個過程了,只給出最后的答案,大家有興趣可以自己演算一下。答案可以寫成下面這個矩陣形式。
(9)
可以想象,如果是2次,3次, 甚至更高次多項式,系數的推導會變得更復雜。接下來我要做的事就是用幾何投影的角度來看最小二乘法,而且不管多少次的多項式,系數的表達式都可以馬上寫出。
還是以上面這個線性函數為例,我們現在重新審視 (8) 式。各項的平方相加這件事情,其實我們不是陌生的,還記得怎么算向量的長度么?不就是各項平方相加,再開根號么?你現在應該看出來 (8) 式究竟是什么東西了,它就是下面這個向量的長度平方:
(10)
看不出來的同學再仔細看看 (10),它的長度平方就是 (8) 式!把誤差的平方和看成這個向量的長度平方這件事情有什么好處呢?請容許我慢慢解釋。首先我們知道要讓這個向量長度平方最小,等同於讓它的長度最小。我們仔細看下 (10) 這個向量的長度究竟代表了什么意思,先看小括號里是什么東西,它是兩個向量 [1, ... , 1]T 和 [x1, ... , xn]T 的線性組合,換句話說,它是這兩個向量構成的二維子空間(想成一個平面就可以)的任意一點。所以 (10) 這個向量的長度表示向量 [y1, ... , yn]T 到這個二維子空間任意一點的距離!把 (10)這個向量長度最小化的意思是:尋找在 [1, ... , 1]T 和 [x1, ... , xn]T 構成的二維子空間上的一個點,使得向量 [y1, ... , yn]T 到這個點的距離最小。怎么找這個點呢?根據第一部分的鋪墊,相信你已經有答案了,只要做一個幾何投影就好了。
我們只要把圖片1中的 u 替換成 [y1, ... , yn]T ,把 v1,v2 分別替換成 [1, ... , 1]T 和 [x1, ... , xn]T, 系數 c1 和 c2 也就是我們要求的 a0,a1,可以馬上由 (5) 式得出
(11)
這和之前求得的 (9) 式是完全一樣的!令人感到驚喜的是,全程我們都沒有用到微積分,我們需要的知識只是簡單的幾何投影!
如果你看懂了全過程,相信你也可以輕易的把這個方法應用到更高階的多項式,我們只要在 (11) 式中相應的更改子空間就好了,推導是瞬間完成的。當然我假設你能用電腦來計算矩陣求逆。
最后我總結一下,最小二乘法的幾何意義是高維空間的一個向量(由y數據決定)在低維子空間(由x數據以及多項式的次數決定)的投影。我們不妨回顧一下傅里葉級數的幾何意義是:無窮維空間的一個函數在同一空間中按照一組正交基(也就是一系列新的坐標軸)展開,這里的展開可以看成是函數先在同一空間投影到其自身,然后這個函數在各個新坐標軸上分別投影決定了展開系數(也就是新坐標)。最小二乘法和傅里葉級數,兩個看起來完全不同的概念,從幾何的角度來看是極其相似的,前者是高維到低維的投影,后者是無窮維到無窮維的投影;它們的區別是,前者在投影的過程中維度變少了,這可以理解為信息變少了,因為我們用了簡單的多項式來匹配一堆可能蘊含復雜關系的數據,后者是同一空間中的投影,只是換個坐標體系而已,維度不變,這可以理解為信息不增也不減,因為一個函數的傅里葉級數只是它的另一個表達方式,兩者包含的信息完全是等價的。
我在寫完這篇文章后的感悟是,數學中總是存在着許多看似不同,其實卻很相似的概念。比如最小二乘法和傅里葉級數都可以看成是幾何投影,對函數求導和對向量乘以矩陣都可以看成是線性變換,一個數有正負號而一個矩陣也有其正定性,矩陣和常微分方程都有特征值問題,一次線性常微分方程和一次線性常微分方程組的求解都可以用積分因子的方法(不知道大家知不知道這個,我第一次發現的時候感覺非常驚喜),線性時不變系統的反應和概率中多個獨立隨機變量之和都能寫成卷積的形式,擴散方程中的極大原理(maximum principle)和復變函數中的最大模原(maximum modulus principle)有着極其相似的描述,光學和力學中也都有最小作用量原理,統計力學和信息論中的熵(entropy)這個概念都是不確定性的一種度量,信號處理和量子力學中存在着看起來截然不同但是本質卻相同的不確定性原理。人們有時也會人為的創造相似的概念,從大自然當中去尋找靈感,比如算法中的遺傳算法借鑒了達爾文進化論的思想,模擬退化算法借鑒了金屬冷卻的概念,機器學習借鑒了人類的學習過程,控制論由維納最初提出,他把動物有目的的行為賦予機器從而促使了一門新學科的誕生。所有這些相似性,都能讓學習的過程增添許多趣味,也使我們更好的去理解這個世界。在以后的日志中我會陸續對上面提到的這些相似概念做一些專題討論,希望大家繼續關注。
