本文作者阿萨姆,原载于知乎专栏,AI科技大本营经授权转载。
这是来自知乎圆桌的一个回答。
机器学习工程师,绝不是一个笼统的概念,每一个特定的位置,对“合格”的考量完全不同。你自认为是一个合格的机器学习工程师吗?究竟什么才算得上“合格”?以下内容供参考,当然,你最好有自己的想法。
这是个开放问题,不同公司、岗位、方向的机器学习工程师工作内容大不相同,很难用统一的标准衡量。既然无法放到一个维度来对比,那我们就来分类讨论一下。但不管如何分类,一个合格的机器学习工程师需要有过硬的基本功和整合知识的能力。
1. 大公司和中小型公司有「不同的岗位定位」
大公司对于岗位的细分程度较高,希望员工的单项技能掌握程度高,喜欢专精型人才。
这种职位的设定哲学是因为大公司的需求是稳定,希望每个人都是“可替换的”,不希望你参与项目的过多环节而导致尾大不掉。当你离开后只需要找一个有类似技能的人替代,就像替换一个机器上的小零件,而不影响到全局。因此,大公司更倾向于培养在少数方向上有深入理解的人。这也解释了为什么大公司的岗位非常繁杂,随便列举常见的几个和人工智能相关的职位:
-
机器视觉工程师
-
数据工程师
-
算法工程师/研究员
-
深度学习算法工程师
-
无人车工程师
-
数据分析师/科学家
-
自然语言工程师
这些岗位间之间有很多重叠的部分,比如机器视觉工程师和无人车工程师可以有很多相似的工作内容。这种专精岗位一般要求你在特定方向出类拔萃,可以适当放宽其他要求。比如可能要求你深入理解机器视觉,但不要求你精通Spark或者自然语言处理。
而中小型公司因为资金和能力的限制,更需要通用型人才,职位一般也分得没那么细。正所谓“我是革命一块砖,哪里需要往哪搬”。在中小型企业,公司希望机器学习工程师可以独挑大梁,完成从数据收集、清理、建模、调整、到部署上线,甚至维护和更新的一系列工作。因此在大部分中小型公司的机器学习工程师也做了全栈的工作,捎带着把网站做了的也不是没有...
用一张图来描述大公司和小公司对于人才需求的不同。
2. 机器学习工程师的通用技能
虽然公司有大小之分,但我们对于机器学习工程师也有基本的技能要求。这些基本要求不过分强调深度,但追求广度,是一个“合格”工程师应该掌握的。简单概括包括:
2.1. 业务能力:
-
理解问题的痛点,明白如何用机器学习方法看待商业问题
-
懂得数据需求,能收集重要的数据和必备的信息
-
具备从模型中攫取价值的能力,明白模型的最终目的是产生商业价值
2.2. 数据能力:
-
数据整合能力:能够将不同渠道的数据整合(数据库、excel、JSON等),合并、去重等
-
数据处理能力:缺失值处理(发现与补全)、数据格式转换、数据压缩、过采样欠采样等
-
数据可视化:能够使用基本的数据可视化工具来分析数据,不管是R的ggplot2还是Python的Matlibplot,或者tableau和Qlik
2.3. 模型与算法理解
-
理解基本的机器学习算法,明白不同场景下的经典解决方案,不迷信算法。比如小数据集的简单问题用线性模型就够了
-
具备基本的统计概率知识,知道如何避免数据中的陷阱
-
理解经典模型的基本调参,可以解释分析模型的输出结果
2.4. 编程能力
-
熟练操作如Python,R等语言,知道特定算法的工具包如Sklearn
-
熟练不同语言下的数据结构,知道如何可以高效的处理数据如pandas
-
*懂得分布式运算会有所帮助,明白如何在线上部署机器学习模型也是亮点
3. 整合为王 - 1+1 > 2
虽然在第二部分中介绍的每一个技能似乎都不复杂,但机器学习工程师的精髓就在于整合,掌握以上所有的操作。当你可以把一系列技能掌握时,你一个人就是一支军队。给出一个简单例子以供参考,比如你在一家互联网公司想做一个信用卡欺诈预测模型,希望可以实时检测信用卡盗刷。基本的流程:
-
了解可使用的数据范围。比如你们有客户的基本信息,消费的信息(地点、时间、金额),消费场所的信息(是否是欺诈高发行业)。
-
收集和整合一切可用的历史信息,对数据进行必要的清洗。
-
使用可视化技术对数据进行初步分析。可视化可以在建模前帮助你节省大量的时间。
-
考虑要使用的模型和建模。以这个问题为例,如果我们把盗刷考虑为独立事件,那么可以简单的用普通分类器,如逻辑回归先建个模型试试。我们也可以把盗刷考虑为在时间轴上的事件,即你的消费历史会影响盗刷的可能性,那么就要考虑时间序列的上的相关性,可以使用循环网络或者把时间作为一个输入用于建模。
-
对模型进行回测和验证。在正式交付上线之前还需要进行大量的验证、微调、和性能优化。如果模型A需要3分钟做出预测准确率为99%,而B模型只需要3秒但准确率是98%,可能我们会选择模型B。
-
将预测模型部署上线,并进行后期维护。随着收集到了新的数据,对模型进行线下更新训练并替换线上的模型。
不难看出,这一套流程中处处都要求极好的工程能力。一个人很容易可以拥有其中一部分技能,但很难同时掌握所有的技能。这解释了为什么高端的机器学习工程师“洛阳纸贵”,这也是检测你是否合格的一个标准。
4. 职业选择 - 大公司 vs. 小公司
那么做机器学习该选择大公司还是小公司呢?这个取决于两点:
-
如果没有特别厉害的履历,建议从中小型公司做起,积累经验。
-
如果不打算专精一个小领域,中小型公司可以帮助你快速了解整个流程。
小公司的风险在于有没有“厉害的老师傅”可以带你做这一套流程,这个可遇不可求。但可以在面试的时候了解到公司的技术实力,要求和带你的师傅直接沟通。对于初入职场的人来说,有试错的本钱,小公司也是不错的选项。知乎上一直有种浮躁的风气,非Google微软不去,BAT才勉强能接受。
而大公司的风险在于你的技能可能会局限在一个方向上,如果你不能成为领域专家,那么会进退两难。真相是,大部分人都不会成为领域专家。很久以前我还是一个C语言工程师的时候的产品是一款3D建模软件,我的入门老师傅已经在这个这个软件的透视功能上花了10年时间,常年维护几个C文件。今年年初他告诉我公司合并后他被裁员了,现在正在求职很不容易,不免唏嘘。他就是被公司“锁死”在了一个小方向上,当公司不再需要他时,市场上没有他的一席之地。
因此,计算机领域的知识更新迭代很快,不管你在大公司还是小公司,都不要贪图安逸的生活,被温水煮熟的青蛙太多了。不过,求职更像是买彩票,随机性很强,所以随缘即可。
5. 写在最后
最后以我一贯的观点作为结尾,不要迷信算法,不要相信有某种算法可以包打天下。时间也要花到那些看似不重要的环节上,比如清理数据的技巧。对于机器学习工程师这个岗位来说,过硬的综合能力更是关键,这是合格工程师的必备技能。所以我建议先培养对整个数据的操作流程的理解,再逐渐寻找适合自己的专精方向。
比如你的工作中接触了很多自然语言处理,可能慢慢的你就会在这个方向懂得越来越多,成为偏NLP的算法工程师。就像游戏中的加点,你要先把基础技能加满,再加高级技能。
图片来源: Stupid Question 218: What are T-shaped, Pi-shaped and Comb-shaped skills, and which one should I aim for?(http://t.cn/ROC0EOt)
从人力资源管理角度来看,机器学习工程师的技能像是上图中的一个进化过程(从左至右):
-
T字形人才:有很好知识基础(T的上面一横)以及特定领域的深度(T的那一竖)。
-
Pi型技能人才:随着能力加深,T字型人才可以有更多的专精技能(两个竖道)。
-
梳子型技能:很好理解,你最终会期待进化成一个有很多专精技能的高端人才。
所以,先掌握通用技能,再培养专精技能是一个适合我们普通人的升级路线。推荐阅读我的回答和文章[1,2,3,4]了解如何培养通用技能。不要期望一天就可以掌握所有技能,然后升职加薪走上人生巅峰。残酷的是,我们大部分人这辈子甚至都不会成为T字形人才,能帮我们养家糊口的还是通用技能。
但只要你一直默默砥砺前行,相信我,时间时间会给你答案[5]。
推荐阅读
[1] 阿萨姆:面试官如何判断面试者的机器学习水平?
https://www.zhihu.com/question/62482926/answer/210531386
[2] 如何用3个月零基础入门机器学习?
https://zhuanlan.zhihu.com/p/29704017
[3] 阿萨姆:数据科学工作者(Data Scientist) 的日常工作内容包括什么?
https://www.zhihu.com/question/22696468/answer/212250226
[4] 阿萨姆:计算机专业学生在大学四年内可以做些什么来丰富简历?
https://www.zhihu.com/question/64244262/answer/218292148
[5] 我的滑板鞋(约瑟翰·庞麦郎演唱歌曲)_百度百科
https://baike.baidu.com/item/我的滑板鞋/14694274
作者 | 阿萨姆 资深数据科学家
原文地址
https://www.zhihu.com/question/63881785/answer/243635446
互动:
你觉得你达到以上合格的标准吗?或者你根本不认同以上标准,你有自己的一套判定逻辑?留言区请发表你的看法。
热门关键词
吴喜之 | 杨强 | 周志华 | 图灵奖得主姚期智 | 今日头条李磊 | 蚂蚁金服漆远 | 犀牛科技创始人陈一昕 | eBay数据科学家李睿 | 迅雷创始人程浩 | 亚马逊AI主任科学家李沐 | 日本机器学习领军人杉山将|商汤科技联合创始人杨帆
☞ 点赞和分享是一种积极的学习态度