現在很多想從事於機器學習的朋友都存在很多困惑,主要是很多相關的書看不懂,尤其是數學部分,機器學習的基礎是數學。數學並非是一個可選可不選的理論方法,而是不可或缺的支柱。對於機器學習演算法工程師而言,微積分、線性代數、概率論毫無疑問是需要掌握的。
為什麼要強調數學?
毫無疑問機器學習中數學是重要的,例如你需要:
1.選擇合適的演算法,包括考慮精度、訓練時間、模型的複雜性、引數和數量特徵;
2.選擇引數設定和驗證策略;
3.通過了解偏差方差權衡來識別擬合不足與過度擬合;
4.估計正確的置信區間和不確定性。
你必需具備的數學知識
概率論
- 離散型和連續型隨機變數
- 主要分佈(伯努利分佈、二項式分佈、正態分佈、 指數分佈、 泊松分佈、Beta 和 Gamma 分佈)
- 矩估計和最大似然估計
- 貝葉斯統計
- 相關性係數和協方差(Correlation and Covariance)
概率是機器學習演算法中頻繁用到的。不過基礎的概率知識在統計學中已經包括了,而比較深入的概率知識其實在機器學習演算法設計的時候並不經常用到。
線性代數
- 向量和矩陣
- 矩陣的行列式
- 特徵向量和特徵值
- 矩陣分解(如 SVD)
線性代數在深度學習領域有著舉足輕重的作用,它是深度學習各種演算法的基本數學工具。尤其是矩陣的各種變換,因為大量機器學習演算法都是在和矩陣打交道。
微積分
- 極限與導數
- 微分和積分
- 數值計算與最優化方法
比如,現在無比熱門的神經網路,優化方法幾乎全是基於梯度下降,而梯度下降,其實就是鏈式求導。不過,理工科應該都學過這方面的課程。
最好要掌握:
離散數學:畢竟離散數學是描述計算機問題的基礎。許多演算法的思想也是基於離散數學的。離散數學研究的一些問題對於描述計算機問題也有很大啟發。
隨機過程,實分析:機器學習往深裡做肯定需要用這種,高階的數學語言去對問題進行描述。
泛函:泛函分析是一門非常抽象的課程。 泛函的很多內容都是從數學分析,線性代數,實分析等抽象出來的,同時也是它們的推廣,泛函研究更廣泛更一般的空間,研究共性的問題。而數學分析,高等代數研究的是個性的問題,都很具體。
各種演算法和理論用到的數學知識 下面我們一張圖來看典型演算法和理論結論所用到的數學知識:
推薦書目
-
《An Introduction Statistical to Learning 》
-
《 The Elements of Statistical Learning 》 它們講述的都是統計學習,或者機器學習的方法。其中前一本可以看成是後一本的簡化版。它更通俗、更簡單一些,後面這個稍微有些難。這兩本書可以反覆閱讀,每次都有不同的收穫。