作为从业者,经历了在学校做算法科研,和毕业在互联网大厂做算法的转变。目前在字节做广告算法,观念相比学生时代已经改变很多。下面根据我自己的思考谈下这个问题,希望对看到这个回答的同学有所帮助。
衡量一个广告算法工程师的标准是能否通过各种手段(不限于模型),提高公司的变现能力。
达到这个标准需要的核心竞争力在三个维度:算法能力,工程能力,业务理解。
工作前期,大多数人是完成leader分配的任务,此时算法能力和工程能力是重点。这二者是一个算法工程师基础能力,优秀的算法工程师应该了解市面上各种类型的广告算法,跟进业界最新的动态,哪种算法在什么场合下有效,怎样取舍不同算法。对于一个具体的业务问题,能够调研分析出合适的算法模型,快速的实现代码,上线部署。在效果不符合预期的时候能够定位问题,获取收益。比如在transformer横空出世的时候,阿里就迅速应用transformer到了推荐领域,这就是算法能力体现。多读论文多与优秀的同行交流,这个能力就能逐渐变强。对于优秀的新人,很多人在学校就会阅读很多paper,到了公司也会看doc,这个要求感觉是比较容易达到的。
工程能力是许多新人算法工程师喜欢忽略的一点,但这个能力其实非常重要!工程能力是理解广告/推荐系统细节的保证,能够提升对算法和架构的认知。随着各家公司的业务场景也逐渐成熟,简单套用一个算法就能拿取成果的时代已经一去不复返了。18、19年,一个新策略或者新模型简单就能获得3,4个点的增长,而到了现在单纯改一个精排或者粗排模型,最多也就是1、2个点的增长。因此,为了获得更高的收益,现在算法变得更加复杂,对架构工程的要求也远比之前高。一个新算法,也许会要求修改多个serving模块,上下游同时适配,延时优化等等内容。这个情况下,想要出色的完成工作,必须深刻的理解广告系统的细节,工程实现。一个经典例子是下面这个阿里的边缘计算在推荐系统应用,可以看到涉及许多架构工程层面的改进。其他大厂想要跟进这项工作的话,依然需要的是工程能力强的算法工程师。
另外,算法工程师一个常有的误区是认为“只要安心优化模型就好了”,一到公司发现优化了好久没啥效果就慌了。其实广告是一个很大的方向,算法、策略、风控都占有很重要的位置。如果单纯依靠模型结构优化,在现在成熟公司的广告业务中,已经很难获得收益了,大量算法工程师集中搞结构优化更是会陷入“内卷”的尴尬。因此,我们也可以把目光投向新特征、模型优化、工程改造、新业务带来的新算法/架构、策略优化等等。当把优化眼光放到广告全链路时,我们才不至于被单纯的精排粗排等模块限制住。而想要明白广告全链路,则工程能力必须很强。
对于工程和算法基础,给出几个是基本能力:
再说最重要的能力,业务理解。上面两个能力能够让你从新人走向成熟,但真正决定你视野高度从而区别于普通工程师的就是业务理解能力。广告是与业务强相关的方向,我们工作的目标也是利用各种技术手段提升变现能力。算法和工程告诉是怎么做,而业务理解才能告诉你为什么要这么做。一个算法为什么有效,为什么无效是需要你通过大量的业务经验和思考总结的。大的层面,想要从普通员工晋升为leader级别,你就得知道哪块业务有前途,哪块业务是你需要努力拿下的。你视野足够高,业务理解足够强,能够独立把一整块业务吃下去、做起来的时候,你就不需要担心当一个大头兵的问题了。小的层面,你想做出成绩拿到算法收益,也得从业务本身思考怎样优化算法和架构。能够发现业务上的问题,才能够通过各种技术方式获得收益。业务理解上有许多东西是要自己逐步体会的,但这个是算法工程师们必须要去思考的,也是工作后期最重要的能力。
最后,谈个小问题。许多新人有“技术崇拜”,认为只要技术牛,一切问题就都解决了。举个我师兄的例子,他们部门(BAT某家广告算法)有个跟他几乎同时毕业的同学,那位同学工作非常追求技术牛逼,要使用很fancy的算法,但对业务不是很感冒。但技术又牛逼,业务提升又很大的工作哪有那么多。。因此,能够拿出的成果寥寥,让他晋升之路非常坎坷。所以,希望刚进入这个领域的同学不要排斥业务,尽量理解广告算法这个领域面对的业务问题。