machit r语言_机器学习应该准备哪些数学预备知识?
如果想理解機器學(xué)習(xí)理論,特別是深度學(xué)習(xí),掌握線性代數(shù)中的概念知識非常重要。有了牢固的數(shù)學(xué)基礎(chǔ),能讓你更好更直觀的理解算法背后的原理。所以如果想在機器學(xué)習(xí)領(lǐng)域有所建樹,學(xué)習(xí)數(shù)學(xué)知識是躲不掉的。機器學(xué)習(xí)專家 Niklas Donges 特地為大家整理出了機器學(xué)習(xí)領(lǐng)域用到的最重要的線性代數(shù)概念,集智分享過來。
引言
線性代數(shù)是我們理解機器學(xué)習(xí)背后原理的重要基礎(chǔ)知識,尤其是使用深度學(xué)習(xí)算法時。在實踐機器學(xué)習(xí)項目過程中,熟悉相關(guān)的線性代數(shù)知識會幫你更好的理解算法是如何工作的,從而幫你做出更好的決定。在線性代數(shù)中,數(shù)據(jù)通過線性等式來表示,線性等式又表示為矩陣和向量的形式。所以,你更多的是跟矩陣和向量打交道,而不是標(biāo)量。一旦獲取了合適的程序庫,比如 Numpy,你就能很容易地執(zhí)行復(fù)雜的矩陣運算,只需幾行代碼。
注:本文忽略了哪些對機器學(xué)習(xí)不重要的線性代數(shù)概念。
數(shù)學(xué)對象
標(biāo)量
標(biāo)量就是一個單獨的數(shù)字,比如24。
向量
向量是一個有序的數(shù)字?jǐn)?shù)組,可以是一行,也可以是一列。一個向量只有一個索引,可以指向向量內(nèi)的某個具體值。例如,V2表示向量內(nèi)的第二個值,在上圖中就是-8。
矩陣
矩陣是一個有序的2D數(shù)字?jǐn)?shù)組,有兩個索引。第一個索引指向矩陣中的行,第二個索引指向矩陣中的列。例如,M23表示位于第2行、第3列的值,在上面第一張圖中就是8。矩陣可以有多個行和列值。注意,向量也是矩陣的一種,只是只有一行或一列。
上面第一張圖中所示的矩陣,同時也是一個2*3維的矩陣(行數(shù)x列數(shù))。關(guān)于這一點,下面是另一個矩陣示例:
張量
張量也是一個由數(shù)字組成的數(shù)組,排列為一個有規(guī)則的網(wǎng)格,有數(shù)量不定的軸(axis)。張量有3個索引,第一個指向張量的行,第二個指向列,第三個指向軸。比如,T232指向張量的第2列、第3行和第2軸,在下圖右側(cè)的張量中就表示0這個值。
在上面這些概念中,張量是最大的概念,因為張量是一個多維數(shù)組,根據(jù)它所擁有的索引數(shù),它還可以是向量或矩陣。比如,一個一階張量就是一個向量(只有1個索引);一個二階張量就是一個矩陣(有2個索引);三階張量(3個索引)或更高階的張量就被稱為高階張量(有3個以上的索引)。
我們以一張圖表示這4個概念:
關(guān)于這幾個概念,集智在此前的回答中曾簡單介紹過:
計算規(guī)則
矩陣-標(biāo)量運算
如果你將一個標(biāo)量和一個矩陣進行加減乘除運算,你是在和矩陣中的每個元素進行運算。下面這張圖很好地演示了兩者的相乘運算:
矩陣-向量相乘
將一個矩陣乘以一個向量,可以看作將矩陣的每一行乘以向量的每一列。計算結(jié)果會是一個和矩陣有相同行數(shù)的向量。下圖展示了計算過程:
為了幫大家更好地理解這個概念,我們詳細(xì)解讀第二張圖的計算。
要想得到結(jié)果向量(16)的第一個值,我們?nèi)∮迷撓蛄恐行枰途仃?1和5)相乘的值,將它們和矩陣(1和3)的第一行的數(shù)字相乘。過程會如下所示:
1*1 + 3*5 = 16
我們對矩陣第二行中的值執(zhí)行同樣的操作:
4*1 + 0*5 = 4
然后是第三行:
2*1 + 1*5 = 7
這里是另一個例子:
可以將其總結(jié)為一張速查表:
矩陣-矩陣相加和相減
矩陣之間加減比較簡單直觀,不過要求矩陣有相同的維度,計算結(jié)果是一個有相同維度的矩陣。只需將第一個矩陣的每個值和第二個矩陣中對應(yīng)的值相加減即可,如下所示:
矩陣-矩陣相乘
如果你掌握了讓矩陣和向量相乘,那么兩個矩陣相乘就不是很難了。注意,如果第一個矩陣的列數(shù)和第二個矩陣的行數(shù)相等,你只能將矩陣相乘。其結(jié)果也會是一個矩陣,行數(shù)和第一個矩陣的行數(shù)相同,列數(shù)和第二個矩陣的列數(shù)相同。工作方式如下:
我們就是將第二個矩陣拆分成了幾個列向量,并將每個向量分別和第一個矩陣相乘。然后將結(jié)果放在新矩陣中(不把它們相加!)。過程如下圖所示:
這里我們同樣把這個運算進行總結(jié):
矩陣乘法的特點
矩陣乘法有幾個特點,我們下面逐個討論它們,首先借助標(biāo)量解釋它們的概念,然后再用矩陣解釋它們,這樣能讓你更好地理解整個過程。
不滿足乘法交換律
標(biāo)量乘法是可交換的,但矩陣乘法不可以。意思就是說,我們讓兩個標(biāo)量相乘時,比如7*3,它和3*7是一樣的。但是如果我們將一個矩陣乘以另一個矩陣,比如A*B,它和B*A是不一樣的。
滿足乘法結(jié)合律
標(biāo)量乘法和矩陣乘法都滿足乘法結(jié)合律。比如標(biāo)量相乘3(5*3)等于(3*5)3,矩陣相乘A(B*C)等于(A*B)C。
滿足乘法分配律
標(biāo)量乘法和矩陣乘法都滿足乘法分配律,比如標(biāo)量相乘3(5 + 3)等于3*5 + 3*3,矩陣相乘A(B+C)等于A*B + A*C。
單位矩陣
單位矩陣(identify matrix)是一種特別的矩陣,但是首先我們需要定義什么是單位(identity)。
數(shù)字1是一個單位,因為不管什么乘以1都等于它自己。所以每個矩陣乘以一個單位矩陣都等于它自己。例如,矩陣A乘以它的單位矩陣,結(jié)果還是等于A。
你可以這么理解單位矩陣,它的對角線上的值都是1,其它值則是0。它同時還是個“方陣”,意思是它的行數(shù)等于列數(shù)。
我們前面說過,矩陣乘法是不滿足交換律的,但是也有一個例外情況,即我們將一個矩陣乘以一個單位矩陣時。所以,這種情況下,以下等式是成立的:
A*I = I*A = A
矩陣倒式和矩陣轉(zhuǎn)置
矩陣倒式(Matrix inverse)與矩陣轉(zhuǎn)置(Matrix transpose)是兩個很特別的矩陣特點。我們還是先討論兩者和數(shù)字是如何相關(guān)聯(lián)的,然后再說說它們和矩陣的關(guān)系。
矩陣倒式
首先,什么是倒式?一個數(shù)字乘以它自己的倒式等于1。注意,除了0以外的每個數(shù)字都有倒式。如果你將一個矩陣乘以它的倒式,結(jié)果就是它的單位矩陣。下面的例子展示了標(biāo)量的倒式:
但并非每個矩陣都有倒式。如果一個矩陣是一個“方陣”且有倒式,就能計算它的倒式。哪些矩陣有倒式暫不在本文討論范圍內(nèi)。
我們?yōu)楹涡枰故?#xff1f;因為我們無法除以矩陣。并不存在矩陣相除的概念,但是我們可以將一個矩陣乘以倒式,其結(jié)果本質(zhì)上是一樣的。
下圖展示了一個矩陣乘以其倒式,結(jié)果會是一個2*2的單位矩陣。
矩陣轉(zhuǎn)置
最后,我們談?wù)劸仃囖D(zhuǎn)置。它基本上就是一個矩陣的鏡像,有一個45度的軸。獲得一個矩陣的轉(zhuǎn)置還是比較簡單的。矩陣的第一列就是矩陣轉(zhuǎn)置的第一行,第二列就是轉(zhuǎn)置的第二行,以此類推。一個m*n矩陣經(jīng)過轉(zhuǎn)置后就是一個n*m矩陣。另外,矩陣A的Aij元素等于Aji(轉(zhuǎn)置)元素。如下圖所示:
總結(jié)
本文我們講解了應(yīng)用于機器學(xué)習(xí)中的重要的線性代數(shù)概念,以及這些數(shù)學(xué)對象的加減乘除運算。另外,我們還討論了矩陣乘法的幾點特性,能讓我們更高效的計算。最后我們談到了矩陣倒式和矩陣轉(zhuǎn)換。當(dāng)然,應(yīng)用在機器學(xué)習(xí)中的線性代數(shù)知識不止如此,本文只是幫大家入門理解其中一些最重要的概念。
后面我們會分享面向機器學(xué)習(xí)的數(shù)學(xué)學(xué)習(xí)建議,歡迎關(guān)注我們。
可能還對你有用:深度學(xué)習(xí)所需的線性代數(shù) - 集智課堂?jizhi.im概率論與數(shù)理統(tǒng)計 - 集智課堂?jizhi.im
總結(jié)
以上是生活随笔為你收集整理的machit r语言_机器学习应该准备哪些数学预备知识?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: crt上传数据_用SecureCRT来上
- 下一篇: mano安全_爱立信:O-RAN存在的安