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:矩陣是一個函數
1. 仿射函數與矩陣





這樣,矩陣就不再是系數
了,而是一個函數(或者說是映射)了,矩陣是一個更泛化的概念。
0x2:矩陣對應了一種線性變換
1. 線性空間的定義
要討論線性變換,首先需要定義線性空間。
空間這個概念是現代數學的核心概念之一。對於空間的理解需要更抽象一些,簡單的說,能裝東西的就是空間。
比如計算機內有存儲單元,那么就有內存空間;我們上課有課表,那么就有課表空間;有一個能裝載夢境的東西,我們可以叫它盜夢空間。對於數學來說,空間里裝載的是能運算的東西。從拓撲空間開始,一步步往上加定義,可以形成很多空間。
線形空間相對是一種比較初級的空間;如果在里面定義了范數,就成了賦范線性空間;賦范線性空間滿足完備性,就成了巴那赫空間;賦范線性空間中定義角度,就有了內積空間;內積空間再滿足完備性,就得到希爾伯特空間;如果空間里裝載所有類型的函數,就叫泛函空間。
我們從我們生活在其中的(按照牛頓的絕對時空觀)的三維空間開始說起,逐步解釋空間的數學定義,從數學上說,這是一個三維的歐幾里德空間,這個三維的空間有如下幾個特點:
1. 由很多(實際上是無窮多個)位置點組成; 2. 這些點之間存在相對的關系; 3. 可以在空間中定義長度、角度; 4. 這個空間可以容納運動;
上面的這些性質中,最最關鍵的是第4條,也就是說:容納運動是空間的本質特征。
認識到了這些,我們就可以把我們關於三維空間的認識擴展到其他的空間。事實上,不管是什么空間,都必須容納和支持在其中發生的符合規則的運動(變換)。比如拓撲空間中有拓撲變換,線性空間中有線性變換,仿射空間中有仿射變換,其實這些變換都只不過是對應空間中允許的運動形式而已。本質上來說,“空間”是容納運動的一個對象集合,而變換則規定了對應空間的運動。
2. 線性空間是線性向量對象的集合
線性空間中的任何一個對象,通過選取坐標系(基)和坐標的辦法,都可以表達為向量的形式。
只要找到合適的坐標軸(也就是基),就建立了一個坐標系,就可以用坐標(表示成向量的形式)表示線性空間里任何一個對象。換句話說,給你一個空間,你就能用基和坐標來描述這個空間中的對象。
向量表面上只是一列數,但是由於向量的有序性,除了這些數本身攜帶的信息之外,還在對應位置上攜帶信息。
3. 線性空間中的運動用線性變換來表達
線性空間中的運動,被稱為線性變換。也就是說,從線性空間中的一個點運動到任意的另外一個點,都可以通過一個線性變化來完成。
在線性空間中,當選定一組基之后,不僅可以用一個向量來描述空間中的任何一個對象,而且可以用矩陣乘法來描述該空間中的任何一個運動(變換)。而使某個對象發生對應運動的方法,就是用代表那個運動的矩陣,乘以代表那個對象的向量。
簡而言之,在線性空間中選定基之后,向量(坐標)刻畫對象,矩陣刻畫對象的運動(矩陣乘法的本質是運動的施加),用矩陣與向量的乘法施加運動。
4. 用三角幾何旋轉的例子來說明矩陣的本質是一種線性變換(transformation)
上面討論的線性空間和矩陣乘法過於抽象,線性空間擁有向量夾角,向量旋轉等概念,因此這個章節我們來三角幾何旋轉的角度來直觀的呈現矩陣的本質。
平面上取定一個直角坐標系Oxy,所有以原點為起點的向量組成的集合記作V,讓V中每個向量繞原點O旋轉角度θ,如下圖所示:
這個旋轉是一個transformation動作,那如何通過數學來形式化定義這個旋轉動作呢?
我們將上述旋轉角度θ的這個動作記作σ
設的坐標為(x,y),它在旋轉 σ 下的像
的坐標為(x',y')。設以 x 軸的正半軸為始邊,以射線OP為終邊的角為a,設
,從三角函數的定義得:
由此得出:
上式就是旋轉σ的公式,把公式中的系數寫成矩陣的形式:
該矩陣就表示了轉角為θ的旋轉變換,即將輸入向量的坐標整體移動一個角度。旋轉變換是一種線性變換,它將所有向量點共同移動了一個相同的角度。
0x3:矩陣映射的本質是向量基的變換
從向量基(初等數學里叫坐標系)來討論下矩陣映射的本質。
所在平面為
、
所在平面為
,都是二維平面,即
。
在下圖中,我們把也用一個灰色方塊表示(代表了一個映射),
會通過
映射到
:
設:
,其中
為
的列向量。
根據矩陣乘法的規則有:
則相當於在
空間中,以
為基,坐標為
的向量,再將
向量用自然基表示,變換過程如下動圖所示:
整體來說,矩陣映射的本質是基改變,導致向量的坐標發生變化。
風動?帆動?或者都沒動。也許世界從來都沒有變換,變的只是你看世界的方式。
0x4:矩陣是拉伸和旋轉這兩種運動的結合
我們前面的小節展示了三角旋轉和矩陣的對應關系,實際上,矩陣不僅有旋轉運動,同時還有拉伸運動。



