许多还没有进入工业界的朋友,可能或多或少都默认机器学习工程师或者算法工程师/科学家的工作主要内容就是建模。
如果有这样的想法,自然而然就会好奇在工业界建模和在比赛中或者自己做项目建模有什么区别?
在这里我们来帮大家更深入了解下,机器学习工程师/科学家的核心工作内容到底是什么。理解这个问题,那机器学习工作内容和kaggle竞赛有什么区别这样一个问题自然而然也便有了答案。
一个好的机器学习工程师,或者说一个机器学习工程师想成长到Tech Lead,需要有用机器学习解决问题的能力。
这里分为三个关键点:
机器学习
解决
问题
01 问题
先说“问题”。
在工业界,问题的定义往往是不清晰的,广泛的,甚至是需要Tech Lead自己去发现的。
而在Kaggle, 问题是定义明确的,衡量指标是确定的。
举一个例子,Kaggle的一个著名的Zillow房价预测的比赛问题 https://www.kaggle.com/c/zillow-prize-1,就非常明确的说明了参赛者的任务就是用这样一个固定的数据集和这样一些特征,来预测实际房屋售价,并用log error这样一个Metric来衡量。这是一个被定义得非常明确的问题。
而在工业界,一个组往往有一个明确的目标,比如提升推荐系统的线上指标,但是工程师需要去思考这样一个目标可以被拆分成哪些问题或者项目,每个问题或者项目又是否可以被机器学习解决。工程师需要自己去定义问题和项目,去发现目前组里不足然后把不足转化为一个明确的机器学习问题去解决。
02 解决
再说“解决”。
在Kaggle,一个机器学习项目主要需要解决的是建一个好的模型。
而在工业界,建模只是需要解决的事情之一。机器学习工程师在建模前,首先要解决数据的问题。比如:
应该用什么数据集?
从公司的数据库里可以拿到哪些特征?
特征在线上能实时获得吗?
特征线上的空缺率高不高?
这些问题都是Kaggle选手不需要去解决的,但是在工业界却是很常见的问题。
再比如:
模型上线后是否需要迭代?
迭代的话频率要多高?
迭代训练策略应该是怎么样的?
等等。
这也是为什么,硅谷西雅图的大型科技公司在面试高级机器学习工程师时,都会有一轮ML Design的轮次。
这个ML Design的轮次一方面就是在考察面试者有没有发现并解决以上这些,除了建模之外工业界常会遇到的其他问题的能力。
03 机器学习
最后是“机器学习”。
Kaggle比赛使用的机器学习算法模型和工业界模型有一定的区别。
Kaggle的建模重视模型的效果。
但是在工业界,除了模型效果,我们同样重视模型在线上的推理速度,模型本身的大小,模型训练时间与资源等等。有时候,我们甚至会牺牲模型效果,来获得更小的模型和更低的线上延迟。
建一个好的模型的确是一个机器学习工程师的核心技能,但是这并不是一个好的机器学习工程师最稀缺的技能。
目前机器学习社区代码高度开源,机器学习与深度学习框架相对成熟,先进模型基本都有开源实现。
在这样的背景下,就业市场上能写出一个复杂模型的人并不在少数。同时,AutoML的出现也让建模这件事受到了巨大的挑战,比如我们组的用AutoML搜索出来的模型结构已经不是最先进模型的效果了。
希望本文能让你理解现实工业界的机器学习问题和学校项目里的机器学习问题或者比赛问题的差别,也让你能更好理解机器学习工作内容和kaggle竞赛有什么区别。
以上。