這是一份文科生都能看懂的線性代數簡介

線性代數的概念對於理解機器學習背後的原理很是重要,尤爲是在深度學習領域中。它能夠幫助咱們更好地理解算法內部究竟是怎麼運行的,藉此,咱們就可以更好的作出決策。因此,若是你真的但願瞭解機器學習具體算法,就不可避免須要精通這些線性代數的概念。這篇文章中,咱們將向你介紹一些機器學習中涉及的關鍵線性代數知識。算法

這是一份文科生都能看懂的線性代數簡介

線性代數是一種連續形式的數學,被普遍應用於理工類學科中;由於它能夠幫助咱們對天然現象建模,而後進行高效的計算。可是,因爲線性代數是一種連續而非離散的數學,所以,不少計算機科學家都不太瞭解它。另外,線性代數還在幾乎全部的數學學科中都擁有着核心地位:例如幾何學和泛函分析。數組

線性代數中的概念是理解機器學習理論所必需的基礎知識,尤爲是對那些處理深度學習算法的人而言。在剛接觸機器學習時,你能夠不須要掌握線性代數。但到了必定程度後,當你但願更好地理解不一樣機器學習算法運做原理時,線性代數就頗有用了,它能夠幫助你在開發機器學習系統時更好地作決策。機器學習

在線性代數中,咱們使用線性方程來表示數據,並把它們寫成矩陣或向量的形式。所以,基本上你都是在與矩陣和向量打交道,而不是標量(咱們會在文章的稍後部分介紹這些概念)。若是你可以想到使用一個合適的庫,好比 NumPy,你就能夠經過簡短的幾行代碼,輕鬆實現複雜的矩陣乘法。請注意,這篇文章忽略了那些對機器學習並不重要的線性代數概念。學習

數學對象3d

這是一份文科生都能看懂的線性代數簡介

標量對象

標量就是一個簡單的數,好比 24。blog

向量索引

這是一份文科生都能看懂的線性代數簡介

向量是一個有序數組,可以寫成一行或者一列的形式。向量只包含一個索引,用來表示向量中的某個特定元素。好比 V_2 表示向量中的第二個元素,在上面淡黃色的圖中是-8。開發

矩陣深度學習

矩陣是一個有序的二維數組,有兩個索引。第一個索引表示行,第二個索引表示列。例如,M_23 表示的是第二行、第三列的元素,在上面淡黃色的圖中是 8。矩陣能夠有多個行或者列,注意一個向量也是一個矩陣,但僅有一行或者一列。

淡黃色圖中有一個矩陣的例子:一個 2×3 的矩陣 (行數×列數)。下圖中是另外一個矩陣和對應的表示形式。

這是一份文科生都能看懂的線性代數簡介

張量

三維張量是按照必定規律排列在方格中的數組,其中一個變量數字表示軸。張量有三個索引,其中第一個索引表示行,第二個索引表示列,第三個索引表示軸。例如,V_232 指向第二行、第三列、第二軸的元素,在下圖右邊的張量中表示 5。

這是一份文科生都能看懂的線性代數簡介

張量是上面談到的概念中最經常使用的一個,由於張量是一個多維數組,同時能夠是一個向量或者一個矩陣,具體取決於它的索引數量。例如,一階張量能夠表示向量(1 個索引),二階張量能夠表示矩陣(2 個索引),三階就是張量(3 個索引),更高階的稱爲高階張量(超過 3 個索引)。

運算法則

矩陣和標量的計算

若是你在一個矩陣上加、減、乘、除一個標量,你所作的就是直接對矩陣的每一個元素進行這些數學運算。下圖給出了矩陣數乘的一個很好的例子。

這是一份文科生都能看懂的線性代數簡介

矩陣和向量的運算

這是一份文科生都能看懂的線性代數簡介

對一個矩陣乘以一個向量,能夠理解爲對矩陣的每一行乘以向量的每一列,運算結果會是一個向量,它的行數和矩陣的行數同樣。下圖展現了這是如何計算的。

爲了更好地理解這個概念,咱們詳細講解一下第二張圖中的計算步驟。爲了獲得結果向量中的第一個元素 16,選擇拿來和矩陣相乘的向量中的元素 1 和 5,把它們與矩陣第一行中的元素 1 和 3 相乘,像這樣:1*1 + 3*5 = 16。對矩陣第二行的元素進行相同的計算:4*1 + 0*5 = 4。一樣,再計算矩陣第三行的元素:2*1 + 1*5 = 7。

這裏還有另外一個例子:

這是一份文科生都能看懂的線性代數簡介

在這裏,咱們給出一個備忘錄:

這是一份文科生都能看懂的線性代數簡介

矩陣間的加減法

矩陣間的加減法很是簡單直接。這裏要求,兩個矩陣須要維度相同,運算結果也會是一個相同維度的矩陣。你只須要將第一個矩陣中的每個元素和第二個矩陣中對應位置的元素相加或者相減就能夠了。以下圖所示:

