現在機器學習行業持續加溫,應屆畢業生年薪持續走高,2019年畢業生算法崗年薪40萬起,上不封頂,吸引着越來越多的人想往機器學習方向轉。但是剛接觸到算法時,看到那些數學公式都望而生畏,特別是公式的推導。今天本文就介紹機器學習會用到哪些數學知識,讓那些想往機器學習方向轉的同學心里有底,知道學習的方向。
數學是機器學習的內功。作為機器學習的基石,數學知識無論如何是繞不開的,機器學習中大量的問題最終都可以歸結為求解最優化問題,微積分、線性代數是最優化方法和理論的基礎,很多機器學習算法的建模涉及到概率論,由此可見學好數學知識多么必要。不少准備或剛剛邁入機器學習的同學,在面臨數學基礎的學習時,會遇到兩個問題:
- 不知道機器學習和深度學習到底要用到哪些數學知識
- 無法真正理解這些數學知識,並用於機器學習的推導證明
對此,Summer哥在本文中專門為大家解決這兩個問題。
- 首先,在龐雜的數學系統內,哪些知識是在機器學習中真正有用的,對這些知識掌握到什么程度就足夠了?
- 其次,掌握了的數學知識怎么在機器學習領域內運用,即怎么從機器學習的角度去理解數學知識?
一、機器學習所需要的數學知識
很多人對於機器學習中的數學知識,談之色變,一想到實變函數、隨機過程、泛函分析等等就不寒而栗。事實上,要理解和掌握絕大部分機器學習算法和理論,尤其是對做工程應用的人而言,真正所需要的數學知識不過爾爾,主要包括了:微積分、線性代數、概率論、最優化方法
下面我們來一一介紹一下:
微積分
先說微積分/高等數學。在機器學習中,微積分主要用到了微分部分,作用是求函數的極值,就是很多機器學習庫中的求解器(solver)所實現的功能。在機器學習里會用到微積分中的以下知識點:
- 導數和偏導數的定義與計算方法
- 梯度向量的定義
- 極值定理,可導函數在極值點處導數或梯度必須為0
- 雅克比矩陣,這是向量到向量映射函數的偏導數構成的矩陣,在求導推導中會用到
- Hessian矩陣,這是2階導數對多元函數的推廣,與函數的極值有密切的聯系
- 凸函數的定義與判斷方法
泰勒展開公式 - 拉格朗日乘數法,用於求解帶等式約束的極值問題
相比之下,積分、無窮級數、常微分方程、偏微分方程等在機器學習和深度學習中使用的相對較少。
線性代數
相比之下,線性代數用的更多。在機器學習的幾乎所有地方都有使用,具體用到的知識點有:
- 向量和它的各種運算,包括加法,減法,數乘,轉置,內積
- 向量和矩陣的范數,L1范數和L2范數
- 矩陣和它的各種運算,包括加法,減法,乘法,數乘
- 逆矩陣的定義與性質
- 行列式的定義與計算方法
- 二次型的定義
- 矩陣的正定性
- 矩陣的特征值與特征向量
- 矩陣的奇異值分解
機器學習算法處理的數據一般都是向量、矩陣或者張量。經典的機器學習算法輸入的數據都是樣本的特征向量,深度學習算法在處理圖像時輸入的2維的矩陣或者3維的張量。掌握這些知識會使你游刃有余。
概率論
如果把機器學習所處理的樣本數據看作隨機變量/向量,我們就可以用概率論的觀點對問題進行建模,這代表了機器學習中很大一類方法。在機器學習里用到的概率論知識點有:
- 隨機事件的概念,概率的定義與計算方法
- 隨機變量與概率分布,尤其是連續型隨機變量的概率密度函數和分布函數
- 條件概率與貝葉斯公式
- 常用的概率分布,包括正態分布,伯努利二項分布,均勻分布
- 隨機變量的均值與方差,協方差
- 隨機變量的獨立性
- 最大似然估計
最優化方法
最后要說的是最優化,因為幾乎所有機器學習算法歸根到底都是在求解最優化問題。求解最優化問題的指導思想是在極值點出函數的導數/梯度必須為0。因此你必須理解梯度下降法,牛頓法這兩種常用的算法,它們的迭代公式都可以從泰勒展開公式中得到。如果能知道坐標下降法、擬牛頓法就更好了。
拉格朗日乘數法在機器學習中用的非常多,用於求解代等式約束的最優化問題,因此熟練的使用它是非常有必要的。
凸優化是機器學習中經常會提及的一個概念,這是一類特殊的優化問題,它的優化變量的可行域是凸集,目標函數是凸函數。凸優化最好的性質是它的所有局部最優解就是全局最優解,因此求解時不會陷入局部最優解。如果一個問題被證明為是凸優化問題,基本上已經宣告此問題得到了解決。在機器學習中,線性回歸、嶺回歸、支持向量機、logistic回歸等很多算法求解的都是凸優化問題。
拉格朗日對偶為帶等式和不等式約束條件的優化問題構造拉格朗日函數,將其變為原問題,這兩個問題是等價的。通過這一步變換,將帶約束條件的問題轉換成不帶約束條件的問題。通過變換原始優化變量和拉格朗日乘子的優化次序,進一步將原問題轉換為對偶問題,如果滿足某種條件,原問題和對偶問題是等價的。這種方法的意義在於可以將一個不易於求解的問題轉換成更容易求解的問題。在支持向量機中有拉格朗日對偶的應用。
KKT條件是拉格朗日乘數法對帶不等式約束問題的推廣,它給出了帶等式和不等式約束的優化問題在極值點處所必須滿足的條件。在支持向量機中也有它的應用。
看完這些,不少同學會安心不少,原來機器學習的數學基礎知識大多已經學習過。除流形學習需要簡單的微分幾何概念之外,深層次的數學知識如實變函數,泛函分析等主要用在一些基礎理論結果的證明上,即使不能看懂證明過程,也不影響我們使用具體的機器學習算法。概率圖模型、流形學習中基於圖的模型會用到圖論的一些基本知識,如果學習過離散數學或者數據結構,這些概念很容易理解。
二、從機器學習的角度學習數學知識
不少同學對數學知識的掌握比較扎實,但是一轉入機器學習中,就不知道從何下手應用。這就是缺乏了從機器學習的角度看待數學知識的素質。如何把數學知識運用到機器學習的算法中去呢?首先就是要熟知機器學習的算法和理論中對應着哪些數學知識?
我們來看看典型算法和理論結論所用到的數學知識:
只有明白自己所學的數學知識可以應用到哪一塊機器學習的算法或者理論中,才能更有針對的掌握對應的數學知識。另外無論是哪一門學問,都不是一蹴而就的,反反復復地去復習和運用知識,才能牢記掌握,機器學習中的數學知識也不例外。