標籤:

機器學習數學基礎-線性代數

前言

AI(人工智慧)現在火的一塌糊塗,其實在AI領域,機器學習已廣泛應用在搜索引擎、自然語言處理、計算機視覺、生物特徵識別、醫學診斷、證券市場分析等領域,並且機器學習已經是各大互聯網公司的基礎設施,不再是一個新鮮的技術。但當你真的開始學習機器學習的時候,就會發現上手門檻其實還挺高的,這主要是因為機器學習是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、演算法複雜度理論等多門學科。

本文主要介紹一下機器學習涉及到的一些最常用的的數學知識,方便大家在學習機器學習的時候,能掃除一些基礎障礙。

標量(scalar)

標量是一個單獨的數,一般用普通小寫字母或希臘字母表示,如 a,alpha 等。

向量(vector)相關

向量的定義

把數排成一列就是向量,比如:

left[ egin{array}{c} 3 \ 4 \ 6 end{array} 
ight] , left[ egin{array}{c} x_{1} \ x_{2} \ vdots \ x_{n} end{array} 
ight]

向量一般用粗體小寫字母或粗體希臘字母表示,如 	extbf{x} 等(有時候也會用箭頭來標識,如 pmb{vec x} ),其元素記作 x_{i}

向量默認為列向量,行向量需要用列向量的轉置表示,例如 m{x^{T}} 等。

  • 物理專業視角:向量是空間中的箭頭,決定一個向量的是它的長度和方向
  • 計算機專業視角:向量是有序的數字列表
  • 數學專業視角:向量可以是任何東西,只要保證兩個向量相加以及數字與向量相乘是有意義的即可

運算規則

向量的加法和數量乘法定義:

加法 相同維數的向量之間的加法為:

left[ egin{array}{c} x_{1} \ x_{2} \ vdots \ x_{n} end{array} 
ight] + left[ egin{array}{c} y_{1} \ y_{2} \ vdots \ y_{n} end{array} 
ight] = left[ egin{array}{c} x_{1}+y_{1} \ x_{2}+y_{2} \ vdots \ x_{n}+y_{n} end{array} 
ight]

數量乘法 任意的常數 c 和向量的乘法為:

cleft[ egin{array}{c} x_{1} \ x_{2} \ vdots \ x_{n} end{array} 
ight] = left[ egin{array}{c} cx_{1} \ cx_{2} \ vdots \ cx_{n} end{array} 
ight]

在給定數 c,c 及向量 	extbf{x、y} 的情況下

(cc)	extbf{x}=c(c	extbf{x}) \ 1	extbf{x} = 	extbf{x} \ 	extbf{x} + 	extbf{y} = 	extbf{x} +	extbf{y} \ 	extbf{(x+y)+z} = 	extbf{x+(y+z)} \ 	extbf{x+o} = 	extbf{x} \ 	extbf{x+(-x)} = 	extbf{o} \ c	extbf{(x+y)} = c	extbf{x}+c	extbf{y} \ (c+c)	extbf{x} =c	extbf{x}+c	extbf{x}

張成空間

張成空間是向量 vw 全部線性組合構成的向量集合,即:

av+bw ( a,b 在實數範圍內變動)

向量空間的基

向量空間中的一組張成該空間的一個線性無關向量的集合。

只有當以下兩個條件同時滿足時,一組向量 (vec e_{1},...,vec e_{n}) 才能成為基底

  1. (當前空間中的)任意向量 vec v 都可以表示成 vec v = x_{1}vec e_{1}+...+x_{n}vec e_{n} 的形式( x_{1},...,x_{n} 為任意數)
  2. 並且這種表示方法是唯一的

向量空間的維數

空間的維數可以通過基向量的個數來定義

維數 = 基向量的個數 = 坐標的分量數

線性無關

當且僅當 a=b=c=0av+bw+cu=0 成立,則 v,w,u 是線性無關的。

換種表達方式,線性無關是說:其中任意一個向量都不在其他向量張成空間中,也就是對所有的 ab , u=av+bw 均不成立。

線性變換

線性的兩個條件:直線依舊是直線 和 原點保持固定.

線性的嚴格定義:

線性變換保持網格線平行且等距分布,並且保持原點不動。

線性變換由它對空間的基向量的作用完全決定,在二維空間中,基向量就是 ij ,這是因為其他任意向量都成表示為基向量的線性組合,坐標為(x,y)的向量就是x乘以 i 加上y乘以 j ,在線性變換之後,網格線保持平行且等距分布這一性質有個絕妙的推論,向量(x,y)變換之後的結果,將是x乘以變換後的 i 的坐標加上y乘以變換後的 j 的坐標。

