本文作者在多年研究線上學習圖景、在不同平臺註冊大量機器學習課程後,收集了目前最好的 5 門機器學習課程。
選自Medium,作者:LearnDataSci,機器之心編譯。
機器學習根植於統計學,正在逐漸成為最有趣、發展最快的電腦科學領域之一。機器學習可應用到無數行業和應用中,使其更加高效和智慧。
聊天機器人、垃圾郵件過濾、廣告服務、搜尋引擎和欺詐檢測,這些都是機器學習模型在日常生活中的應用例項。機器學習使我們為人類力不能及的事找到模式、建立數學模型。
與涉及探索性資料分析、統計學、通訊和視覺化技術的資料科學課程不同,機器學習課程主要講授機器學習演算法、數學原理,以及如何使用某種程式語言寫演算法。
本文介紹了 top 5 機器學習課程:
吳恩達《機器學習》課程:https://www.learndatasci.com/out/coursera-machine-learning/
吳恩達《深度學習專項課程》:https://www.learndatasci.com/out/coursera-deep-learning-specialization/
SAEED AGHABOZORGI 主講的 Machine Learning with Python 課程:https://www.learndatasci.com/out/coursera-ibm-machine-learning-python/
Advanced Machine Learning 專項課程:https://www.learndatasci.com/out/coursera-advanced-machine-learning-specialization/
哥倫比亞大學的 Machine Learning 課程:https://www.learndatasci.com/out/edx-columbia-machine-learning/
篩選標準
本文介紹的 5 門機器學習課程遵循以下標準:
嚴格專注於機器學習領域。
使用免費開源的程式語言,如 Python、R 或 Octave。
使用免費開源的庫。
包含程式設計作業和實踐。
解釋演算法執行的數學原理。
學員可以自己調節進度,大約每月可以獲取新的課程。
講師有趣、課堂有趣。
在不同網站和論壇上的評分和評價高於平均值。
若想盡快全面地學習機器學習,那麼學習者還應該在線上學習之外看一些相關書籍。作者推薦了以下兩本書籍,這兩本書對作者的學習帶來了很大影響。
書籍
1. An Introduction to Statistical Learning: with Applications in R
免費線上版地址:http://www-bcf.usc.edu/~gareth/ISL/
這本書具備清晰直接的解釋和示例,可以幫助讀者提升對基礎機器學習技術的數學理解。這本書更加偏重理論,但仍然包含一些使用 R 語言的練習和示例。
2. Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems
這本書是對上一本書的良好補充,它主要涉及使用 Python 的機器學習應用。這本書搭配以下任意一門課程,可以幫助大家強化程式設計技能,瞭解如何直接將機器學習應用到專案中。
以下是本文的重頭戲:top 5 機器學習課程。
一、吳恩達《機器學習》課程
這門課適合初學者,其講師和建立者是史丹佛大學教授、谷歌大腦聯合創始人、Coursera 聯合創始人吳恩達。
這門課的作業要求使用開源程式語言 Octave,而不是 Python 或 R。這對於很多人來說有些怪異,但對於新手而言,Octave 是學習機器學習基礎的簡單方式。
整體來看,這門課程的材料翔實,直接由吳恩達授課,詳細解釋了每個演算法必需的所有數學知識,還涉及了一些微積分知識和線性代數知識。這門課程基本上是獨立的,不過提前瞭解一些線性代數知識會很有幫助。
課程提供者:吳恩達,史丹佛大學
費用:免費;如需課程證照,則需 79 美元
課程結構:
單變數線性迴歸
線性代數概要
多變數線性迴歸
Octave/Matlab 教程
Logistic 迴歸
神經網路:表徵
神經網路:學習
使用機器學習的建議
機器學習系統設計
降維
異常檢測
推薦系統
大規模機器學習
應用案例:Photo OCR
該課程持續時間為 11 周。如果可以堅持上完整個課程,你將在大約四個月內對機器學習有一個較好的基本瞭解。
之後,你可以再學習感興趣的高階或專項課程,如深度學習、機器學習工程等。
這門課程對於新手來說無疑是最好的課程。
二、吳恩達深度學習專項課程
該課程同樣是吳恩達開設的。這是一個更高階的課程系列,適用於任何對機器學習、深度學習及其原理和應用感興趣的人。
該課程共包括 5 門課,每門課的作業和授課都使用 Python 程式語言和 TensorFlow 神經網路庫。該課程是吳恩達機器學習課程的良好後續,因為授課風格類似,而且你還可以學習使用 Python 進行機器學習。
課程提供者:吳恩達,deeplearning.ai
費用:免費;如需課程證照,則 49 美元/月
課程結構:
1. 神經網路和深度學習
深度學習簡介
神經網路的基本概念
淺層神經網路
深度神經網路
2. 改善神經網路:調參、正則化和優化
深度學習的實踐
優化演算法
超引數調整、批歸一化和程式設計框架
3. 構建機器學習專案
機器學習策略(1)
機器學習策略(2)
4. 卷積神經網路
卷積神經網路基礎
深度卷積模型:案例研究
特殊應用:人臉識別和神經風格遷移
5. 序列模型
迴圈神經網路
自然語言處理和詞嵌入
序列模型和注意力機制
要想理解該課程中介紹的演算法,你應該先熟悉線性代數和機器學習。如果你需要關於學習所需數學知識的建議,可以參閱文末的學習指南(Learning Guide)。
參考文章:
三、用 Python 進行機器學習
這也是一個適合初學者的課程,只關注最基本的機器學習演算法。講師、幻燈片動畫和對演算法的解釋結合得非常好,能讓你對基本概念有直觀的瞭解。
該課程使用 Python,但對演算法背後的數學知識講得較少。通過每個模組,你將有機會在瀏覽器中下載一個互動式 Jupyter notebook 來實踐你學到的新概念。每個 notebook 會鞏固你的知識,並提供了在真實資料上使用演算法的具體說明。
課程提供者:IBM, Cognitive Class
費用:免費;如需課程證照,則 39 美元/月
課程結構:
機器學習導論
迴歸
分類
聚類
推薦系統
期末專題
這門課提供的最大好處之一是為每個演算法提供了實用的建議。在講授新演算法時,講師會介紹它的工作原理、優缺點以及你應該在什麼樣的情況下使用它。其它課程很少會涉及這些,但這些資訊對於初學者理解更廣泛的背景很重要。
四、高階機器學習專項課程
這是關於機器學習的另一個高階課程。如果你想盡可能多地學習機器學習技術,該專項課程就是一個很好的選擇。
這門課程的教學非常好:很精彩,而且簡明扼要。由於這是一門高階課程,因此你需要更多的數學知識。如果你已經參加了一門初級課程,並且複習了線性代數和微積分,這門課將是你補充機器學習其它專業知識的很好選擇。
本課程涵蓋的大部分內容對許多機器學習專案至關重要。
課程提供者:俄羅斯國家研究型高等經濟大學(National Research University Higher School of Economics,HSE)
費用:免費;如需課程證照,則 49 美元/月
課程結構:
1. 深度學習導論
優化簡介
神經網路簡介
影像深度學習
無監督表徵學習
序列深度學習
最終專案
2. 如何在資料科學競賽中獲勝:向頂尖 kaggler 學習
介紹和回顧
模型的特徵處理和生成
最終專案說明
探索性資料分析
驗證
資料洩露
度量優化
高階特徵工程 1
超引數優化
高階特徵工程 2
整合
競賽介紹
最終專案
3. 機器學習貝葉斯方法
貝葉斯方法和共軛先驗簡介
期望最大化演算法
變分推斷和隱含狄利克雷分佈(LDA)
馬爾科夫鏈蒙特卡洛
變分自編碼器
高斯過程和貝葉斯優化
最終專案
4. 實用強化學習
簡介
強化學習核心:動態規劃
無模型方法
基於近似值的方法
基於策略的方法
探索
5. 計算機視覺中的深度學習
影像處理和計算機視覺簡介
視覺識別的卷積特徵
目標檢測
目標跟蹤和動作識別
影像分割與合成
6. 自然語言處理
概念介紹和文字分類
語言建模和序列標註
語義向量空間模型
序列到序列任務
對話系統
7. 用機器學習應對大型強子對撞機的挑戰
面向資料科學家的粒子物理學導論
粒子鑑別
在稀有衰變中探索新物理學
在新 CERN 實驗中用機器學習尋找暗物質暗示
檢測器優化
完成該系列課程大概需要 8-10 個月的時間,所以如果你從今天開始學習,在近一年的時間裡,你將學到大量關於機器學習以及前沿應用的知識。
在這幾個月裡,你還將建立幾個真正的專案。這些專案將極大豐富你的簡歷,讓你的 GitHub 更吸引人。
五、機器學習
這是數學基礎要求最高的一門高階課程。你的線性代數、微積分、概率、程式設計基礎都需要非常牢固。該課程的有趣程式設計作業可以使用 Python 或 Octave 完成,但不提供關於這兩種語言的課程。
該課程最大的亮點在於其涵蓋了機器學習的概率方法。如果你之前讀過《Machine Learning: A Probabilistic Perspective》等教科書,那麼這門課程將成為良好的補充。
課程提供者:哥倫比亞大學
費用:免費;如需課程證照,則需 300 美元
課程結構:
最大似然估計、線性迴歸、最小二乘法
嶺迴歸、偏差-方差、貝葉斯法則、最大後驗概率推理
最近鄰分類、貝葉斯分類器、線性分類器、感知機
Logistic 迴歸、拉普拉斯近似、核方法、高斯過程
最大間隔、支援向量機(SVM)、樹、隨機森林、Boosting 演算法
聚類、K-均值、EM 演算法、缺失資料
混合高斯過程、矩陣分解
非負矩陣分解、隱因子模型、主成分分析及其變體
馬爾科夫模型、隱馬爾科夫模型
連續狀態空間模型、關聯分析
模型選擇、未來走向
許多針對初學者的課程可能已經介紹過上述很多主題,但這個課程的數學卻是實打實的。如果你已經學過這些,想在數學上更進一步,並且想通過做程式設計作業推匯出一些演算法,那麼這個課程值得一試。
學習指南
首先介紹一下多數機器學習課程需要的知識儲備。
課程知識儲備
高階課程需要以下知識儲備:
線性代數
概率
微積分
程式設計
這些是理解機器學習內在工作原理的必備知識。許多初學者課程通常要求至少有一些程式設計基礎,並熟悉線性代數的基礎知識,如向量、矩陣及其符號。
本文提及的第一份課程——吳恩達的《機器學習》複習了大部分所需數學知識,但如果你之前沒有學過線性代數,那麼同時學習機器學習和線性代數可能會有點困難。
如果你需要溫習數學基礎知識,請參考以下建議:
推薦學習 Python,因為多數機器學習課程用的程式語言都是 Python。即使你學的是吳恩達的《機器學習》課程(該課程用 Octave),你也應該抽時間學一下 Python,因為早晚都得用到。dataquest.io 也是一份極好的 Python 資源,其互動式瀏覽器環境中有很多免費的 Python 課程。
這些知識儲備有助於初步瞭解演算法的工作原理。
基礎演算法
以下是大家需要熟悉和練習使用的基礎演算法集合:
線性迴歸
Logistic 迴歸
k-均值聚類
k-最近鄰
支援向量機(SVM)
決策樹
隨機森林
樸素貝葉斯
這些演算法是必須瞭解的,當然還有很多其他演算法。上述課程介紹了這些演算法及其變體。理解這些技術的原理以及何時使用它們對處理新專案非常重要。
除了這些基礎演算法之外,還有一些比較高階的技術需要學習:
整合
Boosting
降維
強化學習
神經網路和深度學習
這只是開始,這些演算法通常是最有趣的機器學習解決方案中會使用到的,它們對你的工具箱來說也是個有效的補充。
與基礎技術一樣,每學習一項新工具,你就要直接將其應用到專案中,以加深理解、融會貫通。
解決專案
線上學習機器學習很有難度,當然回報也很大。不過你要記住,只看講課視訊、做測驗並不能證明你真的在學習教材。如果你建立一個與課程使用資料和目標皆不同的專案,那麼你會學到更多。
在你剛開始學習機器學習基礎知識時,你就應該尋找一些有趣的資料,以便實踐新技能。上述課程將使學習者瞭解何時應用演算法,因此在自己的專案中應用機器學習演算法是一項不錯的實踐。
通過試錯、探索和反饋,你會發現如何使用不同的技術、如何衡量結果、如何分類或預測。關於 ML 專案,這裡有一份示例列表,參見:https://github.com/NirantK/awesome-project-ideas。
解決專案會幫助你更好、更高階地理解機器學習。如果你開始瞭解更高階的概念(如深度學習),那麼將有無數種技術和方法去理解和使用。
閱讀新研究
機器學習是一個快速發展的領域,每天都有新技術和應用出現。你掌握了機器學習基礎知識之後,可以閱讀自己感興趣的研究論文。
有一些網站可以即時獲取感興趣領域的新論文。比如谷歌學者,輸入關鍵詞「machine learning」和「twitter」,或其他感興趣的主題,點選「Create Alert」,即可通過電子郵件獲取相關新論文通知。
養成每週閱讀提醒郵件的習慣,瀏覽論文以確定是否有閱讀的必要,然後深入理解某項研究的具體內容。如果某些研究與你正在做的專案相關,你可以看看是否可以將這些技術應用到自己的問題上。
結語
機器學習是一個非常有趣的領域,值得你去學習和體驗,希望在這裡你可以找到一個適合自己的課程。
機器學習是資料科學的一個重要組成部分,如果你對統計、視覺化、資料分析等方面感興趣的話,可以參考關於頂級資料科學課程推薦的文章:https://www.learndatasci.com / best-data-science-online-courses /。