官术网_书友最值得收藏!

1.2.1 線性代數基礎

從線性回歸、線性判別、支持向量機、主成分分析等經典的機器學習模型,到卷積神經網絡等深度學習模型,線性代數無處不在??梢哉f,線性代數是機器學習及深度學習重要的數學基礎知識。下面分別介紹最常用的向量、矩陣等基本概念及常用運算。

1.向量

在線性代數中,最基本的概念是標量(Scalar)。標量就是一個實數。比標量更常用的一個概念是向量(Vector)。向量就是n個實數組成的有序數組,稱為n維向量。如果沒有特別說明,一個n維向量一般表示一個列向量,如式(1-1)所示。向量符號一般用黑體小寫字母a、b、c來表示。這個有序數組中的每個元素都有對應的下標,第一個元素的下標是1,第二個是2,以此類推。通常用a1表示第一個元素,a2表示第二個元素,ai表示第i個元素。數組中的每一個元素被稱為一個分量。多個向量可以組成一個矩陣。

2.矩陣

矩陣(Matrix)是線性代數中應用非常廣泛的一個概念。矩陣比向量更加復雜,向量是一個一維的概念,而矩陣是一個二維的概念。一個矩陣的直觀認識如式(1-2)所示。式中的矩陣由m×n個元素組成,這些元素被組織成m行n列。本書中矩陣使用黑體大寫字母A、B、C表示。矩陣中每個元素使用aij的形式表示,如第一行第一列的元素為a11

特別地,一個向量也可視為大小為m×1的矩陣,如式(1-3)所示,既是一個m×1矩陣,又是一個m維向量。

單位矩陣(Identity Matrix)是一種特殊的矩陣,其主對角線(Leading Diagonal,連接矩陣左上角和右下角的連線)上的元素為1,其余元素為0。n階單位矩陣In是一個n×n的方形矩陣,可以記為In=diag(1,1,…,1)。

3.向量的運算

在機器學習及深度學習中,向量不僅用來存儲數據,還會參與運算。常用的向量運算主要有兩種,一種是向量的加減法,另一種是向量的點積(內積),這兩種運算都需要參與運算的向量長度相同。

向量的加減法比較容易理解。其運算規則是對應位置的元素求和或者求差。例如,向量a=[a1,a2,…,an]和向量b=[b1,b2,…,bn]都是n維向量,求和就是生成向量c=[c1,c2,…,cn],c中的每一個元素都是由a和b對應位置的元素求和得到:ci=ai+bi。

向量的點積相對復雜一些。假設存在兩個長度相同且都為n的向量a=[a1,a2,…,an]和b=[b1,b2,…,bn],它們的點積結果為一個標量c。c的值為向量a和向量b對應位置的元素的乘積求和:c=a1×b1+a2×b2+…+an×bn。向量點積記作c=ab或c=a·b。點積使用公式表示即。通過對公式的觀察會發現點積符合交換律,即ab=ba。

4.矩陣的運算

相比于普通的算術運算,矩陣運算更加復雜。最常見的矩陣運算主要有加、減、乘、轉置。矩陣的加減運算是相對簡單的運算。加減運算要求輸入的兩個矩陣的規模相同(兩個矩陣都為m行n列),運算結果為同樣規模的矩陣。其規則就是對應位置元素的加和減。例如,假設A和B都是m行n列的矩陣,則A和B的加和減如式(1-4)所示:

矩陣的乘法是矩陣運算中最重要的操作之一。矩陣的乘法有兩種,一種是點積(Dot Product),另一種是元素乘(Element-wise Product)。下面分別介紹。

點積運算是一個常用的矩陣操作。兩個矩陣A和B經過點積運算產生矩陣C。點積運算的前提條件就是矩陣A的列數必須與矩陣B的行數相等。如果矩陣A的形狀是m×n,矩陣B的形狀是n×p,那么矩陣C的形狀就是m×p。點積運算可以書寫為C=A·B,更常用的寫法是C=AB。點積運算的規則稍復雜,A中的第i行點積B中的第j列得到一個標量,這個標量就是C中的第i行第j個元素。例如,A的第一行點積B的第一列得到C中的一個元素C11;A的第三行點積B的第二列得到C的一個元素C32。其公式表示如下:

點積運算不滿足交換律,即AB≠BA。甚至很多時候AB可以計算,但是BA不存在,因為點積必須符合行數和列數的對應關系。

元素乘是機器學習和深度學習經常使用的另一個運算。元素乘又稱元素積、元素對應乘積。元素乘的運算條件更加嚴格,要求參與運算的兩個矩陣的規模相同(都為m×n矩陣)。兩個m×n矩陣A和B,經過元素乘后其運算結果為C,一般記為C=A⊙B。點積運算結果也是一個矩陣,只不過運算規則更加簡單,只需要對應位置的元素相乘即可。元素乘的公式為Cij=Aij⊙Bij。例如,一個2×3規模的元素乘的運算過程如式(1-6)所示:

矩陣的轉置(Transpose)也是常見的矩陣運算。轉置就是將原來的行元素變成列元素。假設矩陣A是m×n矩陣,經過轉置后的矩陣變為n×m,記作AT。從公式的角度看ATij=Aji。式(1-7)給出一個具體的例子。

矩陣的操作將在介紹NumPy庫時介紹,詳見代碼清單1-4。

除了數學概念上的運算外,深度學習中還常常會用到向量化(Vectorization)的概念。向量化是指將原本需要高復雜度的計算過程轉化為低復雜度的向量乘積的過程。深度學習過程常常面臨大量的向量和矩陣運算,如果采用傳統的計算方法,那么這些運算將消耗大量時間,而向量化可以有效降低其計算時間。

這一概念將在NumPy部分直觀展現,詳見代碼清單1-8。

假如通過編程計算兩個向量a和b的點積。一種實現方法是把向量視為多個元素的有序數組,對a和b中的每一個分量做一次乘積運算,最后將乘積結果求和,即。而另一種更加高效的實現方式是把向量視作一個整體,直接調用Python庫函數完成兩個向量的乘積。從數學角度看兩種實現的復雜度是相同的,但實際上Python庫內部對向量操作做了算法甚至硬件級別的優化,運算更加高效。所以,向量化是深度學習提速的一大法寶。

5.向量的范數

在機器學習中衡量一個向量大小的時候會用到范數(Norm)的概念。范數可以理解為一個將向量映射到非負實數的函數。通俗來講,范數表示的是向量的“長度”。范數的定義如式(1-8)所示:

觀察范數的定義很容易發現,范數事實上與p的取值是有關系的,所以范數的數學符號是Lp。

在機器學習和深度學習領域最常用到的兩個范數是L1范數和L2范數。對于絕大多數讀者來說,最熟悉的就是p=2的情況。L2范數也被稱為歐幾里得范數,它表示從原點出發到向量x確定的點的歐幾里得距離。向量的L2范數也被稱作向量的模。L2在機器學習和深度學習中出現十分頻繁,為了計算和使用方便,常常會對L2范數做平方運算。平方L2范數對每一個x的導數只取決于對應的元素,而L2范數對每個元素的導數卻與整個向量相關。但是,平方L2范數的一個缺點是它在原點附近增長得十分緩慢。在某些機器學習和深度學習應用中,區分值為零和非零但值很小的元素是很重要的。在這些情況下,轉而使用在各個位置斜率相同,同時保持簡單的數學形式的函數:L1范數。當機器學習和深度學習問題中零和非零元素之間的差異非常重要時,通常會使用L1范數。L1范數即向量中各個元素絕對值的和。每當x中某個元素從0增加ε,對應的L1范數也會增加ε。

Lp范數用來度量向量的大小,相應的度量矩陣的大小可以使用Frobenius范數。其類似于L2范數,可以將其理解為L2范數在矩陣上的推廣。如式(1-9)所示:

主站蜘蛛池模板: 泾阳县| 从化市| 渭源县| 汉源县| 桓台县| 河东区| 澄迈县| 穆棱市| 马龙县| 颍上县| 吐鲁番市| 雷州市| 肃宁县| 永善县| 伊宁市| 台江县| 临澧县| 哈巴河县| 闽清县| 克拉玛依市| 枞阳县| 靖安县| 明溪县| 安塞县| 岐山县| 绥中县| 巴东县| 赣州市| 乐至县| 奉节县| 于田县| 元朗区| 德保县| 北碚区| 梁河县| 武鸣县| 景宁| 遂昌县| 玛纳斯县| 荆州市| 宜川县|