这是一个非常好的问题,问到算法的根本上来了。我觉得从两方面答才能把这个问题答清楚,一个角度是从产品经理的角度,一个角度是从我们算法工程师角度。
先看看产品经理们是怎么想的。我五年前开始当算法部门的技术经理,每天跟产品经理们“混”在一起,我深刻的知道PM们的需求,在一个不太专业的PM眼中,算法模型就像“银弹”一样,可以消灭一切效果问题,想提升CTR就提升CTR,提升CTR的同时还要照顾多样性,还最好让CVR也一起上来。提升不起来那就是这个模型效果不行,算法团队的水平不行,解决问题的能力不行。
其实工程师并不是惧怕某个问题有多难,工程师惧怕的是这个问题根本就没定义清楚。因为问题的定义直接影响着优化目标,甚至是模型的精确的objective function。所以一个不合格的算法PM就像一个搞不清楚状况的单身男女一样,“我期待爱情,但我却不知道我要的爱情是什么?”,算法工程师是希望给你“爱情”,但真的麻烦告诉我你要的“爱情”是什么,因为我真的没办法把“爱情”这个玄幻的东西写进objective function里面去啊。
所以其实硅谷大量成功的PM是工程师转过来的,在对产品有深刻理解的同时,要有精确定义问题的能力。比如说现在我们要解决一个物品冷启动的问题,那么我看中的metrics是在30天内提升物品的覆盖率,同时整个系统的核心商业指标不下降。这个定义就非常精确,有AB Test期限,有优化目标,有问题约束。但你要说我既要提升物品覆盖率,又要提升商业指标,又要兼顾short term/long term revenue。我只能说你是个搞不清爱情到底是什么的痴男怨女了。
我一直坚信在一个大型机构里,一定要坚持让专业的人做专业的事情,这样这个机构才能成功。一个专业的PM就应该擅长提出问题,定义问题,而一个专业的算法工程师就应该擅长在一个固定的问题框架下解决问题。这些角色之间当然应该有合作,但绝对不可以说对方应该把自己的事情做了,要是算法工程师们都是业务专家,擅长定义问题,拓展业务,那么还要PM做什么呢?
那么问题的另一方面肯定是算法工程师的角度了。
我个人在带人的时候最不喜欢的一类新人,就是公司的这也看不上,那也看不上,觉得不是最新的技术,不是最新的模型。其实他们不知道的是,在一个算法上线之前,可能其他工程师已经把所有可能的解都试遍了,挑了一个最合适这个场景的。也许这个问题的提问者是遇到了这类新人吧。我是完全不相信工作了5年以上的算法工程师还成天嚷着要用最新的技术,不用考虑业务和问题本身。
对于算法工程师来说,虽然说定义问题,拓展业务更多是PM的事情,但请务必深刻理解要解决的问题,甚至比PM还要清楚这个问题的细节。我在接到一个问题的时候,会做三件事情,一是打开APP/Device,去真真切切地看一下我要优化的场景,二是去探索一下数据,看一下跟这个问题相关数据的大致分布,用户行为和物品属性的特点,三是从一个“人”的角度而不是机器的角度思考一下,哪些特征是真正重要的。这三件事情做完,才去做算法模型的设计。接到问题之后,两眼一抹黑,直接开始建模,眼睛一直盯着AUC,一眼也没看过产品。我严重怀疑这是在实验室呆久了,只会写学术论文了。
所以问题答完了,不能清晰定义问题的PM不可能是好PM,从来不去了解业务的算法也不可能是好算法。两方各司其职,各有所专,这样大家才能都有光明的未来。
前面几位大佬写得挺好。我再补充点。为什么是「有些」算法工程师从来不谈业务?(如果你看编辑记录,其实那个「有些」也是我改的,毕竟不能一杆子打死一船人)
可能是因为有的产品或者领域,业务模式太清晰,参与者太多,竞争实在太卷了,所以需要专业的人做专业的事,由于业务模式太清晰(例如做人脸识别的系统),产品经理研究对手和竞品,所以算法工程师需要把时间都花在调参,以试图帮助产品经理多压榨点性能,或者试图在某项数字上超越对手,好让老板做个漂亮的ppt。
也可能是因为一个残酷的事实:很多算法工程师所做的事情,都是在PoC(概念验证)阶段,或者是Prototype阶段,根本没有上线运营过,要想谈业务,无从谈起。从poc到production,路径还是很长的。
首先,作为算法工程师,理解业务的目的都是为算法服务。如果上深度学习就能获得较好效果,那么理解业务就显得有点「性价比低」了。想要提升性能,调参呗。
即使对于业务逻辑复杂的产品,理解一个复杂产品的业务从而去提升性能,是很累的。而通过调参的方法来提升性能,是在自己舒适区内的,况且效果可能更好。
讲讲我们对算法工程师的要求(不过我们叫数据科学家)。我是做信贷风控以及反洗钱的,幸运的(也许也是一种不幸),我们不能直接使用「黑盒子」的深度学习模型作为我们的主要模型。原因是监管要求模型具有可解释性。这种情况下,我们和竞争对手之间的差异,在于谁对业界的理解更深入从而构建更有效的方案(当然也离不开谁的老板在业界更有名气)
我们是如何招算法工程师的。
我们怎么培养新进来的算法工程师的呢?说实话,针对技术上的培训我们从来没有,新人一进来,就要开始着手业务了。我们准备了一些业务逻辑的文档,让新人自己看,然后和产品相关的讨论会,都拉上他。在我们公司,确实没有使用sota模型的机会(当然我们也可以自己玩玩,公司给了大家自由使用的算力平台,想研究的话,可以自己在上面试验最新模型,但仅供学习,不太可能有机会融入到产品里)。对产品有一定了解后,就会跟着对接客户,理解客户的业务,把对客户业务的理解转换为有效特征。所以我偶尔会无奈的「吐槽」自己对技术的关注太少了。当模型的复杂度被限制了,我就只能捣鼓特征了。
最后贴个老回答。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有