四個月速成全棧機器學習?這位黑人小哥三個半月就開始找工做了

程序員轉型AI、機器學習須要學多久?1年?3年?這是絕大多數考慮轉型的人,從一開始就要認真思考的問題。html


光說不練在這裏沒用,我們仍是要看真實的故事,來看看黑人小哥Jason Carter的轉型之路。他是多倫多的一位軟件工程師,在4月份打算轉型機器學習,並公佈了一項爲期3個月的學習計劃。前端


現在計劃期滿,他完成得怎麼樣呢?轉型之路有何心得?咱們先聽聽這位小哥本身的說法。python


做者 | Jason Cartergit

翻譯 | AI科技大本營(rgznai100)程序員

參與 | reason_W,波波github


這其實就是線性代數,不是什麼高深的學問。面試


我作了什麼?怎麼作到的?


這裏,我就再也不介紹原先的學習計劃以及隨後在LinkedIn上的跟進討論了。若是你不怕冗繁的細節,能夠從新去看原文:算法


學習計劃:app

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點再睡覺,但也有幾天什麼事情也沒完成。有時候是由於個人懶惰(夏天實在容易變懶),其餘時候是由於太累了。

這裏還要提一下我學這些的背景—教育基礎,我有一個軟件工程學位和優達學城納米級數據分析師的認證。除了工做經驗,仍是一名開發者和分析師。


第1個月


  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討論)


第2個月


  1. 深度學習 - 第1部分(完成)- https://medium.com/towards-data-science/fast-ai-the-toc-of-practical-deep-learning-part-1-70c89187d654

  2. 從頭開始構建深度學習框架- https://medium.com/towards-data-science/build-a-deep-learning-pc-for-1-000-cad-f3c5f26ba134

  3. MNIST對抗挑戰(使用500px面試項目進行實踐)- https://github.com/jasonicarter/MNIST-adversarial-images/blob/master/MNIST-adversarial-images.ipynb

  4. 數據科學家與Python,職業培訓營:DataCamp(開始)-https://www.datacamp.com/tracks/data-scientist-with-python

  5. 分享經驗:中級

  6. 參加本地研討會(AI講座和小組討論)


第3個月


  1. 深度學習 - 第2部分(開始+暫停)

  2. 數據科學家與Python,職業培訓營:DataCamp(完成)- https://www.datacamp.com/tracks/data-scientist-with-python

  3. 吳恩達的機器學習:Coursera(已完成)

  4. 分享經驗:中級

  5. 更多本地研討會(DeepLearning:TensorFlow和Kubernetes)- https://medium.com/@deeplearni.ng


第4個月


  1. 深度學習,第2部分(開始)

  2. Capstone:構建和部署端到端深度學習產品(開始)

  3. 分享經驗:中級


雜項


  1. 就像一個筆記,每一個課程或程序都有不少閱讀材料——博客文章,斯坦福大學在線CNN課程,學術論文等——和往常同樣,終究要花功夫學習額外的知識。我雖然作了大量的「額外」閱讀,但確定有一些地方跳了過去或者沒有興趣繼續瞭解下去。

  2. 我目前已經學習到第四個月(到7月中旬其實是3.5個月,我提早了),可是打算不久以後就開始找工做,不會一整個月都拿來學習。


細節


我對原來的時間表作了3個比較大的改動:


  1. 數據科學家與Python(DataCamp)- https://www.datacamp.com/tracks/data-scientist-with-python

  2. 吳恩達的機器學習(Coursera)- https://www.coursera.org/learn/machine-learning

  3. Capstone項目(端到端深刻學習項目)


在開始深度學習的第2部分以後,我決定參加Datacamp舉辦的數據科學家與Python培訓營。要多從實踐的角度思考所學的內容,由於我目前的角色並不能簡單的劃分紅單純的深度學習或單純的經典機器學習。因此儘管動手實踐深度學習的經歷很棒,但若是在接受採訪時,我不瞭解KNN和k-means算法之間的區別,仍將會十分尷尬。


