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