算法工程师的核心竞争力是什么?

编辑 | 汽车人

原文链接:https://www.zhihu.com/question/527696166

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【全栈算法】技术交流群

回答一

作者:Mr.Jian

链接:https://www.zhihu.com/question/527696166/answer/2737236112

从我经历了吉利-博越L的视觉感知量产落地项目,谈一谈自己的感悟。总结算法工程师的核心竞争点:

  1. 对数据的深入理解

  2. 深入分析与解决当前问题

  3. 扩展模型功能

  4. 创新的问题建模思想

  5. 渴望追求极致的效果

1. 对数据的深入理解

这部分是在数据层面。在实际量产项目中,我们并没有现成的数据,必须从0构建适合当前量产要求的高质量数据集,不同算法工程师的区分度就在于,a. 能不能制定出完善的标注规则,b. 能不能从百万量级的路采数据中,挖掘出真正对模型有价值的那些数据。

对于a,制定出完善的标注规则,为代码解析数据提供精确的信息,来创建高质量的Dataset,为模型的训练效果上限提供关键的支撑。

对于b,并不是路采的数据越多越好,对模型的训练就越有益。在实际训练模型时,当数据量增大到一定量级时,模型性能的提升几乎很微妙。所以,我们需要去挖掘那些真正有价值的数据,丢弃那些低效数据,让模型用最少且最有价值的数据,来达到量产的要求。

  1. 深入分析与解决当前问题

这是在实际问题层面。一个模型要想达到量产要求,必然要经过无数次的测试,这些测试目的就是让模型暴露出短板,并记录下这些问题。那么面对这些近在眼前的待解决问题,依据待解决问题的优先级,能不能高效解决它。

你能不能分析这些问题,定位出这些问题产生的真正原因是什么,这背后其实要求你对模型训练及推理过程了如指掌,并且对模型本身的细节有着自己深入的理解。定位出了问题所在,能不能解决它?

比如对60米之内的中大目标,预测的bbox坐标不稳定,有较大的抖动问题,导致测距不稳定,怎么解决?对公交站、房屋顶等特定背景误检,怎么解决?大于100m的车辆车型分类出现跳动怎么解决?等等。

在你用A方法解决某个问题时,需要同时考虑A方法带来的正面影响,以及负面影响,需要你进行全面的评估,给出确切的结论。如果负面影响对模型的整体性能以及对应的驾驶功能不影响,那么这个改进是有效的。

除此之外,还要对用户使用的功能有足够的了解,比如在做变更车道、上下匝道这些功能时,对你所做的检测有什么要求?近距离保证不漏检、不误检,中远距离的检测要求高precision等等。

3. 扩展模型功能

这部分是模型层面,也是最能体现算法工程师区分度的其中一项。现在优秀的开源代码框架非常多,很容易就能在自己的数据集中跑出一个不错的效果出来。但是在实际量产项目中,开源代码可能只能帮助我们完成一部分功能。很多情况下,我们需要根据实际功能需求,在已有的模型中扩展相应的功能。

比如,实际需求是要根据车轮接地点来对横向车辆测距,那么我们不仅要让检测模型预测目标的bbox和cls,还要让模型预测车轮的接地点坐标和类别,能不能在现有数据集下,拓展模型的这些功能,且不影响原来的功能。又或者,在低算力的环境限制下,用2D检测模型预测伪3D框,来代替3D检测模型。

所以,扩展模型功能,需要你对模型背后的思想有着深入理解,并且代码实现能够很好的work。上面的例子,就需要你深入理解检测模型背后的回归思想以及分类思想,并且整体的训练思想等等。

4. 创新的问题建模思想

这部分也是模型层面,相比于上面第3点,创新的问题建模思想更难。比如在低算力的条件下,想把车道线检测的分割模型,转变成检测模型,并且和现有的目标检测模型整合起来,来缓解模型前向推理时的计算压力。

