【我們為什麼挑選這篇文章】工程師轉型做 AI、機器學習究竟需要學多久?1年?3年?相信這是絕大多數考慮轉型的人,從一開始就會認真思考的問題。
來看看這位多倫多軟體工程師 Jason Carter 的轉型之路。他在 4 月份打算轉型機器學習,並公佈了一項為期 3 個月的學習計劃。 如今計劃期滿,他完成得怎麼樣呢?轉型之路有何心得?我們來看看他怎麼說?(責任編輯:劉庭瑋)
這其實就是線性代數,不是什麼高深的學問。
我做了什麼?怎麼做到的?
這裡,我就不再介紹原先的學習計劃以及隨後在 LinkedIn 上的跟進討論了。如果你不怕冗繁的細節,可以重新去看原文:
學習計劃:
https://medium.com/towards-data-science/my-3-month-deep-learning-career-pivot-af94cd8d6a31
跟進討論:
https://www.linkedin.com/pulse/self-study-guide-becoming-deep-learning-non-expert-jason-carter
長話短說:我學完了,現在開始找工作
想馬上知道接下來的事情嗎?且聽我說。我並沒有完全照著一開始的計劃,按部就班地學習,而更像是一段長達 4 個月的、擠滿額外內容的學習經歷。現在,我馬上就要完成這段職業生涯的轉型經歷了,所以想和你們分享一下我的體會。
先分享一下我最終版的學習日程,然後再跟您們討論這中間的變動以及我這樣做的原因,最後是給初學者的一些建議。
順便說一句,文章開篇這句「這其實就是線性代數,不是什麼高深學問」,意味的是機器學習或深度學習並不簡單。
我的學習日程
這段時間,我一直全身心的投入在學習上,每天學習10-14小時。我每天都努力完成時間安排,並且沒有放下健身房和午餐的休息時間。大部分時候都可以正常完成,有時候也會熬到凌晨 1 點或 2 點再睡覺,但也有幾天什麼事情也沒完成。有時候是因為我的懶惰(夏天實在容易變懶),其他時候是因為太累了。
這裡還要提一下我學這些的背景—教育基礎,我有一個軟體工程學位和 Udacity 數據分析師(Nanodegree)的認證。除了工作經驗,還是一名開發者和分析師。
第一個月
1. 深度學習-第1部分(開始): https://medium.com/towards-data-science/fast-ai-the-toc-of-practical-deep-learning-part-1-70c89187d654
2. 嘗試 Kaggle 競賽: https://www.kaggle.com/
3. 分享經驗:中級
4. 參加本地研討會(一般AI討論)
第二個月
1. 深度學習 – 第 1 部分(完成)
2. 從頭開始構建深度學習框架
3. MNIST 對抗挑戰(使用500px面試項目進行實踐)
4. 數據科學家與 Python,職業培訓營 DataCamp(開始)
5. 分享經驗:中級
6. 參加本地研討會(AI講座和小組討論)
第三個月
1. 深度學習- 第 2 部分(開始+暫停)
2. 數據科學家與 Python,職業培訓營 DataCamp(完成)
3. 吳恩達的機器學習:Coursera(已完成)
4. 分享經驗:中級
5. 更多本地研討會(DeepLearning:TensorFlow 和 Kubernetes)
第四個月
1. 深度學習,第2部分(開始)
2. Capstone:構建和部署端到端深度學習產品(開始)
3. 分享經驗:中級
雜項
1. 就像一個筆記,每個課程或程序都有很多閱讀材料(例如,部落格文章、史丹佛大學線上 CNN 課程,學術論文等),和往常一樣,終究要花功夫學習額外的知識。我雖然做了大量的「額外」閱讀,但肯定有一些地方跳了過去或者沒有興趣繼續了解下去。
2. 我目前已經學習到第四個月(到 7 月中旬實際上是 3.5 個月,我提前了),但是打算不久之後就開始找工作,不會一整個月都拿來學習。
細節
我對原來的時間表做了3 個比較大的改動:
1. 數據科學家與 Python(DataCamp)
3. Capstone 項目(端到端深入學習項目)
在開始深度學習的第2部分之後,我決定參加 Datacamp 舉辦的數據科學家與 Python 培訓營。要多從實踐的角度思考所學的內容,因為我目前的角色並不能簡單的劃分成單純的深度學習或單純的經典機器學習。所以儘管動手實踐深度學習的經歷很棒,但如果在接受面試時,我不了解 KNN 和 k-means 算法之間的區別,就真的會很尷尬。
另外,儘管 Fast AI program 是用 Python 教你課程內容 ,但它並不教授 Python,而 DataCamp 的職業生涯訓練營則有許多 Python在數據分析和操作方面的課程。
由於我之前已經完成了 Udacity 的數據分析課程, 所以 DataCamp 的課程對我來說,更多的像是複習(當然也有一些新的提示和技巧),但這正是我需要的。
總結起來就是:
1. DataCamp 課程適合進行深入的學習,且涵蓋範圍廣泛。它這種讓你一行一行實踐Python代碼的方式非常棒!
2. Udacity 課程則為每個機器學習算法提供了非常多的細節,方便你了解如何使用它們並構建優秀的大型項目。
史丹佛大學機器學習課程,由吳恩達在 Coursera 上教授的可能是網路上最有名的機器學習課程。這大概就是我想學它的主要原因。另外,我也從朋友那裡聽說這是一個很棒的課程。
我學這門課的目標是為了強化自己的知識基礎。雖然在之前我已經學習過 Udacity 和 DataCamp 的課程,這兩個課程都從不同的角度講述機器學習,但我認為再多學習一門這個領域中最好的課程絕對有利無害。
這門課非常有意思,有趣且具有挑戰性。像其他一切一樣,有一些我完全理解的部分,也有一些我還沒有完全搞清楚的部分。
我不認為 Octave 會在任何新項目裡幫到我,但對於完成幾次作業來說,這個軟件並不難上手。雖然這門課是一個很棒的經歷,但我仍然相信 Udacity 的數據分析 Nanodegree 更有用處。
最後一件幫助我完成學習目標的事,是 Capstone 的端到端深度學習項目。數據科學或機器/深度學習不僅僅是關於理論、算法、研究和出版論文!對於我來說,我一直想要構建產品,做一個實踐者,做一些事情。
在我的 Capstone 項目中,我將定義一個問題、潛在的解決方案、源數據、構建和測試模型、生成模型、實現 API、UI 前端並部署到「生產」上。本質上,我將要建立一個端到端的深入學習管道,從而打造一個直播產品。
……或者至少,這是一個計劃。
我對初學者的建議
開始學習。你沒有什麼好的藉口可以不去學習,哪怕是換了職業。
學幾門數學課程,但幾門也就夠了。
但我還是要差一句話,這不是說你不需要數學,而是說你只需要了解術語代表什麼意思,如何解釋它們,以及如何根據他們的訊息來修正模型(或參數)即可。但在實際實施機器學習和深度學習的世界中,並不需要博士學位:這其實就是線性代數,不是什麼高深學問。
但是,現在並不建議你開始著手一個大的項目,因為它將佔滿你的學習時間。嘗試做一些實際動手的工作,使用真實的數據進行練習,你需要它們來增長經驗和參加面試,而不是馬上就開始處理你開始新的職業生涯之後才會遇到的,更重要的現實世界的問題。
我覺得我的腦子裡已經充滿了機器學習和深度學習的「東西」,總是會還有一篇要去讀的新論文或發表的文章。所以,還是得慢慢來,而我很確定我還沒有達到我想要的程度。
綜上所述,我建議你學習的課程包括:
1. 數據科學家與 Python(DataCamp)
2. 數據分析 Nano degree(Udacity)
3. 吳恩達 Andrew Ng(Coursera)的機器學習
4. 深度學習(fast.ai)
5. 進行個人項目或參加 Kaggle 競賽進行練習(在進行步驟 1-4 的時候)
另外,這裡還有我正在更新的一些「閱讀清單」,以記錄我在學習過程中做的更重要的事情。你可以在我的 blog 上找到它們:http://jasonicarter.github.io/deep-learning-reading-list
我的深度學習閱讀清單(英文資料)
課程
1. 深度學習 – 第1部分:MOOC版本 和 USF,數據研究所:深度學習 – Fast.ai 的第1部分
影片
1. 深入學習神秘化
2. 卷積神經網絡的工作原理
書籍、論文、文章和部落格好文
1. 神經網絡架構
3. Standford CS231n:視覺識別的積卷神經網絡
5. 設計出優秀的數據產品
7. 深入MNIST專家
9. 遞歸神經網絡的驚人效果
10 .Breaking Linear Classifiers
11. Explaining and Harnessing Adversarial Examples
13. 用 Adversarial Examples 攻擊擊機器學習
14. GAN by Example using Keras on Tensorflow Backend
15. Perceptual Losses for Real-Time Style Transfer and Super-Resolution
16. 藝術風格的神經算法
17. 積卷神經算術教程
我接下來的計劃
找工作。我的最後一件事當然是恢復工作。我會嘗試盡可能有選擇地去找工作,不是說我以前沒有這樣做,而是我認為這是一個職業變化,認真審視這個過程的每一方面都是很好的。
到目前為止,我一直在被動地審查公司,調查他們在機器學習和深度學習領域中究竟做了什麼。所謂的「機器學習工程師」在深度學習方面做的很少,而其他「數據工程師」則需要很多 CNN 或 NLP 的知識以及 Docker 和 Apache Spark 等的技術。
到目前為止,我學到的兩件事
1. 沒有真正的「深度學習工程師」角色,它只是被附加到了 ML 的描述中,所以得記得仔細閱讀工作責任部分。
2. 數據科學家,數據工程師甚至數據分析師的角色可能因公司和工作職責而異。這個可以細分成企業需求和創業公司的需求。
對於我個人來說,根據我的興趣,我將尋找一個職位,讓我能夠擴展我在深度學習中的專長(它本身就是一個大領域),同時還能使用一些「經典」的機器學習技術。如果他們能丟給我一些 UI 開發工作,甚至會更好。
那麼,了解完我的這段經歷,你認為,任何人都有機會能成為全端機器學習工程師嗎?
附上文章原文網址:https://medium.com/towards-data-science/4-months-of-machine-deep-learning-89f6ab56a2fd
(本文經 AI 科技大本營 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈 四個月速成全棧機器學習?這位黑人小哥三個半月就開始找工作了 〉。Photo via Visual hunt )
延伸閱讀
【從智障變天才】機器學習發展簡史:只花三年錯誤率比人類更低
史上最完整機器學習自學攻略!我不相信有人看完這份不會把它加進我的最愛
附資源與完整指導!帶你從零開始掌握 Python 機器學習
IBM、Google、Amazon 人工智慧技術遭質疑!AI 和機器學習、數據分析差別究竟在哪?
2017 年 15 個最好用 Python 庫,學習資料科學、機器學習絕對不容錯過