2021年,算法工程师必备的能力是什么?
近年来,关于算法岗位“越来越卷”的声音持续热烈。
我们经常收到一些同学提问:算法岗位听说人才过剩要顶会才能入场了,不少人都在转开发。不管是新的应届生,还是两三年的职场人,都在被劝退。到底现在的算法工程师需要具备哪些能力,才能满足要求?
今天我们邀请了 3 名淘系技术的算法工程师,给大家分享一些他们算法入场的经验,以及在淘系工作中真实需要的能力和素质,希望能够为你提供一份参考。
01
淘系技术部 | 商业机器智能部北原
“一名优秀的算法工程师,需要具备数据分析能力和代码工程能力,从而能够在实际应用中发挥对应模型的上限。“
在一个面向线上的消费场景中,为对应商品制作展示图/创意广告的创新业务中。当时我们已经具备为一个商品,制作多张备选创意展示图/商品图的的能力。问题在于每个商品,在线上展示商品图展示数量是有限的。项目初期不同的业务方和设计师,对于最终选择哪张图的标准存在明显的不一致。
如果单纯跟着商家的美感判断,人工挑选好/坏做二分类。先不论能否收敛的问题,不同商家/不同的运营会给出不同的结论,另外市场是否买单也会存在挑战,因此我们放弃这类优化方向。
最大的成长是刷新了对「完成工作」的认知。以往我比较满足于自己「工匠」的角色,认为只要能在规定的时间内,最大限度的保障架构设计和代码的质量,满足用户的需要,并提出一些专业可行的建议,就可以算作是出色的完成了阶段性的工作。
除了常规的商品特征和用户行为特征之外,我们就创意内容生成中的各种可能的元素(包括图片背景/拍摄视角等),实验可能影响最终点击率的变量,建模关联点击率的数据,指导商品和创意内容的选择和分发。
图像分类边界问题
另一个组内的图像分类项目中,业务方给出了约有40个类目,每个类目下样本数据量也足够(不存在长尾问题)。任务看上去并不困难对吧,拿到数据后就开始训练。优化一段时间后部分类目下准确率始终无法超过80%,模型层面的优化也只能带来有限的1-2%的提升。
推荐业务影响模型表达的case
正/负样本错判:
多内容展示无尽流场景下用户下滑的时候,有些情况会导致在展示时,有些内容/商品只在底部露了一个头,没有完全进入用户视角内。这时候用户切换了界面,如果不做任何处理的话,这个样本就成为了“曝光未点击”的负样本,会对训练过程产生一些偏置。
不一致问题:
如果训练的模型表和特征表没有部署在同一个节点下,或者因为其他的原因更新出现了时间上的差异,那么这段时间的推荐结果数据就出现不一致导致的异常。
整体来说,算法工程师建模和模型优化能力确实很重要,某种意义上来说顶会论文发表证明有优秀的模型能力和英文表达能力。但是在工作中,一名优秀的算法工程师,也需要具备数据分析能力,和代码工程能力,从而能够在实际应用中发挥对应模型的上限。
02
淘系技术部 | 算法技术 琦舞“除了必备的工程能力,一个合格的算法工程师必须要有业务owner和产品的视角“
我从事推荐算法行业五年左右,当年侥幸入行。现就职于阿里巴巴首页猜你喜欢推荐算法团队,身边有一群特别优秀的同事,他们每个人的业务和技术都十分出彩。自职业生涯伊始,我身边不乏有一群优秀的伙伴。
拿舞蹈来举例,如果我们把算法训练出的模型比作一支成品舞,那么工程能力就是舞蹈基本功。如果完全没有练习过基本功,或者基本功差,手脚不协调,通过努力,你也可以学会这支成品舞,但却离艺术和美感度相差甚远。如果基本功非常扎实,那么你学任何一支新舞,皆是水到渠成自然而然之事。如果你工程能力很强,基本功扎实,在工作过程中需要解决一些实际问题时,便可以很快上手解决,理论和实践之间,就差一双手。
一名合格的算法工程师必须要具备的工程能力:
debug。快速定位问题的能力十分宝贵。这点是最重要的。
python、java、c++等,这三种编程语言很重要,使用的频次从高到低。模型离线训练时需要用到python(无论是tensorflow还是pytorch框架),线上serving或者实现定制化的算法策略时,一般用java实现,线上Query predict服务一般用c++实现。
推荐多看一些优秀的语言类书籍,对自己编程习惯的养成很有帮助,多看书多思考多写代码多实践,代码肯定会越来越6的。后面我会写一个专题,与大家分享对我有帮助的一些算法/语言类技术书籍。
hive sql。这是工作中使用频次很高的语言,我们都是sql boy/sql girl。
shell、Awk等。快速处理数据以及调用一些python、java脚本时,经常会用到。
scala:在我工作的前几年用spark比较多,训练非深度模型很方便,与hive sql的交互也十分方便。
对分布式框架的理解。这个非常重要。比如tensorflow框架中的ps/worker/chief是怎么协同工作的,参数更新在哪里,模型训练在哪里?
除了必备的工程能力,一个合格的算法工程师,并不仅仅是算法工程师,他必须要有业务owner和产品的视角。
有些时候,算法效果提升遇到瓶颈时,不妨想想,从用户角度出发,从产品层面出发,是否还有更好的切入点。我们也应该深入思考业务运行机制,从投放供给端,通过冷启,到召回,到粗排,到精排,最后到排序机制,哪个链路都有可能出问题,哪个链路都有优化点,所以说,一个全栈全链路的算法工程师是稀缺的人才。供给/召回/精排/机制的联动优化,才有可能使线上效果取得质的飞跃。
一个优秀的算法工程师,既可以玩转模型,又对产品有独到的见解和思考。比如信息流推荐场景的优化,当你作为一个真实的用户去体验推荐视频流时,就会很容易发现一些产品或者系统层面的问题,然后再回归到算法,用技术手段或与产品合作去解决这些问题。只有这样,公司的产品才有可能越做越好,算法优化的天花板才会越来越高。
03
淘系技术部 | 算法技术初类“对一名有技术追求的算法工程师而言,一定要保持一颗好学的心。“
我从事推荐算法行业五年左右,当年侥幸入行。现就职于阿里巴巴首页猜你喜欢推荐算法团队,身边有一群特别优秀的同事,他们每个人的业务和技术都十分出彩。自职业生涯伊始,我身边不乏有一群优秀的伙伴。
从一名紧密贴近业务的算法工程师来回答该问题,观点如下:
业务认知&问题定位
首先要清楚你所要解决的问题是什么,是否需要复杂的算法求解。问题的定义来源于你对业务的认知和理解。我们经常陷入一种误区,觉得自己是一名算法工程师,遇到任务问题都想要用复杂的算法去求解。正所谓一顿操作猛如虎,得来的效果却很一般。因此,做事之前一定要在理解业务的基础上,把问题定位清楚,用合适的方法求解。
数据挖掘&分析
算法策略
这是每位算法工程师的硬实力,有了清晰的问题和可用的数据后,我们需要选择合适的算法策略求解问题。就销量预估而言,由于特征大部分都是表格型,树模型及其变体成为首选的方案。通过树模型,你能够快速拿到一个不错的baseline。但千万不要停滞不前,你需要调研更多的先进的方案进行优化,即使此时能够拿到的收益不多,但请坚持专研的精神(近期时序模型中,热度很高的informer值得尝试)。此外,“人工智能,有多少人工就有多少智能”这句话在实际应用领域体现得淋漓尽致。策略也属于算法的一部分,人工策略有时候能够带来很大的受益,也能够找到更适合的算法优化方向。例如,我们在优化首猜的货品池时,考虑到首猜目前的推荐算法已经非常优秀了,但消费者的成交来源主要是搜索,我们通过人工分析选择了做增量货品供给的方式,拿到了不错的业务效果。基于此,我们也找到了更合适的选品算法优化方向。
离线实验和线上AB实验
领域前沿论文
其他
好记性不如烂笔头
及时梳理和总结很重要。组织架构可能会发生调整,导致你的方向发生改变。因此,我们要养成阶段性的总结和沉淀。
勤学好问
身边有很多优秀的小伙伴,跟大家融洽地相处,更多的交流和讨论,这或许会加快我们成长的速度。
参与技术分享
听别人讲,讲给别人听。我们团队有融洽的技术分享氛围,互相分享近期专研的技术。你可以从别人身上学到很多宝贵的经验和知识,也检验自己是否真正了解某项技术。
结语
编辑|橙子君出品|阿里巴巴新零售淘系技术