一个ML应用要落地产生商业价值
在data scientist把model训练出来之后
还有很长一段路才能真正进到生产环境
ML系统的复杂度其实非常高
从资料收集,特征处理, 模型训练, 模型测试, 一直到后面的模型部署,模型监测
真正要落地,上面的每一步都会有相对应的系统来做处理
系统要能自动化 要reliable 要scalable 还要能控制ML流程本身的复杂度
而不是说只要跑个jupyter notebook把模型训练出来test能过就完事了
关于这个议题还是要大推一下2015年的NIPS paper
Hidden Technical Debt in Machine Learning Systems
所以呢 目前可以看到业界职缺的演化是有以下两种型态
一种是scientist track
另一种是engineer track
scientist就真的需要比较强的数学理解
要能够有能力训练出"符合需求"的模型
但是通常这种人系统及程式能力不会这么强
所以需要engineer来补足
其实scientist track还可以分成偏研究和偏应用的
简单来说
偏研究的比较像是增加整体公司的技术力 他们会去发paper 数学要真的好 要有研究能力
偏应用的目标则是会更聚焦在商业问题上
他们需要在有限的资源下(时间, 运算资源, etc.)提出解决商业问题的方法
在业界其实大部份搞ML算法的都比较是这类
工作基本上就是兜兜library套一些现成的算法
但是也不是说这种人就毫无知识含量
对相关商业domain的深度了解
使他们可以在有限的时间及资源下提出方法解决商业问题
这个就是他们的价值
engineer就比较像是构建最一开始所说的系统的人
做自动化 做scalable feature pipeline 做模型training/testing平台 模型部署
而且真正开始ML落地的公司 线上在跑的很快就不会只有一两个模型
可能是数十个模型,甚至上百个模型
这就需要专职的engineering team来负责, 包含ML platform dev, 还有MLOps
这样的工作其实程式和系统的能力会比较重要
比较像是介于传统data engineer和data scientist之间
也有需要加点一些devops跟backend的技能
做这类工作就不需要对ML算法及理论有那么深的理解
知道点high level其实就足以胜任(因为主要是由scientist负责)
但是做这件事软工的技能就要点得比较高
当然算法的理解还是会对这个工作有帮助
比如说要做distributed training的系统
那有些ML算法天生就是是没办法平行化
不知道算法的细节
就可能没办法理解天生的限制而最后搞出了不合用的系统
我想说的是 如果数学不好 又想做ML也是可以考虑看看这个方向
随着ML开始落地的公司愈来愈多 这样子的职缺也会愈来愈多
如果是刚毕业想走这条路
或许从data engineer开始可能会是可以去尝试的一条路
可以先沾个边 在公司里面再慢慢点上面我说的技能
※ 引述《ckrmpuhv (阿瓜)》之铭言:
: 各位板上大大好
: 小弟是后段国立科大资管硕即将毕业
: 因为一些私人原因是不用当兵
: 所以论文完成后准备开始找工作
: 目前程度:
: 大学学过JAVA
: 网页跟数据库也只有课堂学习过没实际做小专案
: 因为对Ml有兴趣
: 在硕阶段期间 都是自学ML相关
: 听过李宏毅老师的课
: 实作过他课程的作业
: Keras的一些神经网络搭建也没舍问题
: Kaggle只参加过一两次 排名都很烂
: 大部分的实作和论文都是跟影像辨识相关
: 最近看板上大大各式各样建议
: 非四大四中 也不是kaggle的佼佼者
: 数学方面 线代没学 统计学大学学过但也不熟
: 看完觉得自己很烂出去可能没人要?
: 目前都还在做ml各种模型实作
: 但看完板上很迷茫要往哪些方向学习怕找不到工作非常忧郁
: 我不清楚该横向发展拓别的领域
: 像是网页、App 自己做一些小专案增加作品集
: 还是去补数学 更深入研究Ml
: 又或者先去刷Leetcode打底
: 还请各位大大指教 谢谢
: