在做算法工程师的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?...

点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

来源丨https://www.zhihu.com/question/436874654

编辑丨计算机视觉工坊

方法一

作者|沈世钧

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,而是你做的东西带来了商业价值。

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

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

方法四

作者|冰水河畔

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

很多人会利用碎片时间阅读相关的论文介绍或者博客,首先我承认这是一种学习的方式,至少比什么都不做强多了(实际上,大部分连这个基本的阅读习惯都不能保持很久)。然后我更想要说的是,实际工作中我们究竟需要什么的专业能力?是不是懂得一些算法的原理甚至做公式推导就能用好算法,解决好问题?据我的经验,这个答案很可能是“不是”。个人觉得对问题的理解进行合适的选型再加上基本的算法应用经验就能解决不少问题。注意,这里我说的是算法应用经验,而不是算法的数学原理或者公式推导。要增强这方面的经验,一是多参考些kaggle、kdd cup这样比赛的优秀解决方案,二是要更多的用具体问题去尝试验证。

一个资深的工程师跟一个一般的工程师的差距不仅在于工具用的熟不熟练,代码写的快不快,而更多是在于技术的格局和知识体系化上的差距。有一句话我是非常推崇的——“不谋万世者,不足谋一时;不谋全局者,不足谋一域。”技术也是这样,它同样遵循事物发展的一般规律。要作出最合理的技术改进,必须要有一个全局的技术框架在心中,只有这样,才能够提出全局最优的技术决策,和充分考虑各方利弊的技术权衡。

还以推荐系统为例,我们应该建立的是类似上图 一样的整个深度学习推荐系统的业界主流的技术架构图,并熟悉自己公司当前采用的技术方案,在此基础上才能够作出更合理的、技术投资回报比最大的技术改进。

看看自己身边的一些前辈目前在做什么,有的自己在创业,有的在和朋友创业,有的彻底转型,有的晋升为公司的高级技术人才,有的成为公司的管理人才。当然也有的还奋斗在第一线,有的财务自由后变身天使投资人,有的辞职去养猪,有的去环游世界等等,似乎你能想到情况都有发生。但大多数都是继续在公司从事技术研发亦或技术管理方面的工作。从成本来讲也是性价比较高的主要选择。如果要走这条路,除了本身的专业能力要保持与时俱进之外,综合能力也要引起足够的重视。工作做得好不好,专业能力是其中的一部分,还有很多因素的影响。当然,如果自己内心有其他的选择,我觉得也应该去积极尝试一下,做好风险的管理,多些为梦想而奋斗的经历也是很不错的。

方法五

作者|Zico

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

尝试理解算法提出的内在逻辑

上学的时候第一次看到从损失函数和梯度下降的角度解释Kmeans算法时,心想居然还有这层关系;后来又看到从EM算法的角度理解Kmeans,又一次眼前一亮。简单的Kmeans理解起来和用起来并不难,但理解了其背后的逻辑确实会有豁然开朗的体验。

后来选了一本经典的机器学习理论的书(PRML),花时间啃了2-3遍(每一遍不是要全部理解,也不要刻意记住,因为不同阶段读可能都会有新的理解),算是从一个角度系统学习了传统基础算法的理论根基,这些在实际工作中“用不到”的知识意外的让人感觉到踏实。

学会问题分析和把握投入产出比

第一份算法相关的实习,做内容理解相关性的工作,当时的leader要求每一版优化前都要做数据分析,每一个想要实现策略都能说明白为什么要用这个策略,这个策略可以解决当前多大占比的问题,有没有工程上的限制等。后面这份工作很长一段时间里都在更数据打交道,策略也是用的一些传统的方法,但确实高效解决了当时的头部问题,保证了持续的阶段产出,到一定阶段后才开始调研当时比较流行的深度模型。

从这段经历开始理解在算法优化过程中,系统的分析问题有助于从全局把握现状,作出合理的技术选型,进而提升ROI。后来即使换了公司工作,这种简单的做事逻辑仍然十分受用。

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「计算机视觉工坊」公众号后台回复:深度学习,即可下载深度学习算法、3D深度学习、深度学习框架、目标检测、GAN等相关内容近30本pdf书籍。

下载2

在「计算机视觉工坊」公众号后台回复:计算机视觉,即可下载计算机视觉相关17本pdf书籍,包含计算机视觉算法、Python视觉实战、Opencv3.0学习等。

下载3

在「计算机视觉工坊」公众号后台回复:SLAM,即可下载独家SLAM相关视频课程,包含视觉SLAM、激光SLAM精品课程。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近3000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

 圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值