-
旋轉
-
拉伸


左乘代表進行一個向量基的旋轉:
繼續左乘對角矩陣:
可以看到:
-
特征值就是拉伸的大小
-
特征向量指明了拉伸的方向
反向變換(即求逆)也是同樣道理
0x4:復合矩陣乘法是幾何運動的疊加
1. 矩陣乘法的數學公式定義
設,令
,其中
則矩陣C稱為矩陣A與B的乘積,記作 C = AB
矩陣乘法有幾個要點:
1. 只有左矩陣的列數與右矩陣的行數相同的兩個矩陣才能相乘; 2. 乘積矩陣的(i,j)元等於左矩陣的第 i 行與右矩陣的第 j 列的對應元素的乘積之和; 3. 乘積矩陣的行數等於左矩陣的行數,乘積矩陣的列數等於右矩陣的列數;
進一步來說,矩陣的乘法本質上是將矩陣對應的變換應用到被乘的向量組上。如果是多個矩陣相乘,則可以理解為復合變換函數,即f(g(x...)),將所有的變換綜合在一起整體作用於被作用向量組。
2. 復合矩陣乘法對應了多個幾何旋轉變換的疊加
繼續上面三角旋轉的例子,現在相繼作旋轉 θ 與 φ,總的效果是作了 θ + φ 的角度,同上理,可以用矩陣來表示這個疊加的旋轉角度:
我們把相繼旋轉 θ 與 φ 角度的總效果稱為 θ 與 φ 的乘積,即:θφ。
對應的,我們把矩陣C稱為矩陣A與B的乘積,即 C = AB。
我們來一起仔細看下矩陣C的元素與矩陣A,B的元素之間有什么關系。
利用兩角和的余弦、正弦公式得:
將這個公式轉化為矩陣元素相乘的公式如下:
可以看到,這里就等於矩陣AB相乘的結果,讀者朋友可以通過矩陣的行列乘法技巧自己在草稿紙上演算一下,相信和筆者第一次看到這個公式一樣會有不一樣的體會和感受。
當然,我們不能說矩陣的乘法就是代表了旋轉,矩陣和乘法之間存在等價性還有更深層次的數學原理這里沒有闡明,但是三角幾何旋轉這個視角讓我們非常清晰的體會到了矩陣乘法的本質。
在構建深度神經網絡的時候,我們腦子里可以復現出你構建出的一層層網絡結果,正常不斷的”擰轉“、”扭曲“輸入向量,使其從線性不可分,逐漸成為一個在另一個向量基(線性變換改變了向量基)下線性可分的向量組,從而機器學習模型得到找到一個最佳超分界面進行二分類或者多分類。
3. 矩陣對應的旋轉變換的幾何例子
下圖展示了將原始向量組旋轉180°對應的矩陣:
讀者朋友可以自己修改矩陣的元素值,觀察不同的矩陣元素值對應的不同的轉換動作。
筆者這里手工調整了幾個參數,通過gif圖的方式來展示不同的矩陣對應的不同變換動作:
0x5:復合矩陣乘法是線性映射函數的復合疊加
通過把
映射到
:
再通過把
映射到
:
矩陣的乘法可以如下圖所示:

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 https://blog.csdn.net/wenzhilu/article/details/79684667 https://www.matongxue.com/madocs/755.html https://www.matongxue.com/madocs/555.html
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:深度神經網絡模型
1. 深度神經網絡隱層結構 = 線性變換+非線性變換組合的多次疊加
我們將構建一個神經網絡:包括五個全連接層,每層都含有不同數目的單元,結構如下:
對於單個神經元來說,計算過程對應的線性方程為:
整個一層隱藏層的權重參數向量組構成了一個向量矩陣W,為了清楚起見,以下是第二層的所有表達式:
從矩陣視角來看,一層隱藏層對應的矩陣運算公式如下:
上圖中的a 是激活函數,激活函數是一種非線性變換,激活函數對輸入向量組的扭曲是非線性的。
綜上我們看到,深度神經網絡的本質是線性變換的矩陣+非線性變換的激活函數,通過矩陣的拉伸/旋轉,以及非線性函數的扭曲作用,原始輸入空間的向量基會被轉換到一個新的維度(一般是高維)中,在這個新的線性子空間中,原本線性不可分的向量組可能就可以變得線性可分,或者在一定的錯誤冗余下線性可分,進而得到一個解空間。
2. 深度神經網絡中不能繼續用使用線性方程組的理論進行直接求解
大致的回答是,因為非線性性,和高維度的原因,矩陣偏導數運算、求逆變得十分困難,有時甚至無法計算。
舉個例子,普通最小二乘的最佳參數表達為:
雖然我們可以獲得解析表達,但是當數據量變得非常龐大的時候,連計算矩陣的逆、矩陣求偏導都會變得非常慢。
同時在很多情況下,我們無法獲得參數的解析表達,就需要采用迭代的方式逼近最佳的參數值。
相關的一些討論,可以參閱我另一篇blog.
https://www.cnblogs.com/LittleHann/p/10498579.html 2)梯度下降算法(Gradient decent)來求解線性回歸模型參數
0x3:GD/SGD梯度下降的數學原理
1. 在小學習率下,GD梯度下降公式等價於一階泰勒級數展開
我們從一階泰勒級數展開這個話題開始討論,逐步分析GD梯度下降成立的前提條件以及它的合理性。
首先,泰勒當年為什么要發明這條公式?因為當時數學界對簡單函數的研究和應用已經趨於成熟,而復雜函數,比如:這種一看就頭疼的函數,還有那種根本就找不到表達式的曲線(例如深度神經網絡中,線性和非線性復合層疊,隱層的函數形式已經變得極度復雜)。除了代入一個x可以得到它的y,就啥事都很難干了。所以泰勒同學就迎難而上!決定讓這些式子統統現出原形,統統變簡單。
可以簡單的理解為:泰勒級數展開和微積分的本質原理很類似,都是通過大量小區間的線性近似來模擬原始函數。
如下圖所示:

