点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
作者丨傅聪 浙江大学博士,南加州大学访问学者,《业务驱动的推荐系统:方法与实践》作者
来源丨https://www.zhihu.com/question/68126029/answer/3000364918
编辑丨极市平台
极市导读
一份来自算法工程师自身的工作经验总结。
许久没有码「长文」了,因为这段时间我把自己的一些思考沉淀下来写了一本书。而写这本书的契机,就来源于一次直属下属的晋升辅导。
这让我萌生出把算法工程师这一行的经验,做一些总结和分析的idea,也许会对刚入行不久、或者想要入行的朋友们有所助益,下面,我就简单啰嗦一下在实践中总结出的「工作心得」:
Part 1 从晋升聊起
每一个算法工程师的蜕变都是从第一次晋升开始的。原因很简单,对刚踏入职场的小白来说,很少有人会时不时地进行系统性地回顾和自省。当然,这里说的晋升不是那种“到了时间,该晋升了”的那种按部就班的流程,而是没有暗箱操作成分的真正的审核。
当他真正面对晋升的时候,他会迫不及待地拿着公司给出的Job Model,一条一条地跟自己进行比对。 但大多数人的第一反应往往是失望的:那些Job Model全是一些看起来虚头八脑的东西,不是掌握了多少种模型,也不是写了多少行代码,更不是取得了多少战果。
拿我曾经呆的国内大厂Job Model来说,有人甚至把5->6->7->8的晋升标准总结为“连点成线”、“连线成面“、”连面成体“,让人不禁想吐槽这是在这跟我玩几何还是微积分呢?更不用说在此之上,需要做到的是跨部门、跨BU级别的资源整合以及战略部署。
作为曾经的小白,当我读懂这些虚头八脑的描述之后,回过头来才发现了自己的蜕变,不由得感叹,这些”虚化“的总结性词汇十分到位。
抛开晋升,我们仅仅谈成长,其实这个过程注重的不是“持有“,而是”转化“。
Part 2 成长道路上的隐形屏障
提升一个层级,工程师就要相应地承担更大的责任。 做算法工作不是类似高中、大学里“面向考试的学习“过程,不是记忆的知识越多得到的分数就越高。算法工程师仅仅是所有普通工程师职业的一种,是对“知识到结果的转化”有着高要求的职业,无论是哪一个层级,都注重的是解决问题的能力。而层级越高,所面对的问题、系统的复杂性越高,也就更需要更高层次的视野和深厚的积淀。
那么问题来了,作为一名算法工程师,应该如何提升视野,又应该去沉淀什么呢?
回到工程师工作的本质,解决问题。
那么,问题从哪来呢?从目标里来。产品发展到了特定的阶段,下一步应该做什么,这些都可以在高层级的同事的OKR里看到。从高到低,每一层级将上一层级的OKR层层拆解下去,就形成了每一个层级的OKR。
拆解OKR其实涉及了2个非常重要的动作——拆解和设计。
老板的OKR里归属到我的职能部门或者团队乃至个人,具体的子目标有哪些,这个是“拆解”;应该通过哪些动作实现这些子目标,这个是“设计”。
层级越向上,子目标和整体目标之间的对应关系就会越模糊。目标和手段之间的关系也越模糊。例如,上级目标是提升DAU,我的目标可能是提升留存,而就视频推荐平台而言,与留存有关的是停留时长和互动,那么我们就需要去寻找与提升时长和互动相关的方法。
所以,我们为了具备这个层级的“拆解”和“设计”的能力,需要在工作做的沉淀包含两个方面:
第一,寻找所需要解决的问题,与目标之间的对应关系。
这玩意儿有个行业黑话,叫“业务sense”,每个算法工程师所经历的层级越高,在岗时间越长,就会越来越频繁地听到这个词。
第二,沉淀设计的能力。
做事有“先来后到”,也有“轻重缓急”。知道要做什么是一方面,知道怎么做、按什么顺序做,也非常重要,甚至关乎职场生存。
这些东西,是每一个推荐算法工程师在成长过程中都会遇到的隐形屏障!突破了这一层,才算入了业务的门,否则就可能沦为一个“论文翻译员”和“模型试错师”。
PART 3 蜕变的契机可能是一件“脏活”
如果要我回忆自己第一次发生蜕变的契机,可能要说到很久之前在前司做的时效性业务。业务的大背景是重塑场景内的内容生态。任务拆解下来,到我们团队手里包含了权威扶持和内容时效性两个大课题。当时的背景下,流量有限,很难做到类似抖快这种大平台的高速流转。而我们的目标则是尽可能在不明显影响整体分发消费的前提下,加速内容流转的生命周期。
兄弟组表示有做过时效性建模的经验,自告奋勇要做时效性大模型,而我这组则负责优化冷启动效率以及减少冷启动和自然循环之间的沉默期。
很快,兄弟团队就搭建好了数据流和模型,但上线后大盘整体时长可以说是暴跌,之后还借鉴了一些其他平台的做法,投入了大量人力成本进行时效性样本标注和微调,也没有得到任何收效。
随着时间的推移,老板们和运营同事们的压力也越来越大:大量的新引入的up主以及新鲜内容分发受阻,新人月存活率低,投入的内容采买的金钱成本难免面临打水漂的尴尬。我通过大量的数据分析发现,由于新内容分发历史较短,所积累的正向反馈没有老内容多,难免在主分发流量的竞争中处于劣势。除了分析数据外,我还向很多其它竞品工作的同事取经,但同样的技术方案到了我们这里如石沉大海,没有一点声响。
焦虑之余,我甚至干起来运营产品的营生:竞品分析。在对比了大量各种各样的产品形态后,我萌生了一个念头:尝试在产品形态上做文章。我们的产品形态与抖快差异很大,流量规模也差距很大,这是我觉得同样的方案不凑效的一个可能的原因。所以,我提出要在视频卡片上,外显播放量的旁边位置,加上视频发布时间戳。结果出乎意料,新内容在不增加流量扶持的前提下点击率大涨,样本的整体分布也开始发生迁移。当然,仅仅这个是不可能做到前面说的大目标的,诸如多级推动、过热冷却、特征体系重构等等机制的加入,协同完成了目标。
“改形态“这种事情,很多时候为算法从业者所不屑,甚至有人认为要分工明晰,这不是算法该干的事情。但通过这件事情,我对这件事情的态度发生了变化。
说到底,一个合格的算法工程师团队应该是整个部门”最懂数据“的团队,因为他们要理解数据,活用数据,来实现自己的目标。 如果要求运营、产品团队比算法更懂数据,更能从业务数据驱动的角度去定位非算法的问题,其实是很难的。因此我会更鼓励跨领域的协作,甚至,算法的站位要更靠前。
Part 4 从算法到业务的转变
在晋升成功后,为了进一步充实自己,我买了一些“推荐系统算法工程师“方面的书籍阅读。此时,我才发现一个问题。这书可以分为两类,一类是纯粹的工程系统设计的书,算是推荐后端的参考书;一类是堆砌大量推荐算法的书,把算法按种类划分,只讲论文角度的算法设计动机,也就是常说的”motivation“。
这些书里不讲为什么要用,在哪里用,背后的业务思考是什么?让不少初入行的朋友们认为,只要理解了这些算法,就一定能循序渐进地拿到业务结果。似乎在告诉大家:“顺着从低级到高级的算法改进路程试一遍,不就能一步一步拿结果么?“
然而对于真正在这个行业工作过的我而言,我深刻地理解现实的残酷性——很多高级的方法不仅没用,还可能让效果倒退。为了解开这些误区,也为了更好的总结经验,我开始着手从算法和业务驱动的视角重新出发,写了《业务驱动的推荐系统:方法与实践》这本书。
我在 《业务驱动的推荐系统:方法与实践》 里,把实际业务中相对比较重要的模块逐一拆解,分别介绍,例如市面上很多“算法书“懒于介绍的用户画像、标签体系、特征体系等,我都在书中独立成章、详细介绍,同时也会将一些适用性相对比较广,在业界有一定声誉的代表性算法筛选出来,按照其功能定位组织成章节进行介绍。方便初学者有条理、成系统地理解这些算法的作用。
比起堆砌算法,我更倾向于在每个功能模块弄懂一两种代表性算法的本质,其它的自然而然触类旁通了。 如果有对前沿领域的先进算法感兴趣的朋友们,我个人建议可以直接去阅读paper原文。一方面,紧跟前沿迭代方向是对算法工程师这个职位的基本要求;另一方面,书籍的整个出版流程,必然会导致算法更新频率低。
希望我个人分享的一些小见解,能够帮助到初入行的朋友,找到合适自己的成长之路;以及想要入行的朋友,对这个行业有一个更清晰的认知和理解。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~