深度學習中的線性代數1:基本概念和矩陣乘法

此專欄文章隨時更新編輯,如果你看到的文章還沒寫完,那麼多半是作者正在更新或者上一次沒有更新完,請耐心等待,正常的頻率是每天更新一篇文章。

該文章是「機器學習中的線性代數系列」文章的第一部分,首發於知乎的專欄「深度學習+自然語言處理(NLP)」。

該系列文章之所以放在「深度學習+自然語言處理(NLP)」里是因為,線性代數是學習和使用深度學習的重要數學基礎,所謂「基礎不牢,地動天搖」,所以這個系列文章作為專欄的一部分,幫助大家打好數學基礎。

以下是全部系列文章的鏈接地址:

機器學習中的線性代數系列(一):基本概念表達和矩陣乘法

機器學習中的線性代數系列(二):矩陣的操作和性質

機器學習中的線性代數系列(三):矩陣微積分

也歡迎關注專欄:「深度學習+自然語言處理(NLP)」

====================================================================

1. 基本概念和表達

線性代數提供了一種簡潔的表示和操作線性方程組的方式。

例如,我們考慮以下方程組:

4x_1-5x_2 = -13

-2x_1+3x_2 = 9

該方程組有兩個變數 x_1x_2 ,兩個方程式,我們知道該方程組有唯一解。

如果用矩陣形式表達的話,上述方程組可以表示為:

Ax=b

其中

A=egin{bmatrix} 4 & -5 \ -2 & 3end{bmatrix} b=egin{bmatrix} -13 \9end{bmatrix}

將線性方程組表示為矩陣形式,對於分析和解決問題有很多好處。

1.1 基本表示方法

矩陣A

一般,我們用 A in R^{m 	imes n} 來表示矩陣A,其中m代表行數,n代表列數。

向量x

向量x表示為 x in R^n , n代表向量的維度,我們也可以把n維向量看做n 	imes 1 的矩陣。

一般來說, 1 	imes n 維的行向量表示為 x^T ,這裡T表示矩陣的轉置(後面會講矩陣的轉置),或者想像為行和列的調換。

向量x的元素

x_i 代表向量x的第i個元素。

矩陣A的元素

a_{ij} 或者 A_{ij} 或者 A_{i,j} 來表示矩陣A中第i行第j列的元素。

矩陣A的第j列

a_j 或者 A_{:,j} 表示。

A = egin{bmatrix}| & | & & | \ a_1 & a_2 & dots & a_n \| & | & & | end{bmatrix}

矩陣A的第i行

a^T_i 或者 A_{i,:} 表示。

A = egin{bmatrix}— & a_1^T &— \ — & a_2^T &— \ & vdots &\— & a_m^T &—end{bmatrix}

2. 矩陣乘法( Matrix Multiplication)

為什麼只有矩陣乘法?

矩陣的加減法比較簡單,對應元素加減即可,這裡就不再贅述,但是矩陣的乘法比較複雜,而且在機器學習中也比較重要,所以是這篇文章的重點。

2.1 向量-向量相乘( Vector-Vector Products)

向量內積(inner product or dot product),就是一個行向量乘一個列向量(兩個向量維度相同), 表示為 x^Ty ,結果是一個實數。

例如對於 x,y in R^n 來說,內積如下:

x^Ty in R = egin{bmatrix}x_1& x_2 & dots & x_n end{bmatrix} egin{bmatrix}y_1\ y_2 \ vdots \ y_n end{bmatrix} = sum_{i=1}^{n}{x_iy_i}

向量外積( outer product ),就是一個列向量乘一個行向量(注意與內積的順序不同,且兩個向量不一定維度相同),表示為 xy^T ,外積的結果是一個矩陣。

例如對於 x in R^my in R^n 來說,外積如下:

xy^T in R^{m 	imes n} = egin{bmatrix} x_1 \ x_2 \ vdots \ x_m end{bmatrix} egin{bmatrix} y_1 & y_2 & dots & y_n end{bmatrix} = egin{bmatrix} x_1y_1 & x_1y_2 & dots & x_1y_n \ x_2y_1 & x_2y_2 & dots & x_2y_n \ vdots & vdots & dots & vdots \ x_my_1 & x_my_2 & dots & x_my_nend{bmatrix}

向量外積有什麼用處?

其中一個好處是,可以用來簡潔的表示一個由相同的列向量組成的矩陣。下面是例子:

我們引入行向量 1 in R^n ,代表一個元素全是1的n維向量。 A in R^{m 	imes n} 代表一個由相同列向量 x in R^m 組成的矩陣。利用外積,我們可以簡潔的表示矩陣A如下:

A = egin{bmatrix}| & | & & | \x & x& dots & x \ | & | &&|end{bmatrix}= egin{bmatrix}x_1& x_1 & dots & x_1 \x_2& x_2 & dots & x_2 \vdots& vdots & ddots & vdots\x_m& x_m & dots & x_mend{bmatrix}= egin{bmatrix}x_1\x_2\vdots \x_mend{bmatrix}egin{bmatrix}1 & 1& dots&1end{bmatrix}=x1^T

2.2 矩陣-向量相乘(Matrix-Vector Products)

矩陣右乘一個列向量

首先我們有 A in R^{m	imes n}x in R^n那麼,矩陣右乘一個列向量可以表示為 y = Ax in R^m

這裡有兩種方式看待矩陣右乘一個列向量:一、將矩陣A看成由行向量組成。二、將矩陣A看成由列向量組成。下面分別說一下這兩種方式。

一、將矩陣A看成由行向量組成

那麼y的第i行 y_i 可以看成A的第i行和x的內積 y_i = a^T_ix 。(這部分可以自行推導作為練習)

二、將矩陣A看成由列向量組成

那麼y可以看成是A的列向量和x對應元素的線性組合(linear combination),如下

矩陣左乘一個行向量

現在我們聊聊矩陣左乘一個行向量,表示為 y^T = x^TA .

同樣,我們將矩陣A看成列向量的組合和行向量的組合兩種方式,那麼

一、將矩陣A看成由列向量組成

那麼 y^T 的第i列可以看成A的第i列和x的內積 。

二、將矩陣A看成由行向量組成

那麼 y^T 可以看車A的行和x對應元素的線性組合,其中線性組合的參數是x的對應元素。如下:

2.3 矩陣-矩陣相乘( Matrix-Matrix Products)

我們同樣可以以4種方式看待矩陣-矩陣相乘:

一、A矩陣的第i行和B矩陣的第j列的內積

二、A矩陣的第i列和B矩陣的第i行的外積

三、C矩陣的第i列是A矩陣右乘B矩陣的第i列

四、C矩陣的第i行是B矩陣左乘A矩陣的第i行

最後,我們討論一下矩陣乘法的性質:

  1. 交換律:(AB)C = A(BC)
  2. 分配律: A(B+C) = AB + AC
  3. !!!不滿足交換律: AB 
e BA (因為交換後可能矩陣的維度都不滿足矩陣相乘的定義)

推薦閱讀:

設A,B為n階方陣,且AB-BA=A,證明|A|=0 ?
det(AB)=det(A)det(B)有簡單證法嗎?
掰開揉碎推導Normal Equation
為什麼線代這麼有趣?
線性代數的直覺理解(1)

TAG:线性代数 | 矩阵运算 | 深度学习DeepLearning |