本文翻译自Medium上的一篇文章,原文标题:I had no idea how to write code two years ago. Now I’m an AI engineer. 点击文末的阅读原文可以跳转到英文原文。
两年前,我大学毕业,大学读的经济和金融学。我决定从事金融业,投资银行和全球市场 - 这些都是理想的工作。毕业前9个月,我在一家投资银行谋得一份职位,感到很自豪,因为如果以前没有在那家银行任职,通常很难谋到这个职位。
工作了几个月后,我学习了一些 Excel VBA,还学习了如何使用 Tableau,Power BI 和 UiPath(机器人过程自动化软件)。我认识到我对选择这些工具,学习编码更感兴趣,而不是学习银行产品。曾经因其复杂性而令我着迷的银行产品,现在仅被视为银行从客户获利的一种方式。
银行业环境极大地冲击了我的个人价值观,但这是另一个话题。
同时,与我一起工作的同事为我敞开了机器学习世界。一个人可以从某些输入中预测某些结果的事实使我很感兴趣。
我立刻被迷住了。
但是有一个问题 – 我只有初级的编码技能。在我的字典中,Python 是蛇的一种,而 Pig ... 是一头猪。
时光飞逝,两年后,我进入 AI 行业,成为 AI 工程师。这一路并不轻松,也不短。对我而言,转战 AI 行业仅仅是开始 - 我学习和成长的新开始。这就是我的旅程。
每个人的数据科学之旅都是不同的。本文不是探讨如何进入人工智能,不应将其视为手把手指南。我希望这是个人的轶事,我希望它能激发人们的信念,去做自己想做的事情,因为生命太短暂了,不要去过没有意义的生活。
登上 MOOC 快车
虽然具有经济和金融学背景,但我不知道如何编码。Excel VBA 非常近似于编程,但仅此而已。作为一名优秀的学生,我想加入到数据科学的潮流中来,因此报名参加了一些的大规模开放在线课程(Massive Open Online Courses, MOOC)。不是一个,而是少量。这是我注册的课程列表:
Python 训练营:Python 3 从零开始到精通[Udemy]
适用于数据科学和机器学习的Python训练营 [Udemy]
使用MySQL管理大数据[Coursera]
Java初学者教程[Udemy]
Web开发人员训练营[Udemy]
机器学习A-Z:动手实践数据科学, Python 和 R [Udemy]
使用Docker部署机器学习和NLP模型[Udemy]
不用说,我并没有完成其中的大部分课程(只完成了黑体字的部分)。我陷入了所谓的 MOOC 自我延续周期。容易获得知识使得从一门课程转到下一门课程是很自然的,由于所涵盖主题的简短,使我的兴趣短暂,常常无法完成前一门课程。
对我而言,这是 MOOC 的最大缺点 - 所涵盖内容的过于简单。也许我最初对 MOOC 可以推动我从事数据科学事业的期望太过幼稚。
为了说明问题,典型的 MOOC 讲授传统的机器学习(ML)方法通常会浮于表面,而略过模型实际的作用。随机森林被教导为决策树的集合,但是不涉及决策树如何确定在哪个分支选择了哪些特征(比如熵的概念和数学知识)。支持向量机仅作为分类方法进行讲授,但是将不介绍如何确定超平面。
当我们研究诸如深度学习之类的更高级的 AI 领域时,我所知道的与我所需要知道的之间的差异得到了体现。教深度学习的 MOOC 通常会在 Tensorflow 上使用诸如 MNIST 这样的不错的数据集编写大量代码,并得出结论,您现在是深度学习专家(我有点夸张,但您会明白要点)。这显然与实际情况相去甚远,因为研究论文通常包含复杂的体系结构,涉及理解深度神经网络模型中的特征提取,以及其他更复杂的特征,例如变换器和双向编码。理解为什么某些最新模型比其他模型更好地工作,以及迁移学习和元学习等概念也很重要。
我认为,教学机器学习(ML)的 MOOC 常常给人一种错误的印象,即任何人都可以成为 ML 实践者。天真地认为, ML 只是涉及 .fit() 和 .predict() 的几行代码,这是因为 MOOC 以这样一种方式表达:人们可以相对轻松地开始使用ML(也许可以将它们货币化,由于 ML 的大量宣传,课程非常有利可图)。
别误会我 - MOOC很棒。它们为人们提供了快速简便的方法来获取知识并进入某个领域。它们会让您成为专家吗?不。完成课程后,您要做什么,将决定您是否成为专家。
动手实践
完成了几门 MOOC 之后,我知道自己再不会有所收获。当然,我掌握了一些 Python 的基本技能,并且知道如何以 .fit() 和 .predict() 的方式使用 sci-kit learn,但是仅此而已。
为了提高我的编码技能,我在 Hackerrank 上进行了练习,并完成了有关 SQL 和 Python 的问题。同时,我希望有一个可以使用 Python 的真实项目。我开始做一个可以为我预订羽毛球场的机器人的项目。这主要涉及使用 Selenium 与浏览器进行交互以浏览网页,并最终加入购物车并向羽毛球馆付费(这类似于秒杀运动鞋机器人)。这样做的动机是,新加坡的羽毛球场通常两周之前就预订一空,很多人常常每天蹲守网站,守候发布时间(他们通常在一两秒钟之内就预订了)。
即使我对用Python编写代码更有信心,但我对代码效率一无所知。时间和空间的复杂性对我来说完全陌生。面向对象的编程在我脑海中是一个永远不会发光的概念(更不用说最终被遗忘了)。
在 ML 方面,我是 Jupyter notebook 专家。我可以将 Jupyter notebook 的主题更改为暗模式,并会使用所有键盘快捷键。显然,我已做好担任数据科学家角色的准备。
现实检验 - 我的面试惨败。还没等我提及数据科学,涉及代码的技术测试便挡住了我的脚步。我申请的技术分析师的职位使我转到了另一个部门,因为他们认为我会更好地担任业务分析师。
我离我要去的地方还很远。
实践还不够
为了深入了解 ML 并磨练我的 Python 技能,我决定前往新加坡管理大学攻读商业 IT 硕士学位(专门研究 AI )。
我了解了传统 ML 模型背后的数学原理,并在自定义数据集上应用了最新的深度学习架构。我了解了有关 AI 的重要概念,包括常见的搜索算法,Q-learning和深度Q-learning。我学习了算法设计,包括图形算法、时间和空间复杂度、名称匹配算法以及许多几乎使我的非计算机科学头脑爆裂的算法。从本质上讲,该课程为我提供了 MOOC 所缺乏的学术严谨性。
在这个时候,我有几个导师的项目。它们不是完整的项目,因为数据集通常是从 Kaggle 提供或获取的,并且通常在Jupyter notebook中展现。为了确保一致性,在Docker上运行了深度学习模型,但从未考虑过部署方面。它们毕竟是学校的项目。
我认为,硕士课程为 AI 专业人员提供了严格的学术要求,但缺乏实际应用方面的锻炼。硕士学位课程不会告诉您从事数据科学工作的必要条件 - 您必须自己弄清楚这一点。数据科学家的工作范围通常需要软件工程和 DevOps 技能(尽管范围不广)。在大型组织中,代码协作也很重要。因此,了解如何设置 Docker 环境、启动 AWS EC2 实例、在 Azure blob 存储上托管数据集、有效地组织代码以及使用 GitHub 或 GitLab 进行版本控制是一些必需的关键技能,但课堂上并未讲授这些技能。
即使您认为自己不够出色,也要尝试
我继续进行面试,在技术面试和非技术面试中积累了很多经验(尽管大多数都不及格)。它还使我知道了我不知道的内容,并花了一些时间来学习这些技能。更重要的是,它使我能够理解公司为相同角色提出的不同类型的职位描述,以及这些职位描述如何与公司在采用 AI 方面的成熟度相对应。
两年后,我获得了一个AI 工程师的职位。对我来说,这是一个学习和发展自己充满激情的领域的绝佳机会。不仅如此,这证明了任何人都可以完成他们打算要做的事情,尽管有些人可能要花更长的时间。
归根结底,职业是马拉松,而不是短跑。做自己喜欢做的事情,因为它将占据你生命中的大部分时间。
如果您感到迷茫,请记住 Elsa 所说的话,然后做对的事情。
很高兴收到任何评论:)