程序员转型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部分(开始)- https://medium.com/towards-data-science/fast-ai-the-toc-of-practical-deep-learning-part-1-70c89187d654
尝试Kaggle竞赛 - https://www.kaggle.com/
分享经验:中级
参加本地研讨会(通常AI讨论)
深度学习 - 第1部分(完成)- https://medium.com/towards-data-science/fast-ai-the-toc-of-practical-deep-learning-part-1-70c89187d654
从头开始构建深度学习框架- https://medium.com/towards-data-science/build-a-deep-learning-pc-for-1-000-cad-f3c5f26ba134
MNIST对抗挑战(使用500px面试项目进行实践)- https://github.com/jasonicarter/MNIST-adversarial-images/blob/master/MNIST-adversarial-images.ipynb
数据科学家与Python,职业培训营:DataCamp(开始)-https://www.datacamp.com/tracks/data-scientist-with-python
分享经验:中级
参加本地研讨会(AI讲座和小组讨论)
深度学习 - 第2部分(开始+暂停)
数据科学家与Python,职业培训营:DataCamp(完成)- https://www.datacamp.com/tracks/data-scientist-with-python
吴恩达的机器学习:Coursera(已完成)
分享经验:中级
更多本地研讨会(DeepLearning:TensorFlow和Kubernetes)- https://medium.com/@deeplearni.ng
深度学习,第2部分(开始)
Capstone:构建和部署端到端深度学习产品(开始)
分享经验:中级
就像一个笔记,每一个课程或程序都有不少阅读材料——博客文章,斯坦福大学在线CNN课程,学术论文等——和往常同样,终究要花功夫学习额外的知识。我虽然作了大量的“额外”阅读,但确定有一些地方跳了过去或者没有兴趣继续了解下去。
我目前已经学习到第四个月(到7月中旬其实是3.5个月,我提早了),可是打算不久以后就开始找工做,不会一整个月都拿来学习。
我对原来的时间表作了3个比较大的改动:
数据科学家与Python(DataCamp)- https://www.datacamp.com/tracks/data-scientist-with-python
吴恩达的机器学习(Coursera)- https://www.coursera.org/learn/machine-learning
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()函数而分割这个字符串,由于在生产中咱们不使用库,这让你明白咱们通常如何处理这种商业案例。)
但我仍是要偏一句题,这不是说你不须要数学,而是说你只须要了解术语表明什么意思,如何解释它们,以及如何根据他们的信息来修正模型(或参数)便可。但在实际实施机器学习和深度学习的世界中,并不须要博士学位:
可是,如今并不建议你开始着手一个大的项目,由于它将占满你的学习时间。尝试作一些实际动手的工做,使用真实的数据进行练习,你须要它们来增加经验和参加面试,而不是立刻就开始处理你开始新的职业生涯以后才会遇到的,更重要的现实世界的问题。
我以为个人脑子里已经充满了机器学习和深度学习的“东西”,老是有一篇要去读的新论文或发表的文章。但仍是得慢慢来,我很肯定我尚未达到我想要的程度。
综上所述,我建议你学习的课程包括:
数据科学家与Python(DataCamp)
数据分析师纳米学位(Udacity)
Andrew Ng(Coursera)的机器学习
深度学习(快速AI)
进行我的项目或参加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