算法工程师的幻觉:你以为你在造火箭,其实你在修水管
2019年,我入职第一家公司做算法工程师,入职前幻想的是自己穿着格子衫,靠在人体工学椅上,用PyTorch敲几行代码,把模型效果提升个百分之三,然后接受产品经理的欢呼和崇拜。现实给我上的第一课,是在入职第二周就来了。我花了整整三天调参,把离线AUC从0.721干到了0.723,兴冲冲地跑去找leader汇报。leader看了眼屏幕,问我:"这个提升,你信吗?样本是不是漏了?线上表现估计还是原地踏步。" 后来我发现,那0.002的提升,不过是随机种子变了。那一刻我隐约明白,算法工程师这个岗位,笼罩着某种巨型的、集体编织的幻觉——这个幻觉包裹着每一个即将入行的人,甚至也包裹着许多已经入行三年五载的人。
这个幻觉最核心的组成部分,是"算法改变世界"的叙事。招聘市场上,算法工程师被包装成技术岗位里的贵族,月薪天花板最高,跳槽涨幅最猛,好像掌握了深度学习的咒语就能让万事万物长出翅膀。但你去问任何一个干了三年的算法工程师,问他每天花最多时间做什么,他大概率会羞耻地告诉你:不是在调参,不是在推公式,而是在"洗数据"。我见过最极端的情况,是隔壁组一个老哥用了整整两周时间,排查用户特征里一个看似不起眼的取值异常,最后发现是上游埋点有个字段在夜间时段会随机把用户ID置为0,导致生成的训练样本里混进了几十万条"神秘机器人"的行为数据。他修复完数据后,模型的线上转化率直接提升了4.5%。比过去半年所有人在model结构上做的努力加起来都管用。这就是这个行业的第一条真相:数据质量决定了你的模型天花板,而算法工程师的日常工作,百分之六十以上都是一堆脏活累活,跟"高级"两个字没有半毛钱关系。
第二条真相,是业务理解和算法能力的天平,往往倾向于前者,而几乎所有刚入行的算法工程师都押错了方向。我刚工作那会儿痴迷各种SOTA模型,觉得只要把模型做得够花哨,就一定能碾压一切。直到有一次,推荐列表的点击率全面下滑,我调了一天模型无果,最后和运营同事闲聊,才发现是因为我们改了价格展示策略,导致用户看到的价格普遍比心理预期高出一截,根本没有人对模型效果有异议。那一刻我意识到,我引以为傲的"技术感",在真实业务场景里,定价策略、用户心理学、产品交互、甚至运营的临时活动,每一个变量的影响都远超模型优雅程度带来的提升。更让人沮丧的是,很多时候你和产品经理就一个策略问题扯皮半天,最后发现你们讨论的根本不是技术问题,而是"凭什么你觉得用户喜欢这个"的口味之争。这时候,算法工程师的"科学素养"毫无用处,你得懂需求,懂用户,懂业务方心里那本账。我见过太多技术很强的同事,因为过于迷信模型而忽略了业务逻辑,最终被业务方贴上"不懂业务"的标签,然后黯然离场——他们直到走都没有想明白,自己明明那么努力地优化了模型,为什么还是被优化了。
第三条真相可能是最刺眼的:算法工程师的绩效,跟你模型的真实效果关系不大,大概率取决于你构建的这个"新指标"有多难被挑战。每个季度末,我都要在述职报告上绞尽脑汁写我的模型给业务带来了多少增量,而这些增量往往是用一两个精心挑选的、甚至有点武断的指标来衡量的。举个真实的例子,我们做过一个优化短视频完播率的模型,线上实验显示完播率提升了,所有人都很高兴。但后来我复盘了一下,发现这个模型其实把很多用户推到了更短的视频上——完播率是上去了,用户总时长却下降了。这叫什么?这叫"指标优化"。更荒谬的是,这种优化方式在绝大多数大公司里不但不会被批评,反而被视为"高效执行"。整个行业都在用一套自欺欺人的方式证明自己的价值。大家嘴上说"我们以用户价值为先",实际上都在做指标游戏。我在这个游戏里混了快四年,从一个热血沸腾的应届生变成一个偶尔自嘲的中年人,越来越明白一个道理:这个岗位的真正能力,不是把一个模型从98%的准确率提高到98.1%,而是学会接受你的工作是无限的噪音里寻找一点点微弱的信号,并且保证自己不疯掉。
当然,我写了这么多,不是在否定算法工程师这个职业的意义。事实上,我依然觉得这是最适合我的工作,那种偶尔在数据里发现一个新的、可靠的、有解释性的特征时的快感,依然能让我兴奋一整晚。我想说的不过是,所有光鲜亮丽的岗位描述背后,都藏着大量琐碎、重复、充满挫败感的日常。算法工程师不是科学家,不是架构师,更不是商人——我们某种程度上是数据时代的管道修理工,需要在水压不稳的水管上精准地找到那个漏水点,然后用胶带、铁丝,甚至嚼过的口香糖把它堵上。行业的泡沫在退去,市场上到处都是被裁的算法工程师,他们中间有些人可能直到离开前最后一天,还在纠结自己的模型为什么在线上效果不如离线评估。你问我的建议?我的建议是,如果你正在准备入行,请先找个真实的数据集,用你的模型去预测一个真实的业务问题,然后感受一下那种``全对但没什么用''的无力感。如果你能接受这种无力感,并且愿意扎进脏数据的海洋里游泳,那你还来得及成为一个真正的算法工程师——不是广告上招的那种,而是现实里正在修水管的那种。