想要兩個向量的乘積小於零,我們先來看一下兩個向量乘積包含哪幾種情況:
A和B均為向量,α為兩個向量之間的夾角。A和B的乘積為:

由上述討論可知,GD梯度下降過程中,就等價於不斷進行一階泰勒級數展開來”近似“地”沿着目標函數下降的方向“進行前進。但其實我們也可以看到,每次前進都伴隨着一定的損失,這是一階泰勒級數和真實函數之間的差值導致的。
要特別強調的是,這既是一個原理性的理解,也是一個工程實踐中要謹記的要點,我們在使用pytorch/TensorFlow/keras進行項目開發的時候,學習率η一定要設置的足夠小,設置的足夠小,不僅僅是為了讓我們足夠靠近局部最優,這同時也是一階泰勒級數展開的必要條件,如果不滿足這個條件,GD梯度下降本身的誤差就會很大,自然也就無法有效逼近全局次優解。
2. 為什么GD梯度下降不能避免誤差
由上個小節的討論我們知道,一階泰勒級數展開本身也只是對原始函數的的一種近似線性模擬,即使你每次選擇的是負梯度方向,也不能100%沿着原始函數的真實方向進行下降,每一次GD迭代都是存在誤差的。
即使采用同二階泰勒級數,誤差也同樣存在,只是會比一階要小,但是階數越往上,計算的復雜度就越大。在一般情況下,一階泰勒級數展開已經可以獲得比較好的近似度和優化速度了,工業場景中基本上默認采用一階泰勒級數展開。
0x4:Hessian矩陣和梯度下降的關系
先拋出結論:以二維圖像為例,對於二維圖像的某點的Hessian矩陣,其最大特征值對應了其鄰域二維曲線最大曲率的強度,該特征值對應的特征向量對應了鄰域二維曲線最大曲率的方向,即山坡陡的那面,最小特征值對應的特征向量對應與其垂直的方向,即平緩的方向。簡單來講,圖像某點的hessian矩陣特征值大小和符號決定了該點鄰域內的幾何結構。
在進行GD梯度下降的時候,梯度的方向就是最大特征值對應的特征向量方向,而特征值決定了GD學習的步長。
1. Hessian矩陣和GD學習方向的關系
GD中所謂的最大梯度方向,就是Hessian矩陣最大特征值對應的特征向量的方向。
那什么是最小梯度,注意不是加個負號就變成最小了,向量是一個帶方向性的數學量。
最小梯度的方向是Hessian矩陣中最小特征值對應的特征向量方向,這個方向和最大梯度的方向是垂直的。
筆者提醒:Hessian矩陣本身也是一種近似,它的本質是二階泰勒導數,而二階泰勒展開本身也是一種近似模擬,只是說這種近似模擬的精確度已經相對比較高了。
2. Hessian矩陣和GD學習步長的關系
我們先來看下,在一階情況下,梯度下降(GD)方法:
這里有一個問題是:如何動態控制步長,當梯度大的時候縮短步長避免overstep,當梯度小的時候適當提高步長以盡早離開低谷區。
顯然,我們需要將梯度的值引入步長的控制公式中,以得到動態調整步長的能力。
將函數在局部極值點
附近進行二階Taylor展開近似可得:
,其中,
為梯度向量,
為Hessian矩陣。
對上式求導並置0,以求在二階泰勒展開近似原函數的情況下快速求出函數極值點,可解得:
從上面公式可以看出,Hessian矩陣起到了控制步長的作用。
繼續推導H,我們有
,其中
是單位特征向量矩陣,
是對應特征值對角矩陣。
重寫上面公式:
可以看出,這里控制(每個特征方向)步長的,有兩個因素:一階梯度(作為分子)和Hessian矩陣特征值(作為分母)。
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 https://www.zhihu.com/question/24623031