两年如何从计算机小白变成AI工程师?

两年如何从计算机小白变成AI工程师?

两年前我大学毕业,主修经济和金融。当时,我的职业目标是找到一份金融相关的工作,投行和咨询公司都是我梦寐以求的地方。终于在毕业前9个月,我在投行获得了一份工作。为此我非常开心,因为如果不是之前有在这家投行的实习经历,我是没法获得这样的工作机会。

工作的几个月期间,我学习了Excel VBA,学习如何使用Tableau,Power BI以及UiPath(机器人自动化过程)。慢慢的,我意识到相较于银行的产品,我对编程更感兴趣。一开始,我迷恋于研究银行产品的复杂性,然而现在,它们对于我来说,仅仅就是银行从客户那里获利的一种工具。

银行业的工作环境极大地改变了我的个人价值观,不过这是另一个话题了。与此同时,我从同事那里打开了 “机器学习”的大门。输入某些“数值”就能预测结果,这让我很感兴趣。

但问题是——我的编程技能是入门阶段。在我的字典中,Python是蛇的一种,同样Pig……是一头猪。

两年后,我成为了一名AI工程师。职业转换的旅途并不轻松。但对我而言,向AI行业的过渡仅仅是一个开始——我学习和成长的新开始,这就是我的旅程。

声明

每个人的情况不同,所以这篇文章不能成为变成AI工程师的指导。就我个人而言,我希望这篇文章能激励你去做你想做的事情,这也是我的观念,毕竟人生苦短。

我的旅程

跳上MOOCs的火车

我大学的专业是经济和金融,所以我不知道什么是编程。Excel VBA和编程很相似,但也就是那样了。为了加入数据科学家行列,我注册了MOOCs。这个平台上有很多资源。下面就是我注册学习的课程:

· Python BootCamp: Go from zero to hero in Python 3 [Udemy]
· Python for Data Science and Machine Learning Bootcamp [Udemy]
· Managing Big Data with MySQL [Coursera]
· Java Tutorial for Beginners [Udemy]
· The Web Developer Bootcamp [Udemy]
· Machine Learning A-Z: Hands-On Python & R in Data Science [Udemy]
· Deploy Machine Learning & NLP Models with Docker [Udemy]

实际上,大部分的课程我都没有完成(只有黑体字的部分是我上完的)。我陷入了所谓的MOOCs自我拖延周期。因为能够容易的从一门课换成下一门课,而且每门课涵盖的主题都非常有限,因此我很快就对一门课失去兴趣,从而无法继续完成。

对我而言,MOOCs的最大缺点——所涵盖的知识点很有限。同时,希望从MOOCs开启数据科学家之旅的想法,也有点想当然了。

MOOCs课程上教授的机器学习,往往仅留于表面而忽略模型的实际应用,随机森林仅仅被归为决策树的集合,支持矢量机仅作为分类方法,而不介绍如何确定超平面。

当接触到深度学习之类的更高级的AI领域时,“我所知道的”与“我所需要知道的”之间的差异越来越大。教深度学习的MOOCs课程通常会提供一套完善的数据集,比如MNIST,然后在Tensorflow上提供相关的代码。学员操作完之后,MOOCs就会告知,你现在就是深度学习的专家了(我说的有点夸张,但请意会)。这显然与实际情况相去甚远,因为深度学习的论文中,通常包含复杂的体系结构,这些体系结构涉及对深度神经网络模型的特征提取的分析,以及其他更复杂的概念,例如变换器和双向编码。理解某个最新模型优于其他模型的原因,以及理解转移学习和元学习等概念也很重要。

MOOCs上的机器学习课程常常给人一种错误的印象,即任何人都可以成为机器学习的实践者。但其课程却只是涉及.fit()和.predict()相关的几行代码,因此MOOCs课程让学员觉得可以相对轻松地开始实践机器学习技能了。

不过别误会我,MOOCs很棒,为人们提供了快速简便的平台来获取知识。但MOOCs不会让你成为领域专家。完成这些课程后如何去继续学习,才会决定你是否成为专家。

付诸实践

完成几门MOOCs课程之后,我基本是一无所获。不过,我入门了Python,并掌握了一些基本技能,以及知道如何以fit()和predict()的方式使用sci-kit学习。但是也就仅此而已。为了提高编程技能,我在Hackerrank上进行了练习,并完成了有关SQL和Python的问题,除此之外,我希望可以参加一些实际的项目去使用Python语句。同时,我操作了一个自动订票系统,为我预约到了羽毛球场地。这个自动订票系主要涉及使用Selenium与浏览器进行交互来浏览各个网页,并最终选择合适的球馆,交付费用(这类似于sneaker shoe bots)。我这样做的原因是,新加坡的羽毛球场通常要提前两周预订,很多人常常在发布时间的当天在预订站点扎营(这些场馆往往在一两秒钟之内就被预订了)。

即使我对用Python编写代码有信心,但我对编码效率一无所知。时间和空间的复杂性对我来说完全陌生。面向对象的编程在我脑海中是一个空白的概念。在机器学习方面,我是Jupyter  Notebook专家。我可以将Jupyter Notebook的主题更改为“暗模式”,并熟悉所有该工具的快捷键。显然,我已经准备好当一名数据科学家了。

然而事实上,我面试数据科学家遭遇惨败。涉及编程的技术测试让我束手无策。不过比起技术分析师,我被推荐去做商业分析师。

我离我想到的地方不远了。

更多的实践

为了深入学习机器学习并磨练我的Python技能,我决定在新加坡管理大学攻读商业IT硕士学位(AI方向)。

我学习了传统机器学习模型背后的数学原理,并在自定义数据集上应用了最新的深度学习架构。我学习了有关AI的重要概念,包括常见的搜索算法,Q学习和深度Q学习。我了解了算法设计,包括图形算法,时间和空间复杂度,名称匹配算法以及许多让非计算机专业的我头晕眼花的算法。从本质上讲,这些专业的课程为我提供了一套具有学术性的严谨教学内容,这正是MOOCs所缺乏的。

在读研期间,我做过几个项目。但这些项目远不如实际的项目,因为学校项目的数据集通常来源于Kaggle,并且在Jupyter Notebook 上进行操作。为了确保一致性,接下来会在Docker上运行了深度学习的模型,仅此而已,因为毕竟是学校的项目。

就我个人而言,硕士的学习经历为我提供了成为AI专家的理论支持,但是我缺乏的是现实里的项目经验。硕士学位的课程没法教会你从事数据科学工作的必要条件——这点必须要记得。数据科学家的工作范围通常需要软件工程和DevOps技能(工作范围不算广)。在大公司里,协作编程也很重要。因此,了解如何设置Docker环境,启动AWS EC2,在Azure blob存储上托管数据集,有效地组织代码以及使用GitHub或GitLab进行版本控制是必要的技能,这些课堂上都没法教。

就算你觉得自己没有准备好也要去尝试

我一直都在面试,在技术面试和非技术面试中积累了大量的经验(尽管大部分的面试我都被淘汰了)。这些面试使我知道了我需要继续学习的地方,从而我能够花时间来学习这些不足。更重要的是,这些面试让我明白了公司为相同角色提出不同类型的职位描述,以及如何将公司AI成熟度与这些职位相对应。

两年后,我找到了提供岗前培训的AI工程师职位。这对我来说是一个学习和发展自己所热爱的领域的绝佳机会。不仅如此,我的这份offer证明了任何人都可以完成他们心之所想的事情,尽管有些人可能需要付出比其他人更长的时间。

归根结底,寻找自己热爱的职业是马拉松,而不是短跑。请做自己喜欢做的事情,因为你将会花费你一生很大部分的时间在工作上。

如果你现在感到迷茫,请记住Elsa所说的话,然后“做对的事情”。

作者:David Chong