應用機器學習:傳道解惑指南
在過去的兩年時間裏,我多次迷戀於學習機器學習。 正如你學習大多數的東西一樣,每當我決定嚐試新事物的時候,我不得不重新學習某些概念和課程。 所以,我編輯了一份包括概念、定義、資源以及工具的知識合集,這對於在這個複雜領域從事工作的我來說非常有用。 希望這些東西對於即將進入機器學習這個精彩(有時是令人沮喪)世界的朋友來說也會起到一定的幫助作用。
如何最有效率地學習機器學習
老實說,每個人都有適合自己的學習方法。對我個人而言,最好的方法就是反複把在項目中學到的東西應用到其他地方,直到把它徹底弄明白弄熟練為止。如果你不打算使用它的話,為什麼要學習它呢?而且多巴胺會讓你在看到學習成果的時候進一步促進你學習的動力。
在剛開始學習機器學習的時候很容易不知所措。有很多東西要學,即使是對於同一個知識點也有太多的資源可供挑選來學習,而且這些資源可能完全不同,甚至很混亂。學習這種內容繁多並且發展迅速的東西非常困難。在理想情況下,一旦你感覺自己在機器學習方麵入了門,就會清楚自己到底想要研究哪些具體的領域。
我將嚐試用足夠的篇幅來介紹這些鬆散的知識,使之適合於任何人閱讀。如有疑問,請自行穀歌……
什麼是機器學習(Machine Learning, ML)?
它是人工智能的一個子領域,它讓計算機自己學習,而不需要被明確地編程。機器學習基本的目的是**理解大量輸入數據中的模式**,然後根據其生成的模型來預測輸出。
什麼是機器學習算法?從本質上講,機器學習采用了可以從數據中學習和預測數據的算法。這些算法通常來自於統計學,從簡單的回歸算法到決策樹等等。
想要了解不同機器學習算法及其使用方法方麵的內容,可以閱讀這篇文章:機器學習算法要點。
什麼是機器學習模型?一般來說,它是指在訓練機器學習算法後創建的模型構件。一旦有了一個經過訓練的機器學習模型,你就可以用它來根據新的輸入進行預測。機器學習的目的是正確訓練機器學習算法來創建這樣的模型。當我在這篇文章中提到“模型”時,我一般就是指的這個定義。
但是,機器學習社區中的“模型”這個術語並沒有一個統一的定義。這個術語被大量提及,並且可以代表機器學習中使用的統計模型或數據模型中的任何內容。比如列、數據類型和數據源,甚至是神經網絡規範。當你在技術或數學讀物上學習有關機器學習的文章的時候,需要注意這一點。
流行的機器學習算法
機器學習算法有很多,每個人都有一套適合自己的案例。你可以根據學習的種類或相似性對機器學習算法進行分類。下圖是通過相似性對目前流行的算法進行的概括。在本文中,我根據學習種類的不同將算法分為:**監督學習**和**無監督學習**。
監督學習
這是一種使用樣例來進行訓練的機器學習算法。訓練數據被標上了已知的標簽,該算法將基於這些數據來建立模型。一旦模型被訓練出來,該算法將能夠確定從未見過的實例的標簽。
用監督學習解決的問題可以進一步分解為**分類**和**回歸**問題。
無監督學習
與監督學習相反,無監督學習使用未標記的訓練數據進行學習。這意味著該算法能夠自己確定如何使用這些數據(識別數據的模式)。
無監督學習可以分為**聚類**和**關聯**問題。
半監督學習
這是上述兩種方法的混合體,即隻有部分輸入數據做了標記。
監督學習的線性回歸
這其實是機器學習的“Hello World”教程。線性回歸可用於理解輸入(x)和輸出(y)變量之間的關係。當隻有一個輸入變量(x)時,稱為簡單線性回歸。你可能已經在簡單統計中看到過這種技術的應用。
訓練線性回歸方程最常用的技術是普通最小二乘法。所以,當我們用這個過程訓練機器學習中的模型時,通常被稱為普通最小二乘線性回歸。
輸入(x)和輸出(y)的簡單回歸模型可以被建模為:
y = B0 + B1*x
係數B1(β)是回歸斜率的估計,附加係數B0是回歸截距的估計,它給出了直線的附加自由度。
請閱讀本教程來學習用於線性回歸模型的四種技術:簡單線性回歸、普通最小二乘法、梯度下降和正則化。
你很快就會注意到,很多的機器學習算法隻是使用了基本統計學的不同的曲線擬合方法。機器學習(至少在我看來)隻有在深度學習領域中才會讓人興奮。
深度學習
這是機器學習的一個子領域,近年來表現出了很大的潛力。它涉及到大腦中神經元結構和功能的算法。
深度學習中最令人激動的特性之一是它在**特征學習**上的表現。該算法在從原始數據中檢測特征方麵表現地特別好。有一個很好的例子,就是通過深度學習技術來識別汽車圖片中的車輪。下圖說明了典型機器學習與深度學習之間的區別:
深度學習通常由多個層組成。它們通常將更簡單的模型組合在一起,通過將數據從一層傳遞到另一層來構建更複雜的模型。這是深度學習隨著數據量的增加而優於其他學習算法的主要原因之一。
想進一步了解深度學習方麵的知識,請閱讀The Deep Learning Book,你可以在麻省理工學院的網站上免費獲取。
TensorFlow簡介
TensorFlow是專門為機器學習而設計的快速數值計算Python庫。它由穀歌開源,旨在讓世界各地更多的研究人員和開發人員掌握深度學習。
它的官方教程可能對初學者來說有些雜亂,我建議大家從本係列開始,首先學習Tensflow的相關介紹。
如何使用TensorFlow
TensorFlow安裝好之後,你就可以用它提供的多個API來訓練機器學習模型了。建立在TensorFlow Core(最好控製最底層的API)之上的更高級別的API是最容易學習的,你應該從這裏開始學習。
本文不可能包含完整的TensorFlow教程,網上有數不清的學習資源,首先從官方資源開始吧:
雖然TensorFlow是最受歡迎的機器學習庫,不過也有其他幾個很棒的選擇,如Torch(Facebook使用)、Caffe(出自Berkeley AI研究所的深度學習框架)等等。
這篇文章缺少什麼
很多。本文的目標是為你提供有關機器學習的基礎知識,以避免你暈頭轉向。但是這個話題包含的內容實在太多了,無法全部寫下來。
接下來做什麼?
一旦對基礎知識有了一定的了解,你應該知道自己對機器學習的哪些方麵比較感興趣,你想在應用程序中使用機器學習,還是想研究機器學習。
你可以根據自己的興趣來閱讀本文中嵌入的鏈接,或通過穀歌來搜索挖掘一些你需要的內容,從而更深入地研究某個領域。
在學習機器學習的過程中,最困難的部分就是打下一個紮實的基礎。緊接著,就是弄清楚你自己想要做什麼。
結語
“整個世界就是一個大數據問題” - Andrew McAfee
掌握機器學習就像是馴服一頭野獸。但是,如果你已經吃透它,那麼它就是你身邊一個非常有價值的資源。
“拷問數據,它會屈打成招。” - 羅納德·科斯
參考文獻
- Tensorflow.org
- ML算法之旅
- https://ocdevel.com/podcasts/machine-learning
- https://machinelearningmastery.com/a-tour-of-machine-learning-algorithms/
文章原標題《Applied Machine Learning: The Less Confusing Guide》,作者:Udara Jay,譯者:夏天,審校:主題曲。
文章為簡譯,更為詳細的內容,請查看原文
最後更新:2017-10-11 17:33:11