查看原文
其他

知乎 | 一个算法工程师的日常是怎样的?

来自 | 知乎链接 | https://www.zhihu.com/question/29692814整理 | 王萌(深度学习冲鸭公众号)著作权归作者所有,本文仅作学术分享,若侵权,请联系后台删文处理
   问题

 一个算法工程师的日常是怎样的?

比如思考、写代码的时间分布是怎样的?
   高质量回答

李rumor
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

先说日常节奏,我大概10点左右到公司,12点之前会把时间切的比较碎,写写文档、看看论文、和同事沟通、列一下当天计划。

午休一般到2点(当然总有那么一两天赶进度不休息),下午主要是开会或者集中时间开发。

晚上也比较碎一些,大部分时间是处理下午没做完的工作,或者做上午这些事情。大概9、10点钟下班。

如果要具体统计每类工作的占比,大概这样划分:


算法开发



算法开发工作占比70%。这里面又可以细分,首先人工智能这个领域一直在进步,我必须经常看论文,时刻了解最新的模型,并把好的模型用到我们的项目中,这个时间大概占10%。另外也会花10%的时间用在模型本身的优化和技术思考上。

其次是数据处理方面的工作,处理模型的训练数据,并且分析badcase,重新调整训练数据得到更好的效果,这个是最耗时的,大概占30%。真正做业务强相关的算法,看数据是必须要做的事情,比如数据过脏时,模型会对某些pattern过拟合,之前做过一个识别句子是否为闲聊的任务,因为数据来源的关系,加上句号和不加句号会得到相反的结果。最近我做任务之前都会先清洗一遍整体数据,用模型在所有数据上训练并预测,看哪些label模型学不到,是标注错了还是数据太难。

最后有20%的时间用来写代码,因为模型虽然做好了,但还要写很多后端的逻辑和规则,让人工可以对模型强干预,确保及时纠正线上的badcase。其实不确定性大的事情做多了,再做写代码这种确定性的工作就很有幸福感,毕竟一天写不完两天也能写完,而一天调不好模型可能一周也调不好(此处有流泪)。

比起纯开发来说,算法多了一个自由时间,就是训练模型的间隙。在集中迭代算法的周期里,能否利用好这个时间才是决定效率的关键。我个人的选择是把看论文、写文档这种事情不太重要的事情切碎揉进来。比如跑上实验后,我就看一页或者几段论文,虽然有时候会忘掉之前的,但习惯了之后就能进入一个高效的状态。当然如果那天很困的话,也可以选择休息。


会议沟通



会议沟通占比15%。一般一个项目会有多个人协作,这时就需要一些时间用在沟通上。同时项目或者小组每周都有固定的会议,也会消耗不少时间。我这个占比其实算是很少的,听阿里一些同学说基本天天都在开会,只有晚上能写代码。


文档汇报



文档占比15%。记录工作是一方面,有时要进行向上汇报,主要是写一些文档和PPT,是考验画图能力的时刻。进了大公司之后,尤其觉得自己的画图能力有所提升,尤其是模型图,要多fancy有多fancy,以至于每次自己看到都不由得发出赞美。


AI算法与图像处理
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本人虽然刚刚从事这个行业半年,但是也想斗胆回答一下,首先说明一下自身的情况(即背景故事),本人不是计算机科班出身,研究生期间也不是搞算法的,等到快找工作的时候,发现原本学的方向待遇太低因此转行搞计算机视觉,这个找工作的过程很痛苦,这里就不说了。

这里必须要 吐槽一点外界对人工智能的一些非常主观的看法,

第一,人工智能不是AI万能,总有一些傻diao领导或者其他项目合作者,不知道是否是因为新闻看多了,感觉现在的技术已经发展到无所不能的境界,以致于一直怀疑我的能力有问题,为什么做不出来?what f**k,这应该算是日常中的一点了,如何说明傻diao上司理解AI不是万能;

第二,人工智能还不能实现真正的智能,人工是可以我来搞,但是智能我教不会它啊,我只会调模型,调参,你还要我怎样???不能妄想通过几个简单的功能就能合并其一个无所不能的机器人,omg,我服了!!!

第三,对于我这种菜鸟来说,日常做的最多的就是清洗数据,结果不好--->数据有问题--->再跑跑看--->我曹,怎么还是不行--->换个模型再跑--->咋还是这个鸟样(完蛋了完蛋了,只能跟领导说,目前我们的数据量太少无法达到客户的要求,但是如果他们愿意提供更多的数据,我想结果一定会好的,然后客户不愿意给,那我也很舒服的混过去了。。。)

第四,前面说了那么多,其实我日常的主要事情还是先要把客户的需求分解为具体他想要的效果,其次努力设计方案来实现这些功能,最后这群丑恶的资本家他们还是喜欢看图的,所以可视化操作(图片展示)必须要搞好看点

查老四
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