另外,儘管Python提供了快速AI程序,但它並不教授Python,而DataCamp的職業生涯訓練營則有許多Python在數據挖掘和操做方面的課程。


因爲我以前已經完成了優達學城的數據分析課程, 因此DataCamp的項目對我來講,更多的像是複習(固然也有一些新的提示和技巧),但這正是我須要的。


總結起來就是:


  • DataCamp項目適合進行深刻的學習,且涵蓋範圍普遍。它這種讓你一行一行實踐Python代碼的方式很是棒!

  • 優達學城的項目爲每一個機器學習算法提供了很是多的細節,方便你瞭解如何使用它們並構建優秀的大型項目。


斯坦福大學機器學習課程,由吳恩達在Coursera上教授的多是互聯網上最著名的機器學習課程。這差很少是我想學它的主要緣由。另外,我也從朋友那裏據說這是一個很棒的課程。


我學這門課的目標是爲了強化本身的知識基礎。雖然在以前我已經學習過優達學城和DataCamp的課程,這兩個課程都涉及機器學習 - 從不一樣的角度講述,但我認爲再多學習一門這個領域中最好的課程絕對有利無害。


這門課很是有意思,有趣且具備挑戰性。像其餘一切同樣,有一些我徹底理解的部分,也有一些我尚未徹底搞清楚的部分。


我不認爲Octave會在任何新項目裏幫到我,但對於完成幾回做業來講,這個軟件並不難上手。雖然這門課是一個很棒的經歷,但我仍然相信Udacity的數據分析師納米學位有更實際的用處。


最後一件幫助我完成學習目標的事,是Capstone的端到端深度學習項目。數據科學或機器/深度學習不只僅是關於理論,算法,研究和出版論文!對於我來講,我一直想要構建產品,作一個實踐者,作一些事情。


在個人Capstone項目中,我將定義一個問題、潛在的解決方案、源數據、構建和測試模型、生成模型、實現API、UI前端並部署到「生產」上。本質上,我將要創建一個端到端的深刻學習管道,從而打造一個直播產品。


...或者至少,這是一個計劃。


我對初學者的建議


開始學習。你沒有什麼好的藉口能夠不去學習,哪怕是換了職業。


學幾門數學課程,但幾門也就夠了。


邊注:據我所知,實際的機器和深度學習不涉及計算/編碼std、求導、反向傳播、KNN等的親自實現,甚至Python中都沒有函數庫 - 儘管我相信一些面試官不這樣認爲(也就是不使用str.split()函數而分割這個字符串,由於在生產中咱們不使用庫,這讓你明白咱們通常如何處理這種商業案例。)


但我仍是要偏一句題,這不是說你不須要數學,而是說你只須要了解術語表明什麼意思,如何解釋它們,以及如何根據他們的信息來修正模型(或參數)便可。但在實際實施機器學習和深度學習的世界中,並不須要博士學位:


這其實就是線性代數,不是什麼高深學問。


可是,如今並不建議你開始着手一個大的項目,由於它將佔滿你的學習時間。嘗試作一些實際動手的工做,使用真實的數據進行練習,你須要它們來增加經驗和參加面試,而不是立刻就開始處理你開始新的職業生涯以後纔會遇到的,更重要的現實世界的問題。


我以爲個人腦子裏已經充滿了機器學習和深度學習的「東西」,老是有一篇要去讀的新論文或發表的文章。但仍是得慢慢來,我很肯定我尚未達到我想要的程度。


綜上所述,我建議你學習的課程包括:


  1. 數據科學家與Python(DataCamp)

  2. 數據分析師納米學位(Udacity)

  3. Andrew Ng(Coursera)的機器學習

  4. 深度學習(快速AI)

  5. 進行我的項目或參加Kaggle競賽進行練習(在進行步驟1-4的時候)


另附:這裏還有我正在更新的一些「閱讀清單」,以記錄我在學習過程當中作的更重要的事情。你能夠在個人博客上找到它們:http://jasonicarter.github.io/deep-learning-reading-list


課程

