線性代數(shù)是數(shù)學中的一個非常重要科目, 需要研究線性空間, 線性變換和線性方程組. 至于應(yīng)用就太廣泛了, 圖像處理, 壓縮, 信號處理, 統(tǒng)計分析, 機器學習, 網(wǎng)頁排序...... 剛開始學習線性代數(shù)感覺抽象也很正常, 國內(nèi)很多教材看著都頭大. 這里 [遇見數(shù)學] 強烈推薦與B站視頻《線性代數(shù)的本質(zhì)》和書籍《程序員的數(shù)學: 線性代數(shù)》來學習. 此外[遇見數(shù)學]也編寫了一系列動畫和短文, 希望借助動畫的方式, 加快學習線性代數(shù)的朋友能夠更加深刻的理解某些較為抽象的概念. 先聲明一下, 這個系列并不會討論相關(guān)的計算(事實上復(fù)雜計算應(yīng)該交給計算機), 不過適當練習還請下面一定動手來鞏固知識點. 01 向量的概念現(xiàn)實中工作中, 我們會把幾個數(shù)值放在一起, 當做一個整體來分析, 這就有了向量(Vector) : 一種有序的數(shù)值列表. 為了把向量和點區(qū)分開, 慣用的方法是把這對數(shù)豎著寫, 然后用括號括起來, 比如下面的示例為 2 維向量, 3 維向量和 4 維向量: 注: 或者用方括號來表示向量 決定一個向量是它的長度和方向, 我們可以通過坐標系來更好的理解它. 在二維坐標系下用箭頭繪制出來, 且箭頭的起點位于原點, 終點就是數(shù)值分量對應(yīng)的點. 這樣每一個向量就對應(yīng)唯一對數(shù), 而坐標系中的一對數(shù)也唯一對應(yīng)一個向量. 只要向量的大小和方向相同, 即視為相等的向量, 如下圖所示在二維平面(Two-dimensional)下, 隨便移動一個向量, 所留下軌跡上都是相同的向量: 對于三維空間而言, 向量就會有x, y, z三個分量, 我們用 x,y,z 軸來表示出來, 這樣每個向量也會與一個有序三元數(shù)組(x,y,z)對應(yīng): ▌向量的加法 向量加法就是把對應(yīng)項相加: 從圖形來看我們可以平移第二個向量, 使它的起點與第一個向量的重點重合, 然后畫一個向量, 它從第一個向量的起點出發(fā), 指向第二個向量的終點. 這個向量就是它們的和; 或者觀察動畫按照每個向量的分量進行運動最終效果是一樣的: ▌向量的數(shù)乘 另一個基礎(chǔ)的向量運算就是一個數(shù)值(標量Scalar)乘以向量的每個分量, 就是將向量中的每個分量與標量相乘. 如選擇數(shù)值 2, 把它與一個給定向量相乘, 意味著你把這個向量拉長為原向量的 2 倍: 觀察下圖如果標量為負, 則結(jié)果向量反向. 也就是數(shù)乘向量其實是對向量的拉伸, 壓縮或反向的操作: 向量的加法和數(shù)乘非常重要, 將會貫穿線性代數(shù), 我們第一次的內(nèi)容就到此為止, 不過下面再補充幾張動圖來加深加法的理解: ▌向量加法三角形法則 其實與上面加法示例相同, 不過這里的向量起點并非原點: ▌平行四邊形法則 ▌向量的減法 向量的減法其實就是加法的一種特殊情況: 02「基底 / 線性組合 / 線性無關(guān)(相關(guān))」▌基底 在二維線性空間中, 只要用兩個特殊的向量就可以來用定位(表示)出任意向量: 空間中的任何向量都是可以通過縮放這兩個向量再相加表示出來. 現(xiàn)在想象, 譬如向量 (3,2) 就是沿著 i 的方向拉伸 3 倍, 再沿著 j 方向 拉伸 2 倍的向量相加結(jié)果. 這樣特殊的向量稱之為基(Basis, 或基底), 任何二維向量都可以由這兩個向量的線性組合表示出來, 其中 a, b 為標量. 觀察下面動圖顯示, 當 a, b 兩個標量自由變化, 通過向量加法與向量數(shù)乘這兩種基礎(chǔ)運算, 就能獲得所有二維中可能的向量: 基底的選取有各種各樣的方式, 但不同的選取 可能會有 3 種情況, 觀察下面動圖中選取 i 和 j 作為基底出現(xiàn):
所有由向量 i 和 j 線性組合而獲得所有可能的向量集合, 稱之為兩個向量張成的空間(Span). 用上面的圖形來說明: 對大部分二維向量來說, 兩個向量所張成的空間是所有二維向量的集合, 可以稱之為基底; 但當共線時, 張成的空間就是一條直線, 不能構(gòu)成二維線性空間的基底. ▌三維空間的基底 再來看看三維空間中的兩個方向不同的向量(藍色和橘黃色)所張成的空間就是兩者所有的線性組合, 其實就張成了一個過原點的平面 . 如果在加上第三個向量, 那么線性組合為下面的形式: 對三個基底向量分別進行縮放, 然后把結(jié)果相加, 而這三個向量所有可能的線性組合構(gòu)成了他們張成的空間: ▌線性相關(guān) 考慮 三維中第三個向量已經(jīng)落在前兩個向量所張成的平面之中, 那么就可以被這兩個向量線性表示; 或者二維中兩個向量共線, 那么可以由另一個線性表示出來. 現(xiàn)在觀察二維兩個向量共線的情況: 這種情況稱之為線性相關(guān)(Linearly Dependent), 也就是說存在有向量對張成空間而言上多余的, 即便刪除掉也不會對張成的空間有任何影響. 反之稱為線性無關(guān), 也就是沒有任何向量可以由其他向量經(jīng)過線性組合表示出來, 每個向量對所張成的空間都做出了"貢獻". 03 「線性變換/矩陣及乘法」線性變換是線性空間中的運動, 而矩陣就是用來描述這種變換的工具. 這樣說還是沒有直觀印象, 所以還是直接看圖解的動畫吧. 矩陣不僅僅只是數(shù)值的表: 其實表示了在該矩陣的作用下, 線性空間是怎樣的變化, 觀察下圖二維平面中水平和垂直方向的伸縮過程:
再看到更多矩陣變換之前, 先停下來看看下面靜態(tài)圖片的進一步解釋: 變換前矩陣的基底向量 i (1,0) 移動到了 (2,0) 的位置, 而 j 基底向量 (0,1) 還是 (0,1) 沒發(fā)生任何變換(移動) - 也就是基底的變化: 一旦明白了基底的變化, 那么整個線性變換也就清楚了 - 因為所有向量的變化都可以由改變后的基向量線性表出. 觀察下面紅色向量(1, 1.5) 和 綠色向量(-1, -3) 變換后落腳的位置: 向量 (1, 1.5) 在變換后的位置, 其實就是變換后基向量的線性表示, 也可以看到矩陣的乘法是如何計算的: 類似對于(-1, -3) 變換后的位置 , 也是一樣的計算方法: 可以再次觀察上面動畫來體會, 驗證算出的結(jié)果. 下面再看其他的變換矩陣 這里矩陣 A 的對角線中(0,2)含有一個 0 的情況, 觀察下面動畫 :
基底的變化如下: 再看看下面這個矩陣 A 的變換:
上面在 3 個不同的矩陣作用下(相乘), 整個空間發(fā)生不同的變換, 但是原點沒有改變, 且直線依然還是直線, 平行的依然保持平行, 這就是線性變換的本質(zhì). 類似, 在三維線性空間內(nèi), 矩陣也用于這樣的線性變換, 需要注意的是這里行列式可以看成經(jīng)過變換后體積變化的倍率. 觀察下圖, 經(jīng)過下面矩陣 A 的變換中, 空間會經(jīng)過鏡像翻轉(zhuǎn)變換(扁平化為線), 所以行列式的值會是負數(shù). 04 「行列式」這次我們主要做一個回顧, 再進一步將行列式的幾何意義用動畫展示說明. 我們說矩陣 A 可以視為一種線性變換, 所以 上面的式子意味著一個向量 x 在線性變換 A 后的位置將會和向量 v 重合. 現(xiàn)在看個例子, 整個空間在矩陣 A 的作用下是怎樣的變化過程:
并且注意紅色的方塊面積擴大了 6 倍, 這樣的面積(或體積)增大倍率就是行列式(Determinant)的幾何意義, 記作: det(A) 或者 |A| 再看另一個作用矩陣線性變換的動畫:
再來看這個線性變換的例子, 注意矩陣 A 中兩個列向量是成比例的 - 線性相關(guān):
這跟上一節(jié)中矩陣對角線含有 0 元素情況類似, 在這種情況下意味著不存在逆矩陣, 不過也是以后要介紹的內(nèi)容了. 行列式的幾何意義表示面積(體積)的增大倍率, 如在經(jīng)過鏡像翻轉(zhuǎn)后就為負值, 上一節(jié)我們看到三維矩陣的情況, 現(xiàn)在看一看二維中經(jīng)過鏡像翻轉(zhuǎn)后行列式的變化, 請注意最下變換過程中 det(A) 值從正數(shù)到負數(shù)的變化過程: 05 「矩陣的乘積/復(fù)合變換」矩陣向量的乘積可以理解為將一個特定的線性變換作用在向量上, 本次我們先看幾個特殊的矩陣下的變換以及矩陣矩陣的乘積. ▌ 零矩陣 即所有元素都是 0 的矩陣, 記為 O . 可以用下標來表示矩陣的大小: 零矩陣表示的變換是將空間壓縮到原點, 可以觀察在 2 階零矩陣的作用下, 空間被壓縮到原點的變化過程, 注意行列式的值最后為 0: ▌單位矩陣 是對角元素為 1, 其余都是 0 , 記為 I. 單位矩陣對空間什么都不改變, 保持基向量不變, 也被稱為"恒等變換", 可以看下面對應(yīng)的空間變化過程(盡管沒有改變): ▌對角矩陣 除了對角元之外所有元素均為 0 的矩陣稱之為對角矩陣. 對角矩陣表示的沿著坐標軸伸縮變換, 其中對角元素就是各軸伸縮的倍率, 并且下例矩陣 A 的對角元素中含有 2 個負數(shù), 可以看做經(jīng)過了 2 次鏡像翻轉(zhuǎn), x,y 兩個方向先是壓縮, 然后再被拉伸, 面積擴大為原來的 6 倍, 這樣行列式的值為 6. 上面都是進行一次變換的操作, 如果想要再進行一次(甚至更多)變換, 就要矩陣和矩陣相乘了. 譬如下面矩陣 A 相當于將空間旋轉(zhuǎn), 矩陣 B 是橫向拉伸. 如果是 BA 兩個矩陣相乘的運算, 就相當于先旋轉(zhuǎn)再拉伸, 這樣的復(fù)合變換運算順序是從右往左進行, 可以觀察下面的動畫: 如果是 AB 兩個矩陣相乘的運算, 就相當于先拉伸后旋轉(zhuǎn), 運算順序是從右往左, 可以觀察下面的動畫: 從上面兩個變換動畫, 可以得出結(jié)論矩陣的乘積不滿足交換律(可以想象滿足結(jié)合律): 可以計算出 BA 和 AB 的值: 如何計算矩陣的乘積, 除了課本上給出的方法, 還可以按照列的線性表出來進行, 以 BA 為例: 另外, 如果兩個矩陣都不是零矩陣, 但是矩陣的乘積可能會是零矩陣, 比如在下面兩個矩陣: 空間中, A 做橫向壓縮, B 做垂直壓縮, 經(jīng)過 A 然后 B 的變換后, 也會映射到原點. 「矩陣的逆/逆變換」這次我們來看如何把矩陣 A 經(jīng)過變換后的向量再還原回去. 觀察下面如何從變換后的向量(-1.5, 2) 還原為向量 (1, 0.5) 的過程:
整個還原的變換實際上對應(yīng)了另一個線性變換, 稱為矩陣的逆(Inverse), 記為 A^(-1). 矩陣與它的逆矩陣相乘, 那就是先做了一次變換, 然后在還原回來, 這兩個連續(xù)的變換作用就是矩陣的乘法, 相當于什么都沒有改變, 這個沒有進行任何改變的變換, 就是上次說提到的單位矩陣. 利用這個性質(zhì), 我們可以通過在 Ax=V 兩邊同乘 A 的逆矩陣來求出變換前的向量 x: 矩陣的逆是否一定存在? 那么問題在于逆矩陣是否一定能找得到呢? 想象當 det(A) = 0 時候, 也就是代表矩陣的變換將空間壓縮到更低的維度上, 此時沒有逆矩陣. 在二維平面中變換后空間被壓縮到原點以及被壓縮為一條直線都是不存在相應(yīng)的逆矩陣. 或者說沒有辦法找到對應(yīng)的映射可以將一個點或一條線還原為平面. 類似地, 對于三維空間中, 如果一個變換將空間壓縮為一個平面, 一條直線或原點, 也就是都對應(yīng) det(A) = 0 (體積為0)時, 那么也沒有逆變換. 請看下面矩陣將三維空間壓縮為平面的情況: ▌對角矩陣的情況 對角矩陣對應(yīng)的變換就是沿著坐標軸伸縮變換, 那么還原就非常簡單了, 只需要將各坐標軸伸縮為倒數(shù)倍就好了. 但注意即使不存在逆變換, 但對應(yīng)的 x 仍然可能存在. 當一個變換將空間壓縮到一條直線, 但是向量 v 剛剛好就在這條直線上. 如下面矩陣 A 將空間壓縮成一條直線, (紅色)向量 v (1, 0.5) 因為恰好落在該條線上, 所以相應(yīng)的 x 為 (0.25,-0.25) . 07【方程組的解/零空間/核】線性代數(shù)在許多領(lǐng)域都被廣泛應(yīng)用的主要原因是能夠求解給定的線性方程組(Linear System of Equations). 這一次來看如何用矩陣的語言來構(gòu)建簡單的數(shù)學模型來:
題目非常簡單, 由兩個方程和兩個未知數(shù)構(gòu)成的方程組便可以求解出: 或以把方程寫成矩陣向量相乘的形式 - 常系數(shù)矩陣 A , 未知量作為列向量 x, 兩者的乘積得到常數(shù)列向量 v. 常系數(shù)矩陣可以理解為自變量 x 與 因變量中間存在的某種關(guān)聯(lián), 指定了這個矩陣就能確定了從向量到另外一個向量的映射. 這樣用線性變換來理解的話, 求解 Ax = v 意味著我們要找到一個向量 x , 使得它在變換后與 v 完全重合: 這個方程組有解就是矩陣 A 所代表的變換沒有將空間進行扁平化的壓縮, 即 det(A)≠0. 否則方程組無解. 或者還可以從矩陣的行視圖來理解這個線性方程組, 所要求的解就是求兩條直線的交點:
現(xiàn)在從列視圖和行視圖兩個角度來理解后面兩種情況, 比如下面線性方程組無解: 從列視圖可以看做向量 (2,1) 沒有落在矩陣列所張成的空間內(nèi), 從下面動畫中看到經(jīng)過矩陣變換后, 空間最終被壓縮為一條灰色直線, 而 v 在直線外, 所以不能被變換后的基向量線性表出: 或者可以從行視圖來理解就是空間中兩條直線為平行關(guān)系: 再來以下面線性方程組為例看無窮解的情況: 如果從行視圖來看就是兩條直線重合在一起: 觀察下面的動圖來從列視圖的角度理解無窮解的情況: 觀察要點: 在經(jīng)過線性變換后那些壓縮到原點的向量集合, 稱為零空間(Null space)或稱為核(Kernel). 上面方程組的通解就是由特解和所有零空間解的線性組合, 下面動圖盡管改變中 a 的值, 所有可能 a (-1, 1) 是零空間的解, 所以經(jīng)過變換都會被壓縮到原點; 而 (2, 0) 是特解, 經(jīng)過變換后會落腳在 (2, 4) 處. 類似, 如果有三個方程式, 三個未知數(shù), 那么每一個方程就代表了三維空間中的一個平面, 而方程組的解集就可能是空間中的一部分: 無解, 一個交點, 一條直線或一個平面; 在很多問題中都能將數(shù)學模型歸結(jié)為 y = Ax . 比如信號處理, 統(tǒng)計分析, 機器學習等, 在工科中會經(jīng)常用到. 在未來的圖解系列中我們會遇到更多這些問題的示例. 08【方程組的解 II】這次我們來看看三個方程式, 三個未知數(shù)的方程組解(即平面方程組)的情況. 其中每一個方程可以看做代表了三維空間中的一個平面, 而方程組的解集就可能是空間中的一部分: 無解, 一個交點, 一條直線或一個平面; ▌方程組唯一解的情況 從行視圖來理解就是三個平面相交于一點: 如果從矩陣變換的角度來理解的話, 請觀察下圖:
▌方程組無解 其中三個平面交線相互平行, 不會有任何共同的交點, 所以無解: 如果從矩陣變換的角度來理解的話, 請觀察下圖:
▌方程組有無窮解 - 解集為一條直線 三個平面相交于一條直線: 如果從矩陣變換的角度來理解的話, 請觀察下圖: 觀察要點: 方程的通解為特解 + 零空間上解所有的線性組合: ▌方程組無窮解 - 解集為一個平面 三個平面實際就是為一個平面: 如果從矩陣變換的角度來理解的話, 請觀察下圖:
方程的通解為特解+零空間上解所有的線性組合: 這一次我們從行視圖和列視圖的幾何角度理解線性方程組: 每個方程組都有一個線性變換與之聯(lián)系; 當逆變換存在時, 就能用逆變換來求解方程組的解;逆變換不存在時, 行列式為 0, 就需要考察向量 v 是否落在列空間內(nèi)了. 09「秩 / 列空間 / 零空間」首先讓我們來做一個簡短的回顧: 矩陣乘法可以理解為一個特定的線性變換, 矩陣的列向量相當基向量 i: (1,0) 和 j: (0,1) 經(jīng)過變換過后的到達向量. (原諒我用鼠標進行的標注吧) 空間變換后的任何向量都可以由矩陣 A 的列向量線性表出, 而這些所有可能的結(jié)果, 也就是矩陣的列所張成的列空間(Column Space).
在數(shù)學專業(yè)的詞匯來表示線性變換后空間的維數(shù), 稱之為矩陣的秩( Rank ) . 換句話說, 列空間就是矩陣的列所張成的空間. 所以矩陣秩的另一種定義可以說是列空間的維數(shù). 經(jīng)過變換后被壓縮到原點的向量集合, 稱為矩陣 A 的"零空間"(Null Space)或"核"(Kernel), 記為 Null(A) 或 Ker(A). 對照上面的三種情況, 來分別來觀察. ▌第 1 種情況: 變換后仍是平面
▌第 2 中情況: 變換后被壓縮為一條直線
▌第 3 種情況: 變換壓縮到原點
▌維數(shù)定理 假設(shè) A 是 mxn 矩陣(非方陣的情況, 下次會介紹), 維數(shù)定理就是:
相信如果理解透徹 2x2 矩陣的情況, 那更高維的矩陣也就清楚了. 10「矮矩陣 / 長矩陣」矩陣乘法可以理解為一個特定的線性變換, 比如在 2x2 的可逆矩陣表示就是二維空間的(可逆)變換; 3x3 的可逆矩陣表示三維空間的變換. 這些都是 nxn 型的矩陣, 本節(jié)來看看更一般 mxn 矩陣, 也就是非方陣的情況 -- 分兩大類:行數(shù)小于列數(shù)的"矮矩陣"和行數(shù)大于列數(shù)的"長矩陣". ▌矮矩陣 所謂"矮矩陣"就是 mxn 矩陣 A 的維數(shù) m < n 的情況: 從方程組來說, 就是未知量為 n , 而方程個數(shù) m . 以上面 2x3 矩陣而言, 就是未知量 x 從三維空間被壓縮到二維平面的線性變換, 也就是說存在了壓縮扁平化的操作, 觀察下圖:
這樣矩陣壓縮的行為, 當然可以從二維平面到一維直線, 如看下圖的變換矩陣(1,2) 的作用下, 線性空間是怎樣的變化過程:
類似這樣對空間壓縮的操作經(jīng)常被用于對數(shù)據(jù)的壓縮, 比如原始數(shù)據(jù)維數(shù)太大, 就需要找到某種變換將原始高維屬性空間降為更低維的空間, 未來再主成分分析 PCA 時候, 我們再來更詳細的圖形展示. ▌長矩陣 反過來考慮當矩陣 A 維數(shù) m > n 的長矩陣: 這樣未知數(shù)要比方程數(shù)少的情況, 對應(yīng)的是變換會從低維到高維空間進行的. 比如下面矩陣就是從二維變換到三維空間的映射: 類似, 如果從一維到三維空間的變換矩陣也一定屬于長矩陣形狀的. 無論是矮矩陣, 還是長矩陣, 這樣的非方陣和方陣的一個明顯不同是, 對于方陣我們可以計算它的行列式, 如果不是方陣的話,就不行列式這個概念了. 11「特征值 / 特征向量」“特征”一詞譯自德語的eigen, 意味著“自身的”,“有特征的” — 這強調(diào)了特征值對于定義特定的線性變換上是很重要的. ▌特征值 / 特征向量 我們來觀察在矩陣 A 的作用下空間發(fā)生的線性變換, 注意下圖中紅色向量和綠色向量的變化:
是不是空間中所有的向量都會進行旋轉(zhuǎn)呢? 還是這個矩陣變換為例, 再來觀察下面這 3 個向量.
這里只有長度伸縮起了變化, 而方向仍在原直線上的向量就是矩陣 A 的特征向量(Eigenvectors. 伸縮的倍數(shù), 就是特征值(Eigenvalues), 紅色向量 (1,2) 伸長了 2 倍, 特征值為 2; 綠色向量 (2,1) 伸縮倍率為 -1, 相應(yīng)特征值為 -1. 一般而言, 對于 nxn 方陣 A , 當存在向量 v 不是零向量, 且滿足 等號左邊是矩陣向量的乘積, 而右邊是數(shù)乘向量. ▌特征值的計算 如何求解出特征值呢, 考慮將上面等式右邊項移項: 我們知道只有當 (A-λ I) 這個矩陣所代表的變換是壓縮扁平化操作的時候才會將向量 v 壓縮至原點處, 而壓縮扁平化的矩陣的行列式應(yīng)該等于 0 , 這樣只需要求解出相應(yīng)的特征方程即可得到 λ 的結(jié)果. 一旦求出了矩陣的特征值, 之后要做的就是帶入定義式子, 求出滿足定義的特征向量了. ? 部分截圖出自 3Blue1Brown 的《線性代數(shù) 的本質(zhì)》視頻 |
|
來自: 長沙7喜 > 《數(shù)理化生》