这个时候,需要你根据当前数据集提供的gt信息,并且参考学术界的一些方法,来思考出一些可行方案,适配当前的量产项目。这需要你在模型技术上的探索有足够深入,并且具有一定的技术广度,方法转变为代码实现的能力足够扎实。

5. 渴望追求极致的效果

这部分是功能层面。在量产级项目中,如果一个功能在实际使用中让用户体验感不好,那么这个功能是失败的。

比如在车辆拨杆变道这个功能上,如果能够在预定的3s内,甚至更短的时间内,“丝滑”的完成变道这个功能,并且完成率接近1,是OK的。

作为算法工程师,我们需要从功能端,去逆推回自己所做的事情对这个功能的影响,进而了解对自己模型的要求,多少米内一定不能出现误检、漏检,并且预测bbox一定要稳定,在达成具体要求后,问问自己能不能再做的更好些?

这或许和自己本身的性格也有关系,有些算法工程师完成要求后,就放下来了,这本身完全没问题。有些算法工程师会再进一步思考,把模型做到极致,在量产级的模型方面,体现出“工匠精神”,我觉得这是有意义的“卷”。

回答二

作者:William

链接:https://www.zhihu.com/question/527696166/answer/2500135192

当了一年的鹅厂算法工程师,仅就我浅薄的经验来说一下自己的见解吧~

8187f9744f40735fec4b734551888917.png

本科及研究生所学的知识,比如高等数学、线性代数、传统机器学习方法及深度学习理论等这些,都只是作为算法学习的基础,并不能成为算法工程师的核心竞争力。

研究生的算法研究和公司里面的算法研究,两者最大的差别就在于:业务和数据。

所以算法工程师的核心竞争力到底在哪呢?私认为主要有以下几点:

1. 对业务的见解

之前跟朋友谈起算法业务的时候,有朋友会有一个这样的观点:算法工程师就是一个做技术的,只要做好模型做出好的指标效果就是自己最大的产出。对业务的理解那是产品运营的事情,算法某种程度上就是产品的“外包”,把事情做好就可以了。

我当然是不赞同这样的观点啦。我认为:算法工程师不仅要顺利完成模型的特征产出,自己更要对业务有绝对的把控。

519520a02e06ebd673bb82d325762c2f.png

举个例子,假设我是一个NLP(自然语言处理)的算法工程师,现在业务的主线是提升用户的文章阅读体验。如果直接将用户的阅读时长或者日均活跃度作为模型优化目标,想必是非常困难的,甚至是一个不可解的问题。

但是如果将“提升用户文章阅读体验”这个问题,转换成“提升文章的质量”,那就可以用模型建模一篇文章的优质度打分,甚至可以用模型识别低质无营养的文章,那么这里面就有很多方法可以来实现了。这其实就是对业务场景的理解。

所以啊,将业务场景建模成可行的算法问题, 直接奠定了你接下来算法工作的方向,如果一开始的方向就是错误的,又谈何成果呢?

2. 善用业务数据

确定了算法问题以及业务研究方向,接下来就要准备模型的训练数据了。不管是机器学习模型还是深度学习模型,都需要大量的数据来支撑模型的训练过程。

有一句话说得好:数据的质量决定了模型效果的天花板。

研究生阶段我们都习惯了使用学术界公开的数据集来训练和验证模型,这些数据集是经过了大量的人力筛选和审核才得到的。而在公司里,大多数情况下,公开数据集和业务场景解决的目标不同,数据分布也不同,所以我们难以直接将在公开数据集上训练的模型直接应用到具体业务中。

因此,如何挖掘和构造优质的业务模型数据,便成为了你与别人打出差异化的关键所在。

在公司里,模型的数据肯定不能完全依赖人工标注,这样的做法耗时耗财。而从业务场景下挖掘的数据,必然会存在标签错误的情况。

