想成为机器学习工程师?这份自学指南值得你收藏

2020-07-10 阅读948 点赞515
想成为机器学习工程师?这份自学指南值得你收藏

本文作者为 Andrey Nikishaev,既是软体开发者,也是创业者。

如何成为一名机器学习工程师?

经常有人这幺问,这篇文章就尝试回答这个问题,其中会谈到关于机器学习各方面,从简单的线性回归到最新的神经网路。你不仅将学习如何使用这些技术,还将学习如何从头开始建构。

这个指南主要针对电脑视觉(CV),这也是掌握一般知识的最快方式,从 CV 中抓取的经验可简单应用到机器学习的其他领域。

我们将使用 TensorFlow 为框架。这些课程需要你会 Python,虽然不要求你是大师,但至少要懂基本知识(另外,都是英语授课)。

温馨提示,学习知识与动手实践结合,效果更佳。

一、课程

1.1 约翰霍普金斯大学的实用机器学习

课程总共 4 週,用户评分:4.4(5 分制,下同)

网址

1.2 史丹佛大学的机器学习

课程总共 11 週,用户评分:4.9。授课教师是大名鼎鼎的吴恩达。

网址

上面两节课,会教你资料科学和机器学习的基本知识,并为下面的学习做好準备。

1.3 CS231n:面向视觉辨识的卷积神经网路

总共 16 堂课,目前已更新为 2017 春季最新版本。李飞飞是这节课的导师。

网址

现在才算步入正轨。这是网路上最好的机器学习与电脑视觉课程。

想成为机器学习工程师?这份自学指南值得你收藏

1.4 Google 讲深度学习

整个课程大约耗时 3 个月,导师为 Google 首席科学家 Vincent Vanhoucke,以及 Google Brain 的技术负责人 Arpan Chakraborty。

在这个课程中,将教授深度学习的原理、设计可从複杂的大型资料集学习的智慧系统、训练和最佳化基本的神经网路、CNN、LSTM 等。

网址

选修课。你可以只看其中练习的部分。

1.5 CS224d:面向自然语言处理的深度学习

总共 17 堂课。

网址

选修课。建议给那些需要用到 NLP 的同学。课程内容也很棒。

1.6 深度学习电子书

Leonardo Araujo dos Santos 整理的深度学习电子书。

网址

选看。这是一本涉及诸多机器学习领域的好书。

二、练习

这部分给了一堆教程和专案清单,你应该逐一尝试并了解它们的工作原理,以及考虑如何改进提升。这个清单的存在,只是为了增加你对机器学习的兴趣,所以遇到一些困难也别气馁,当你準备好就可以随时上手练习。

2.1 TensorFlow 上的简单练习

Kadenze 学院出品,总共 5 堂课。

网址

2.2 Tensorflow 食谱

这部分内容来自 Nick McClure 的电子书《TensorFlow Machine Learning Cookbook》。

网址

2.3 Tensorflow-101 教程部分

这是一个用 Python 和 Jupyter Notebook 编写的教程。尝试为 TensorFlow 初学者提供尽可能的详细解译,希望对大家有用。

网址

2.4 快速风格转移网路

网址

这个教程展示如何使用神经网路,将名画风格转移到任何一张照片。

想成为机器学习工程师?这份自学指南值得你收藏

2.5 影像分割

这是一个使用 TensorFlow 实现的完全卷积网路。作者 Marvin Teichmann 还提供如何把这部分字元集成到你的语义分割导管的示範。

网址

2.6 使用 SSD 达成物体辨识

物体辨识最快(也是最简单)的模型之一。

网址

2.7 面向物体辨识和语义分割的快速掩膜 RCNN

网址

2.8 强化学习

网址

非常有用,特别是当你想搭建一个机器人或下一个 DotA AI 时。

2.9 Google Brain 团队的 Magenta 专案

网址

这个专案旨在透过神经网路创造出色的艺术和音乐作品。

2.10 深度双边学习即时影像增强

网址

一个很棒的影像增强演算法,来自 Google。

2.11 自动驾驶汽车专案

网址

想做一辆自动驾驶汽车吗?这是很好的入门。

三、FAQ想成为机器学习工程师?这份自学指南值得你收藏

如果中途卡住了怎幺办?

首先,你得明白机器学习不是 100% 精确的东西,大多数情况下只是一个很好的猜测,且需要大量调整更新。大多数情况下,想出一个独特的点子非常困难,因为你的时间和资源将耗费在训练模型上。

所以,不要自己想解决方案。去搜寻论文、专案,以及求助他人,积攒的经验越多,你会做得越好。提供几个可能有用的网站:

为什幺论文无法完全解决这个问题,为什幺论文有些地方是错的?

很遗憾,并不是所有科技人都想把成果公之于众,但他们都需要发表论文来获得「名」或「利」。所以一些人可能只释出部分素材,或者给错误的公式。所以找到程式码永远比找到论文更有用。

哪里可找到最新的资料?

参照上面建议过的几个网站,尤其是 gitxiv.com,不仅能找到论文,而且还能找到程式码,所以特别实用。

我应该用云端计算还是桌机/笔记型电脑?

云端更适用大量计算需求的情况。对学习和测试来说,使用桌机或笔电要便宜得多,当然前提是有支援 CUDA 的显卡。比方,我自己就用笔电训练模型,显卡是有 690CUDA 核心的 GTX GeForce 960M。

当然,如果有免费的云资源可用,当然要用。

如何调整超参数更好?

训练的主要问题是时间。你不可能一直坐在那看着训练资料。因此,我建议你使用 Grid Search。基本上,只需要建立一组超参数和模型架构,然后一个接一个执行,并储存结果。这样就能晚上训练,白天比对结果,找到最有希望的那个。详情可参照这个网址