四个月速成全栈机器学习?这位黑人小哥三个半月就开始找工作了

7,714 阅读10分钟

程序员转型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