比如,还是以文章的优质度打分模型为例,那应该如何挖掘优质和低质的文章呢?有的人会说可以用点击和阅读时长数据来挖掘,那如何确保用户看完了这篇文章,这就一定是优质文章呢?又或者,如何能证明这篇文章不属于低俗、口水文、软文等这种类型呢(有的人就喜欢看这种类型的文章,但这种属于低质文章)?此时,我们发现仅仅靠这两个数据是无法满足挖掘数据的质量的,我们还需要引入更多的特征,甚至是数据清洗方法,来辅助我们构造出一份优质的训练数据。

3. 快速实现,快速验证

有了数据,有了模型训练标签,终于可以开始训练模型了,这部分的核心竞争力就和你的基础有关了,比如你积累了多少模型结构,最近看过多少创新性的论文,这些都能帮助你快速地搭建起一个你想要的模型,并迅速地验证模型的效果。

搭建和实现模型,讲究一个原则:奥卡姆剃刀原则。就是最简单的模型结构,往往是最有效的,且能最直接地反映问题。

bd661655fe73b929e6f651f50936ddaa.png

后续模型结构的优化,也应该是基于现有模型结构上,针对业务存在的特定问题来进行优化,优化的方法有很多,比如引入更多的基础特征甚至高级特征,或者额外加入一个简单有效的模型结构。

因为除了你自己,没有人真正关心模型的结构具体是怎么样的,他们只关心最终在业务场景下的效果,所以快速实现和快速验证模型也算是算法工程师的另一基本功。

可能大家日常对算法工程师的理解,主要是在做特征挖掘和模型建模设计,但实际上,对业务的理解和对业务数据的把控,才是决定算法工程师的天花板所在。

哪里有理解不正确的地方,也欢迎各位大佬批评指正!

(来自一个虽然很菜,但依旧每天很努力成长的小企鹅 )

回答三

作者:昆特Alex

链接:https://www.zhihu.com/question/527696166/answer/2580358639

回答这个问题之前我想先说一下算法工程师的价值,其实在IT行业,算法并不是一个不可或缺的岗位,很多小的创业IT公司就不需要算法岗,甚至是打着人工智能的幌子的公司。举个简单的例子:智能客服问答机器人,帮甲方解决一些咨询的流量,最开始冷启动的时候完全可以通过分析历史真人对话数据,归纳出访客最常问的几十上百个意图,对每个意图配上若干回复话术就好了。然后通过关键词+正则的方式进行意图识别就好了(比如出现了多少钱就直接判定意图为咨询价格),这就是在AI兴起前的规则系统。不过大家都知道规则系统的局限性,准确率precison和召回率recall都不太好,后期面对一堆正则规则还不好维护,而需要解决这个问题就需要算法工程师了,这也是算法的价值所在。优化简化规则,不停的提升precison和recall,所以算法工程师是一个锦上添花的岗位。至于核心竞争力,个人这个问题还是比较大的,我准备按照工作经验不同进行分开阐述。

一、毕业三年内

对于刚毕业不到三年的同学,硬实力压倒一切,手速决定胜负。在这个阶段的同学一定需要有快速出baseline跑模型评估指标,知道对应业务数据集下模型能做到的上限大概在哪。以NLP算法工程师举例:处于此阶段的同学一定要能够快速跑分类、生成、序列标注、句子对标注这些NLP基础任务,把数据给到你10分钟内baseline run起来,模型出来后看测试集指标,并分析数据,给出该数据集合模型能到的precision、recall等上限大概在哪,以此评估是否有进行下去的必要。如果可以的话那就需要快速进行模型迭代优化了,换模型backbone、换loss、换训练方式、调参数等等方式快速把模型训练到接近数据集的上限。这是硬实力,软实力也同样重要,因为模型不可能做到100%,这个时候你需要有耐心的对产品、测试等用他们能懂的话量化出你模型的能力(他们能够懂precison、recall、F1 score就更好了),对任何badcase都留一个快速热更新的口子,当客户反馈badcase时候马上热更新掉,badcase立马解决,然后定期分析badcase做模型的优化工作,这也是算法工程师的本质工作。

