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

AI科技大本營發表於2017-07-15

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


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


如今計劃期滿,他完成得怎麼樣呢?轉型之路有何心得?我們先聽聽這位小哥自己的說法。


作者 | Jason Carter

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

參與 | reason_W,波波


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


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


這裡,我就不再介紹原先的學習計劃以及隨後在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點再睡覺,但也有幾天什麼事情也沒完成。有時候是因為我的懶惰(夏天實在容易變懶),其他時候是因為太累了。

這裡還要提一下我學這些的背景—教育基礎,我有一個軟體工程學位和優達學城奈米級資料分析師的認證。除了工作經驗,還是一名開發者和分析師。


第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


相關文章