两年前不知如何编写代码的我,现在是一名人工智能工程师
分类专栏: 人工智能 热点文章 AI
经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗?
任何时候努力都不算晚。
下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述)
图源:Unsplash
正如Elsa所说,职业转换是一次“进入未知领域”的旅程。
两年前,我从大学毕业,主修经济学与金融学,做好了在金融业工作的一切准备。投资银行和全球市场是我理想的工作。毕业前9个月,我找到了在一家投行的工作,感到十分自豪,因为如果之前没有在这家银行实习过就很难得到聘用的机会。
在那个岗位上干了几个月后,我学会了一些Excel VBA编程方法,以及如何使用Tableau、Power BI和UiPath(一款机器人过程自动化软件)。我意识到相对于银行产品,自己对使用这些工具和学习代码更有兴趣。我曾经对于银行产品的复杂性很好奇,但现在发现它只是银行从客户身上获利的一种方法罢了。
银行环境对我的个人价值观构成了极大的挑战,但那是以后的话题。
同时,我的一位同事向我打开了“机器学习”的大门。输入特定数据就能“预测”特定结果,这一事实深深吸引了我。
我立刻入迷了。
但问题来了,我的编程技巧太过基础。在我的字典里,Python是一种“蛇”,而Pig……是一只猪。
两年过去了,我将要进入人工智能(AI)行业,成为这个领域的一名工程师。这段旅程艰难而漫长。对我而言,转战人工智能只是学习和成长的新开始。
图源:Unsplash
我的旅程
跳上慕课的宣传列车
只有经济学和金融学背景,我不知道怎样编程。ExcelVBA与编程十分接近,但仅此而已。为了成为一名高成就者,跳进数据科学的潮流,我报名参加了很多大型网络公开课(慕课)。以下是我报名的课程列表:
· python训练营:从零到英雄[Udemy]
· 数据科学和机器学习的python训练营 [Udemy]
· 使用MySQL管理大数据[Coursera]
· 初学者的Java教程[Udemy]
· Web开发人员训练营[Udemy]
· 机器学习A-Z:数据科学中的python和R实践[Udemy]
· 使用Docker部署机器学习和NLP模型[Udemy]
毋庸置疑,大多数课程我都没能完成(只完成了标记粗体的课程)。我陷入了慕课自我延续的循环。知识的易获取性使得课程很自然地从一门课延续到下一门,因为覆盖的主题太简短,使我的兴趣转瞬即逝,我经常还没上完前一门课就跳到了下一门。
对我而言,内容简短是慕课最大的缺点。我本希望学完慕课就能得到一份数据科学的职业,但现在看来过于天真了。
为了提供观点,教授传统的机器学习(ML)方法的慕课常常忽略了模型的实际作用。慕课讲述随机森林算法是决策树的集合,但并未说明决策树如何决定在哪个分支上选择哪个特征(如熵的概念和计算)。它只简单讲述了支持向量机是一种分类方式,但没有说明如何确定超平面。
在更先进的AI领域(如深度学习)里,“我知道什么”和“我需要知道什么”大相径庭。教深度学习的慕课的惯用套路是:把一堆代码放到Tensorflow上,放在如MNIST的优秀数据库中,并推断“你现在已经是一名深度学习专家了”(有些夸张,但你应该能懂我意思)。这与现实相差甚远,因为研究报告经常包含复杂的结构,包括对深度神经网络模型中提取特征的理解,以及其他更复杂的特征,如变压器和双向编码的理解。理解最先进模型优于其他模型的原因也很重要,以及一些概念如转移学习和元学习。
我认为,教ML的慕课常常给人以这样的错觉,即任何人都能成为一名ML从业者。他们天真的以为,ML仅仅是几行包含.fit()和.predict()的代码。这是因为慕课表示人们可以较为轻松的开始学习ML(或许正是对于ML的大量炒作使得这些课程利润丰厚)。
不过别误解我,慕课其实很棒。它使人们能方便快捷地获得知识,开始某个话题。但是它们能使你成为专家吗?明显不能。你在学完课程后所做的,才能决定你能否成为专家。
把手弄“脏”
完成几个慕课课程后,我一无所获。诚然,我学会了python的一些基本技能,知道如何通过.fit()和.predict()使用sci-kit learn,但仅此而已。
为了提高编程技巧,我在Hackerrank上进行练习并完成了与SQL和Python相关的问题。与其同时,我想将python应用于真实项目中。于是我开始研究用于预订羽毛球场的机器人,它主要能使用Selenium与浏览器交互以进行网页导航,最终购买并支付定金(类似于运动鞋机器人)。我开始该研究的动机是,新加坡的羽毛球场通常提取两周就被订满了,常常一到放票时间,许多人就每天在预订网站上露营抢票。(它们通常在一两秒内就被预订了)
虽然我对自己的python编程比较自信,但我对代码效率一无所知。时间和空间复杂度对我来说是完全陌生的。对我而言,面对对象编程只是一个概念,我从未实战过(更不用说最终会被遗忘了)。
在ML领域,我是Jupyternotebook专家。我可以将Jupyter notebook的主题改为“黑暗模式”并充分利用键盘上所有快捷键。显然,我已经准备好接受数据科学家这一角色了。
而事实检验——我的面试惨败。设计代码的技术测试让我更快的迈出了“数据科学”的大门。我申请的技术分析岗位让我到另一个部门,因为他们觉得我去业务分析岗位可能更合适。
我距离我需要去的地方还很远。
图源:Unsplash
手还不够“脏”
为了更加深入学习ML和训练python技能,我决定在新加坡管理大学攻读IT商业硕士学位(专攻AI)。
我学习了传统ML模型背后的数学原理,并将最先进的深度学习架构应用到自我管理的数据集中。我学习了关于AI的重要概念,包括通用搜索算法、Q学习和深度Q学习。学习了算法设计,包括图形算法、时间和空间复杂度、名字匹配算法以及许多几乎要撕裂我非计算机科学大脑的算法。实质上,这些课程为我提供了慕课所缺乏的学术严谨性。
硕士期间我的一些项目小有成就。他们不是完全成熟的项目,因为所用的数据集通常是别人给的或者从Kaggle上获得的,而且展示在Jupyter notebook后项目就结束了。深度学习模型在Docker上持续运行,但是从未考虑过部署方面。毕竟只是学校的项目而已。
我认为,硕士学位提供了AI专业人士所必需的学术严谨性,但是缺乏实用性。硕士课程不会告诉你找到一份数据科学工作需要什么,你必须自己弄清楚。软件工程和开发运维技能是数据科学家工作的一部分(但是不够广泛)。代码协作在大型组织里也很重要。同样地,知道如何搭建Docker环境、启动AWS EC2实例、在Azure blob存储上托管数据集、有效组织代码以及使用GitHub或Gitlab进行版本控制都是一些必需的关键技巧,然而这些在课堂上也学不到。
就算你认为自己不够优秀,也要大胆去尝试。
我继续参加面试,在技术面试和非技术面试中积累了大量经验(尽管大多数面试还是不及格)。这使我了解自己的知识盲区并能花时间学习相关技能。更重要的是,它使我了解不同公司对同一岗位提出的不同工作描述,以及这些工作描述与公司在AI应用的成熟度上的相关性。
两年后,我得到了一份AI工程师的工作。对我来说,这是一个极大的学习和成长机会,是我所梦寐以求的。除此之外,这也证明了任何人都能完成他们着手做的事情,尽管有些人花费的时间可能会久一些。
最后,职业是一场马拉松,而不是冲刺赛。做你热爱的事情,因为工作会占据你人生的大部分时间。
如果你彷徨不知向何处去,请记住Elsa所说的,“做下一件该做的事”。
图源:Unsplash
所以,与其浪费时间在那纠结,不如赶紧行动起来吧~
声明:每个人在数据科学上的旅程是不同的。这篇文章不是关于“如何进入AI世界的大门”,也不应被视为入门指南。这只是我的个人经历,希望能鼓励人们冒险去做自己想做的,因为生命转瞬即逝,不应毫无意义地虚度一生。