在做算法工程师的道路上,什么情况下技术会突飞猛进?

共 2865字,需浏览 6分钟

 ·

2021-03-14 16:22

作者丨沈世钧、DLing、坡哥说
来源丨知乎问答
转自丨极市平台
本文仅作学术参考,如有侵权,请联系做删文处理

导读

 

算法工程师作为近几年非常火热的岗位,近几年校招开放了大量的算法岗位。作为想要在这个岗位上不断前进不断深入的人,有哪些tips或者经验可以传授给这条赛道上的各位呢?本文汇总了知乎上三个优质的回答,希望能给各位一点启发。 

# 回答一

作者:沈世钧

来源链接:

https://www.zhihu.com/question/436874654/answer/1746629056

分享2个关于算法(包括算法工程师)的心得。


1.成就一个优秀算法工程师的,不仅是聪明和汗水,更还有那一瞬间的灵感。


一作算法的朋友,入行几年一直平庸无奇,然而就在某个下午,它在公司的走廊上遛弯的时候,就在一瞬间,它脑子中闪出一个精彩的点子,一下把公司的算法性能提高了几倍。


为此,公司奖了他一大笔钱。有了这笔钱,朋友原本准备在上海首付买房,结果直接全款,而且还是90多平米的大房子。


但其实,当其他的同时了解了朋友的灵感之后都感慨万千,因为实在是太“简单”了,不过是利用了gpu的某个硬件特性而已。


但是,就是这么个简单的东西,放在那里,别人就是没想到,最后被朋友捡了个漏,只能说大概那一刻,他被上帝的苹果砸中了头。


2.算法是一个残酷的竞技场。


做软件开发的都有体会,一个优秀的软件工程师相比于一个平庸的软件工程师,可能会有数倍的生产力优势。


但是,即使是一个平庸的软件工程师,管理得当,总能够有产出,然后薪水合理,总还是能够追求性价比的。


所以,这么多年来,我还没见过因为纯技术的因素被淘汰出这个行业的软件工程师。也就是说,只要肯吃苦,薪水合理,总能有口饭吃。


但算法工程师不一样。


杰出的算法工程师相比于无所作为的算法工程,可能是极大和0的差别。


和软件开发不同,相同功能的系统,很能进行量化的比较,但算法不一样,在标准的数据集上,可以得出一个精确的性能/精度结果。在此之上,就可以就行各种比赛以及排名。


所以经常会出现这种情况。


作为一名算法工程师,过去的1年你投入了巨大的精力在某个算法的改进上,结果感觉也进步不小,但很有可能在年末的比赛中被同行吊打。


我就见过朋友辛苦了一年,比赛结果出来,排名直接去年的前5跌出前10,这个时候人只能感慨:“不是我不努力,而是对手太强”。


但最让人感到痛苦的时候,当我们被对手吊打的时候,我们甚至猜不出对手到底使用什么“黑科技”,从而取得了如此突飞猛进的成果,也许就如上面所描述的,对方的某个算法工程师也被上帝的苹果砸中了脑袋。


所以,在关键指标上,公司对算法工程师的产出考核是极端苛刻的,要么是1,要么是0。你辛苦研究出的东西很可能一出生就是落后的,要被淘汰的东西。


所以,算法工程师的情绪常常要在谷底和巅峰之间飞跃,承受巨大的压力。


正是因为算法输出成果的可比较性,在其中的算法工程师往往会承受巨大的压力,这种压力比程序员更大。


程序员虽然很累,但好在程序员的工作需求往往是明确的,过程(搬砖)是可预期的,压力主要体现在工期上。而算法工程师的需求有时候是不明确的,即使是明确的,但过程却未知,需要去探索,有时候依赖于灵感。


过去的这些年,我从没见过因技术主动离队的程序员,但我却见过不止一个因为技术,承认自己被击败,而主动离队的算法工程师。



# 回答二

作者:DLing

来源链接:

https://www.zhihu.com/question/436874654/answer/1744174731

突飞猛进不敢当,但是从事深度学习图像算法这几年来,却是也有一些感慨。


  1. 数据放在第一位,成也数据,败也数据。深刻认识数据的重要性,把数据集维护好,数据量够了,再谈后面的模型优化,数据都不干净,用再好的模型,也不会出好的结果。

  2. 启动开发前,多问问自己有没有了解这个业务,目前定的方案还有没有盲点没有考虑到,毕竟启动开发需要准备各种数据集,耗时长且需要一定的人员和经济投入,如果开发过程中或者测试阶段发现方案不合适,这时候推倒重来的话,就DT了。

  3. 算法工程师并不只是调包侠,炼丹师,而是一个综合要求很高的岗位。要训的了模型;写的了逻辑;优化的了算法性能,时刻把运行速度,准确率,召回率,显存利用率,显存占用,cpu利用率,内存占用,并发路数等等记在心里;还得深刻了解业务,目前的方案合不合适?产品定的指标,给的需求有没有坑?完成这些需求,要选什么样的硬件最划算,可不可以少几个模型,毕竟看数据也很费眼;

  4. 多实验,多记录,多对比,勤讨论,勤汇报,勤迭代。这一行多少还是有点玄学的,很多问题没有很强的理论可以支撑,靠经验的地方很多,这个模型效果好,很多情况也不是推导出来的,而是实验出来的,有时候想破脑袋,也没有动手起几个模型效果来的快。平时多跟同事同行讨论讨论,搞不好费了你好几根头发的问题,就被别人解决过呢?

  5. 多看行业顶会论文,多追追大牛的博客,思路打开了,落地也就简单很多。


以上是我从事算法行业几年来的一点点体会,不是具体到看了某一篇论文,学了某一个框架,熟悉了某一个语言给自己带来的提升。但就我而言,这些对岗位认知的更新,做事套路的更新对自己的提升有时候要强于某一项具体的技术。今天把这些体会分享出来,希望能符合题主预期。


# 回答三

作者:坡哥说

公众号:坡哥说

来源链接:

https://www.zhihu.com/question/436874654/answer/1705702321


模型不是一切!

模型不是一切!

模型不是一切!

重要的事情说三遍!


其实并不存在所谓的突飞猛进,就是从业务出发,去连接业务和模型、特征本身。那些模型也好,技术也罢,不落在真实的业务场景和产品中,则产生不了太大的商业价值。


我们绝大部分人都是普通人,大家都是为了挣钱、养家糊口才去工作的,而老板愿意给你发更多钱并不是因为你搞的这个技术很黑科技,很牛X,而是你做的东西带来了商业价值。


苦口婆心地劝还在学校的学生不要迷恋模型,可能一点儿用也没有,因为人家接触不到真实业务场景和数据。


其实,算法工程师,越做越久,就会发现本质还就是数据分析和归纳,模型那些东西不会占用很多时间,更何况,工业界用的实实在在的那些模型,其实都是些非常经典,架构简单的,绝不是堆砌那些花里胡哨,投入产出比低的模型。


往期精彩:

【原创首发】机器学习公式推导与代码实现30讲.pdf

【原创首发】深度学习语义分割理论与实战指南.pdf

 谈中小企业算法岗面试

 算法工程师研发技能表

 真正想做算法的,不要害怕内卷

 技术学习不能眼高手低

 技术人要学会自我营销

 做人不能过拟合

点个在看

浏览 24
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报