想成為機器學習工程師?這份自學指南值得你收藏

作者 | 發布日期 2017 年 08 月 23 日 14:15 | 分類 AI 人工智慧 , Google , 科技教育 line share follow us in feedly line share
想成為機器學習工程師?這份自學指南值得你收藏


本文作者為 Andrey Nikishaev,既是軟體開發者,也是創業者。

如何成為一名機器學習工程師?

經常有人這麼問,這篇文章就嘗試回答這個問題,其中會談到關於機器學習各方面,從簡單的線性回歸到最新的神經網路。你不僅將學習如何使用這些技術,還將學習如何從頭開始建構。

這個指南主要針對電腦視覺(CV),這也是掌握一般知識的最快方式,從 CV 中抓取的經驗可簡單應用到機器學習的其他領域。

我們將使用 TensorFlow 為框架。這些課程需要你會 Python,雖然不要求你是大師,但至少要懂基本知識(另外,都是英語授課)。

溫馨提示,學習知識與動手實踐結合,效果更佳。

一、課程

1.1 約翰霍普金斯大學的實用機器學習

課程總共 4 週,用戶評分:4.4(5 分制,下同)

網址:https://www.coursera.org/learn/practical-machine-learning#syllabus

1.2 史丹佛大學的機器學習

課程總共 11 週,用戶評分:4.9。授課教師是大名鼎鼎的吳恩達。

網址:https://www.coursera.org/learn/machine-learning

上面兩節課,會教你資料科學和機器學習的基本知識,並為下面的學習做好準備。

1.3 CS231n:面向視覺辨識的卷積神經網路

總共 16 堂課,目前已更新為 2017 春季最新版本。李飛飛是這節課的導師。

網址:http://cs231n.stanford.edu/

現在才算步入正軌。這是網路上最好的機器學習與電腦視覺課程。

1.4 Google 講深度學習

整個課程大約耗時 3 個月,導師為 Google 首席科學家 Vincent Vanhoucke,以及 Google Brain 的技術負責人 Arpan Chakraborty。

在這個課程中,將教授深度學習的原理、設計可從複雜的大型資料集學習的智慧系統、訓練和最佳化基本的神經網路、CNN、LSTM 等。

網址:https://www.udacity.com/course/deep-learning–ud730

選修課。你可以只看其中練習的部分。

1.5 CS224d:面向自然語言處理的深度學習

總共 17 堂課。

網址:http://cs224d.stanford.edu/

選修課。建議給那些需要用到 NLP 的同學。課程內容也很棒。

1.6 深度學習電子書

Leonardo Araujo dos Santos 整理的深度學習電子書。

網址:https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/

選看。這是一本涉及諸多機器學習領域的好書。

二、練習

這部分給了一堆教程和專案清單,你應該逐一嘗試並了解它們的工作原理,以及考慮如何改進提升。這個清單的存在,只是為了增加你對機器學習的興趣,所以遇到一些困難也別氣餒,當你準備好就可以隨時上手練習。

2.1 TensorFlow 上的簡單練習

Kadenze 學院出品,總共 5 堂課。

網址:https://www.kadenze.com/courses/creative-applications-of-deep-learning-with-tensorflow-iv/info

2.2 Tensorflow 食譜

這部分內容來自 Nick McClure 的電子書《TensorFlow Machine Learning Cookbook》。

網址:https://github.com/nfmcclure/tensorflow_cookbook

2.3 Tensorflow-101 教程部分

這是一個用 Python 和 Jupyter Notebook 編寫的教程。嘗試為 TensorFlow 初學者提供盡可能的詳細解譯,希望對大家有用。

網址:https://github.com/sjchoi86/Tensorflow-101

2.4 快速風格轉移網路

網址:https://github.com/lengstrom/fast-style-transfer

這個教程展示如何使用神經網路,將名畫風格轉移到任何一張照片。

2.5 影像分割

這是一個使用 TensorFlow 實現的完全卷積網路。作者 Marvin Teichmann 還提供如何把這部分字元集成到你的語義分割導管的示範。

網址:https://github.com/MarvinTeichmann/tensorflow-fcn

2.6 使用 SSD 達成物體辨識

物體辨識最快(也是最簡單)的模型之一。

網址:https://github.com/balancap/SSD-Tensorflow

2.7 面向物體辨識和語義分割的快速掩膜 RCNN

網址:https://github.com/CharlesShang/FastMaskRCNN

2.8 強化學習

網址:https://github.com/dennybritz/reinforcement-learning

非常有用,特別是當你想搭建一個機器人或下一個 DotA AI 時。

2.9 Google Brain 團隊的 Magenta 專案

網址:https://github.com/tensorflow/magenta/tree/master/magenta/models

這個專案旨在透過神經網路創造出色的藝術和音樂作品。

2.10 深度雙邊學習即時影像增強

網址:https://groups.csail.mit.edu/graphics/hdrnet/

一個很棒的影像增強演算法,來自 Google。

2.11 自動駕駛汽車專案

網址:https://github.com/udacity/self-driving-car

想做一輛自動駕駛汽車嗎?這是很好的入門。

三、FAQ

(Source:Designed by Freepik

如果中途卡住了怎麼辦?

首先,你得明白機器學習不是 100% 精確的東西,大多數情況下只是一個很好的猜測,且需要大量調整更新。大多數情況下,想出一個獨特的點子非常困難,因為你的時間和資源將耗費在訓練模型上。

所以,不要自己想解決方案。去搜尋論文、專案,以及求助他人,積攢的經驗越多,你會做得越好。提供幾個可能有用的網站:

為什麼論文無法完全解決這個問題,為什麼論文有些地方是錯的?

很遺憾,並不是所有科技人都想把成果公之於眾,但他們都需要發表論文來獲得「名」或「利」。所以一些人可能只釋出部分素材,或者給錯誤的公式。所以找到程式碼永遠比找到論文更有用。

哪裡可找到最新的資料?

參照上面建議過的幾個網站,尤其是 gitxiv.com,不僅能找到論文,而且還能找到程式碼,所以特別實用。

我應該用雲端計算還是桌機/筆記型電腦?

雲端更適用大量計算需求的情況。對學習和測試來說,使用桌機或筆電要便宜得多,當然前提是有支援 CUDA 的顯卡。比方,我自己就用筆電訓練模型,顯卡是有 690CUDA 核心的 GTX GeForce 960M。

當然,如果有免費的雲資源可用,當然要用。

如何調整超參數更好?

訓練的主要問題是時間。你不可能一直坐在那看著訓練資料。因此,我建議你使用 Grid Search。基本上,只需要建立一組超參數和模型架構,然後一個接一個執行,並儲存結果。這樣就能晚上訓練,白天比對結果,找到最有希望的那個。詳情可參照這個網址:http://scikit-learn.org/stable/modules/grid_search.html

(本文由 AI新媒體量子位 公眾號:QbitAI  授權轉載)

延伸閱讀: