- 機器學習從入門到入職:用sklearn與keras搭建人工智能模型
- 張威
- 1688字
- 2020-05-22 17:14:08
2.1 機器學習的知識準備
學習機器學習必須先了解機器學習知識體系。從機器學習的定義來看,機器學習是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、算法復雜度理論等。機器學習專門研究計算機如何模擬或者實現人類的學習行為,以獲取新的知識或者技能,重新組織已有的知識結構使之不斷改善自身的性能。
然而,在這些交叉學科中,全面學習任何一門單獨的學科,都需要花費較高的學習成本。如果能夠循序漸進地學習相應的數學知識,并結合機器學習中合適的案例,則會事半功倍;同樣,這也適合已經在研究機器學習的讀者,當對其理解達到瓶頸時,再從根本上了解其實現原理,或許能夠有所突破。
筆者在學習機器學習的過程中,總結了機器學習中各算法所需要掌握的數學基礎,希望讀者在學習機器學習時,不要止步于成熟的機器學習編程框架及調參技巧,而應該從本源上理解算法的本質。學習機器學習應該先掌握以下數學知識。
微積分
在很多算法場景中,微積分(求導、極限、極值)的作用都十分重要。例如,在梯度方法中需要對相關系數求導;監督學習訓練算法中的極大似然估計(Maximum Likelihood Estimate),在求解時往往涉及求導和求極值等內容;在神經網絡模型中,反向傳播算法是模型訓練中必不可少的一個步驟,而這個算法是基于復合函數求導的鏈式法則。
單個神經元的梯度下降過程如圖2-1所示。

圖2-1 單個神經元的梯度下降過程
線性代數
線性代數中涉及的矩陣表示、矩陣運算、特征根、特征向量是學習主成分分析、奇異值分解、矩陣的特征分解、對稱矩陣、正交化和正交歸一化、矩陣運算、投影、特征值和特征向量、向量空間和范數等機器學習中基本概念的基礎。在此基礎上,涉及的聚類(如親和傳播、普聚類、BIRCH聚類等方法)及幾乎所有的降維方法都用到了線性代數。
概率論與統計學
通常來講,概率論與統計學是機器學習的核心數學理論——可以依據概率論與統計學推導出一個機器學習模型,而最終的計算過程往往要依賴微積分和線性代數。其涉及的算法包括但不限于貝葉斯方法、高斯過程(Gaussian Process)、混合高斯等,其中還包括一些模型檢驗方法。
上面是學習機器學習需要掌握的最基本的一些數學知識。當然,機器學習的學習重在實踐,將理論變為現實則需要一定的編程基礎,在眾多編程語言中,最容易學習的語言是Python,而Java和C++也都可以實現機器學習模型,但這些語言需要有較強的算法功底。因為Java、C++沒有Python這樣直接封裝的包。本書中所有的示例也都是基于Python的。
擁有上述數學基本知識之后,還需要達到如下編程水平。
從最基礎開始,需要知道該項語言(Python)的基本語法、基本數據類型的操作、函數的定義與調用、正則表達式等。
掌握了Python的基本語法之后,還需要熟悉一些主流庫,筆者建議先熟悉數據處理及圖形呈現的庫,如NumPy、Pandas、Matplotlib及Seaborn等,涉及具體場景時,如數據庫、圖形、文本等,也是需要熟悉的。
有了上面的基礎,便可以進入機器學習的實戰階段,Python中四大主流機器學習的庫為Sklearn、Keras、TensorFlow及PyTorch。筆者建議從學習基本的機器學習算法(非神經網絡)開始,在這里推薦Sklearn;之后進入神經網絡的學習,推薦使用Keras框架。
在掌握以上技能后,進階則存在兩個方向:一個是深度,另一個是廣度。
從深度上講,簡單來說就是理論投產能力。畢竟理論的更新快于函數庫的更新,而理論的投產能力就是將論文或者新的數學構思通過算法的形式實現。在此,需要掌握一些算法知識,其中包括精確算法、近似算法、啟發式算法、演化算法、遞歸算法、貪婪算法及各類優化算法等。這部分內容大多與數據結構相互關聯。
此外,根據應用場景,還需要對特定的方向更深入地學習,如計算機視覺(Computer Vision)、模式識別、視頻追蹤、醫學圖像處理、強化學習、深度學習、神經網絡、自然語言處理、網絡信息安全等。
從廣度上講,更注重架構實現,理想狀態下,機器學習在提取數據、訓練及預測時,不存在或者忽視了性能問題。但在實際情況下,需要注意不同數據源的整合、算力的分布架構、模型的迭代或者交付、模型接口的相應情況等諸多方面。因此,從廣度層面來講,注重的是架構整合的能力。
基于以上對機器學習的知識準備的介紹,可得出機器學習路徑圖,如圖2-2所示。初學的讀者可以根據路徑圖中的步驟,循序漸進地學習機器學習。

圖2-2 機器學習路徑圖