這是一份文科生都能看懂的線性代數簡介

矩陣間的乘法

若是你知道如何計算矩陣和向量間的乘法,矩陣間的乘法就也簡單了。注意,只有當第一個矩陣的列數和第二個矩陣的行數相等時,才能把它們兩個乘起來。運算結果會是一個矩陣,行數和第一個矩陣的行數相等,列數和第二個矩陣的列數相等。計算方法以下:

你只須要將第二個矩陣分紅列向量,而後分別將第一個矩陣和每一個列向量相乘。而後,將運算結果拼接成一個新的矩陣(不要把它們加起來!)。下圖逐步展現了計算過程:

這是一份文科生都能看懂的線性代數簡介

一樣,咱們也給出一個備忘錄:

這是一份文科生都能看懂的線性代數簡介

矩陣的乘法性質

矩陣乘法擁有一些性質,根據這些性質,咱們能夠將大量計算整合成一個矩陣乘法。在下面咱們會依次討論這些性質。爲了便於理解,咱們會先用標量來解釋這些性質,而後再使用矩陣形式。

交換律

數乘知足交換律,但矩陣乘法並不知足。這意味着,當咱們在將兩個標量乘在一塊兒的時候:7×3 和 3×7 的結果是同樣的,但當咱們將兩個矩陣相乘起來的時候:A×B 並不等於 B×A。

結合律

數乘和矩陣乘法都知足結合律。這意味着,數乘 3×(5×3)等於(3×5)×3,同時矩陣乘法 A×(B×C)等於(A×B)×C。

分配律

數乘和矩陣乘法都知足分配律。這表示,數乘 3×(5+3)等於 3×5+3×3,而矩陣乘法 A×(B+C)等於 A×B +A×C。

單位矩陣

單位矩陣是一種特殊的矩陣,不過首先,咱們須要定義什麼是「單位」。數字 1 是一個「單位」,由於任何數乘以 1 都等於它自身。所以,任何矩陣乘以一個單位矩陣都應該等於它本身。例如,矩陣 A 乘以單位矩陣還等於矩陣 A。

單位矩陣的主對角線元素都是 1,其他元素都是 0,你能夠根據這個性質獲得一個單位矩陣。同時它也是一個「方陣」,這表示它的行數和列數是相等的。

這是一份文科生都能看懂的線性代數簡介

我咱們以前說,矩陣乘法不知足交換律,但這裏有一個例外:將一個矩陣和一個單位矩陣相乘。所以,下式是成立的:A × I = I×A = A。

矩陣的逆和轉置

矩陣的逆和矩陣的轉置是兩種矩陣特有的性質。一樣的,咱們首先在實數上討論這些性質,而後再使用在矩陣中。

1.逆運算

首先,什麼是逆(倒數)? 一個數乘以它的逆(倒數)等於 1。注意,任何非零的數都有倒數。若是將矩陣和它的逆矩陣相乘,結果就應該是單位矩陣。下面的例子展現了標量的逆(倒數):

這是一份文科生都能看懂的線性代數簡介

不過,並非每一個矩陣都有逆矩陣。若是一個矩陣是方陣,並且它可逆,就能夠求出它的逆矩陣。很遺憾,討論什麼矩陣可逆超出了這篇文章的範圍。

咱們爲何須要逆矩陣呢?這是由於咱們不能計算用矩陣相除,並無「除以矩陣」的定義,但咱們能夠用一個矩陣乘以一個逆矩陣,來達到相同的目的。

下圖展現了一個矩陣乘以它的逆矩陣,計算結果是一個 2×2 的單位矩陣。

這是一份文科生都能看懂的線性代數簡介

能夠利用 NumPy 輕鬆計算出一個矩陣的逆矩陣(若是它可逆的話)。

2.轉置

最後,咱們討論矩陣轉置的性質。這基本上就是將一個矩陣沿着 45 度軸線鏡像翻轉。計算矩陣的轉置很是簡單,原始矩陣的第一列就是轉置後矩陣的第一行,第二列則變成了轉置後矩陣的第二行。一個 m×n 的矩陣僅僅是轉成了 n×m 的矩陣。同時,矩陣 A 的元素 A_ij 等於轉置後矩陣的元素 A_ji。下圖展現了矩陣的轉置:

這是一份文科生都能看懂的線性代數簡介

總結

在這篇文章中,你接觸到了一些機器學習中使用到的線性代數概念。你學會如何對這些對象進行加、減、乘、「除」。另外,你還掌握了矩陣最重要的性質,以及它們爲何能夠幫咱們獲得更有效的計算。在這些知識的基礎上,你還學習了逆矩陣和轉置矩陣的概念,以及能夠如何使用它們。雖然機器學習中還有不少線性代數知識,但這篇文章提供了關於最核心的概念的一些適當介紹。

相關文章
相關標籤/搜索