因为新冠疫情宅家无事可做,印度尼西亚一位应用数学学生 Grady Matthias Oktavian 在从未用过 Python 编程的情况下,仅用不到两个月时间就拿到了谷歌 TensorFlow 开发者证书。本文将介绍他的这段经历以及学习方法。
选自TowardsDataScience,作者:Grady Matthias Oktavian,机器之心编译,编辑:Panda。
与 TensorFlow 的渊源
Oktavian 是一位爱学习的人。新冠疫情当前,在好奇心的驱动下,他阅读了大量相关的新闻和文章。有一天,他读到了一篇文章,其中介绍了一组研究者开发了一种根据 X 光片辨别普通肺炎和新冠肺炎的新系统。
这篇文章提到研究者使用了「人工智能」和「神经网络」。这引起了他的兴趣:如何才能训练出分辨不同 X 光扫描图像的系统?这个 AI 没有医学学位,却取得了超过 90% 的准确度!以此为契机,Oktavian 进入了深度学习领域。
实际上,他是在和朋友交流过 TensorFlow 和 Keras 之后才感到大开眼界的。然后他花了一天时间浏览相关文章,并看到了 Daniel Bourke 介绍自己如何获得 TensorFlow 开发者认证经历的文章。
因此,Oktavian 也决定挑战一番,但是他又担心时间不够,因为他很快就要开始工作了,而且差不多同时还要开始他的硕士课程。此外,他还没学过 Python。他真的能完成这一壮举吗?
他之前已经完成了精算学应用数学本科学业,也就是说他已经学过微积分、回归、时间序列和统计学。但是,他的 Python 技能几近于无,唯一学过的编程语言是 R。尽管 R 在处理数据相关工作时非常好用,但不幸的是 TensorFlow 开发者认证考试目前还不支持 R 语言。
Oktavian 在文中写道:「拿下这个证书对我而言具有里程碑意义,因为这样我就可以名正言顺地说自己是数据和 AI 爱好者了。」故事说完,进入正题。首先谈谈 TensorFlow。
TensorFlow 是什么?为什么应该学习它?
简而言之:TensorFlow 是一个得到广泛应用的机器学习软件库。
具体而言,TensorFlow 是一个免费的开源框架,支持用户开发端到端的机器学习和深度学习项目,覆盖从预处理到模型训练和部署的整个流程。该框架最早由谷歌大脑团队开发,在谷歌内部使用,现在已经得到广泛应用。
那么,我们为什么应该学习 TensorFlow 呢?因为它能做很多事,而且其应用的广泛程度超乎你的想象。很多时候,你甚至都不知道你在使用基于 TensorFlow 构建的服务。
你用过 Gmail 的智能回复吗?这是 AI 驱动的,能根据你的电子邮件内容给出 3 个回复建议。而它就是用 TensorFlow 构建的。
Twitter 时间线排序方法?WPS Office 的光学字符识别(OCR)?VSCO 给出的照片预设建议?它们都用到了 TensorFlow。TensorFlow 才问世四年多,就已经在我们日常使用的许多服务和产品中得到了广泛的使用。
TensorFlow 开发者认证考试是什么?参加该考试的成本如何?
TensorFlow 开发者认证考试是笔试而且必须用 Python 语言完成。在该考试中,我们可使用 Python 的 TensorFlow 库和 API。每次尝试的成本为 100 美元。如果你第一次挑战失败了,你可以在两周后再支付 100 美元重新考试。关于该考试支付和规则方面的详情可参看这个手册:https://www.tensorflow.org/site-assets/downloads/marketing/cert/TF_Certificate_Candidate_Handbook.pdf。
考试大纲包含四个要点:使用 TensorFlow 构建和训练神经网络、图像分类、自然语言处理以及时间序列。考试必须在 Pycharm IDE 中完成。
阅读手册之后,Oktavian 开始规划他的学习路径,首先是学习 Python 语言,然后是熟悉 TensorFlow。
学习之旅:第一个月
那么,一个毫无 Python 经验的应用数学研究者是如何在两个月之内成为 TensorFlow 开发者的呢?下面是他实现目标的旅程。
第一个月,首先学习 Python。如何快速做到这一点呢?他做的第一件事是进入 hackerrank(https://www.hackerrank.com/domains/python),立即上手用大量 Python 问题进行练习。当遇到靠自己无法解决的问题时,就立马上网查找解决方案。如果还没找到,那就查看参考答案并尽力理解其中的概念。
他这样一直持续了两周。此时,他已能不靠任何参考答案就能解答大部分问题了,甚至还能解决那些难度更高的问题。
那么剩余两周时间他又做了什么呢?看教程。YouTube 上有很多免费 Python 教程。你没有听错。
不过他也警告说:如果你能参加正式的 Python 课程,进行更结构化的学习,那当然更好。
Oktavian 列出了在他的学习之旅中有所助益的三个视频。这些视频是免费的,也因此被低估了。而且,这些视频就算学完了也得不到任何证书。这三个视频如下:
- Python for Beginners:该教程来自 Programming with Mosh。该视频从字符串、运算操作、函数、数据类型(列表、字典、元组)、继承开始简明清晰地介绍了 Python 中的基本概念,然后详细讲解了三个对初学者友好的项目。其中第二个项目与机器学习有关。(https://www.youtube.com/watch?v=_uQrJ0TkZlc)
- Python for Data Science Full Course:该视频来自 edureka,涵盖了必要的 Python 软件包,能帮你打下数据科学的坚实基础。视频末尾简要谈到了通过 Python 使用 Keras 和 TensorFlow 进行深度学习。(https://www.youtube.com/watch?v=-6RqxhNO2yY)
- Data Analysis with Python:该视频来自 http://freeCodeCamp.org。在开发和训练模型之前,我们常常忽视数据预处理步骤。这个视频重点关注了这一阶段,并着重介绍了收集数据、加载数据、清洗数据以及通过数据可视化来获得见解。(https://www.youtube.com/watch?v=r-uOLxNrNk8)
尽管深入学习 Python 还是应该参加正式课程,但目前来说这三个 YouTube 视频已经足够了。提醒一句:你要自己动手写代码,在看视频的过程中也要自己不断尝试。
学习之旅:第二个月
Oktavian 在第二个月里学习了 Coursera 上的 DeepLearning.AI TensorFlow 开发者专业认证课程:https://www.coursera.org/professional-certificates/tensorflow-in-practice。该课程的讲师是来自谷歌大脑的 Laurence Moroney 和 deeplearning.ai 创始人吴恩达。
该专业培训共有四门课程,涵盖了考试大纲的四个要点。每门课程为期四周,但 Oktavian 每天学习一周的课,这是他那个月要完成的最优先事项。
完成每门课程后,他都会休息一天,顺便测试所学到的知识。在这一天里,他会试验代码,或以休闲的方式探索与该课程相关的想法。
总体来说,他完成每门课程的时间为 5 天。其中 4 天用来看课程材料,第 5 天用于休息和复习。这样,他用 20 天完成了这 4 门课程。
每个课程都有编程项目,而 Oktavian 也切切实实地探索了课程提供的代码。他经常花费几个小时时间来调试神经网络的超参数,以便尽可能得到最好的验证准确度。这样,就能在创建深度神经网络模型的试错过程中获得某种「直觉」。
有时候,课程会索引数据集、文章和未分级材料等外部资源。完成并通过课程并不一定需要学习这些外部材料,但 Oktavian 还是探索了大量外部材料。这些课程大都是面向实践的,吴恩达也有一些讲解直观和理论方法的视频。
其它材料
要通过这门考试,你不一定要按同样的路径进行学习。如果你不想花 49 美元来学这门课,Coursera 上还有其它一些值得学习的课程:
- Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems(第 2 版),作者 Aurélien Géron。Oktavian 计划在未来几个月通读这本书。他认为这本书非常全面,有助于理解机器学习和深度学习的一些关键概念。与考试大纲相似的材料出现在这本书的第 10-16 章。
- Coding Tensorflow 系列视频:这个免费的 YouTube 播放列表包含了这场考试的材料,而且大部分由 Laurence Moroney 教授讲授。Oktavian 选择 Coursera 课程的原因是其提供了额外的分级测试题和项目,但如果你自己用该 YouTube 播放列表中的材料自行探索,也能取得很好的效果。另外不要忘了在 Keras 和 TensorFlow 的官网上查看文档。(https://www.youtube.com/playlist?list=PLQY2H8rRoyvwLbzbnKJ59NkZvQAW9wLbx)
参加考试
结束所有课程后,Oktavian 花了四天时间复习课程,并重读了手册。在第二个月的第 25 天,他开始考试。
很显然,这里不会谈论考试内容的细节,但他给出了有关准备和参加考试的几点说明:
- 首先,安装所需的 Python IDE。TensorFlow 认证考试目前所需的 IDE 是 PyCharm。要确保安装的版本是正确的(参考手册),禁用和卸载其它第三方插件。小建议:在参加考试之前,可以先运行一些 TensorFlow 模型测试一下,看是否有需要解决的错误。
- 考试报名:https://www.tensorflow.org/certificate。完成支付并上传身份证明(各国 ID / 护照)。这时你会收到另一份手册,这是仅提供给报名并付款后的用户的。读一下这份手册,确保你在考试开始前做好准备。
- 考试持续五小时。你要合理规划时间:当你为某问题开发的模型正在训练时,你就可以开始下一个问题了。在你的模型训练完成并保存后,不要忘记提交和测试你的模型(安装好考试插件后,你的 IDE 会有一个「测试和提交模型」按钮)。
- 首要目标是先完成所有问题,然后如果还有时间,可以回头优化你的模型。要记住:时间有限。只要你的模型得了满分,就可以放手了。
- 你可以在 Google Colab、AWS 等外部平台上训练模型。在开始考试之前,你应该学会如何从这些外部平台保存模型,然后将其载入 PyCharm。你必须用「.h5」格式保存模型。
如果你都已经研究通透,也已经学会了考试大纲中列出的要点,那么应该就能通过考试了。手册中列出的大纲极具指导意义,你可以将其用作准备考试的学习指南。
至于硬件要求,Oktavian 考试使用的是一台 AMD 笔记本电脑,没有专用 GPU,仅在处理一个有大数据集的问题时用到了一次 Google Colab。你可以在自己的设备上训练几个模型测试一下,看看你的设备是否足够完成考试。更值得担心的问题是网速和网络稳定性,因为完成考试需要上传模型。
考试结果
考试结束后,基本马上就能收到是否通过考试的邮件。在两周时间内,Oktavian 便收到了官方下发的数字证书,还可以链接到自己的 LinkedIn 页面。
该证书的有效期为三年,所以他已经计划好 2023 年再考一次。他想,届时 TensorFlow 和深度学习领域肯定已历经巨大的发展进步,考试内容可能也将发生一些变化。
总结
对 Oktavian 而言,考证并不是终点,而是一个起点。Oktavian 表示:「通过这个考试是我真正意义上的第一个超越自我的里程碑,也让我进入了数据科学的大门。」
在当前大热的 AI 和数据科学领域,不乏「三天学会」、「七天掌握」、「一个月精通」的故事,不过像 Oktavian 这样因为疫情宅家无聊而用不到两个月时间从 Python 零基础到 TensorFlow 认证开发者的经历依然让人赞叹并羡慕。