数据挖掘工程师和算法工程师是两个岗位。

回答问题:很多算法团队是配备专门的工程人员的,做算法在系统中的集成。算法主要的工作在分析数据,修改模型和做实验上。业务不把人逼死的时候,看看KDD上的论文,看看哪些可以拿进来做提升的。思考时间最多,但是一般和业务相关,比如分析数据,了解业务场景;学习时间看自己的工作效率和业务压力情况,一般浮动比较大;写代码...基本不太写。

之前在百度也是算法团队,写代码的工作会多一些,很多算法要自己在服务器上实现和发布。

整体来说算法工程师没有一般开发那么大的业务压力,但是很多时候需要自己思考确定工作方向,比如在百度做某个指标的优化,要自己分析数据,看代码,思考在哪些方面做提升。

“有梦想有能力的”都在自己的岗位上尽可能的提升自己的能力和价值,无论是在公司还是创业。

小美
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目前在阿里做算法,主要偏向于业务建模,即把算法在业务中落地的工作,一般一个算法相关业务的上线需要这么几个过程:

  1. 对接业务方,第一个步骤是去和业务方进行对接,对接的过程中要去了解业务方的需求,业务的真实痛点,很多时候对接的业务方并不了解算法能做哪些事情,因此,在对接的过程中业务方会提自己想要的目标是什么,而此时算法工程师需要凭借经验去评估这个方向的业务价值,评估这个方向是否适合算法来做,现在是否是切入的好时机。

  2. 数据的盘点,对于算法来说,数据的重要性不言而喻,很多时候调半个月的参数,模型的效果都不如引入一份高质量数据来得效果好。阿里算是数据的基础设施做的很好的一家公司,数据在不同平台的流转工作相对方便,另外阿里也有很多基础数据,然而,实际在工作的过程中还是时常会碰到没有数据,或者数据质量不佳的情况,在这种情况下一方面需要对数据做出大量预处理的工作,另一方面,需要去思考如何依赖现有数据对模型进行评估,进而去评估业务效果。

  3. 建模,包括以什么样的思路去解决这个问题,预测模型效果增益,特征抽取,特征处理,选用何种模型,效果评估,模型迭代,这部分可能是在我的人之中算法工程师的工作,而在实际工作中,这部分工作如果能占用30%的精力,已经是很高的比例了。

  4. 模型上线,取决于依赖何种上线方式,有的时候很简单,可能产出的结果只是一张结果表,业务方下游直接引用即可,有的时候涉及到大量的工程工作,需要考虑模型的性能,复杂度。延时,可解释性什么的也会需要去进行考虑。


这四个过程中就是算法的日常工作,精力分配大概是30%,10%,30%,30%,这只是一个毛估估的精力分配比例,有可能一两周都是处于和业务方开会过程中,也有可能某一个小项目从头到尾都比较确认,直接当天就能从第一步走到第四步。

flyingfish
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

观察数据,思考如何破局占的时间最多,估计90%。剩下的就是特征工程,建模,结果分析。

因为直接对业务负责,工作承担 产品,算法,开发,测试,上线等全栈。

每个月大多数时间中 写代码等时间不需要太多,10% 可能都不到。但是如果做出了一个效果很好的模型后, 需要上线, 就需要集中1-2周的时间,100% 时间用来完成线上特征工程,准确性测试, 模型测试,压力测试。

(我这边上线一个模型,特征一般300+维,自己动手能提升工程质量,缩短上线时间)

godweiyang
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


我现在只是一个实习算法工程师,按理说没资格回答,不过还是强答一下。

实习半年了,也转正了。实习和正式入职还是有很大差别的,正式入职业务压力更大,而实习可以有更多的时间做你喜欢做的事,做偏研究的事,做可能没啥收益的事。

我每天10点多到公司。先检查一下跑的代码结果咋样了,有没有出bug,没事的话就扔着不管了。如果有bug,或者刚开始搞,那就得处理数据、写写脚本、改改模型,最后给它整跑起来。

午饭12点,吃完休息到14点,我一般不睡觉,刷刷b站或者油管。

下午就看看论文,想想idea,如果有想法就写写代码,整理文档,发发博客。15点还有个下午茶,可以摸会儿鱼。

19点晚饭,吃完随意了,看会儿论文21点不到走了,或者19点半就回去了,边打游戏边看看论文,双线操作。

因为没有业务压力,所以还是比较“闲”的,每天基本上都是在看论文、跑代码,不需要提升业务上的性能之类的。

珍惜毕业前的实习时光,以后压力就大了。


—完—
为您推荐

深度学习框架简史:未来十年迎来黄金时期

吃透空洞卷积(Dilated Convolutions)
13个算法工程师必须掌握的PyTorch Tricks吴恩达上新:生成对抗网络(GAN)专项课程从SGD到NadaMax,十种优化算法原理及实现

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存