向量的點積

點乘,也叫向量的內積、數量積。顧名思義,求下來的結果是一個數。兩個維度相同的向量,點積定義如下:

left[ egin{array}{c} 2 \ 5 \ 1 end{array} 
ight] cdot left[ egin{array}{c} 4 \ 7 \ 5 end{array} 
ight] = 2cdot4+5cdot7+1cdot5

  • 點積和順序無關
  • 兩個向量相互垂直時,點積為0
  • 兩個向量方向相同時,點積為正;相反時,點積為負

向量的叉積

叉乘,也叫向量的外積、向量積。顧名思義,求下來的結果是一個向量。

  • 向量的叉積不滿足交換律

對偶向量

給定一個向量,如果存在這樣一個映射,它把給定的向量映射為一個實數,就說這個映射是對偶向量。例如一個n維行向量(a1,a2...an),它既可以理解為行向量,也可理解為某種映射,該映射把給定的n維列向量(b1,b2...bn)(矢量)映射為實數k,k=a1b1+a2b2+...anbn,即矩陣的乘積。則這個映射滿足對偶向量的定義,因此行向量(a1,a2...an)是對偶(b1,b2...bn)的對偶向量。

矩陣(matrix)相關

矩陣的定義

矩陣是一個二維數組,其中的每一個元素由兩個索引(而非一個)所確定,一般用粗體的大寫字母表示,比如: A = egin{equation} left( egin{array}{ccc} a11 & a12 & a13\ a21 & a22 & a23\ end{array} 
ight) end{equation}

矩陣 A 中的第 i 行第 j 列的值,稱為 A(i,j) 元素;當矩陣行數和列數相同時,稱為方陣

矩陣就是映射,或者說是向量運動的描述。

n 維向量 x 乘以 mast n 矩陣 A ,能得到 m 維向量 y=Ax 。也就是說,指定了矩陣 A ,就確定了從向量到另外一個向量的映射。

兩個矩陣相乘的幾何意義就是兩個線性變換相繼作用。

矩陣運算

加法:

只要兩個矩陣的形狀一樣,就可以把兩個矩陣相加。兩個矩陣相加是指對應位置的元素相加,比如 C=A+B ,其中 C_{i,j}=A_{i,j}+B_{i,j}

乘法:

兩個矩陣 AB 的矩陣乘積是第三個矩陣 C 。為了使乘法可被定義,矩陣A的列數必須和矩陣B的行數相等。如果矩陣 A 的形狀是 mast n ,矩陣 B 的形狀是 nast p ,那麼矩陣 C 的形狀是 mast p 。例如

C=AB

具體地,該乘法操作定義為:

C_{i,j}=sum_{k}^{}{A_{i,k}B_{k,j}}

矩陣乘積服從分配律: A(B+C)=AB+AC

矩陣乘積也服從結合律: A(BC)=(AB)C

矩陣乘積不滿足交換律: AB=BA 的情況並非總是滿足

矩陣乘積的轉置有著簡單的形式: (AB)^T=B^TA^T

矩陣的秩

矩陣的秩,為變換後的空間的維數

核與值域

核:所有經過變換矩陣後變成了零向量的向量組成的集合,通常用Ker(A)來表示。

值域:某個空間中所有向量經過變換矩陣後形成的向量的集合,通常用R(A)來表示。

維數定理

對於 m	imes n 矩陣 A ,有 dim Ker(A) +dim R(A) = n

其中 dim X 表示X的維度。

列空間

矩陣 A 的列空間為所有可能的輸出向量 Av 構成的集合,換句話說,列空間就是矩陣所有的列所張成的空間。

所以更精確的秩的定義是列空間的維數;當秩達到最大值時,意味著秩和列數相等,也即滿秩

零向量

變換後落在原點的向量的集合被稱為矩陣的『零空間』或者『核』。

  • 零向量一定在列空間中
  • 對於一個滿秩變換來說,唯一能在變換後落在原點的就是零向量自身
  • 對於一個非滿秩的矩陣來說,它將空間壓縮到一個更低的維度上,變換後的已給向量落在零向量上,而「零空間」正是這些向量所構成的空間

行列式

線性變換的行列式即線性變換改變面積的比例。

det(M_1M_2) = det(M_1)det(M_2)

  • 檢驗一個矩陣的行列式是否為0,就能了解這個矩陣所代表的變換是否將空間壓縮到更小的維度上
  • 在三維空間下,行列式可以簡單看作這個平行六面體的體積,行列式為0則意味著整個空間被壓縮為零體積的東西,也就是一個平面或者一條直線,或者更極端情況下的一個點
  • 行列式的值可以為負,代表空間定向發生了改變(翻轉);但是行列式的絕對值依然表示區域面積的縮放比例