毕业三到五年

这个阶段的同学硬实力一般不会有什么问题,这个时候软实力就是竞争力的关键了。这个阶段的算法工程师不应该天天盯着模型、优化trick这些,而是应该多多发现问题,分析问题,定义问题,最后用AI思维数据驱动解决问题。举个例子:甲方客户有这样一个需求,他手下有二十个客服,想知道哪个客服回复的更专业,态度更好,客户满意度更高。他能够提供给你的是这二十个客服历史的接待聊天数据,这个问题如果给到你你会怎么做?同学们可以先想想再往下看。

首先:最容易想到的是做一个情感识别模型,分成好中差或者更细的力度情感分,对客服所有的回复都过一遍模型计算出客服回复的情感分均值。

然后再进一步:客服回复的语句中是否有错别字,或者语句是否有病句不通等情况。那就做一个错别字检测模型和一个句子通顺度模型(如计算句子的困惑度PPL值)来判断这两个得分。

再进一步:判断客服回答是否在点子上,是否有答非所问。这个时候需要一个qa模型对问答对进行打分了。

再再进一步:判断客服是否按照培训规范进行回复。比如有些客服手册中指出当访客询问价格时客服应该做什么动作(比如诱导催拍),当访客要求退货时客服又应该做什么动作(比如安抚客户,发个小红包补偿尽量让他不要退货等)。结合访客与客服的交互,做一个意图识别模型专门识别访客的意图intention,再做一个动作识别模型专门识别客服的动作action,根据intention-action pair计算得分,评估客服回复的专业度得分。

再再再进一步:还需要考虑客服回复的轮次(如访客第二轮的问题客服第四轮才回复),客户的情绪波动值(客户刚进来语气态度很不好,甚至要骂人,但是聊天结束后客户很满意的离开)等等等等......

大家可以看看对这一个简单的任务我们有多少评估模型了:情绪识别模型、错别字检测模型、句子通顺度模型、qa对模型、intention/actino模型、、、

这就是分析问题、定义问题、拆解问题、最后用模型去解决问题的能力,解决问题成了最后一步,分析定义拆解问题才是有经验的算法工程师的核心竞争力。

毕业五年以上

做到了五年以上的算法,基本上都是算法大佬了吧,应该是坐上了公司算法tl的位置了吧!本人经历还没到这个阶段,只能结合自己工作经验和算法tl的聊天、合作观察等抛砖引玉,希望能有真正的大佬补充下这部分的答案。到了这个阶段,寻找算法落地场景、发现问题才是最关键的核心竞争力了。我之前的tl基本上和产品、运营厮混的就比较多了,看看产品设计,考虑一下怎么将AI能力渗透到产品中去;问问运营客户反馈的一些问题,想想怎么用AI去解决一些客户痛点问题。了解并熟悉公司所有的业务路线、客户分布与画像,努力以数据+业务驱动去获取idea,整出一套公司高层support、客户认可的AI产品,至于AI产品里的模型技术问题交给像本人这样的手下就好了。

视频课程来了!

自动驾驶之心为大家汇集了毫米波雷达视觉融合、高精地图、BEV感知、传感器标定、传感器部署、自动驾驶协同感知、语义分割、自动驾驶仿真、L4感知、决策规划、轨迹预测等多个方向学习视频,欢迎大家自取(扫码进入学习)

a2bed7b49face4e1da405d69da563bee.png

(扫码学习最新视频)

国内首个自动驾驶学习社区

近1000人的交流社区,和20+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、Occpuancy、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

fcf72f7b7dccaf47207001ce6e2de0f5.jpeg

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;

7c9dfc9313f06daee7a648880d42b1b8.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值