筆者說明:筆者的數學知識和能力有限,本文的主要目的是為了嘗試從數學角度討論一下機器學習模型求解的本質思想,機器學習和深度學習領域中如此眾多的模型背後,其共同的核心思想是什麼。相關數學原理方面不會也做不到討論非常深刻,相關數學公式、推導、定義全部來自丘維聲教授的《簡明線性代數》,不得不說這本書是筆者近幾月以來認為最好的一本機器學習相關書籍了,也推薦讀者朋友閱讀。如果文章中有錯誤的地方,也請讀者朋友一定要在評論區指出,特此感謝。
1. 線性方程組
0x1:無處不在的線性方程組
日常生活或生產實際中經常需要求一些量,用未知數 x1,x2,....,xn表示這些量,根據問題的實際情況列出方程組,而最常見的就是線性方程組(當然並不是說只能用線性方程組,深度神經網路里就是非線性方程組)。
需要特別理解和思考的是,數學的各個分支以及自然科學、工程技術中,有不少問題都可以歸納為線性方程組的問題,養成抽象思維非常重要。
1. 問題場景
某食品廠收到了某種食品2000kg的訂單,要求這種食品含脂肪5%,碳水化合物12%,蛋白質15%。該廠準備用5種原料配置這種食品,其中每一種原料含脂肪、碳水化合物、蛋白質的百分比如下表示:
現在的問題是:能否用上述5種原料配置出2000kg的這種食品?如果可以,那麼有多少種這種配方?如果不可以,那麼如何在滿足營養成分的情況下,儘量的靠近目標產量(2000kg)。
這是一個非常貼近現實業務的問題,我們從這個例子出來,來一起體會下機器學習是如何運用線性方程組來解決這種問題的。
2. 將具體問題抽象為行線性方程組
設每種原料(A1、A2、A3、A4、A5)所需要的的量分別為 x1,x2,x3,x4,x5,則將上述問題場景抽象為如下線性方程組:
這個方程是我們在初高中學習中非常熟悉的行方程組,從行視角來看,4行方程組5個未知數,無法完全消元,因此方程組的解有無數多個。對應到問題本身的現實場景就是,在實數域空間(強調重點)有無數種搭配方案可以滿足題目的要求。
3. 以列向量形式重寫線性方程組
筆者思考:列向量相比行向量,有一種瞬間穿透事物表面,洞悉事物全部核心的哲學意味。如果把行向量比作量的累計,那麼列向量則是質的變化,直接縱向穿透事物的所有維度。
上面的問題還可以用代數學的視角來重新思考,接下來我們用線性代數的相關知識來重寫上述線性方程組。
我們把上述方程組的係數和常數項以列向量的形式抽象為一個增廣矩陣:
在這個場景中,列向量的物理意義還是相對明確的,即:每kg原料中包含了4個維度的物質量,這4個維度分別為【原料重量,脂肪量,碳水化合物量,蛋白質量】。A1,A2,A3,A4,A5這5種原料構成了5個例項(樣本),每個資料樣本的特徵維度是4。
將改增廣矩陣中係資料很和常數矩陣分別寫成列向量組的形式:
,,其中,。注意向量的轉置。
,
將要求解的未知量用向量組w來表示:
,,一個w行向量4個維度都相同,即一個w行向量是一個1維向量。
它的物理意義是:每kg原料中,對4個維度的物質分別包含多少kg的原料。
用向量組簡寫形式表達上面增廣矩陣:
這個公式就是從列向量的角度重新看線性方程組。
筆者思考:在這題的特定場景下,這裡w1必須是1維的列向量,因為這是一個現實物理世界中的問題,我們不能說我們取了1kg的原料,我們同時也取了2kg的原料,這是不符合現實的。
但是在其他的抽象邏輯場景中,引數向量w常常可以是高維向量,例如深度神經網路中,引數權重向量w常常是上百甚至上千維的向量,從這個例子也可以更直觀地體會到,更高維度的w向量,意味著我們對輸入向量X中的不同維度可以由更細粒度的“取捨和控制”,more dimension,more complex。
0x2:圍繞線性方程組的數學問題
圍繞上述線性方程組,需要研究下列幾個問題:
1. 線性方程組是否一定有解?如果有解,有多少個解? 2. 如何求線性方程組的解?如何高效地求解? 3. 線性方程組有解時,它的每一個解是否都符合實際問題的需求,就像上面第一小節的線性方程組,在是屬於上這個線性方程組有無窮多的解,但是實數域在現實世界往往不太實用,大多時候我們會選擇整數域或者一個有限精度的浮點數域,這樣解的個數就是有限的了。 4. 線性方程組的解不只一個時,這些解之間有什麼關係?
我們在實際業務場景中遇到的建模和機器學習問題,基本上可以歸納為上述問題的抽象和組合。
文章的接下來部分,我們會圍繞上面的幾個問題展開討論。
Relevant Link:
http://liyangbit.com/math/jupyter-latex/ 《簡明線性代數》 - 丘維聲教授 https://zhuanlan.zhihu.com/p/33691914 內含B站的一組線性代數教學視訊,講的超級通俗易懂
2. 線性方程組理論
0x1:線性方程組是否有解的等價問題 - 常數項是否可以由係數矩陣的列向量組線性表出
利用向量的加法運算和數乘運算,我們可以把數域K上的n元線性方程組:
寫成:
令:
則該線性方程組可寫成:
於是,數域K上的線性方程組有解,等價於下面兩種表達:
K中存在一組數,c1,c2,...,cn,使得成立;即 β 可以由a1,a2,...,an線性表出。
0x2:線性相關與線性無關的向量組
在上一小節中,我們把線性方程組有沒有解的問題歸結為:常數項列向量能不能由係數矩陣的列向量線性表出。接下來問題就是,如何研究中一個向量能不能由一個向量組線性表示呢?
這個問題涉及到向量組的線性相關性的討論,我們由淺入深,藉助我們容易理解的3維幾何空間來逐漸理解這個概念。
1. 從3維集合空間出發討論一個向量能否由向量組線性表出的問題
實數域R上的3維向量空間的元素是3元有序實陣列。在幾何空間(由所有以原點為起點的向量組成)中,取定一個做個座標系後,每個3元有序實陣列表示一個向量。因此可以把看成幾何空間。這樣我們可以從幾何空間出發,來研究中一個向量能否由向量組線性表出的問題。
在幾何空間中,設 a1 和 a2 不共線(這是向量基的充分條件)。
如果 a3 可以由 a1,a2 線性表出,則 a1,a2,a3 共面;
如果 a3 不能由 a1,a2 線性表出,則 a1,a2,a3 不共面;
從解析幾何角度我們知道:
a1,a2,a3 共面的充分條件是有不全為零的實數 k1,k2,k3,使得 k1a1 + k2a2 +k3a3 = 0;
a1,a2,a3 不共面的充要條件是:從 k1a1 + k2a2 +k4a4 = 0,直接推出 k1 = 0,k2 = 0,k4 = 0,即只有零解。
從幾何空間的上述例子受到啟發,在中為了研究一個向量能否由一個向量組線性表出,就需要研究上述兩種型別的向量組,即定義一組向量基,並且計算該向量能否由該向量基線性表出。
2. 向量組的線性相關性的抽象定義
下面給出向量組線性相關和線性無關的抽象定義公式,具體如何數值化計算該公式,我們文章後面繼續深入討論。
1)線性相關
中向量組稱為線性相關的,如果有K中不全為零的數,使得。
從線性組合視角來看:即它們有係數不全為零的線性組合等於零向量。
從線性表出視角來看:即向量組中至少有一個向量可以由其餘向量線性表出,也可以說這個向量組存在冗餘向量,後面討論PCA的時候會再談到這點。
從齊次線性方程組視角來看:即齊次線性方程組有非零解。
從行列式視角來看:n個n維行向量線性相關當且僅當以為行向量組的矩陣的行列式等於零。
2)線性無關
中向量組如果不是線性相關的,則稱為線性無關的,即如果從可以推出所有係數全為0,則稱向量組是線性無關的。
從線性組合視角來看:即它們只有係數全為零的線性組合才會等於零向量。
從線性表出視角來看:向量組中每一個向量都不能由其餘向量線性表出。
從齊次線性方程組視角來看:即齊次線性方程組只有非零解。
從行列式視角來看:n個n維行向量線性相關當且僅當以為行向量組的矩陣的行列式不等於零。
根據上述定義以及解析幾何的結論可以得到第一小節的問題:
1. 幾何空間中,共面的3個向量是線性相關的,不共面的3個向量是線性無關的; 2. 共線的2個向量是線性相關的,不共線的2個向量是線性無關的;
3. 向量組的延伸組合縮短組的線性相關性性質
1)向量組的縮短組
1. 如果一個向量組線性無關,則它的任何一個部分組也線性無關;
筆者思考:如果高維的向量組是線性無關的,則它的低維子集組同樣也是”緊密的“,即線性無關。
2. 如果一個向量組線性相關,則該向量組中一定存在某個縮短組也線性相關;
我們可以藉助3維空間來理解這個定義,下圖中,向量E是一個(x,y,z)3維向量,B和C都是(-x,-y,0)的2維平面上的向量,D是(x,y,0)的2維平面向量,D的方向和B/C相反。
可以很容易理解,向量組(B,C,D,E)是線性相關的。同時該向量組的一個縮短組(B,C,E)是線性相關的。
但是也容易看到,另一個縮短組(B,C)是線性無關的。
筆者思考:一個向量組是線性相關的,可以理解為這個向量組中存在一個冗餘結構,如果對應的部分組(縮短組)包含了這個冗餘結果則該縮短組也同樣是線性相關的,但如果該縮短組足夠”小“,不包含該冗餘結構,則該部分組是線性無關的。需要讀者朋友注意的是,從3維幾何空間來看線性相關和線性無關非常形象,但是到了更高維的空間就需要藉助公式的推導和定義,因為高維空間超出人的想象空間了。
2)向量組的延伸組
1. 如果一個向量組的一個部分組線性相關,則整個向量組(延伸組)也線性相關;
證明:
設向量組的一個部分組,例如說線性相關,則有數域K中不全為零的數 k1,k2,...,kt,使得。
從而有。
由於不全為零,因此線性相關。
筆者思考:如果我們將線性相關理解為一個存在冗餘的的空間結構的話,低維的部分組如果存在冗餘結構,則維度升高到更高維後,這種冗餘度必然是繼續存在的(用真子集的概念來理解)。
2. 如果一個向量組的一個部分組線性無關,存在一個它的延伸組也線性無關,同時也存在一個它的延伸組線性相關;
筆者思考:這個很容易理解,一個緊密結構的的向量組,當擴充新的向量進來後,有可能會破壞這種緊密結構。
4. 正交基向量組 - 一種特殊的線性無關向量組
我們來一起看一個特殊的線性無關向量組。
在中,向量組”
是線性無關的。證明:
設,即
從而:
由此得出,因此向量組是線性無關的。
值得注意的是,這個向量組不僅是相關無關的,而且向量組內的向量還是彼此正交的,這樣的向量組可以作為其他向量組的正交基。
0x3:向量組的秩
上個章節中我們討論了向量組中部分組和由部分組線性表出一個另一個向量的話題。
接下來新的問題來了,部分組可以隨意選取嗎?隨便一個部分組都可以線性表出原向量組中的其餘向量嗎?如果不是,那這個部分組的向量個數是多少呢?部分組的選取是唯一的嗎?
帶著這些問題,我們來討論向量組的秩的問題。
1. 從2維幾何空間中得到極大線性無關組的啟發
如上圖所示,幾何空間中,設 a1,a2,a3 共面,並且 a1,a2,a3 兩兩不共線。
它的一個部分組 a1,a2 線性無關;
部分組 a1 也線性無關;
部分組 a1,a2 和部分組 a1 雖然都線性無關,但是它們有區別:
對於部分組 a1 來說,新增上 a3 後得到的部分組 a1,a3 仍然線性無關;
而部分組 a1,a2 新增上 a3 後得到的 a1,a2,a3 就線性相關的了;
從幾何的視角來看,a1加上a3後,沒有改變部分組的“線性無關緊密結構”。而 a1,a2 加上 a3 後,再也無法保持原部分組的”線性無關緊密結構“,變成了線性相關。
這個性質非常有趣,也非常有用,在很多演算法中,我們都需要獲取並利用這個極大線性無關組。
2. 極大線性無關組的抽象定義
中向量組的一個部分組稱為一個極大線性無關組,當且僅當這個部分組本身是線性無關的,但是從向量組的其餘向量(如果還有的話)中任取一個新增進去,得到的新的部分組都線性相關。
在上述例子中,a2,a3 和 a1,a3 都是 a1,a2,a3 的一個極大線性無關組。
可以看到,這2個極大線性無關組的向量個數是相等的,這個性質是普遍存在的嗎?這2個極大線性無關組之間的關係是怎樣的?互相等價的嗎?
3. 向量組之間的等價性質
如果向量組的每一個向量都可以由向量組線性表出,則稱向量組可以由向量組線性表出。
進一步,如果向量組可以由向量組可以互相線性表出,則稱向量組可以由向量組等價,記作.
向量組的等價是向量組之間的一種關係,這種關係具有下述三條特性:
1. 反身性:任何一個向量組都與自身等價; 2. 對稱性: 3. 傳遞性:
由上述基本特性可以推出:向量組的任意兩個極大線性無關組等價。
需要注意的是,向量組的等價性質,不是數值意義上的等價,而是解空間結構的等價性。 兩個向量組等價,是在說這兩個向量組的解空間結構相同。解空間結構相同,進而這兩個向量組的秩也相同,秩可以理解為描述解空間結構維度的度量。
這裡還是從空間幾何角度來幫助理解。
1)情形1
設 a1,a2 不同線。如果可以由 a1,a2 線性表出,則一定共面,如下圖所示:
可以看到,向量組雖然有3個向量,但是因為和向量組 a1,a2 等價,所以它的秩依然是2。
2)情形2
設 a1,a2 同線,如果可以由 a1,a2 線性表出,則一定共線,即秩為1,如下圖:
由上述可以推出一個推論:等價的線性無關的向量組所含向量的個數相等。
這個推論和我們本章的標題本質是一致的:
方程組(向量組)的解空間結構,就是由該向量組的所有等價的極大線性無關組組成的。其中每個極大線性無關組都是線性無關的,且他們的向量個數相同(等價的向量組有相同的秩),等於原向量組的秩。
4. 向量組的秩的抽象定義
向量組的極大線性無關組所含向量的個數稱為這個向量組的秩。
0x4:線性方程組有解的充分必要條件
有了上面章節的鋪墊後,接下來可以來討論我們如何直接用線性方程組的係數和常數項判斷方程組有沒有解,有多少解的問題。
1. 定理1 - 線性方程組有解判別定理
線性方程組有解的充要條件是:它的係數矩陣A與增廣矩陣A'有相同的秩。這個定理可以這麼理解,線性方程組有解,等價於:
存在一組不全為0的{a1,...,an},使得有解;
也即 β 可以由向量組線性表出;
也即向量組線性相關;
向量組是向量組的一個極大線性無關組,向量組和向量組等價;
需要注意的是,這個定理只能判斷線性方程組是否有解,至於是有唯一解還是有無窮解無法判斷。
2. 定理2 - 線性方程組解個數判別定理
線性方程組有解時,如果它的係數矩陣A的秩等於未知量的個數n,則方程組有唯一解;
如果A的秩小於n,則方程組有無窮多個解;
3. 推論 - 齊次線性方程組有非零解條件
其次線性方程組有非零解的充要條件是:它的係數矩陣的秩小於未知量的個數;
齊次線性方程組比較特殊,如果它又唯一解那一定是零解,因此其次線性方程組要麼無解,要麼有無窮多個解。
3. n元齊次線性方程組解空間的結構
討論了通用線性方程組解的一般性質之後,我們來縮小範圍,將討論視角集中在齊次線性方程組,齊次線性方程組是一類非常重要的方程組,在機器學習的很多演算法和優化理論中都有它的身影。
0x1:從幾何空間得到的啟發
實數域R上一個3元齊次線性方程表示過原點的一個平面。
因此3元齊次線性方程組的解集W可能是以下幾種情況:
1. 過原點的一條直線 l:W中每個向量可以由 l 中的一個方向向量線性表出; 2. 過原點的一個平面 ∏:W中每個向可以由平面∏上不共線的兩個向量線性表出; 3. 原點(即零向量);
這表明在3元齊次線性方程組對應的3維空間中,解集W中無窮多個向量可以用W中一個或兩個向量線性表出。
接下來討論一般情況下,齊次線性方程組的解空間結構。
0x2:齊次線性方程組的解集的線性運算封閉特性
1. 性質1 - 其次線性方程組的任意兩個解的和還是方程組的解
齊次線性方程組的解空間(線性子空間)對加法封閉。
2. 性質2 - 其次線性方程組的任意一個解的倍數還是方程組的一個解
齊次線性方程組的解空間(線性子空間)對數量乘法封閉。
綜合上述2個性質得出,齊次線性方程組的解集W是的一個子空間,稱為方程組的解空間。
0x3:齊次線性方程組的基礎解系
齊次線性方程組有非零解時,此時方程組有無限多的解。但是這無限多的解可以由一組有限多個解來歸納表示,這組有限多的解滿足以下條件:
1. 線性無關;
2. 方程組的每一個解都可以由線性表出;
則稱是齊次線性方程組的一個基礎解系。
如果齊次線性方程組有一個基礎解系,那麼稱為方程組的通解。
基礎解析是用來表示所有解的一組解集,它本身具有歸納總結特性。
1. 定理1 - 基礎解系向量個數
數域K上n元齊次線性方程組的係數矩陣A的秩小於未知量個數n時,它一定有基礎解系。並且它的每一個基礎解系所含解向量的個數等於 n - rank(A);
0x4:數域 K 上 n元齊次線性方程組的”基“和”維數“的概念
1. 線性子空間的基
設U是的一個子空間,U中的向量組如果滿足下述兩個條件:
1. 線性無關;
2. U中每一個向量都可以由線性表出;
則稱是U的一個基(基可以有很多)。
於是,如果是齊次線性方程組的一個基礎解系,則同時也可以被稱為是解空間W的一個基(基的概念比基礎解析的範圍更泛)。
2. 線性子空間的標準基
由於線性無關,並且中每一個向量都可以由線性表出,因此是的一個基,稱它為的標準基。
幾何空間中,任取三個不共面的向量a1,a2,a3,由於任何一個向量β 可以由 a1,a2,a3 線性表出,並且 a1,a2,a3 線性無關,因此 a1,a2,a3 是幾何空間的一個基。
可以證明,的每一個非零子空間U 都有一個基。也就是說,任何一個解集,都可以通過對應的一個基(基礎解析)來歸納表示。
3. 非零線性子空間中基所包含的向量個數
的非零子空間U的任意兩個基所含向量個數相等,這兩個基互相等價。
設U是的一個非零子空間,U的一個基所含向量的個數稱為U的維數,記作或者簡記為。特別的,零子空間的維數規定為0。
4. n維向量空間
由於是的一個基,因此,因此我們也把稱為n維向量空間。
在幾何空間中,任意三個不共面的向量是它的一個基,因此幾何空間是3維空間;
過原點的一個平面,它的任意兩個不共線的向量是它的一個基,因此過原點的平面是2維的子空間;
過原點的一條直線,它的一個方向向量是它的一個基,因此過原點的直線是1維的子空間;
數域K上n元齊次線性方程組有非零解時,它的解空間W的每一個基所含向量個數為 n - rank(A),其中A是方程組的係數矩陣。因此解空間的維數為
基對於決定子空間的結構起了非常重要的作用,如果知道了子空間U的一個基,那麼U中每一個向量都可以由這個基線性表出,並且表出的方式是唯一的,其中係陣列成的有序陣列稱為該向量在這個基下的座標。
5. 向量組的極大線性無關組和對應子空間維數的關係
在中,向量組的一個極大線性無關組是子空間的一個基,從而:
該定理表明:向量組的秩等於由它生成的子空間的維數。
從而將線性子空間的基/維數的概念和線性方程組/極大線性無關組/秩的概念聯絡了起來。
4. n元非齊次線性方程組解空間的結構
數域上n元非齊次線性方程組的一個解是中的一個向量,稱它為方程組的一個解向量。
0x1:從幾何空間得到的啟發
3元非齊次線性方程組的解集是不過原點的一個平面,而相應的齊次線性方程組的解集是過原點的一個平面,如下圖所示:
可以由沿著向量平移得到。
於是上每一個向量可以表示成:
0x2:齊次線性方程組的解結構
從上面3維幾何空間的的例子我們受到啟發,n元非齊次線性方程組的解集U,與相應的n元齊次線性方程組的解集W 有如下關係:
其中,是非齊次線性方程組的一個特解,W是方程組的匯出組的解集。
1. 非齊次線性方程組的匯出組
我們把n元齊次線性方程組稱為非齊次線性方程組的匯出組。
1)性質1:n元非齊次線性方程組的兩個解的差是它的匯出組的一個解。
2)性質2:n元非齊次線性方程組的一個解與它的匯出組的一個解之和,仍是非齊次線性方程組的一個解。
2. 非齊次線性方程組的通解
當n元非齊次線性方程組有無窮多個解時,它的匯出組必有非零解。此時匯出組的一個基礎解系,其中 t 是匯出組的係數矩陣A的秩。
則非齊次線性方程組的解集U為:
其中是非齊次線性方程組的一個特解;解集U的代表元素稱為非齊次線性方程組的通解。
0x3:齊次線性方程組與非齊次線性方程組解向量性質的聯絡
齊次方程組的解與非齊次方程組的解關係是:
非齊次組的解向量等於齊次組的解+非齊次組的一個特解;
也就是說只要求出齊次組的解空間的一組基礎解系,比如是,一個非齊次組的特解比如是X1,,那麼非齊次組所有解可以表示為
所以求非齊次組的通解只需求出其一個特解,再求出對應的齊次組的基礎解系即可。
0x4:齊次線性方程組與非齊次線性方程組解向量性質的區別
區別是:
1)齊次組的解可以形成線性空間(不空,至少有0向量,關於線性運算封閉)
非齊次組的解不能形成線性空間,因為其解向量關於線性運算不封閉:任何齊次組的解的線性組合還是齊次組的解,但是非齊次組的任意兩個解其組合一般不再是方程組的解(除非係數之和為1)而任意兩個非齊次組的解的差變為對應的齊次組的解。
2)齊次組有基礎解系,而非齊次只有通解
非齊次線性方程組的解集不能稱為基礎解系,因這些解不能生成解空間(線性運算不封閉)
Relevant Link:
https://zhidao.baidu.com/question/478480630.html
4. 線性方程組的幾何意義
0x1:線性方程組解的物理意義
假設一個維數為3的線性方程組(即基礎解析的向量個數為3),該線性方程組包含若干個三元一次方程:
其中每一個三元一次方程代表三維空間中的一個平面,也叫由3維基礎解析張成的向量空間。
如果平面個數大於維度,稱為超定方程;
小於維度,稱為欠定方程;
等於維度,稱為適定方程;
滿足這個線性方程組的解 x=[x1,x2,x3] 同時屬於所有平面,接下來我們來討論線性方程組的解的個數從0,1,無窮多時,分別對應的幾何概念。
0x2:齊次方程組的解對應的幾何意義
齊次方程組具有形式,每個方程對應的平面都是過原點的。根據係數矩陣A的秩不同,有以下三種情況。
1. 【情況1】r(A)=3
A的每一行,即所有平面的法向量[a11,a12,a13],[a21,a22,a23],[a31,a32,a33]...能夠張成一個三維空間。
平面只有一個交點:[0,0,0],線性方程有一個解,即零解。
2. 【情況2】r(A)=2
所有平面的法向量,都處於同一個平面內。
由於三個平面都過同一個點[0,0,0],所以他們共有一條交線,線性方程有無窮多解。
同時要注意的是,這些解共線,換句話說,解集構成了一個二維的子空間。
3. 【情況3】r(A)=1
所有平面的法向量共線,整個線性方程組其實可以簡化為一行。
由於三個平面都過同一個點,所有平面重合於過[0,0,0]的平面,線性方程有無窮多解。
0x3:非齊次方程組的解對應的幾何意義
非齊次方程具有形式,相當於把齊次線性方程組對應的若干平面進行整體平移。
這種情況相當於所有平面都平移
寫成矩陣形式:,即,常數項b可以表示成A的列的線性組合,即b處於A的列空間內。把A,b並列組成的增廣矩陣[A;b]。
從矩陣的角度來說,增加一列不會減少矩陣的秩,即 r(A) ≤ r([A;b]
如果 r(A) = r([A;b]),則 Ax = b 的解的情況和Ax=0相同;
如果 r(A) < r([A;b]),則 Ax = b 無解(參考文章前面對線性方程組解存在條件的討論);
Relevant Link:
https://blog.csdn.net/shenxiaolu1984/article/details/54893299 https://technology.cpm.org/general/3dgraph/
5. 從三角幾何視角理解討論矩陣運算的幾何意義
0x1:用三角旋轉的例子來說明矩陣的本質是一種變換(transformation)
平面上取定一個直角座標系Oxy,所有以原點為起點的向量組成的集合記作V,讓V中每個向量繞原點O旋轉角度θ,如下圖所示:
這個旋轉是一個transformation動作,那如何通過數學來形式化定義這個旋轉動作呢?
我們將上述旋轉角度θ的這個動作記作σ
設的座標為(x,y),它在旋轉 σ 下的像的座標為(x',y')。設以 x 軸的正半軸為始邊,以射線OP為終邊的角為a,設,從三角函式的定義得:
由此得出:
上式就是旋轉σ的公式,把公式中的係數寫成矩陣的形式:
該矩陣就表示了轉角為θ的旋轉,即將輸入向量的座標整體移動一個角度。
0x2:矩陣乘法的幾何意義
設,令,其中
則矩陣C稱為矩陣A與B的乘積,記作 C = AB
矩陣乘法有幾個要點:
1. 只有左矩陣的列數與右矩陣的行數相同的兩個矩陣才能相乘; 2. 乘積矩陣的(i,j)元等於左矩陣的第 i 行與右矩陣的第 j 列的對應元素的乘積之和; 3. 乘積矩陣的行數等於左矩陣的行數,乘積矩陣的列數等於右矩陣的列數;
進一步來說,矩陣的乘法本質上是將矩陣對應的變換應用到被乘的向量組上。
矩陣乘法也可以被稱為線性轉換。矩陣相當於一個轉換函式,而向量組是一個輸入,已知了輸入和函式,我們就可以知道輸出,如果是多個矩陣相乘,則可以理解為複合變換函式,即f(g(x...))。
0x3:矩陣對應的旋轉變換的幾何例子
下圖展示了將原始向量組旋轉180°對應的矩陣:
讀者朋友可以自己修改矩陣的元素值,觀察不同的矩陣元素值對應的不同的轉換動作。
筆者這裡手工調整了幾個引數,通過gif圖的方式來展示不同的矩陣對應的不同變換動作:
Relevant Link:
https://jingyan.baidu.com/article/425e69e6f6c290be14fc165c.html https://www.geogebra.org/search/matrix%20transformation https://www.geogebra.org/m/wsTPe55F https://www.geogebra.org/m/u6jD5As8 https://www.yasuotu.com/gifhecheng
6. 機器學習模型背後的數學原理
0x1:線性迴歸演算法模型求解的數學原理
1. 為什麼不能直接基於樣本資料求解n元線性方程組
文章的開頭,我們舉了一個工廠生產某種食品的例子。在這個例子中,我們沒有藉助任何機器學習演算法,而是直接基於樣本輸入資料,得到了一個線性方程組,然後嘗試求解這個線性方程組。
這看起來毫無毛病,我按照你題目給的條件構建一個對應的方程組,然後求解,如果得到了唯一解,則該解就是最優解,也即唯一的可行解。
但遺憾的是,包括本例在內,現實世界中的幾乎所有場景中,幾乎不可能剛好得到一個唯一解,換句話說,99.99%的場景中,我們都無法得到一個100% recall,100% precision的model。
在很多時候,我們基於樣本資料和對應的條件構建出的線性方程組是無解或者有無窮多的解的,這個時候我們如何該如何繼續下去呢?宣佈放棄,這個問題無法解決了嗎?
2. 引入損失函式,求解一個等價的最優化問題
答案顯然不是的,我們可以退而求其次,既然無法100%達到全域性最優解,那我們可以嘗試獲得一個次優解,並使該次優解和最優解的“距離”在所有次優解中最接近。
引入損失函式的目的就是:將原始問題轉換為另一個最優化問題,通過求解損失函式下最優解得到原始問題的一個次優解,損失函式(loss function)的作用就是完成這個”問題域轉換“的橋樑。
引入損失函式後,我們的優化目標轉換為了:求得一個使當前損失函式值最小的最優解。那接下來的問題就是,基於損失函式構建的新的方程長什麼樣?解空間結構如何?是否有解?如何求解?
損失函式有很多種選擇,這裡以linear regression最契合的MSE(均方損失函式)為例:
線上性迴歸問題中,假設模型為:
線性模型試圖學得。同時在噪聲符合高斯分佈的假設前提下,均方誤差是衡量 f(x) 和 y 之間的差別的最佳損失函式。
我們構建讓均方誤差最小化的公式,即:
可以看到,均方誤差最小化公式是一個累加公式,將所有樣本資料(通過下標 i 表示)對應的線性方程值和目標值的差值的平方進行了累計,即所有樣本的誤差的平方和。
讀者朋友可以這麼理解:將原本基於樣本資料得到線性方程組,每一列(列向量)都減去一個目標值並計算平方,然後將所有方程都累加起來。注意,有的書籍或者paper在上述公式中還會加入一個1/N,但對最終結果是沒有影響的,因為我們求的是對w的偏導數,實數在這裡會被忽略。
求解 w 和 b 使最小化的過程,稱為線性迴歸模型的最小二乘引數估計(parameter estimation)。我們可將分別對 w 和 b 求導,得到:
令上式等於零可得到 w 和 b 最優解的閉式(closed-form)解,同時損失函式中極值就是上式引數優化公式的最小值,線性規劃問題得解。
3. 通過矩陣來簡化線性迴歸中損失函式的微分/偏導數運算
上一小節中我們通過偏導數方式實現了對均方誤差函式的求解,這很直觀利於理解,但是在電腦科學中,求解偏導數的運算並不高效,像sklearn這種數學庫採用的都是矩陣matrix的形式進行快速計算。
Relevant Link:
https://www.cnblogs.com/LittleHann/p/10498579.html https://zhuanlan.zhihu.com/p/27664917 https://www.cnblogs.com/pinard/p/10750718.html http://www.cnblogs.com/pinard/p/10791506.html
0x2:深度神經網路的隱層結構 = 線性變換+非線性變換組合的多次疊加
我們將構建一個神經網路:包括五個全連線層,每層都含有不同數目的單元,結構如下:
對於單個神經元來說,計算過程對應的線性方程為:
整個一層隱藏層的權重引數向量組構成了一個向量矩陣W,為了清楚起見,以下是第二層的所有表示式:
從矩陣視角來看,一層隱藏層對應的矩陣運算公式如下:
上圖中的a 是啟用函式,啟用函式是一種非線性變換,啟用函式對輸入向量組的扭曲是非線性的,因此提供了更好的適應性,並且能在學習過程中提供一些複雜的函式。
通過多層的隱層對應的線性變換和非線性變換的組合迭代後,原始輸入空間的向量基會被轉換到一個新的維度(一般是高維)中,在這個新的線性子空間中,原本線性不可分的向量組可能就可以變得線性可分,或者在一定的錯誤冗餘下線性可分,進而得到一個解空間。
0x3:為什麼深度神經網路中不能繼續用複合非線性方程組的理論進行直接求解
關於這個話題的討論,筆者目前的理解也不是完全吃透,等以後對凸優化理論的理解更透徹之後會再回來把這部分完善補全,呈現給讀者朋友。
大致的回答是,因為非線性性,和高維度的原因,矩陣偏導數運算變得十分困難,有時甚至無法計算。
相關的一些討論,可以參閱我另一篇blog.
https://www.cnblogs.com/LittleHann/p/10498579.html 2)梯度下降演算法(Gradient decent)來求解線性迴歸模型引數
0x4:GD/SGD梯度下降的數學原理
1. 在小學習率下,GD梯度下降公式等價於一階泰勒級數展開
我們從一階泰勒級數展開這個話題開始討論,逐步分析GD梯度下降成立的前提條件以及它的合理性。
首先,泰勒當年為什麼要發明這條公式?因為當時數學界對簡單函式的研究和應用已經趨於成熟,而複雜函式,比如:這種一看就頭疼的函式,還有那種根本就找不到表示式的曲線(例如深度神經網路中,線性和非線性複合層疊,隱層的函式形式已經變得極度複雜)。除了代入一個x可以得到它的y,就啥事都很難幹了。所以泰勒同學就迎難而上!決定讓這些式子統統現出原形,統統變簡單。
可以簡單的理解為:泰勒級數展開和微積分的本質原理很類似,都是通過大量小區間的線性近似來模擬原始函式。
如下圖所示:
想要兩個向量的乘積小於零,我們先來看一下兩個向量乘積包含哪幾種情況:
A和B均為向量,α為兩個向量之間的夾角。A和B的乘積為:
由上述討論可知,GD梯度下降過程中,就等價於不斷進行一階泰勒級數展開來”近似“地”沿著目標函式下降的方向“進行前進。但其實我們也可以看到,每次前進都伴隨著一定的損失,這是一階泰勒級數和真實函式之間的差值導致的。
要特別強調的是,這既是一個原理性的理解,也是一個工程實踐中要謹記的要點,我們在使用pytorch/TensorFlow/keras進行專案開發的時候,學習率η一定要設定的足夠小,設定的足夠小,不僅僅是為了讓我們足夠靠近區域性最優,這同時也是一階泰勒級數展開的必要條件,如果不滿足這個條件,GD梯度下降本身的誤差就會很大,自然也就無法有效逼近全域性次優解。
2. 為什麼GD梯度下降不能避免誤差
由上個小節的討論我們知道,一階泰勒級數展開本身也只是對原始函式的的一種近似線性模擬,即使你每次選擇的是負梯度方向,也不能100%沿著原始函式的真實方向進行下降,每一次GD迭代都是存在誤差的。
即使採用同二階泰勒級數,誤差也同樣存在,只是會比一階要小,但是階數越往上,計算的複雜度就越大。在一般情況下,一階泰勒級數展開已經可以獲得比較好的近似度和優化速度了,工業場景中基本上預設採用一階泰勒級數展開。
Relevant Link:
https://juejin.im/post/5a570c25518825734f529e3b https://www.tinymind.cn/articles/1272?from=articles_commend https://blog.csdn.net/SoHardToNamed/article/details/80550935 https://blog.csdn.net/sinat_15443203/article/details/82048888