从银行业务员转行AI工程师,我经历了什么
Jakub Kriz 发布在 Unsplash 上的照片
两年前,我大学毕业。由于我的专业是经济学和金融学,因此我准备从事金融业。投资银行和全球市场——这些都是我梦寐以求的工作。在毕业前 9 个月,我在一家投资银行谋到了一个职位,我感到很自豪,因为那家银行非常难进,如果没有在那家银行实习过,通常是很难通过面试的。
工作几个月后,我学会了 Excel VBA,并学会了如何使用 Tableau、Power BI 和 UiPath(一个机器人自动化软件)。我意识到我更感兴趣的是学习这些工具和代码,而不是学习银行产品。银行产品曾一度因其复杂性而引起我的兴趣,现在却被视为银行从客户身上赚取利润的一种方式。
另外,银行业的工作环境和我的个人价值观差异很大,这对我来说是一个巨大的挑战。
在这个时候,我的一位同事带我看到了「机器学习」的世界。一个人可以「预测」到哪些投入会产生怎样的结果,这让我非常感兴趣。
但有一个问题:我对于编程了解的不是很多。在我的字典里,Python 是一种蛇,而 Pig 是......一头猪。
两年后的今天,我即将进入人工智能行业,成为一名 AI 工程师。这段经历并不容易,时间也不短。对我来说,向人工智能产业的转型仅仅是一个开始——对我来说,这是一个学习和成长的新起点。本文就是我的经历。
免责声明
每个人的数据科学之旅都是不同的。这篇文章不是关于「如何学会人工智能」的,不应该被看作是一个循序渐进的指南。这只是我个人的经历,我希望能激励人们去做他们想做的事,因为生命太短了,不能活得没有意义。
我的旅程
加入 MOOC 课程学习
虽然有经济和金融背景,但我不知道如何编码。Excel VBA 和编码很接近,但也只是相似。作为一个优秀的人,为了进入数据科学的行业,我报名参加了 MOOC 上的一些大规模的在线开放课程。以下是我报名参加的课程清单:
-
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]
但是,除了加粗的部分,大部分课程我都没有完成。由于获得知识太容易了,我陷入了恶性循环,我很自然而然地在一门课程没有学完的时候转到另一门课,并且兴趣转瞬即逝。
对我来说,这是 MOOC 最大的缺点——内容的简洁性。或者,我最初的期望是 MOOC 可以推动我从事数据科学的职业,这可能太天真了。
为了让人印象深刻,一个教授传统机器学习(ML)方法的典型 MOOC 课程通常会略过诸如模型实际是做什么的这种基础知识。你会学到随机森林是决策树的集合,但不会学到决策树是如何决定在哪个分支(即熵的概念和数学原理)上选择哪些特征不被覆盖。支持向量机只是作为一种分类方法来教,但如何确定超平面将不包括在课程内。
「我知道的」和「我需要知道的」之间的这种差异在我学习人工智能的更高级领域(如深度学习)时得到了证明。教授深度学习的 MOOC 课程经常在 Tensorflow 中向 MNIST 这样一个好的数据集抛出一堆代码,并告诉你,你现在是一个深度学习专家了。这显然与现实相去甚远,因为论文通常包括复杂的体系结构,其中涉及到深度神经网络模型中特征提取的理解,以及其他更复杂的特征,如 transformer 和双向编码。理解最先进的模型相比其他模型的优势在哪里,这一点也很重要,同时迁移学习和元学习等概念也是很重要的。
在我看来,MOOC 课程常常给人一种错觉,即任何人都可以成为 ML 实践者。它可能会让初学者觉得,ML 只是涉及 .fit()和 .predict()的几行代码,这是因为 MOOC 为了让人们可以相对轻松地开始使用 ML(也许由于 ML 相关的大量宣传,将这些课程货币化及其有利可图)而以这些作为教学材料。
别误会我的意思,MOOC 课程很好,它为人们提供了一种快速而简单的方式来获取知识并开始某个话题。但是,它们会让你成为专家吗?显然不能。你在完成课程后做什么,将决定你是否成为专家。
学习更多技能
在完成了几次 MOOC 课程之后,我知道自己还是什么都不会。当然,我知道了 Python 中的一些基本技能,知道如何使用 sci kit 从.fit()和.predict()。
为了提高我的编程技能,我在 Hackerrank 上练习并完成了 SQL 和 Python 相关的题目。同时,我希望有一个真实的 Python 项目。就在那时,我开始研究一种可以为我预订羽毛球场的机器人。这个项目主要包括使用 Selenium 与浏览器交互、浏览网页、最终下单并支付羽毛球场的费用。其动机是,新加坡的羽毛球场通常提前两周就预订满了,很多人每天都会在发售时间在预订网站扎营,而羽毛球场通常在一两秒钟内就被预定完了。
尽管我对用 Python 编写代码有信心,但我对代码效率一无所知。时间和空间复杂度对我来说完全是陌生的。面向对象编程在我的脑海中是一个从未有过的概念。
在 ML 方面,我是 Jupyter notebook 的专家。我可以将我的 Jupyter notebook 的主题改为「黑暗模式」,并熟练使用所有的快捷键。显然,我已经准备好担当数据科学家的角色。
然而,我在面试中惨败。在进入「数据科学」领域之前,涉及到代码的测试就已经将我拒之门外了。我申请了技术分析师的职位,但被推荐到另一个部门,因为他们觉得我更适合做业务分析师。
我离我该去的地方很远。
课堂学习远远不够
为了深入了解 ML 并磨练我在 Python 方面的技能,我决定在 Singapore Management University 攻读 AI 专业的 IT 商业硕士。
我学习了传统 ML 模型背后的数学知识,并在一个数据集上应用了最先进的深度学习架构。我学习了一些关于人工智能的重要概念,包括常用的搜索算法、Q-学习和深度 Q-学习。我了解了算法设计,包括图形算法、时间和空间复杂度、名称匹配算法以及更多的算法,它们刷新了我的认知。从本质上讲,这门课程为我提供了 MOOC 所缺乏的学术严谨性。
在这个时候,我手上有几个项目。它们不是成熟的项目,其数据集通常是从 Kaggle 获得的。深度学习模型在 Docker 上运行是为了保持一致性,但从来没有考虑到部署的任何方面。毕竟,他们是学校的项目。
在我看来,硕士阶段的学习为人工智能专业人士提供了必要的学术严谨性,但缺乏实际应用方面的知识。硕士课程不会告诉你什么是获得数据科学工作的必要条件,你必须自己去弄清楚。软件工程和开发技能通常是数据科学家工作范围的一部分(尽管不全面)。代码的协作在大型组织中也很重要。因此,了解如何设置 Docker 环境、启动 AWS EC2 实例、在 Azure blob 存储上托管数据集、高效地组织代码以及使用 GitHub 或 GitLab 进行版本控制,是一些需要的关键技能,但课堂上没有讲授。
去尝试吧,即使你觉得自己不够好。
我继续面试,尽管大多数面试都不及格,但我积累了大量技术面试和非技术面试的经验。它们让我知道了自己的知识漏洞,我花时间学习了这些技能。更重要的是,它让我了解了不同类型的工作内容,不同的公司对同一个职位的要求是什么。
两年后,我得到了一个 AI 工程师的职位。对我来说,这是一个很好的机会,我可以在一个我热爱的领域学习和成长。更重要的是,我的经历证明了任何人都可以完成他们打算做的事情,尽管有些人可能需要比其他人花更长的时间。
归根结底,职业生涯是一场马拉松,而不是短期冲刺。做你喜欢做的事,因为你将花费一生中很大一部分的时间工作。
如果你感到迷茫,记住 Elsa 所说的话:做下一件正确的事。
雷锋网雷锋网雷锋网