1. Deep Learning - Part 1: MOOC version and USF, Data Institute: Deep Learning - Part 1 from the company Fast.ai

  • http://course.fast.ai/

  • https://www.usfca.edu/data-institute/certificates/deep-learning-part-one

2. Data Scientist with Python track - DataCamp

  • https://www.datacamp.com/tracks/data-scientist-with-python

3. Machine Learning by Stanford University - Coursera

  • https://www.coursera.org/learn/machine-learning


視頻

1. Deep Learning Demystified

  • https://youtu.be/Q9Z20HCPnww

2. How Convolutional Neural Networks work

  • https://youtu.be/FmpDIaiMIeA


書、論文、文章及博客

1. Neural Network Architectures

  • https://medium.com/towards-data-science/neural-network-architectures-156e5bad51ba

2. A Neural Network in 11 lines of Python

  • http://iamtrask.github.io/2015/07/12/basic-python-network

3. Standford CS231n: Convolutional Neural Networks for Visual Recognition

  • http://cs231n.github.io/

4. Grokking Deep Learning

  • https://www.manning.com/books/grokking-deep-learning

5. Designing great data products

  • https://www.oreilly.com/ideas/drivetrain-approach-data-products

6. Get Started with TensorFlow

  • https://www.tensorflow.org/get_started

7. Deep MNIST for Experts

  • https://www.tensorflow.org/get_started/mnist/pros

8. TensorFlow Machancis 101

  • https://www.tensorflow.org/get_started/mnist/mechanics

9. The Unreasonable Effectiveness of Recurrent Neural Networks

  • http://karpathy.github.io/2015/05/21/rnn-effectiveness

10. Breaking Linear Classifiers

  • http://karpathy.github.io/2015/03/30/breaking-convnets

11. Explaining and Harnessing Adversarial Examples

  • https://arxiv.org/abs/1412.6572

12. How to trick a neural network into thinking a panda is a vulture

  • https://codewords.recurse.com/issues/five/why-do-neural-networks-think-a-panda-is-a-vulture

13. Attacking Machine Learning with Adversarial Examples

  • https://blog.openai.com/adversarial-example-research

14. GAN by Example using Keras on Tensorflow Backend

  • https://medium.com/towards-data-science/gan-by-example-using-keras-on-tensorflow-backend-1a6d515a60d0

15. Perceptual Losses for Real-Time Style Transfer and Super-Resolution

  • http://arxiv.org/abs/1603.08155

16. A Neural Algorithm of Artistic Style

  • http://arxiv.org/abs/1508.06576

17. Convolutional Arithmetic Tutorial

  • http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html


我接下來的計劃


找工做。個人最後一件事固然是恢復工做。我會嘗試儘量有選擇地去找工做,不是說我之前沒有這樣作,而是我認爲這是一個職業變化,認真審視這個過程的每一方面都是很好的。


到目前爲止,我一直在被動地審查公司,調查他們在機器學習和深度學習領域中究竟作了什麼。所謂的「機器學習工程師」在深度學習方面作的不多,而其餘「數據工程師」則須要不少CNN或NLP的知識以及Docker和Apache Spark等的技術。


到目前爲止,我學到的兩件事(或者說還沒學到?)


1. 沒有真正的「深度學習工程師」角色,它只是被附加到了ML的描述中,因此得記得仔細閱讀工做責任部分。


2. 數據科學家,數據工程師甚至數據分析師的角色可能因公司和工做職責而異。這個能夠細分紅企業需求和創業公司的需求。


對於我我的來講,根據個人興趣,我將尋找一個職位,讓我可以擴展我在深度學習中的專長(它自己就是一個大領域),同時還能使用一些「經典」的機器學習技術。若是他們能丟給我一些UI開發工做,甚至會更好...


那麼,瞭解完個人這段經歷,你認爲,任何人都有機會能成爲全棧機器學習工程師嗎?


原文地址:

https://medium.com/towards-data-science/4-months-of-machine-deep-learning-89f6ab56a2fd

相關文章
相關標籤/搜索