掰開揉碎推導Normal Equation
Normal Equation是一種基礎的最小二乘方法,本文將從線性代數的角度來分析Normal Equation(而不是從矩陣求導 matrix derivative 的角度)。
很多作者(特別是智商比較高的)在推導公式的時候有意無意的忽略了思考過程,只留下漂亮的步驟。這讓很多讀者(比如說我)跟不上節奏,最後一頭霧水。本文將從求解「貌似無解」的方程組入手,再講講投影(Projection)的使用,最後進入到Normal Equation的應用。我的目的是讓和我一樣蠢的孩子對這個重要公式有一個Big Picture——即使忘記了也可以重頭推出。
更新記錄:
更新1 增加了對的使用解釋(偏導數證明)
一、求解不可解的方程組
先看一個最最簡單的例子——
例1.0 如圖,在空間中有兩個向量,求一個常數使兩個向量滿足。
這個方程明顯不可解,因為與不共線,無法通過對數乘得到。
再看下一個比較簡單的例子——
例2.0 在空間中的平面有一組基和,如圖所示,求出常數與使向量滿足條件。
這個方程也明顯不可解,因為不在平面上,而與的線性組合只能得到平面上的向量。
以上兩個問題非常的典型,因為在解決實際問題的時候,我們很難得到Perfect Solution,我們只能儘力而為的爭取Best Solution。以上兩個例子明顯沒有做到perfect(連基本的方向都錯了),那麼如何找到best solution呢?
二、投影的應用
思路很簡單:我們只要找到一個使方向上的向量距離最近。
回到最簡單的例子
如圖,在空間中有兩個向量,求一個常數使兩個向量滿足。
現在應該如何尋找的解呢?
最好的方法就是拋棄向量中垂直的分量,只要計算使等於向量在
方向的分量(即在上的投影(Proj)),同時我們把向量垂直方向的分量稱為(error)。原來的問題變成了求解(是的估計量)
因為與合成了向量(),而且垂直於(),所以我們得出了一個非常重要的結論(敲黑板)!!!核心啊!!!
這個方程的核心就是寫成向量內積形式的與的垂直關係,只不過被拆開書寫。其實這個方程也可以寫作,但是寫作轉置向量的形式可以讓這個方程更自然的拓展到高維。好了,我們繼續改寫方程……
在這一步我們就得到了best的,但考慮到這並不perfect,所以我們稱之為。
P.S.如果想用投影矩陣P來簡化從轉換到的過程,可以把的結果帶入到中。我們發現投影矩陣在形式上就等於乘數,即滿足。
現在我們再看看怎麼在中解決不可解方程。
例2.0 在空間中的平面有一組基和,如圖所示,求出常數與使向量滿足條件。
平面有基向量和,故可以表示成基的線性組合,即
令基向量組成的矩陣,參數組成的向量,與平面垂直的誤差向量。(這裡插一句話,最小二乘法的核心就是找出一個就是讓最小化)
我們發現在中的問題在這裡拓展成為了。
相應的,問題在這裡拓展成了,其中。
還是一樣的套路,我們還是從垂直關係入手——因為,而且,所以有以下方程組——
整理成矩陣的形式——
(敲黑板!!!敲黑板!!!)
寫到這裡回頭看看情景下的核心公式,可以這傢伙換一套馬甲又出現了!!!看來方程是一種高維的拓展。我們可以把中的看成一個只有一列的矩陣。
我們繼續整理這個公式——
寫到這裡我們就沒什麼可以乾的了。
有人可能想說——明明還可以繼續化簡啊!!!
但實際的情況中,我們不能保證矩陣總是方陣(square),但是總是可以保證是方陣。因為只有方陣才有逆矩陣,所以我們只能保證有,而不能保證有。
所以我們只能回到這裡。如果你有讀過Andrew Ng著名的公開課CS229的Lecture Notes,你一定記得他用矩陣求導得出的Normal Equation——
你會發現除了和不一樣以外,我們已經把Normal Equation()推出來了……我居然在下一部分還沒有開始講就把內容說完了,場面一度非常尷尬啊。可見從投影推出Normal Equation是一件多麼自然的事情啊~~~我都不知道哪裡切開。
說到這裡先總結一下投影的幾個意義(敲黑板)!!!
的所有可能結果都在一個固定的區域中,在線性代數中我們稱這個區域為列空間(column space),列空間顧名思義就是矩陣各列的所有線性組合。在1-D的情況下列空間就是一條線,在2-D的情況下列空間就是一個平面。但是我們的數據哪裡會這麼恰好的落在矩陣的列空間里呢?天底下哪有這樣的好事啊!!!
特別是在數據量特別大的情況下,矩陣會成為一個的超級高大的矩陣(如下圖)。在這種等式數量遠大於未知數數量的情況中,我們很難滿足每一個等式的約束。但是目標不再在空間里並不代表不能求出解,只能說沒有perfect solution(語出Gilbert Strang),但是我們努力一下還是可以做到最好的(best solution)。我們用投影向量來尋找最合適的。就是並不存在的完美解的估計值。
三、Normal Equation應用
既然Normal Equation在上文都推導完了,這裡我們就隨便帶幾個數據來玩玩咯。
練手案例 找一條直線來擬合點 (1,1)、(2,2)、(3,2)
我們如果用一條直線來擬合的話,設,我們先得到以下值——
我們發現很遺憾的沒有解,於是我們左右各乘上,祭出了投影大招——。
再把這個方程變換成Normal Equation:
帶入數值在Matlab中小跑一下就得到了結果
即直線是上述三個點的擬合結果。
四、其他想說的話
1.關於的暴力使用
在前一步可以不用判斷是否可解,可以直接使用。事實上,在最小二乘時遇到長方形矩陣,我們就可以用上替代計算。這是是一種路子很野的但是很簡單實用的經驗規則,可以簡單實驗如下——
用直線擬合三個點 (1,1)、(2,2)、(3,2)時,自然希望真實值和估計值的誤差越小越好。
分別對和求偏導數等於的零的值——
整理以上公式我們得到了方程組——
再整理一下,把這個方程寫成矩陣乘法的形式——
在最後一步整理以後我們發現剛才千辛萬苦算出來的就是上文的啊!!!
說明這個經驗方法是可以信得過的!!!
2.關於化簡的問題
因為投影的性質非常美妙,如果矩陣是各行線性無關的方陣(square),說明存在,則Normal Equation會變成如下形式——
說明如果存在一個perfect solution,該解不會受到影響。3.多次投影有影響嗎?
已經在空間中的向量乘上投影矩陣仍然等於本身,二次投影不會有任何副作用!也就是說。證明如下——
五、參考資料
1.Gilbert Strang Introduction to Linear Algebra 4.2 Projection 4.3 Least Squares Approximations
2.Andrew Ng CS229 Lecture Note 1 Supervised learning/The normal equations
六、最後的話
列空間沒展開講不知道有沒有必要。
筆力不夠好,想像中應該寫的更簡單易懂的,但是沒有達到效果,會再更新。
歡迎拍磚!!!
推薦閱讀: