原創技術文章,第一時間獲取
本文可以配合《機器學習-原理,演算法與應用》,清華大學出版社,雷明著一書閱讀。在這本書中對有監督學習,聚類,降維,半監督學習,強化學習的主要演算法進行了細緻、深入淺出的推導和證明。對於所需的數學知識,單獨用一章做了簡潔地介紹。
本文列出的數學知識點已經寫成了《機器學習的數學教程》,以後有機會的話可能會出版,以幫助大家學習。
所需的數學知識
在之前的公眾號文章中已經說過,機器學習和深度學習中所用的數學知識主要來自以下幾門課:
1。高等數學/微積分
2。線性代數與矩陣論
3。機率論與資訊理論
4。最最佳化方法
5。圖論/離散數學
除此之外,有些理論和方法可能會用到更深的數學知識,如實變函式,泛函分析,微分幾何,偏微分方程等,但對一般的方法和理論,這些知識不是必須的,因此我們可以忽略它們。對大多數人來說,沒必要為了那些不常見的方法和理論而去學這些複雜的數學知識,這會大幅度的增加學習的成本與難度。
前面所列的5門數學知識中,矩陣論,資訊理論,最最佳化方法是國內理工科本科生基本上沒有學過的。圖論除了計算機類的專業之外,一般也不會學。如果想全面而系統的學好機器學習與深度學習,補上這些數學知識是必須的。
微積分
微積分是現代數學的基礎,線性代數,矩陣論,機率論,資訊理論,最最佳化方法等數學課程都需要用到微積分的知識。單就機器學習和深度學習來說,更多用到的是微分。積分基本上只在機率論中被使用,機率密度函式,分佈函式等概念和計算都要藉助於積分來定義或計算。
幾乎所有的機器學習演算法在訓練或者預測時都是求解最最佳化問題,因此需要依賴於微積分來求解函式的極值,而模型中某些函式的選取,也有數學性質上的考量。對於機器學習而言,微積分的主要作用是:
1.求解函式的極值
2.分析函式的性質
下面列出機器學習和深度學習中所需的微積分知識點,顯然,不是課本里所講的所有內容都是需要的,我們只列出所必須的。
極限。
極限是高等數學和初等數學的分水嶺,也是微積分這座大廈的基石,是導數、微分、積分等概念的基礎。雖然在機器學習裡不直接用到極限的知識,但要理解導數和積分,它是必須的。
上確界與下確界。
這一對概念對工科的微積分來說是陌生的,但在機器學習中會經常用到,不要看到論文或書裡的sup和inf不知道什麼意思。
導數。
其重要性眾所周知,求函式的極值需要它,分析函式的性質需要它。典型的如梯度下降法的推導,logistic函式導數的計算。熟練地計算函式的導數是基本功。
Lipschitz連續性。
這一概念在工科教材中同樣沒有提及,但對分析演算法的性質卻很有用,在GAN,深度學習演算法的穩定性、泛化效能分析中都有用武之地。
導數與函式的單調性。
某些演算法的推導,如神經網路的啟用函式,AdaBoost演算法,都需要研究函式的單調性。
導數與函式的極值。
這個在機器學習中處於中心地位,大部分最佳化問題都是連續最佳化問題,因此可以透過求導數為0的點而求函式的極值,以實現最小化損失函式,最大化似然函式等目標。
導數與函式的凹凸性。
在凸最佳化,Jensen不等式的證明中都有它的應用。
泰勒公式。
又一個核心知識點。在最佳化演算法中廣泛使用,從梯度下降法,牛頓法,擬牛頓法,到AdaBoost演算法,梯度提升演算法,XGBoost的推導都離不開它。
不定積分。
積分在機器學習中使用的相對較少,主要用於機率的計算中,它是定積分的基礎。
定積分。
包括廣義積分,被用於機率論的計算中。機器學習中很大一類演算法是機率型演算法,如貝葉斯分類器,機率圖模型,變分推斷等。這些地方都涉及到對機率密度函式進行積分。
變上限積分。
分佈函式是典型的變上線積分函式,同樣主要用於機率計算中。
牛頓-萊布尼茲公式。
在機器學習中很少直接使用,但它是微積分中最重要的公式之一,為定積分的計算提供了依據。
常微分方程。
在某些論文中會使用,但一般演算法用不到。
偏導數。
重要性不用多說,機器學習裡絕大部分函式都是多元函式,要求其極值,偏導數是繞不開的。
梯度。
決定了多元函式的單調性和極值,梯度下降法的推導離不開它。幾乎所有連續最佳化演算法都需要計算函式的梯度值,且以尋找梯度為0的點作為目標。
高階偏導數。
確定函式的極值離不開它,光有梯度值還無法確定函式的極值。
鏈式法則。
同樣使用廣泛,各種神經網路的反向傳播演算法都依賴於鏈式法則。
Hessian矩陣。
決定了函式的極值和凹凸性,對使用工科教材的同學可能是陌生的。
多元函式的極值判別法則。
雖然不直接使用,但對理解最最佳化方法至關重要。
多元函式的凹凸性判別法則。
證明一個問題是凸最佳化問題是離不開它的。
Jacobian矩陣。
工科教材一般沒有介紹這一概念,但和Hessian矩陣一樣,並不難理解,使用它可以簡化多元複合函式的求導公式,在反向傳播演算法中廣泛使用。
向量與矩陣求導。
常見的一次函式,二次函式的梯度,Hessian矩陣的計算公式要爛熟於心,推導並不複雜。
泰勒公式。
理解梯度下降法,牛頓法的最佳化演算法的基石。
多重積分。
主要用於機率論中,計算隨機向量的積分,如正態分佈。
偏微分方程。
在某些理論推導中可能會使用,如變分法中的尤拉-拉格朗日方程。
參考書目:
微積分用經典的同濟7版就可以了,這是國內很多高校工科專業的微積分教材。如果想深入學習,可以看數學分析的教材,這是數學系的微積分。北大張築生先生所著的數學分析可謂是國內這方面教材的精品。
線性代數與矩陣論
相對於微積分,線性代數似乎用的更多,而且有一部分屬於矩陣論/矩陣分析的範疇,超出了工科線性代數教材的範圍。下面列出線性代數和矩陣論的常用知識點。
向量及其運算。
機器學習演算法的輸入很多時候是向量,如樣本的特徵向量。因此熟練掌握向量以及常用的運算是理解機器學習的基礎。
矩陣及其運算。
與向量一樣,是線性代數的核心概念,各種運算,常用矩陣,必須爛熟於心。
行列式。
直接使用的少,在機率論,某些模型的推導中偶爾使用。
線性方程組。
直接使用的少,但這是線性代數的核心內容。
特徵值與特徵向量。
在機器學習中被廣泛使用,很多問題最後歸結於求解矩陣的特徵值和特徵向量。如流形學習,譜聚類,線性判別分析,主成分分析等。
廣義特徵值。
工科線性代數教材一般不提及此概念,但在流形學習,譜聚類等演算法中經常用到它。
Rayleigh商。
工科教材一般不提及它。在某些演算法的推導過程中會用到,如線性判別分析。
矩陣的譜範數與條件數。
工科教材一般不提及它。在某些演算法的分析中會用到它,它刻畫了矩陣的重要性質。
二次型。
很多目標函式是二次函式,因此二次型的地位不言而喻。
Cholesky分解。
某些演算法的推導中會用到它,工科教材一般不提及它。
特徵值分解。
對機器學習非常重要,很多問題最後歸結於特徵值分解,如主成分分析,線性判別分析等。
奇異值分解。
在機器學習中廣泛使用,從正態貝葉斯分類器,到主題模型等,都有它的影子。
參考書目:
線性代數可以看矩陣分析,如果想更全面系統的學習,可以看斯蒂文的這本線性代數。
機率論與資訊理論
機率論與資訊理論在機器學習中用得非常多。機率論的知識,一般不超出工科教材的範疇。而資訊理論是很多同學沒有學過的,不過只要你理解了微積分和機率論,理解這些概念並不是難事。下面列出常用的機率論與資訊理論知識點。
隨機事件與機率。
這是理解隨機變數的基礎,也是機率論中最基本的知識。
條件機率與獨立性。
條件機率非常重要,在機器學習中,只要有機率模型的地方,通常離不開它。獨立性在很多地方也被使用,如機率論圖模型。
條件獨立。
在機率論圖模型中廣泛使用,一定要理解它。
全機率公式。
基礎公式,地位不用多說。
貝葉斯公式。
在機器學習的機率型演算法中處於靈魂地位,幾乎所有生成模型都要用到它。
離散型隨機變數與連續型隨機變數。
重要性不用多說,機率質量函式,機率密度函式,分佈函式,一定要熟練掌握。
數學期望。
非常重要,好多地方都有它的影子。
方差與標準差。非常重要,刻畫機率分佈的重要指標。
Jensen不等式。
在很多推導和證明中都要用它,如EM演算法,變分推斷。
常用的機率分佈
,包括均勻分佈,正態分佈,伯努利分佈,二項分佈,多項分佈,t分佈等,在各種機器學習演算法中廣泛使用。
隨機向量。
多元的隨機變數,在實際中更有用。
協方差
。經常使用的一個概念,如主成分分析,多元正態分佈中。
引數估計
。包括最大似然估計,最大後驗機率估計,貝葉斯估計,核密度估計,一定要弄清楚它們是怎麼回事。
隨機演算法
,包括取樣演算法,遺傳演算法,蒙特卡洛演算法,在機器學習中也經常使用。
資訊理論中的一些概念
,包括熵,交叉熵,KL散度,JS散度,互資訊,資訊增益,一定要深刻理解這些概念。如果你不理解KL散度,那怎麼理解變分推斷和VAE?
參考書目:
機率論國內理工科專業使用最多的是浙大版的教材:
《機率論與數理統計》,國外的書籍推薦《資訊理論基礎》
最最佳化方法
前面已經說過,最最佳化方法是機器學習的靈魂,用於確定模型的引數或預測結果。不幸的是,工科專業一般沒有學過這門課。不過只要你理解了微積分和線性代數,並不難推匯出這些演算法。下面列出常用的最最佳化方法知識點:
梯度下降法
。最簡單的最佳化演算法,但卻很有用,尤其在深度學習中。
隨機梯度下降法
。在深度學習中的重要性婦孺皆知。
最速下降法
。梯度下降法的改進型,是理解梯度提升等演算法的基礎。
梯度下降法的改進型
。如AdaGrad,AdaDelta,Adam等,使用深度學習開源庫的時候經常會看到這些名字。
牛頓法
。二階最佳化演算法的典型代表,只是在深度學習中用的少。在logistic迴歸等演算法的訓練中會用到它。
擬牛頓法
。牛頓法的改進,在條件隨機場等模型的訓練中會用到L-BFGS等演算法。
座標下降法
。在logistic迴歸等模型的訓練中會用到它,不難理解。
凸最佳化
。最最佳化中的核心概念之一,如果一個問題被證明為凸最佳化問題,恭喜你,它基本上可以較好的解決。
拉格朗日乘數法
。在各種算分的推導中經常使用,如主成分分析,線性判別分析等,如果不熟練掌握它,你將非常艱難。
KKT條件
。拉格朗日乘數法擴充套件到帶不等式約束後的版本,在SVM的推導中將會使用。
拉格朗日對偶
。不太好理解的知識點,在SVM的推導中經常用到,不過套公式並不難。
多目標最佳化
。一般很少使用,在多目標NAS中會使用它,如帕累托最優等概念。
變分法
。用於求解泛函的極值,在某些理論推導中會用到它,如透過變分法可以證明在均值和方差一定的情況下,正態分佈的熵最大。變分推斷中也會用到此概念。如果熟練的掌握了微積分,推匯出尤拉-拉格朗日方程並不困難。
參考書目:
最最佳化方法可以參考下面兩本經典教材:
圖論
機器學習中的某些問題可以用圖論的方法解決,如流形學習,譜聚類。某些演算法的表達也可能用到圖論的知識,如深度學習中的計算圖,NAS中的網路拓撲結構圖。機率圖模型讓很多初學者談虎色變,它是圖論與機率論的完美結合。下面介紹常用的圖論知識點。
圖的基本概念
,如頂點,邊,有向圖,無向圖等。
鄰接矩陣與加權度矩陣,圖論中的核心概念,邊一般都帶有權重的。
某些特殊的圖
,如二部圖,有向無環圖等,在深度學習中經常會用到他們。
最短路徑問題
。經典的Dijkstra演算法是每個程式設計師必須掌握的。
拉普拉斯矩陣和歸一化拉普拉斯矩陣
。比較難理解的概念,機器學習中的很多演算法,如流形學習,使用圖論的半監督學習,譜聚類都離不開它。理解這個矩陣和它的性質,是理解這些演算法的基礎。
參考書目:
記得點選右下角“好看”