经验分享:两年从不会编程到AI工程师
赖可 发自 凹非寺量子位 报道 | 公众号 QbitAI
想做机器学习的工作,却觉得自己没有专业技能?
有一位小哥,从不知道Python到找到AI工程的工作,用时两年。他的文章在网上获得了5000多条点赞。
有网友在他的故事里看到了激情和好奇心
这条路不好走,这非常不容易。享受路上小小的胜利,从遇到的众多挫折中学习。All the best!
他的经验或许能给你一些启发。
不知道Python,却被”机器学习“吸引
这位David Chong小哥在新加坡管理大学的专业是经济和金融,本来毕业后打算在银行工作。
毕业前的9个月,他找到了日企野村证券的工作。这期间,他接触了一些数据分析的软件,学习了Excel VBA编程,数据可视化软件Tableau和Power BI,还有机器人过程自动化软件UiPath。
“机器学习“的世界深深吸引了他,最让他着迷的是输入数据,然后预测结果这个过程。
原来,他对银行产品的复杂性着迷,经过了一段时间工作后,觉得不过是从客户获利的一种方式。
总之,旧的东西没变得有那么吸引他,又出现了新的兴趣。他决定改变工作方向了。
但现实是,他完全不会编程。
那时候的他的字典里,Python是一种蛇,而Pig……是一头猪。
在Mooc上疯狂自学,纸上得来终觉浅
想学数据科学,网上资源大把大把,于是他在Mooc上注册了不少课程:
- Python 训练营:Python 3 从零开始成为英雄[ Udemy ]
- 用于数据科学和机器学的 Python 训练营[ Udemy ]
- 使用MySQL管理大数据[ Coursera ]
- Java初学者教程[ Udemy ]
- Web开发人员训练营 [ Udemy ]
- 机器学习A-Z:动手实践数据科学中Python和R [ Udemy ]
- 用Docker进行机器学习和NLP模型[ Udemy ]
不过他只完成了前三门课程。Mooc的课程内容非常简洁,也让他很快就对一门课失去兴趣,还没有上完就去看下一门。
MOOC上教授传统机器学习方法时,往往会跳过模型实际在做什么这个部分。比如,会教随机森林是决策树的集合,但不会讲决策树怎样决定在哪个分支上选择哪些特征(也就是熵概念和与之相关的数学);会简单介绍支持向量机是分类方法,但不会讲如何确定超平面。
深度学习的课程更不能满足做获取AI专业技能的需求。
相关课程通常会在Tensorflow上,在MNIST这样不错的数据集上给出大量代码,然后让你觉得自己是深度学习专家了。
但是这远远不够。研究论文通常包含复杂的体系结构,涉及理解深度神经网络模型中的特征提取,以及其他更复杂的特征,例如Transformer和双向编码。理解为什么某些最新模型比其他模型更好,以及迁移学习transfer learning和元学习meta learning等概念也很重要。
小哥认为,Mooc的课程的优势在于快速入门。上面的课也容易给人误导,任何人都可以成为机器学习的从业者,以为机器学习就是关于.fit() and .predict()的几行代码。
实践和挫折
因此,上了在线课程后。为了提高编程能力,David选择在Hackerrank上进行练习,完成关于SQL和Python的问题。
同时,他还用python进行了一个项目,来实现在网上自动预订羽毛球场。新加坡的羽毛球场需要提前抢着预定,经常提前两周就预订完了。
经过一段时间的学习和操练,David对自己的技能水平心里有了个大概:
对写python很有信心,但是对代码效率一无所知。
在机器学习上,是jupyter notebook专家,可以把Jupyter notebook 的主题改为“ dark mode”,并使用所有的键盘快捷键。
他想做数据科学家。
但是面试失败了,涉及代码的技术测试比他学习的“数据科学”发展更快。他本来申请了技术分析师的职位,被转去了另一部门,做了业务分析师。
这离他的目标还很远。
接受专业学术训练
为了有更好的技能,他决定在学校继续读商业IT硕士学位(专门研究AI)
接受专业教育的过程中,大大的补充了此前知识框架的不足。
他学习了传统ML模型背后的数学原理,在自定义数据集上应用了最新的深度学习架构;有关AI的重要概念,包括常见的搜索算法,Q-learning and 深度Q-learning;算法设计,包括图形算法,时间和空间复杂度,名称匹配算法以及其它很多算法。
他还参加了几个学校的硕士项目。这些项目不完整,数据集经常从Kaggle上获得,在Jupyter notebook上结束。深度学习模型在Docker上运行,但不考虑部署。
David 看来,硕士教育提供了AI从业者所需要的严谨学术训练,但缺乏实际应用的训练。硕士课程不会告诉你数据科学工作的必要条件。这个部分需要自己去弄清楚。
软件工程和DevOps技能通常是必需的(尽管并不广泛)。在大型组织中,代码协作也很重要。比如,如何设置Docker环境,启动AWS EC2实例,在Azure blob存储上托管数据集,有效地组织代码,使用GitHub或GitLab进行版本控制。课堂不会教授这些内容。
在面试中积累
David继续进行面试,在技术面试和非技术面试中积累了很多经验(大多数人都不及格),也知道了自己所缺的知识,然后花时间补足。
面试带来更重要的经验是让他详细地摸了摸行情。
他明白了公司对于同样一个职位角色做的不同描述,以及这与公司在采用AI技术的成熟度之间的对应关系。
最终,在决定做AI工作的两年后,他找到了一个好机会,是一个会被培训成AI工程师的职位。
小哥目前的职位是在野村证券操作风险部门operation risk的数据分析师。他在邮件中告诉量子位,下个月他将会转去新的岗位。
小哥觉得,这只是一个开始,职业之路就像一场马拉松,不是短跑。
One more thing
看了David小哥职业路径,对你有没有启发呢?
David 说分享自己的经验也是为了鼓舞更多的人,不要把他的经验看成指南。
这是我个人的轶事,我希望能够鼓舞人们,抱持信念去做他们想做的事情,因为人生太短暂了,不能过没有意义的生活。
做你爱的事情,因为你会花你生命的一大部分来工作。
如果你感到迷失,记住Elsa说的“do the next right thing”
参考资料:
https://towardsdatascience.com/i-had-no-idea-how-to-write-code-two-years-ago-now-im-an-ai-engineer-13c530ab8227
— 完 —
量子位 QbitAI · 头条号签约
关注我们,第一时间获知前沿科技动态
评论