ML&DEV[6] | 浅谈算法工程师的工程能力

【ML&DEV】

这是大家没有看过的船新栏目!ML表示机器学习,DEV表示开发,本专栏旨在为大家分享作为算法工程师的工作,机器学习生态下的有关模型方法和技术,从数据生产到模型部署维护监控全流程,预备知识、理论、技术、经验等都会涉及,近期内容以入门线路为主,敬请期待!

往期回顾:

我经历过的2019春秋招已经看到一些现在算法领域学习和工作需求之间的gap,近期随着秋招的进行,这个所谓的“工程能力”的问题又被拖上了风口浪尖,那么,到底什么是“工程能力”,他对求职者有什么要求,这次我带大家来探讨一下。由于本人只是新人,只有一年的实习经验,有些问题可能理解的不是很清楚,所以如有问题望各位海涵,有错误欢迎指出,有补充可以留言或者是后台给我发信息哈。

概述

我的理解,简单一句话说完,其实就和计算机领域里面的软件工程的很多说法非常类似,所谓的工程能力,对于一个算法/策略需求,你能从无到有地建立好模型/设计好策略,并将其投入实际应用,包括后续的监控迭代的能力。

那么从算法工程师角度,它包括那些内容呢?

  • 数据的操纵能力。

  • 模型的设计与开发能力。

  • 项目的部署和监控能力。

当然的,还有一些更高端的或者说更加难说清楚的要求,代码的可迭代性、可读性、可迁移性等。

数据操纵能力

我说的是数据操纵,而非操作,是因为这里面有两个层面的使用。

一个是,懂得数据的操作,能够规范化,整理成模型需要的格式,甚至包括写SQL,确认数据的来源等等,这个对于大部分做过实验、有过实践操作的人来说其实不是一件难事。说白了,这个层面解决的其实是可行性问题。

第二个层面,能够更高效的完成上面的功能,你需要有一定的算法常识,找到操作的空间和时间复杂度尽可能低的方法,从而让程序更加高效的运行,那种把CPU、内存、GPU之类的打爆的程序肯定不可取,一定要有这个观念。

模型的设计和开发能力

首先是模型设计,说到设计,其实就是要求你根据实际情况来选择甚至是设计合适的模型算法来解决问题,学术界讲究高准确度之类的说法其实在现实应用并不可取,要考虑很多现实问题。首先,不是所有模型都适用于任何数据规模的情况,有的模型就是对小规模的数据有用,然后,对于不同的数据质量,不同模型的耐受能力是不同的,有的模型要求数据的正确性很高,但是实际上你遇到的数据会有很多问题,另外诸如样本不平衡等原因,很多模型其实并不适用,最后还有一点,就是实际的可用性的问题,举个例子,在现实场景,用户对一些等待的耐受性很高,可以等10秒,但是有些场景,其实用户等3秒就等不下去了,这个时候即使你的模型很强,但是时间太长,其实也不可取,这是个业务层面的问题了。

然后是开发能力,最近在知乎看到一个这样的问题,深有体会吧:

640?wx_fmt=png

目前的现状,我只能说不可能,你是需要开发能力的,哪怕你是做科研,你也得会写几行python代码吧。但我这里是想说,大家要是想找算法岗工作,那就需要一定的开发能力了。什么叫做开发能力,我的观点是能把你的模型发布出去让用户去用,这个理解起来很简单,你不能把模型的代码给一个用户去跑吧,那你要打包,要上线,可能你需要一些前端或者应用端的帮助,但是至少你这个模型能作为一个服务上线,能被人调用,这就OK了。

一般地,现在的主要开发代码就是c++和Java,现在的人力市场,多会一个优势大很多,如果会一些高级开发,那就更好了。

项目的部署和监控

模型做完了,要上线,这里的上线,危险程度就会提升,所以过程也就会根本更加谨慎。

  • 对于模型,是否有不可容忍的bad case。

  • 上线流程是都规范,如果是大项目,你的模块的更新是否会对有关模块产生影响。

  • AB实验,实验的目标、内容以及检测的内容。

  • 检测线上是否有问题,检测内容。

  • 线上有问题后,是否有可马上回滚的方案。

  • 埋点,一方面确认你的程序正常运行(监控),另一方面记录必要的数据,方便日后还可能要使用(迭代)。

640?wx_fmt=jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值