【導(dǎo)讀】近日,機(jī)器學(xué)習(xí)專業(yè)學(xué)生 Niklas Donges 撰寫了一篇關(guān)于深度學(xué)習(xí)需要的數(shù)學(xué)基礎(chǔ)相關(guān)知識(shí)。線性代數(shù)對于理解機(jī)器學(xué)習(xí)和深度學(xué)習(xí)內(nèi)部原理至關(guān)重要,這篇博文主要介紹了線性代數(shù)的基本概念,包括標(biāo)量、向量、矩陣、張量,以及常見的矩陣運(yùn)算。本文從一個(gè)直觀、相對簡單的角度講解了線性代數(shù)中的概念和基礎(chǔ)操作,即使您沒有相關(guān)的基礎(chǔ)知識(shí),相信也很容易理解。 編譯 | 專知 參與 | Yingying 深度學(xué)習(xí)中的線性代數(shù)
學(xué)習(xí)線性代數(shù)對理解機(jī)器學(xué)習(xí)背后的理論至關(guān)重要,特別是對于深度學(xué)習(xí)。 它讓您更直觀地了解算法是如何工作的,從而使您能夠做出更好的決策。 本文將介紹用于機(jī)器學(xué)習(xí)的一些線性代數(shù)概念。 ▌簡介 線性代數(shù)是一種連續(xù)的數(shù)學(xué)形式,它在整個(gè)科學(xué)和工程中被廣泛應(yīng)用,因?yàn)樗试S對自然現(xiàn)象進(jìn)行建模并高效計(jì)算。線性代數(shù)也是幾乎所有數(shù)學(xué)領(lǐng)域的核心。它是理解機(jī)器學(xué)習(xí)背后理論的關(guān)鍵,尤其是深度學(xué)習(xí)。在開始使用機(jī)器學(xué)習(xí)之前,您不需要了解線性代數(shù),但是在某些時(shí)候,您需要更好地理解不同機(jī)器學(xué)習(xí)算法的工作原理。這將有助于您在機(jī)器學(xué)習(xí)系統(tǒng)的開發(fā)過程中做出更好的決策。所以,如果你真的想成為這個(gè)領(lǐng)域的專家,你必須理解線性代數(shù)。在線性代數(shù)中,數(shù)據(jù)由矩陣和向量的形式的線性方程表示。因此,你主要處理的是矩陣和向量,而不是標(biāo)量(我們將在下一節(jié)介紹這些術(shù)語)。如果您使用像Numpy這樣的庫,則只需幾行代碼即可輕松計(jì)算復(fù)雜的矩陣乘法。請注意,這篇博文忽略了對機(jī)器學(xué)習(xí)不重要的線性代數(shù)的概念。 ▌數(shù)學(xué)對象(Mathematical Objects)
標(biāo)量只是一個(gè)單一的數(shù)字。 例如24。
向量是一個(gè)有序的數(shù)字?jǐn)?shù)組,可以在一行或一列中。 向量只有一個(gè)索引,可以指向矢量中的特定值。 例如,V2代表向量中的第二個(gè)值,在上面的黃色圖片中為“-8”。 ▌矩陣(Matrix)
矩陣是一個(gè)有序的二維數(shù)組,它有兩個(gè)索引。 第一個(gè)指向行,第二個(gè)指向列。 例如,M23表示第二行和第三列中的值,在上面的黃色圖片中為“8”。 矩陣可以有多個(gè)行和列。 請注意,向量也是一個(gè)矩陣,但只有一行或一列。 在黃色圖片的例子中的矩陣也是2×3維的矩陣(行*列)。 下面你可以看到矩陣的另一個(gè)例子及其符號:
張量是一組數(shù)字,排列在一個(gè)規(guī)則的網(wǎng)格上,具有不同數(shù)量的軸。 張量有三個(gè)指標(biāo),第一個(gè)指向行,第二個(gè)指向列,第三個(gè)指向軸。 例如,V232指向第二行,第三列和第二個(gè)軸。 這在下圖最右邊張量中的值為0: 這是上述所有概念中最通用的術(shù)語,因?yàn)閺埩渴且粋€(gè)多維數(shù)組,它可以是一個(gè)矢量和一個(gè)矩陣,它取決于它所具有的索引數(shù)量。 例如,一階張量將是一個(gè)向量(1個(gè)索引)。 二階張量是矩陣(2個(gè)指數(shù))和三階張量(3個(gè)指數(shù)),更高的稱為高階張量(超過3個(gè)指數(shù))。 ▌計(jì)算規(guī)則(Computational Rules)
如果在矩陣基礎(chǔ)上乘除或者加一個(gè)變量,就代表對矩陣的每一個(gè)元素進(jìn)行數(shù)學(xué)運(yùn)算。 下圖顯示了的乘法例子:
將矩陣與矢量相乘可以被認(rèn)為是將矩陣的每一行與矢量的列相乘。 輸出將是一個(gè)具有與矩陣相同行數(shù)的向量。 下圖顯示了這是如何工作的: 為了更好地理解這個(gè)概念,我們計(jì)算第二個(gè)圖像。 為了得到結(jié)果向量的第一個(gè)值(16),我們將我們想要與矩陣(1和5)相乘的向量的數(shù)字乘以矩陣的第一行的數(shù)字(1和3))。 像這樣: 1 * 1 + 3 * 5 = 16 我們對矩陣的第二行中的值也做同樣的操作: 4 * 1 + 0 * 5 = 4 再次計(jì)算矩陣的第三行: 2 * 1 + 1 * 5 = 7 這是另一個(gè)例子: 下圖是一個(gè)總結(jié):
矩陣與矩陣加法和減法相當(dāng)簡單直接。 要求是矩陣具有相同的尺寸,并且結(jié)果將是具有相同尺寸的矩陣。 您只需在第一個(gè)矩陣中添加或減去第二個(gè)矩陣的每個(gè)值進(jìn)行元素級的運(yùn)算。如下圖所示:
如果你知道如何將一個(gè)矩陣乘以一個(gè)向量,那么將兩個(gè)矩陣相乘并不困難。 請注意,如果第一個(gè)矩陣列的數(shù)量與第二個(gè)矩陣行的數(shù)量匹配,兩個(gè)矩陣才能做乘法運(yùn)算。 結(jié)果將是一個(gè)與第一個(gè)矩陣相同行數(shù)和與第二個(gè)矩陣相同列數(shù)的矩陣。 它的計(jì)算方法如下: 將第二個(gè)矩陣拆分為列向量,然后將第一個(gè)矩陣分別與這些向量中的每一個(gè)相乘。 然后你把結(jié)果放在一個(gè)新的矩陣中。 下面的圖片逐步解釋了這一點(diǎn): 下圖進(jìn)行總結(jié): ▌矩陣乘法屬性(Matrix Multiplication Properties)
矩陣乘法有幾個(gè)屬性,我們將在下面逐一討論。為了更好地理解我們將首先用標(biāo)量來解釋這些概念,然后再運(yùn)用于矩陣。
標(biāo)量乘法是可交換的,但矩陣乘法不行。這意味著當(dāng)我們乘以標(biāo)量時(shí),7 * 3與3 * 7相同。但是當(dāng)我們將矩陣彼此相乘時(shí),A * B與B * A不一樣。
標(biāo)量和矩陣乘法都有結(jié)合律。這意味著標(biāo)量乘3(5 * 3)與(3 * 5)3相同并且矩陣乘A(B * C)與(A * B)C相同。
標(biāo)量和矩陣乘法也是滿足分配律。這意味著3(5 + 3)與3 * 5 + 3 * 3相同,并且A(B + C)與A * B + A * C相同。
單位矩陣是一種特殊的矩陣,但首先,我們需要定義什么是單位。數(shù)字1是一個(gè)單位,因?yàn)槟闩c1相乘的所有東西都等于它自己。因此,與單位矩陣相乘的每個(gè)矩陣都等于它自己。例如,矩陣A乘以其單位矩陣等于A。 您可以通過以下事實(shí)來發(fā)現(xiàn)單位矩陣:它沿對角線為1,其他每個(gè)值都為零。它也是一個(gè)“方陣”,意思是它的行數(shù)與列數(shù)相同。 我們之前討論過矩陣乘法不是可交換的,但是有一個(gè)例外,即如果我們將矩陣乘以單位矩陣。 因此,以下等式成立:A * I = I * A = A ▌反轉(zhuǎn)和轉(zhuǎn)置 (Inverse and Transpose)
矩陣逆和矩陣轉(zhuǎn)置是兩種特殊的矩陣屬性。 再次,我們將首先討論這些屬性如何與實(shí)數(shù)相關(guān),然后討論它們與矩陣的關(guān)系。
首先,什么是矩陣的逆? 乘以其倒數(shù)的數(shù)字等于1.請注意,除0以外的每個(gè)數(shù)字都有倒數(shù)。 如果你將矩陣乘以它的逆,結(jié)果將是它的單位矩陣。 下面的例子展示了標(biāo)量的逆: 但不是每個(gè)矩陣都有逆矩陣。 如果矩陣是“方陣”并且它可以具有逆矩陣,則可以計(jì)算矩陣的逆矩陣。 討論哪些矩陣具有逆的情況超出了本文的范圍。 為什么我們需要一個(gè)逆? 因?yàn)槲覀儾荒艹跃仃嚒?沒有矩陣除法的概念,但我們可以通過逆矩陣乘以矩陣,產(chǎn)生相同的結(jié)果。 下圖顯示了一個(gè)矩陣,它乘以自己的逆矩陣,得到一個(gè)2乘2的單位矩陣。 您可以使用Numpy輕松計(jì)算矩陣的逆(如果可以的話)。 下面是文檔鏈接: https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.linalg.inv.html
最后,我們將討論矩陣轉(zhuǎn)置。 這基本上是沿著45度軸線的矩陣的鏡像。 獲得矩陣的轉(zhuǎn)置相當(dāng)簡單。 它的第一列僅僅是移調(diào)矩陣的第一行,第二列變成了矩陣移調(diào)的第二行。 一個(gè)m * n矩陣被簡單地轉(zhuǎn)換成一個(gè)n * m矩陣。 另外,A的Aij元素等于Aji(轉(zhuǎn)置)元素。 下圖說明: ▌總結(jié) 在這篇文章中,您了解了機(jī)器學(xué)習(xí)中使用的線性代數(shù)的數(shù)學(xué)對象。 你還學(xué)會(huì)了如何對這些數(shù)學(xué)對象進(jìn)行乘,除,加和減操作。 此外,您已經(jīng)了解了矩陣的最重要屬性,以及為什么它們使我們能夠進(jìn)行更高效的計(jì)算。 最重要的是,你已經(jīng)學(xué)會(huì)了什么是逆矩陣和轉(zhuǎn)置矩陣,你可以用它做什么。 雖然在機(jī)器學(xué)習(xí)中也使用了線性代數(shù)的其他部分,但這篇文章給了你一個(gè)最重要概念的正確介紹。 參考文獻(xiàn) Deep Learning (book)?—?Ian Goodfellow, Joshua Bengio, Aaron Courville https:///linear-algebra-machine-learning/
Andrew Ng’s Machine Learning course on Coursera https://en./wiki/Linear_algebra https://www./algebra/scalar-vector-matrix.html https://www./articles/scalars-vectors-matrices-and-tensors-linear-algebra-for-deep-learning-part-1 https://www./understanding-scalar-vector-quantities/ 原文鏈接: https:///5-types-of-regression-and-their-properties-c5e1fa12d55e |
|