首頁>技術>

機器學習的線性代數概念概述

> Photo by Markus Spiske on Unsplash

介紹

透過使用矩陣和向量以及線性代數庫(例如Python中的NumPy),線性代數使我們能夠在使用更簡單的程式碼的同時,以更有效的計算方式執行大量計算。至少了解線性代數的數值運算對於進一步瞭解我們的機器學習模型中發生的事情至關重要。儘管使線性代數後面的幾何直覺在視覺化我們下面將要討論的操作方面非常有用,但並不需要了解大多數機器學習演算法。

矩陣

矩陣是數字的矩形陣列。這些數字包含在方括號中。換句話說,矩陣是由行和列組成的二維陣列。矩陣或矩陣元素中包含的數字可以是來自機器學習問題的資料,例如特徵值。

> matrix

由於矩陣可以是任意數量的行和列,因此我們必須指定該矩陣的維數,即行數x列數。

例如,如果矩陣A具有4行2列,則它是4x2矩陣。另一種說法是:矩陣A是集合R ^(4x2)的元素,集合R ^(4x2)是所有維度為4x2的矩陣的集合。

索引MatrixA矩陣為我們提供了一種快速組織,索引和訪問大量資料的方法。因此,要訪問資料,我們可以在矩陣中新增下標或索引,以指向矩陣中的特定元素或條目。例如,對於矩陣A,其條目或元素可以按如下方式建立索引:

Aij =第i列第j列中的" i,j條目"。

> indexing a matrix

向量

向量是矩陣的特例。向量是隻有一列的矩陣,因此它是nx1矩陣,否則稱為列向量。因此,我們可以將矩陣視為一組列向量或行向量。稍後我們將看到,如果對列向量進行轉置,則會得到行向量或只有1行的向量(1xn矩陣)。

> indexing a vector

如果我們有一個包含四個元素/條目的向量,那麼我們可以說它是一個4x1矩陣或一個4維向量。因此,它是集合R ^(4x1)或R ^的元素,因為它是向量。

索引Vectoryi =第i個元素

一些注意事項:

向量可以是1索引或0索引。換句話說,向量中的第一個條目可以是第0個元素或第1個元素。在大多數程式語言中,例如python,向量將被索引為0。

按照慣例,我們用大寫字母表示矩陣,例如上面的矩陣A,用小寫字母表示向量,例如上面的向量y。如果您熟悉在python中使用scikit-learn,請記住,我們通常將特徵和標籤命名為X特徵和y標籤,因為特徵將在矩陣內,而標籤在列向量內。

矩陣-矩陣加減法

要新增兩個矩陣,我們從每個矩陣中獲取具有相同索引的元素,然後一次將它們相加。這意味著矩陣的維數必須相同。所得矩陣也將具有相同的維數,其每個元素都是來自新增矩陣的相應元素之和。

> matrix-matrix addition

如果我們有矩陣A加上矩陣B,則等於矩陣C:Cij = Aij + Bij

對於矩陣矩陣減法,過程是相同的。我們從第一矩陣中的相應元素中減去第二矩陣的元素。或者,我們可以將其視為矩陣-矩陣加法,在將矩陣相加之前,將所有第二個矩陣元素都乘以-1(請參閱下面的標量乘法)。

標量乘法和除法

標量只是一個實數。我們可以將矩陣乘以標量。這樣做將"縮放"矩陣(或向量),因此稱為"標量",因為我們會將標量乘以矩陣中的每個數字。

注意:寫入標量和矩陣的順序無關緊要。結果將是相同的。

> matrix-scalar multiplication

在標量乘法中,我們只取標量或實數,然後將其乘以矩陣中的每個元素。因此,我們的結果是一個矩陣,其維數與我們乘以標量的矩陣相同。

> matrix-scalar division

當將矩陣除以標量時,我們可以將其視為將矩陣乘以標量的倒數。

矩陣向量乘法

當將矩陣和向量相乘時,我們將向量乘以矩陣中的每一行。結果將是與矩陣具有相同行數的向量。

> matrix-vector multiplication

首先,我們將向量中的數字與矩陣第一行中的相應數字相乘,然後將這些乘積相加。該總和將成為我們所得向量的第一個元素。然後,我們將向量中的數字與矩陣第二行中的數字相乘,將這些乘積相加,總和將成為結果向量中的第二個元素。依此類推…因此,結果向量中的元素將與矩陣中的行一樣多。

