機器學習需要哪些數學基礎?
過去的幾個月中,有幾人聯系我,訴說他們對嘗試進入數據科學的世界,以及用機器學習的技術去探索統計規律并構建無可挑剔的數據驅動型產品的熱忱。然而,我發現一些人實際上缺乏必要的數學直覺和知識框架去得到有用的結果。這便是我決定寫這篇博文的主要原因。最近涌現出了很多易于使用的機器學習和深度學習的軟件包,例如 scikit-learn, Weka, Tensorflow 等等。機器學習理論是統計學、概率學、計算機科學以及算法的交叉領域,是通過從數據中的迭代學習去發現能夠被用來構建智能應用的隱藏知識。盡管機器學習和深度學習有著無限可能,然而為了更好地掌握算法的內部工作機理和得到較好的結果,對大多數這些技術有一個透徹的數學理解是必要的。
邏輯回歸和神經網絡的代價函數的計算方法
為什么要重視數學?
機器學習中的數學是重要的,有很多原因,下面我將強調其中的一些:
1. 選擇正確的算法,包括考慮到精度、訓練時間、模型復雜度、參數的數量和特征數量。
2. 選擇參數的設置和驗證策略。
3. 通過理解偏差和方差之間的 tradeoff 來識別欠擬合與過擬合。
4. 估計正確的置信區間和不確定度。
你需要什么水平的數學?
當你嘗試著去理解一個像機器學習(ML)一樣的交叉學科的時候,主要問題是理解這些技術所需要的數學知識的量以及必要的水平。這個問題的答案是多維的,也會因個人的水平和興趣而不同。關于機器學習的數學公式和理論進步正在研究之中,而且一些研究者正在研究更加先進的技術。下面我會說明我所認為的要成為一個機器學習科學家/工程師所需要的最低的數學水平以及每個數學概念的重要性。
1. 線性代數:我的一個同事 Skyler Speakman 最近說過,「線性代數是 21 世紀的數學」,我完全贊同他的說法。在機器學習領域,線性代數無處不在。主成分分析(PCA)、奇異值分解(SVD)、矩陣的特征分解、LU 分解、QR 分解、對稱矩陣、正交化和正交歸一化、矩陣運算、投影、特征值和特征向量、向量空間和范數(Norms),這些都是理解機器學習中所使用的優化方法所需要的。令人驚奇的是現在有很多關于線性代數的在線資源。我一直說,由于大量的資源在互聯網是可以獲取的,因而傳統的教室正在消失。我最喜歡的線性代數課程是由 MIT Courseware 提供的(Gilbert Strang 教授的講授的課程):http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/
2. 概率論和統計學:機器學習和統計學并不是迥然不同的領域。事實上,最近就有人將機器學習定義為「在機器上做統計」。機器學習需要的一些概率和統計理論分別是:組合、概率規則和公理、貝葉斯定理、隨機變量、方差和期望、條件和聯合分布、標準分布(伯努利、二項式、多項式、均勻和高斯)、時刻生成函數(Moment Generating Functions)、最大似然估計(MLE)、先驗和后驗、最大后驗估計(MAP)和抽樣方法。
3. 多元微積分:一些必要的主題包括微分和積分、偏微分、向量值函數、方向梯度、海森、雅可比、拉普拉斯、拉格朗日分布。
4. 算法和復雜優化:這對理解我們的機器學習算法的計算效率和可擴展性以及利用我們的數據集中稀疏性很重要。需要的知識有數據結構(二叉樹、散列、堆、棧等)、動態規劃、隨機和子線性算法、圖論、梯度/隨機下降和原始對偶方法。
5. 其他:這包括以上四個主要領域沒有涵蓋的數學主題。它們是實數和復數分析(集合和序列、拓撲學、度量空間、單值連續函數、極限)、信息論(熵和信息增益)、函數空間和流形學習。
一些用于學習機器學習所需的數學主題的 MOOC 和材料是(鏈接經過壓縮):
- 可汗學院的線性代數(http://suo.im/fgMNX)、概率與統計(http://suo.im/CqwY9)、多元微積分(http://suo.im/xh6Zn)和優化(http://suo.im/1o2Axs)
- 布朗大學 Philip Klein 的「編程矩陣:計算機科學應用中的線性代數(Coding the Matrix: Linear Algebra through Computer Science Applications)」:http://codingthematrix.com
- 得克薩斯大學的 Robert van de Geijn 在 edX 上的 Linear Algebra – Foundations to Frontiers:http://suo.im/hKRnW
- 戴維森學院 Tim Chartier 的新課程 Applications of Linear Algebra;第一部分:http://suo.im/48Vary,第二部分:http://suo.im/3Xm3Lh
- Joseph Blitzstein 的 Harvard Stat 110 lectures:http://suo.im/2vhVmb
- Larry Wasserman 的書《All of statistics: A Concise Course in Statistical Inference》,下載:http://suo.im/v9u7k
- 斯坦福大學的 Boyd 和 Vandenberghe 的關于凸優化的課程:http://suo.im/2wdQnf
- Udacity 的 Introduction to Statistics 課程:http://suo.im/1enl1c
- 吳恩達授課的 Coursera/斯坦福大學的機器學習課程:http://suo.im/1eCvp9
這篇博文的主要目的是給出一些善意的關于數學在機器學中的重要性的建議,一些一些必需的數學主題以及掌握這些主題的一些有用的資源。然而,一些機器學習的癡迷者是數學新手,可能會發現這篇博客令人傷心(認真地說,我不是故意的)。對于初學者而言,你并不需要很多的數學知識就能夠開始機器學習的研究?;镜奈{覺條件是這篇博文所描述的數據分析,你可以在掌握更多的技術和算法的過程中學習數學。
【本文是51CTO專欄機構機器之心的原創譯文,微信公眾號“機器之心( id: almosthuman2014)”】