奇異矩陣

行列式為零的矩陣

特徵值和特徵向量

特徵分解

如果說一個向量 v 是方陣 A 的特徵向量,將一定可以表示成下面的形式:

Av=lambda v

lambda 為特徵向量 v 對應的特徵值。特徵值分解是將一個矩陣分解為如下形式:

A=QSigma Q^{-1}

其中, Q 是這個矩陣 A 的特徵向量組成的矩陣, Sigma 是一個對角矩陣,每一個對角線元素就是一個特徵值,裡面的特徵值是由大到小排列的,這些特徵值所對應的特徵向量就是描述這個矩陣變化方向(從主要的變化到次要的變化排列)。也就是說矩陣A的信息可以由其特徵值和特徵向量表示。

對於矩陣為高維的情況下,那麼這個矩陣就是高維空間下的一個線性變換。可以想像,這個變換也同樣有很多的變換方向,我們通過特徵值分解得到的前N個特徵向量,那麼就對應了這個矩陣最主要的N個變化方向。我們利用這前N個變化方向,就可以近似這個矩陣(變換)。

總結一下,特徵值分解可以得到特徵值與特徵向量,特徵值表示的是這個特徵到底有多重要,而特徵向量表示這個特徵是什麼。不過,特徵值分解也有很多的局限,比如說變換的矩陣必須是方陣。

奇異值分解

特徵值分解是一個提取矩陣特徵很不錯的方法,但是它只是對方陣而言的,在現實的世界中,我們看到的大部分矩陣都不是方陣,比如說有N個學生,每個學生有M科成績,這樣形成的一個N * M的矩陣就不可能是方陣,我們怎樣才能描述這樣普通的矩陣呢的重要特徵呢?奇異值分解可以用來干這個事情,奇異值分解是一個能適用於任意的矩陣的一種分解的方法:

分解形式:

假設A是一個M * N的矩陣,那麼得到的U是一個M * M的方陣(稱為左奇異向量),Σ是一個M * N的矩陣(除了對角線的元素都是0,對角線上的元素稱為奇異值),VT(V的轉置)是一個N * N的矩陣(稱為右奇異向量)。

LU分解

給定矩陣A,將A表示成下三角矩陣L和上三角矩陣U的乘積,稱為LU分解。

轉置矩陣

對於矩陣A,將其行列互換得到的矩陣,稱為A的轉置矩陣,記為 A^{T}

矩陣的轉置是以對角線為軸的鏡像,這條從左上到右下的對角線被稱為主對角線(main diagonal)。

(A^T)_{i,j}=A_{j,i}

單位矩陣

方陣中,如果除了對角線(從左上到右下)上的元素為1,其餘元素都為0,則該矩陣稱為單位矩陣,記為 II_{n} 表示 n 階單位矩陣。

單位矩陣表示的映射是「什麼都不做」的映射。

逆矩陣

A逆乘以A等於一個『什麼都不做』的矩陣。 A^{-1}A = egin{equation} left( egin{array}{ccc} 1 & 0\ 0 & 1 \ end{array} 
ight) end{equation}

  • 一旦找到A逆,就可以在兩步同乘A的逆矩陣來求解向量方程
  • 行列式不為零,則矩陣的逆存在

零矩陣

所有元素都為0的矩陣稱為零矩陣,記為 O

零矩陣表示的映射是將所有的點都映射到原點的映射。

對角矩陣

在方陣中,對角線(從左上到右下)上的值稱為對角元素。

非對角元素全部為0的矩陣稱為對角矩陣。

對角矩陣表示的映射是沿著坐標軸伸縮,其中對角元素就是各坐標軸伸縮的倍率。

張量(tensor)

在某些情況下,我們會討論坐標超過兩維的數組。一般的,一個數組中的元素分布在若干維坐標的規則網路中,我們稱之為張量。

一階張量可以用向量表示,二階張量可以用矩陣表示。

歐氏空間

希爾伯特空間

參考資料

  1. 線性代數的本質
  2. 《程序員的數學3:線性代數》
  3. visualizing-linear-transformations

推薦閱讀:

機器學習筆記
Embedding向量召回在蘑菇街的實踐
機器學習導論——Day1
預告片:《立刻上手機器學習》
從建立清晰的步驟開始——Machine Learning Project Checklist

TAG:機器學習 |