> matrix-vector multiplication

如果我們將矩陣A的維度為mxn乘以向量x,則向量x為nx1矩陣(或n維向量),結果將為向量y,即m維向量(或mx1維矩陣))。要獲得yi,請將A的第i行與向量x的元素相乘,然後將它們相加。

矩陣向量乘法的幾何直覺:

讓我們從幾何角度解釋矩陣向量乘法。想象一下,我們有一個向量或空間中的一條線,可以在座標系中對其進行視覺化處理。然後想象一下,根據矩陣內部的資訊,矩陣會更改或變換此空間。線上性代數中,這些變換是線性變換,因為它們遵循一些規則。矩陣向量乘法基本上是吸收原始向量,然後根據矩陣決定的新空間吐出新向量。

因此,可以將矩陣視為函式(變換空間),將我們乘以該矩陣的向量視為初始向量(或輸入),並將結果向量(作為該結果的變化向量)空間的線性變換),就是輸出。

矩陣-矩陣乘法

為了將兩個矩陣相乘,我們可以將其視為單獨的矩陣向量乘法。換句話說,我們將從第二個矩陣中刪除列向量,並將這些列向量與第一個矩陣進行矩陣向量相乘。然後,我們將這些結果列向量放到一個矩陣中,這將是結果。因此,為了將兩個矩陣相乘,則第一矩陣的列數必須等於第二矩陣的行數。

> matrix-matrix multiplication

如果我們有尺寸為mxn的矩陣A,並將其乘以尺寸為nxo的矩陣B,則所得矩陣將為尺寸為mxo:

> matrix-matrix multiplication

矩陣C的第i列是透過將A乘以B的第i列獲得的(對於i = 1,2,…,o)。在矩陣向量乘法中,由於向量只有1列,所以o值為1。

矩陣-矩陣乘法的幾何直覺:

我們可以將矩陣矩陣乘法視為兩個(或多個)空間線性變換,一個接一個地應用。這些線性變換按特定順序應用:從右到左。換句話說,如果我們具有AxBxC的矩陣-矩陣乘法,則首先發生在矩陣C中編碼的線性變換,然後是矩陣B,然後是矩陣A,類似於函式的組合:h(g(f(x)))。此矩陣與矩陣相乘所得的矩陣稱為複合矩陣,因為應用此複合矩陣中編碼的線性變換將導致與應用C,B,然後A的線性變換相同的淨線性變換。

矩陣乘法屬性

為了解釋這些屬性,我們首先將其與實數(標量)相關聯。

可交換的

對於實數,乘法是可交換的。順序無關緊要。換句話說,2 x 5 = 5 x 2。

相反,矩陣乘法通常不是可交換的。因此,通常,對於矩陣A和B:A x B不等於B xA。

如果您閱讀上面的矩陣-矩陣乘法的幾何直覺,那麼這應該是有道理的。如果我們先應用B的線性變換,然後應用A,則空間的最終淨線性變換將與先應用A,然後應用B的結果不同。

聯想的

對於實數,乘法是關聯的。換句話說,無論數字如何分組,我們都可以相乘。例如,如果我們有2x5x4,我們可以先將2和5相乘,然後將結果乘以4,或者可以先將5和4相乘,然後再將結果乘以2。這兩種方法的答案都是相同的。

(2x5)x4 = 2x(5x4)

矩陣乘法也是關聯的。換句話說,如果我們有矩陣A,B和C,則:

Ax(BxC)=(AxB)xC

同樣,使用矩陣矩陣乘法的幾何直覺,這應該是有道理的。由於在這兩種情況下,我們都應用了從右到左的線性變換。

分配式

對於實數和矩陣,乘法都是分散式的。換句話說,對於實數:2(5 + 4)= 2 * 5 + 2 * 4。對於矩陣A,B和C:A(B + C)= A * B + A * C。

身份矩陣

處理實數時,1是要乘的恆等式。換句話說,對於任何實數z,數字1乘以z將等於z乘以1,即等於z。因此,身份屬性1意味著任何實數z乘以1等於z,從而允許z保留其身份。

> multiplicative identity

