選自TowardsDataScience
作者:Oleksii Kharkovyna
機器之心編譯參與:高璇、蛋醬
線性代數是 AI 專家必須掌握的知識,這已不再是個秘密。如果不掌握應用數學這個領域,你永遠就只能是「門外漢」。當然,學習線性代數道阻且長。數學,尤其是線性代數常與枯燥、複雜和毫無意義的事物聯絡起來。不過你還可以另闢蹊徑。
閱讀完本文後,你將瞭解到:
- 線性代數的本質;
- 線性代數的真實應用場景;
- 線性代數可用於 AI、ML 和資料科學的原因;
-
學習線性代數最有效的方法。
給初學者的解釋:線性代數的本質
第一次接觸線性代數的人,通常會覺得線性代數長這樣:
看起來就讓人頭大?你的腦海隨即會浮現出兩個問題:它們都是從哪兒來的?為什麼需要這些運算?
讓我們做個簡單的練習。
線性代數是計算數學的「主力軍」。我舉個簡單的例子來說明。
假設我們有一根兩端固定的極細金屬棒,其溫度恆等於零。我們開始使用分散式熱源對棒進行加熱,該熱源在點 x 的附近,每單位長度每秒產生 q (x) 焦耳熱量。溫度 t = t (x) 公式該怎麼建立?先粗略建模:熱量平衡後,設點 x 的分段為 [x-h, x + h],來自熱源的熱流入應等於分段兩端的熱通量之和。如果 h 足夠小,那麼熱通量可以看作常量(包含 h),該等式可以寫成如下形式:
其中 Q_x-h 是透過左邊界的熱通量,Q_x + h 是透過右邊界的熱通量。根據傅立葉定律,熱通量與溫度差成正比(畢竟,你剛跳進水裡時感覺最冷)。因此:
令 h = 1 /N。假設 xi = i · h,其中 i =0, 1, 2, …, N,它們被稱為網格。變數 ti = t (xi) 將滿足方程式:
基於邊界條件且 qi = q (xi),得到線性方程組:
具體來說,這個系統可以透過掃描法「正面」解決,但是在實際模型中,系統變得更加複雜。線性代數正好發揮了作用:
用 A · y = b 的簡短形式描述系統(這是矩陣乘法的由來!);
瞭解是否有解決方案,以及解決方案是否唯一;
(在本例中)使用簡單公式 y = A-1 b 來建模,將 A 看做一個數字;
(引入計算數學)建立用於求解線性方程組的有效數值方法。
這只是從數學建模的角度看線性代數,還有量子力學、統計學等多個角度。
再以著名問題為例,即某網站(或整個網際網路)的「網頁引用排名」問題。
假設有 N 個頁面,每頁可能包含到其他頁面的連結。我們的任務是確定哪些頁面最重要。如何準確地衡量「重要性」是任務的一部分。我們將以非負數(權重)來定量表示。先假設:此頁面的連結越多,其權重就越大。這種方法有個缺點:我們沒有考慮連結頁面的權重。一個連結權重越大,其意義也越大,這是合乎邏輯的。考慮到這些因素,我們選擇以下模型:
其中 a_ij 是第 i 頁到第 j 頁的連結數,除以第 j 頁的連結總數。該公式可以理解為:第 i 頁的權重等於第 j 頁的權重與從第 j 頁到第 i 頁的連結之比的乘積之和。因此,我們將問題簡化為線性方程組。此外,權重向量 p 是矩陣 A 的特徵向量,對應特徵值為 1:p = Ap
Frobenius-Perron 定理保證了該向量的存在(嚴格來說,矩陣 A 略有修改),透過簡單的迭代即可找到。
因此,線性代數是一套非常通用的思想和工具,可以應用於各個領域。但是「天下沒有免費的午餐」,通用性的代價是:某些定義和定理有著毫無必要的複雜度。不過事實並非如此:實際上,許多抽象目的是簡化而非複雜化。「如果它看起來像鴨子,像鴨子一樣游泳,像鴨子一樣嘎嘎叫,那麼它可能就是鴨子」這實際上就是一種抽象,如果 你 習 慣了這種抽象概念,將會非常方便。線性代數也是一樣。為了更具體地說明這一點,讓我們簡短討論下內部來補充一下「外部檢查」。
一些你需要知道的線性代數理論
線性代數研究的是向量空間以及將一個向量空間對映到另一個向量空間的函式。我們主要考慮線性函式(對於任何常數α和β以及向量 x 和 y,滿足關係 f (α · x + β · y) = α · f (x) + β · f (y)。也有非線性的函式(例如二次方程),不過首先你需要知道什麼是向量(以及向量空間),這不像看上去那麼簡單。
教材和課程中通常只是給出一個抽象的定義,這一定義又常常由 8 點構成。有時一個向量空間被視作一個使用加號的阿貝爾群,該阿貝爾群滿足四大群公理,並定義了標量乘法。但是對於剛開始研究線性代數的人來說,理解這些著實困難,學習一些具體示例並進行類比要容易得多。8 條的定義僅僅是這種類比的形式。所以我們舉個例子吧:
向量,是我們每個人都熟悉的有向線段,多個有向線段可以組成一個向量空間。回憶一下多項式,它們可以進行通項相加以及係數相乘。請注意:從代數的角度來看,這些多項式的加法運算以及多項式與係數的乘法運算,與有向線段運算規則是完全一致的。例如,等式 x + y = y + x(加法交換性)對有向線段和多項式均成立。因此,多項式的集合是向量空間,而多項式就是向量。
既然多項式類似於有向線段,那麼它們也肯定有座標。但是如何獲知多項式的座標以及多項式有多少個座標呢?眾所周知,每個向量在平面上都有兩個座標,在空間中則是三個。為什麼會這樣呢?維度又是什麼?線性代數給出了一個答案:維度就是線性無關向量的最大數量。線性無關是什麼意思?如果存在數字α1, α2, …, αn,其中至少一個非零,則向量 x1, x2, …, xn 被稱為線性相關。
如果向量不線性相關,則稱它們為線性獨立。(線性相關性的概念概括了平行向量和共面向量的概念:兩個向量在當且僅當它們平行時才線性相關。三個向量在當且僅當它們共面時才線性相關。)
空間的維數可以是有限的(維數不大於 N 的多項式空間),也可以是無限的(所有多項式空間)。這兩種情況在實際中都會出現,但現在我們限制其為有限維的。令向量 x1, x2, …, xn 線性無關,n 為空間維數。任何其他向量 x 都可以唯一地寫為 x1, x2, …, xn 的線性組合,相應的線性組合的係數稱為座標。
現在,我們對座標有了嚴格的定義,但重點不只是這個:在此過程中,我們遇到了更基本(更易忽略)的線性組合和線性相關性的概念。而且我們還了解到,在 n 維線性空間中,最多隻能有 n 個線性無關向量。這是線性代數的基礎之一。
我們知道的仍只是「冰山一角」。但是現在我們可以解決那些顯然與線性代數無關的問題了。例如:給定多項式 p 和 q;是否在兩個變數 R = R (x, y) 中存在多項式,使得對於所有 t 都有 R (p (t), q (t)) = 0?
「示例」基本結束了,但仍然有必要講講研究線性代數的各種方法。我簡短回顧一下自己的經歷,提出幾點建議。
最重要的問題:AI 真的需要線性代數嗎?
這取決於你的目的。如果你只想把人工智慧和機器學習的工具當作一個黑匣子,那麼你只需要足夠的數學計算就可以確定你的問題是否符合模型使用。
如果你想提出新想法,線性代數則是你必須要學習的東西。並不是說你需要學習有關數學的所有知識,這樣會耽擱於此,失去研究其他更重要的東西(如微積分/統計)的動力。
你的目標應該是使用線性代數來找到點與點之間的最短路徑。以下是你所需要掌握的知識列表:
標量、向量、張量:求模(大小)、向量夾角(點積或內積)、一個向量在另一向量上的投影以及依據自定義的軸向量對向量的描述和表示
矩陣:矩陣可以將向量的描述從一組基(一組座標軸)轉換為另一組基。例如,找出如何將對映應用到影像上並處理影像。
矩陣中的長度平方取樣、奇異值分解、低秩逼近是資料處理中廣泛採用的幾種方法。
SVD 通常用於主成分分析(PCA)中,而主成分分析又被廣泛用於特徵提取以及瞭解特徵或屬性之間的關係對於結果的重要性上。
線性代數在機器學習中的應用例項
以下是線性代數的一些具體示例:
資料集和資料檔案
例如在機器學習中,將模型擬合到一組由數字組成的類似表格的資料集上,其中每一行代表一個觀測結果,每一列代表該觀測值的特徵。你發現相似之處了麼?這些資料實際上是一個矩陣:是線性代數中的一種關鍵的資料結構。
影像和照片
你處理的每個影像本身就是一個表結構,對於黑白影像,每個單元格中有一個寬度和高度以及一個畫素值,而彩色影像每個單元格中有三個畫素值。照片是線性代數矩陣的另一個例子。
獨熱編碼
獨熱編碼是分類變數中的一種很流行的編碼。獨熱編碼是建立表來表示變數,其中每一列表示一個類別,每一行表示資料集中的一個樣本。
線性迴歸
線性迴歸是統計學中描述變數之間關係的一種舊方法。在機器學習中,它通常用於預測簡單迴歸問題中的數值。
深度學習
線性代數是描述深度學習方法的核心,透過矩陣表示法來實現深度學習方法,例如谷歌的 TensorFlow Python 庫,其名稱中就有「tensor」一詞。
結論
下面是我在學習這些並不簡單的數學內容時總結的技巧:
- 在解決有趣的問題時,是最容易理解線性代數思想和方法的,趣味問題有助於理解抽象概念;
- 記得要與其他人(朋友,或論壇)一起學習;
- 如果你喜歡按日程表學習,請使用線上課程和其他方法。但在將矩陣轉換為 Wolfram Alpha 之前,你應該學會「手撕矩陣」;
- 注意多讀書,這可以促使你深度思考。
線性代數的基本概念和定理並非從零開始。努力理解本質、內部邏輯對拓寬你在這個主題上的視角很有用。克萊默(Cramer)、高斯(Gauss)、皮亞諾(Peano)等等許多人肯定從中發現了樂趣(他們首先取悅了自己),所以學習線性代數的人怎麼會感到無聊呢?原文地址: