只用 4 个月打造机器学习必备技能,这位工程师成功翻转职涯人

 

只用 4 个月打造机器学习必备技能,这位工程师成功翻转职涯人

 

这其实就是线性代数,不是什幺高深的学问。

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

这里,我就不再介绍原先的学习计划以及随后在 LinkedIn 上的跟进讨论了。如果你不怕冗繁的细节,可以重新去看原文:

学习计划:

跟进讨论:

长话短说:我学完了,现在开始找工作

 

想马上知道接下来的事情吗?且听我说。我并没有完全照着一开始的计划,按部就班地学习,而更像是 一段长达 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)

2. 吴恩达的机器学习(Coursera)

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 上找到它们

我的深度学习阅读清单(英文资料)

课程

1. 深度学习 – 第 1 部分:MOOC 版本   和  USF,数据研究所:深度学习 – Fast.ai  的 第 1 部分

2. 数据科学家与 Python 轨道 – DataCamp

3. 史丹佛大学机器学习 – Coursera

影片

1. 深入学习神秘化

2. 卷积神经网络的工作原理

书籍、论文、文章和部落格好文

1. 神经网络架构

2. 在 11 行 Python 编程中的神经网络

3. Standford CS231n:视觉识别的积卷神经网络

4. Grokking 深度学习

5. 设计出优秀的数据产品

6. 开始使用 TensorFlow

7. 深入 MNIST 专家

8. TensorFlow 机械学 101

9. 递归神经网络的惊人效果

10 .Breaking Linear Classifiers

11. Explaining and Harnessing Adversarial Examples

12. 如何欺骗神经网络把熊猫误认成一只秃鹰

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 开发工作,甚至会更好。

那幺,了解完我的这段经历,你认为,任何人都有机会能成为全端机器学习工程师吗?

附上文章原文网址

延伸阅读

机器学习发展简史:只花三年错误率比人类更低
史上最完整机器学习自学攻略!我不相信有人看完这份不会把它加进我的最爱
附资源与完整指导!带你从零开始掌握 Python 机器学习
IBM、Google、Amazon 人工智慧技术遭质疑!AI 和机器学习、数据分析差别究竟在哪?
2017 年 15 个最好用 Python 库,学习资料科学、机器学习绝对不容错过