我們也有身份矩陣。換句話說,對於任何矩陣A,都會有一個單位矩陣I,當與矩陣A相乘時,等於矩陣A。

AI = IS = A

身份矩陣是平方矩陣,這意味著行數等於列數。單位矩陣用I表示,有時用Inxn表示,其中nxn是單位矩陣的維數。對於維數為mxn的矩陣,其單位矩陣為維數nxn,這應該是有意義的,因為對於要相乘的矩陣,第一個矩陣的列數必須等於第二個矩陣的行數。

身份矩陣的示例:

> identity matrices

正如我們在上面看到的,身份矩陣(n = 1時除外),對角線為1,其他所有位置為零。

如前所述,通常,矩陣乘法不是可交換的,除非它是一個矩陣乘以其單位矩陣。

注意:由於A是一個mxn矩陣,因此左側的單位矩陣的維數為nxn,但是在中間,單位矩陣的維數為mxm,這是因為矩陣A在矩陣矩陣乘法中位於第一位。

使用幾何直覺,我們可以認為單位矩陣不會引起線性變換。因此,順序無關緊要,因為在任何情況下(A * I或I * A),結果都是在矩陣A中編碼的線性變換。

矩陣求逆和矩陣轉置運算

我們應該熟悉兩個矩陣特殊運算:矩陣逆運算和矩陣轉置。

逆矩陣

現在我們知道,數字1是實數空間中的標識,因為任何實數的1倍等於其自身。數字也可以有反數。一個數字乘以其倒數等於其標識。

> number times its inverse equals 1

例如:2乘2 ^ -1等於1。請記住2 ^ -1只是1/2。所以2乘以1/2就是1。因此,2的倒數是1/2,並且其標識是數字1。

但是請記住,並非每個數字都有一個倒數。例如,數字0沒有逆數,因為0 ^ -1或1/0是未定義的(不能除以零)。

> a matrix times its inverse equals its identity matrix

矩陣也可以具有逆。如果矩陣A是一個mxm矩陣(意味著它是一個方矩陣,#rows =#columns),則它可能具有逆函式。就像實數一樣,我們將矩陣提高到-1的冪來表示逆。一個矩陣乘以它的逆等於它的單位矩陣。

注意:沒有逆矩陣或不可逆矩陣稱為奇異矩陣或簡併矩陣。

為什麼矩陣逆很重要?

假設我們有一個矩陣矩陣乘法:A * B = C,我們知道A和C的值,但不知道B的值。如果它們是實數,則將方程的兩邊除以A來求解B.但是,我們不能對矩陣進行除法。因此,我們可以將等式的兩邊乘以1 / A(A ^ -1),這是矩陣A的逆。這樣,我們得出以下結果:

A * B = C(A ^ -1)A * B =(A ^ -1)CIB =(A ^ -1)CB =(A ^ -1)C

矩陣轉置

對矩陣進行轉置意味著該矩陣的行成為列。因此,矩陣A的第一行成為A ^ T的第一列(矩陣A的轉置),矩陣A的第二行成為A ^ T的第二列。因此,如果矩陣A為mxn矩陣,則其轉置或A ^ T為nxm矩陣。

> matrix transpose

我們可以想象在矩陣A上繪製45度軸,然後沿該軸旋轉(或翻轉)矩陣A以獲得轉置。

以列向量的轉置給我們一個行向量:

> column and row vectors

結論

在本教程中,我們學習了標量,向量和矩陣。我們瞭解了矩陣是如何僅由行和列組成的二維陣列,而向量只是矩陣的一種特殊情況,因為它們只有一列。我們學習瞭如何執行某些數值運算的機制,例如矩陣-矩陣加法和減法,標量乘法和除法,矩陣-向量乘法和矩陣-矩陣乘法。此外,我們瞭解到,就像本身是任何實數的1倍一樣,我們瞭解到矩陣乘以其單位矩陣也是其自身。我們還了解到,矩陣乘以其逆就是其恆等矩陣。然後,我們看到了如何對矩陣進行轉置,並認為列向量的轉置是行向量。最後,我們對其中一些數字運算的幾何直覺有了非常簡要的瞭解。

參考文獻

吳恩達的Coursera機器學習課程

3Blue1Brown線性代數的本質

28
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 詳解Facebook開源專案BOLT:一把效能最佳化利器