深度學習/機器學習入門基礎數學知識整理(一):線性代數基礎,矩陣,範數等
前面大概有2年時間,利用業餘時間斷斷續續寫了一個機器學習方法系列,和深度學習方法系列,還有一個三十分鐘理解系列(一些趣味知識);新的一年開始了,今年給自己定的學習目標——以補齊基礎理論為重點,研究一些基礎課題;同時逐步繼續寫上述三個系列的文章。
最近越來越多的研究工作聚焦研究多層神經網路的原理,本質,我相信深度學習並不是無法掌控的“鍊金術”,而是真真實實有理論保證的理論體系;
本篇打算摘錄整理一些最最基本的資料知識,包括線性代數,矩陣求導,凸函式等,一方面便於自己平時查用,一方面也給讀者想入門的有一個初步的介紹。
1.線性代數
線性代數作為數學中的一個重要的分支,我感覺是一般人學習機器學習或者深度學習演算法的必備知識,作為博主這樣的CS出身的工科生,學了線性代數、微積分、概率論這些基礎課程,平時也就夠用了,再複雜的一些數學分支涉及的很少。(這一部分摘錄自[1],加上我自己的一些理解)
1.1 標量,向量,矩陣和張量
- 標量(scalar):一個標量就是一個單獨的數。用斜體表示標量,如
s∈R . 向量(vector):一個向量是一列數,我們用粗體的小寫名稱表示向量。比如
x,將向量x 寫成方括號包含的縱柱:
x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥ 矩陣(matrix):矩陣是二維陣列,我們通常賦予矩陣粗體大寫變數名稱,比如
A 。如果一個矩陣高度是m,寬度是n,那麼說A∈Rm×n 。一個矩陣可以表示如下:
張量(tensor):某些情況下,我們會討論不止維座標的陣列。如果一組陣列中的元素分佈在若干維座標的規則網路中,就將其稱為張量。用A 表示,如張量中座標為(i,j,k)的元素記作
A 轉置(transpose):矩陣的轉置是以對角線為軸的映象,這條從左上角到右下角的對角線稱為主對角線(main diagonal)。將矩陣A的轉置表示為
AT 。定義如下:(A⊤)i,j=Aj,i
1.2 矩陣和向量相乘
矩陣乘法:矩陣運算中最重要的操作之一。兩個矩陣A和B 的矩陣乘積(matrix product)是第三個矩陣C 。矩陣乘法中A 的列必須和 B的行數相同。即如果矩陣 A的形狀是 m×n,矩陣B的形狀是 n×p,那麼矩陣 C的形狀就是 m×p。即
C= 具體的地,其中的乘法操作定義為Ci,j=∑kAi,kBk,j 矩陣乘積服從分配律,結合律,但是矩陣乘法沒有交換律,
點積(dot product)兩個相同維數的向量x和y的點積可看作是矩陣乘積
xTy 矩陣乘積的轉置 (向量也是一種特殊的矩陣)
(AB)⊤=B⊤A⊤x⊤y=(x⊤y)⊤=y⊤x
1.3 單位矩陣和逆矩陣
矩陣A的矩陣逆被記作
線性無關(linearly independent): 如果一組向量中的任意一個向量都不能表示成其他向量的線性組合,那麼這組向量被稱之為線性無關。要想使矩陣可逆,首先必須矩陣是一個方陣(square),即 m=n,其次,所有的列向量都是線性無關的。一個列向量線性相關的方陣被稱為 奇異的(singular)。
1.4 範數
需要衡量一個向量的大小,在機器學習中,我們使用稱為範數(norm)的函式來衡量向量大小,形式上,
範數是將向量對映到非負值的函式。直觀上來說,向量 x的範數就是衡量從原點到 x的距離。更嚴格來說,範數滿足下列性質的函式: