作者簡介:白朔天,前滴滴算法專家。本文選自:拉勾教育專欄《機器學習入門21講》
你好,我是白朔天,今天我們進行“線性代數”的學習。本課時我們主要學習與機器學習相關的線性代數知識,主要包括向量和矩陣的乘法、範數、求導等基本運算,及其在機器學習中的應用等內容。
線性代數是數學的一個分支。相信你在大學時,一定學習過這門課程,甚至可能會爲通過考試而熬夜苦戰。根據我的感受,線性代數這門課並不簡單,但是比高等數學還是要容易一些。從機器學習的視角來看,線性代數是必須要了解的,但不需要達到精通的程度。爲了不讓線性代數成爲學習機器學習的絆腳石,你需要掌握向量、矩陣的各種基礎運算。值得一提的是,當你掌握線性代數的邏輯和套路時,線性代數就是紙老虎。
本文選自:拉勾教育《機器學習入門21講》見文末了解更多
既然名字叫作線性代數,那麽它一定是線性模型的前置基礎知識。線性代數最基本的研究對象是向量,向量的向量又組成了矩陣。有了向量或者矩陣,就能將很多數字用一個向量符號表示,甚至可以將很多高維的數據用一個矩陣來表示。因此,你可以理解爲線性代數是處理大數據的基礎。
向量的基本運算
我們首先來學習向量的知識。在這裏只需學習與機器學習有關的內容。我們在高中時就開始接觸向量,它的基本運算並不會困擾我們。向量是一個有方向的量,它的表示形式是斜體加粗的小寫字母或者斜體小寫字母上加一個向右的箭頭。別忘了,在上一課時計算函數的梯度時,梯度也是一個向量,表示的也是一個有方向的量,是函數值變化率最快的方向。
點乘
除了普通的加法以外,向量的另一個重要運算就是點乘了。點乘兩個相同維數的向量,可以得到一個常數。點乘的計算方法是兩個向量對應項乘積之和。例如,計算向量 [1,1] 和 [-1,2] 的點乘,計算過程就是 1*(-1)+1*2,結果等于 1。
矩陣的基本運算
接著我們來看一下矩陣。你應該是上了大學之後才開始接觸矩陣的。矩陣可以形象的理解爲是向量的向量,通常用加粗大寫字母表示。在機器學習中,通常會用一個矩陣來表示一個大數據集。其中每一行是一個樣本的不同維度,列方向則是集合中的每一條數據樣本。例如如圖所示的 3 名同學 3 門課的考試成績。
用矩陣來表示每人每門課的成績,則是
特別需要注意的是,當數據集中只有一條數據時,這個矩陣就退化爲一個向量。因此,你也可以理解爲,向量也是一個特殊的矩陣。
轉置
矩陣有一個很重要的運算,就是轉置。在矩陣右上角,用大寫字母 T 表示。它能讓矩陣的行列互換,原本 m x n 的矩陣就變成了 n x m 的新矩陣。例如原本
轉置後變成了
轉置在機器學習中有著非常重要的數學意義。你在學習機器學習時,也很可能會被各種各樣的轉置符號給弄暈。這是因爲在機器學習中,關于向量和矩陣有著默認的規則。在機器學習中,默認所有的向量爲列向量。當你必須要表示行向量時,則需要將向量轉置。以前面 3 個同學的成績爲例。每個人 3 門課的成績是個向量。根據列向量的准則,則有
總成績是個矩陣,它是向量的向量,因此也需要滿足列向量的准則。因此有
此時就需要借助轉置符號,變列爲行來表示其中每個人的成績。在這裏,我們再次重申一遍,在整個機器學習中,默認所有的向量爲列向量。
乘法
矩陣的乘法,在機器學習中被高頻使用。我們舉個例子來說明如何計算矩陣的乘法。如果有
則
這裏需要注意,矩陣的乘法對維數有嚴格要求。第一個矩陣的列數必須與第二個的行數相等。維數不匹配的矩陣不可以相乘。
哈達瑪積
除了乘法以外,矩陣的基本運算還有哈達瑪積。它要求兩個矩陣的維數完全相同,計算方式是對應項元素的乘積。例如,
則其哈達瑪積的結果爲,
求逆
關于矩陣,你還需要掌握求逆運算。求逆運算只可以作用在行數等于列數的方陣上,用右上角標 -1 來表示,可以得到一個矩陣的逆矩陣。逆矩陣滿足這樣的性質,它和原矩陣相乘後,可以得到單位矩陣,即主對角線元素爲 1,其他元素爲 0 的方陣。例如,
關于求逆,你不需要會各種手動計算的方法,能用 Python 的計算包或者 Matlab 求解就可以了。
本文選自:拉勾教育《機器學習入門21講》見文末了解更多
線性代數與機器學習
範數
到現在爲止的知識點,相信都還難不倒你。那麽接下來的內容會漸漸開始有一些挑戰。我們先看一下範數。範數可以對矩陣和向量去計算,它是泛函分析中的重要知識。但是從機器學習的視角來看,我們不需要掌握那麽複雜的內容。在這裏,我們只需要學習向量的 L1 範數和 L2 範數;其他更複雜的內容,如果你感興趣,可以翻閱相關的數學書籍。
向量的 L1 範數計算方式是各個元素的絕對值之和。向量的 L2 範數計算方式是各個元素平方之和的平方根。例如,
則
也可以表示爲
求導
對于矩陣、向量的求導,可能是本課時唯一的難點。這裏的知識點,需要你在理解的基礎上獨立完成求導過程。在機器學習中,對于矩陣的求導用的會比較少,這個知識點並不是必須掌握的。而對于向量 a 關于向量 b 的求導,則必須掌握。原因在于機器學習的未知變量通常是模型的系數或系數組,而學習的標簽是真實值向量。這個系數組和標簽真實值,通常以向量的形式存在,例如線性回歸、邏輯回歸等模型。其他更複雜的求導,如果你感興趣可以自己查閱相關資料。
接下來,看一下向量關于向量的求導。向量 y 關于向量 w 的求導結果是向量 y 中每個元素關于向量 w 中每個元素求導結果的矩陣。如果向量 w 的維數爲 n x 1,向量 y 的維數是 m x 1,則求導之後的矩陣維數就是 n x m。特別需要注意,當 m=1 時,向量 y 是個常數,此時定義同樣成立。
掌握了求導的定義之後,就可以利用它去求解導數啦。我們在這裏把後續機器學習建模會用到的內容進行分析。首先看矩陣和向量的乘積結果,如果
則
如果
則
這兩個求導結果可以通過簡單的推導得到。在此需要你記住求導過程。
本文選自:拉勾教育《機器學習入門21講》見文末了解更多
案列
我們看一個比較複雜的例題。這個例題也同樣是機器學習中線性回歸模型的必備知識點。如果
且 X 爲對稱矩陣,求向量 y 關于向量 w 的導數。由于是對稱矩陣,所以存在xij = xji。此時計算的結果 y,是一個 1 x 1 的向量。根據乘法計算展開後,得到
根據求導定義,導數的結果是 n x 1 的向量,其中每一項是
我們對其進行單獨計算,則有
有了這個結果之後,我們把它放回定義式中,就能得到求導的結果啦。
這個求導過程比較複雜,涉及比較多的代數運算。如果你感興趣,可以拿出筆紙親自推導一下,看結果和我的是否一致。也可以直接到把公式和求導定義背下來,方便日後使用。
本課時,我們對線性代數的複習只是線性代數知識的冰山一角。但是這些知識,對我們突破機器學習已經足夠了。我們先複習了矩陣和向量的基本運算,這些是爲了講述範數和求導作准備。當我們掌握了範數和求導法則之後,就具備了突破機器學習中線性代數的能力。
其中,範數的知識,是在機器學習中克服模型過擬合的重要手段。不管是 L1 還是 L2,範數可被用作損失函數的懲罰項,也稱作正則項,用來指導模型的學習訓練。範數值越大,說明模型參數絕對值整體偏高,則說明模型的複雜度偏高。自然地,過擬合風險也就比較高。關于過擬合的知識,我會在後面專門拿出一個課時來講解。另外,線性代數作用在線性模型居多。線性回歸是回歸的入門級算法。對于線性回歸模型的最優化過程,需要大量的向量求導計算。
如果不具備這些基礎知識,你可能就會被一個非常簡單的入門級算法困擾,這是非常劃不來的事情。不過現在好了,這些必備的知識點你都已經突破了。其余線性代數的知識,如果你感興趣,可以花時間去進行專門、系統地學習。如果你對數學比較抵觸,掌握這些內容,已經足夠你馳騁機器學習啦。
好了,本次分享的內容就講到這裏了,下次我們將學習“概率論”的知識,記得按時來聽課啊。
查看後續內容:拉勾教育《機器學習入門21講》見文末了解更多
版權聲明:本文版權歸屬拉勾教育及該專欄作者,任何媒體、網站或個人未經本網協議授權不得轉載、鏈接、轉貼或以其他方式複制發布/發表,違者必究。