第 20 章
被否决的推荐
那份文件的第三页有一个折角。不是有意折的,是装订时纸张走偏,订书钉斜着扎进去,把右下角带出了一道月牙形的卷曲。朱文佳每次翻到这一页,拇指都会在那个卷曲上停一下,像按一个不会弹起来的开关。页面上是一张表格,横向列着“完播率权重调整后的广告加载率预测”,纵向是七个不同的调整梯度。最保守的那个梯度,完播率权重从百分之五十五降到百分之四十五,广告加载率的预测值旁边用黄色高亮笔标注了一个数字,比当前基线低了零点七个百分点。那个数字被涂了两遍,墨迹重叠的地方深得发黑。
这是2022年1月的最后一个周一。北京海淀区那栋办公楼里暖气烧得过分,会议室靠窗一侧的百叶帘拉下来一半,光从缝隙里切成细条,落在长桌表面。桌上有三台笔记本电脑,两台处于休眠状态,屏幕暗着。只有朱文佳面前那台亮着,光标停在文档的“结论”段落末尾,一闪一闪。
会议已经开了四十分钟。没有人看那份文件。商业化团队的负责人坐在长桌对面,身体后仰,椅背发出轻微的吱呀声。
他刚说完一段话,大意是春节前的流量旺季即将开始,任何可能影响广告加载率的调整都应该推迟到三月之后评估。他说话时手指在桌面上画圈,像在描一个看不见的钟表盘。内容运营团队的代表坐在他旁边,补充了一句:多元评价维度会稀释爆款内容的可复制性,运营侧目前没有足够的人力去适配新的分发逻辑。这句话说完,会议室安静了大约七秒。朱文佳听见空调出风口的嗡鸣突然变得清晰。
他低头看那份文件。第三页的表格下面,有一行小字备注,是他自己加进去的:“建议在春节后灰度测试,春节前保持现有权重不变。”那个备注用了灰色字体,在打印稿上几乎看不清。他记得自己加这行字时的犹豫。
那是两周前,他在算法团队的内部评审会上第一次看到这份方案。团队花了三个月做离线模拟,跑了六个不同维度的内容评价指标,发现完播率权重过高会导致中长尾内容的曝光机会被系统性压缩。一个年轻工程师在评审会上说了一句话:“我们不是在优化推荐,我们是在优化完播率本身。”那句话让朱文佳决定签字。
现在他坐在跨部门评审会的长桌前,面前这份文件已经被三个部门传阅过。商业化团队用红笔在广告加载率预测页画了三个感叹号。内容运营团队在“多元评价维度”旁边批注了四个字:“成本过高。”算法团队自己的评审意见反而最少,只有一行铅笔字,写在页脚:“建议保留完播率权重不低于百分之五十。”那是算法团队内部另一位负责人的笔迹。朱文佳认出来了,但没有抬头去看那个人。
“文佳,你的意见呢?”主持会议的梁汝波开口了。他坐在长桌顶端,面前没有笔记本电脑,只有一本翻开的纸质笔记本,上面用黑色水笔写着几行字。朱文佳看不清内容,只能看见每一行都很短,像列表。
朱文佳把文件合上。那个折角的月牙形卷曲被他拇指按平了,又弹起来。“方案需要调整。”他说。声音比预想的平静。“春节前不做权重变动。春节后视情况再议。”
他说完这句话,会议室里的空气流动方式变了。商业化团队的负责人身体前倾,手指不再画圈,而是平放在桌面上。内容运营团队的代表在笔记本上写了一行字。算法团队那位在页脚批注的负责人没有动,眼睛盯着自己面前的屏幕。
朱文佳把文件推到桌子中央,那个月牙形的折角朝上,像一只闭着的眼睛。散会时梁汝波走在最后。他在门口停了一下,回头看了朱文佳一眼。那个眼神里没有责备,也没有安慰。朱文佳后来回忆这个场景时,觉得那更像是一种确认——确认这件事已经发生了,确认朱文佳知道自己做了什么。
那份被否决的方案没有归档。它留在朱文佳的抽屉里,第三页的折角始终没有复原。春节假期结束后,他打开抽屉找另一份文件时又看到了它。高亮笔的黄色在日光灯下显得更淡了,那个零点七的预测差值像一道愈合中的伤口。
春节后的第一次算法团队周会上,没有人提起这份方案。议程表上列着六项内容,从“春节流量复盘”到“新用户冷启动优化”,每一项都具体、可执行、不涉及权重结构的根本调整。
朱文佳坐在会议室前端,听每个人汇报。他注意到一个细节:过去三个月里,算法团队内部知识库上关于“完播率权重利弊”的讨论帖,热度曲线在方案被否决后第二周达到峰值,然后迅速回落。峰值那天的帖子数量是平时的四倍,但绝大多数是匿名发帖。有人写了一句:“我们到底在优化什么?”这句话下面有十七个点赞,没有回复。
三周后,朱文佳的日程表上多了一组新的周期性预约。每周二下午四点,与商业化团队开“推荐效率沟通会”。每周四上午十点,与内容运营团队开“生态指标对齐会”。这两个会议在日历上以不同颜色标注,周二的是蓝色,周四的是绿色。
朱文佳最初把它们理解为信息同步机制。第一次沟通会结束后,他意识到事情更复杂。
商业化团队在周二会议上展示了一组数据:过去一个季度,广告加载率每提升一个百分点,对应的用户次日留存下降零点零三个百分点。这个交换比在内部被讨论过多次,但从未形成正式结论。商业化负责人把这张图表放在投影幕布上时,语气平淡:“我们不是要无限提升加载率。
我们需要知道边界在哪里。”朱文佳看着那条留存下降曲线,想起自己签过的那份方案。方案里预测的零点七个百分点加载率降幅,对应的留存提升是多少?离线模拟给出的数字是零点一五个百分点。这个数字太小了,小到在商业化的优先级排序里根本排不进前三。
周四的生态指标对齐会上,内容运营团队展示了另一组数据:爆款内容的可复制性在过去六个月里下降了百分之十二。他们用“可复制性”这个指标来衡量一个内容模式被模仿和再生产的效率。下降的原因被归结为多方面的因素,但运营团队强调了一点:推荐系统对完播率的过度依赖,导致创作者倾向于生产“高开低走”的内容——开头极度抓人,后面质量下滑,但完播率数据依然好看。
一个运营经理说:“我们不是在和算法对抗,我们是在和算法教会创作者的东西对抗。”
朱文佳在这些会议中很少发言。他听,记,偶尔问一个技术细节。他逐渐意识到,自己坐在这两个会议室里的位置,与过去完全不同。过去他是算法的捍卫者。当运营团队抱怨推荐结果不符合预期时,他的回应通常是“数据会说话”。当商业化团队要求提升广告效率时,他的回应通常是“算法会找到平衡点”。但现在,算法本身成了被质疑的对象。商业化团队质疑它的商业效率边界,运营团队质疑它的生态影响。而算法团队内部,那些曾经笃信“数据会说话”的工程师们,开始用更复杂的语言描述自己的工作。一个工程师在内部文档里写道:“推荐系统不是中立的。它选择的优化目标决定了它看见什么、放大什么、忽略什么。”
这份文档没有被广泛传阅。朱文佳看到它,是因为那个工程师把链接发在了团队群里,附了一句:“供参考。”文档的阅读量在三天内达到两百多次,但评论区只有一条留言:“所以我们的优化目标应该由谁来决定?”
这个问题没有答案。或者说,答案正在被不同部门以不同方式争夺。三月中旬,梁汝波召集了一次小范围战略会。参会者不到十人,包括朱文佳、商业化负责人、内容运营负责人,以及两位产品线的代表。会议地点在办公楼顶层的一间小会议室,窗户朝西,下午的光线斜射进来,把每个人的影子拉得很长。梁汝波在白板上画了一个三角形,三个顶点分别标注“用户价值”“商业价值”“生态价值”。他在三角形中间画了一个问号。“过去我们假设这三个顶点是自动对齐的。”梁汝波说,“算法优化用户价值,用户价值带动商业价值,商业价值反哺生态。但现在我们发现,这个假设需要被检验。”
没有人接话。朱文佳看着那个问号,想起张一鸣多年前在一次内部会上说过的话。那是在2017年,抖音日活刚过千万的时候,张一鸣说算法是一把尺子,可以量出内容的真实价值。当时朱文佳坐在台下,觉得这个比喻精准。但现在,尺子本身成了被测量的对象。谁来定义尺子的刻度?谁来校准它的偏差?张一鸣在2012年创立字节跳动时,曾判断中国网民时常不能在互联网找到其感兴趣的信息,并认为可以通过人工智能向用户推荐其感兴趣的内容。如今,这个“信息找人”的朴素信念,在组织内部被拆解成了无数个需要权衡的维度。
商业化负责人先开口。他说,从商业化的角度看,算法需要更明确地服务于收入目标。他举了一个例子:同样一条广告素材,在完播率权重较高的推荐逻辑下,曝光效率比在互动率权重较高的逻辑下高出百分之三十。这个差异直接体现在季度收入上。
“我们不是在要求算法牺牲用户体验,”他说,“我们是在要求算法承认商业目标也是用户体验的一部分。”
内容运营负责人随后发言。她的语气比商业化负责人更柔和,但内容更尖锐。她说,运营团队在过去一年里投入了大量资源扶持中长尾创作者,但推荐系统的反馈始终偏向头部爆款。“我们扶持了一百个新创作者,算法只让其中三个获得了持续曝光。剩下九十七个,在算法眼里是不存在的。”她停了一下,补充道:“这不是算法的错。这是我们把算法当成了唯一的裁判。”
朱文佳听到这句话时,手指在桌下攥紧了。他想反驳,但找不到反驳的逻辑。因为她说的是事实。算法团队曾经引以为傲的“数据中立”,在组织内部的不同利益视角下,变成了一种选择性的看见。算法看见的是它被设定要看见的东西。而那些没有被设定看见的东西,在数据上就是不存在。
会议结束时,梁汝波没有做总结。他只是把白板上的三角形擦掉,那个问号留在了最后。走出会议室时,朱文佳回头看了一眼。问号在白色板面上显得很淡,像一道快要消失的痕迹。
四月,朱文佳签了另一份文件。这份文件不是算法调整方案,而是一份关于“推荐系统价值观融入”的指导性文件。文件由算法团队起草,但经过了商业化、内容运营、公共事务三个部门的会签。朱文佳在签字栏写下自己名字时,注意到文件正文里有一句话被反复修改过。原稿写的是“推荐系统应当坚持用户价值优先”,修改后变成了“推荐系统应当在用户价值、商业价值和生态价值之间建立动态平衡机制”。
这句话读起来像一段外交辞令,但它被写进了正式文件,意味着它将影响后续所有算法迭代的方向。签字笔是黑色的,笔杆上有一道细微的划痕。朱文佳签完字,把文件递给旁边的同事。文件在桌面上滑动时,他看见最后一页的会签栏里,商业化负责人的签名旁边标注了日期,内容运营负责人的签名旁边也标注了日期。三个签名排在一起,像三根不同方向的箭头。
那天晚上,朱文佳离开办公室时已经过了十点。走廊里的灯只开了靠窗的一排,其余区域暗着。他经过算法团队的办公区,看见一个年轻工程师还坐在工位上,屏幕亮着,上面是一段推荐逻辑的代码。工程师抬头看见他,点了一下头,又低下头继续敲键盘。朱文佳没有走过去。他站在走廊的暗处看了几秒,然后转身走向电梯。
电梯下行时,他想起那份被否决的方案。第三页的折角,黄色高亮笔的痕迹,零点七的预测差值。那些细节在记忆里变得模糊了,像一张被反复折叠又展开的纸。方案本身已经不重要了。重要的是它被否决的方式。不是被某个人否决,是被一个系统否决。
商业化团队看到了加载率风险,内容运营团队看到了成本压力,算法团队内部看到了方向分歧。每一个否决的理由单独看都是合理的,但合在一起,构成了一种新的现实:算法不再是某个人手中的尺子,它成了多方力量交汇的场域。
五月,一份内部调研报告在管理层传阅。报告的主题是“推荐系统决策机制的演变”,其中有一节专门分析了2022年初那次方案被否决的案例。报告用了一个词来描述这个案例的意义:“算法治理的起点。”
朱文佳读到这个词时,在页边空白处写了一个问号。他不确定这是褒义还是贬义。治理意味着多方参与,意味着权力分散,意味着效率可能降低。但也意味着算法不再是一个黑箱,不再由少数工程师在封闭会议室里决定它的目标函数。
报告里还提到一个数据:方案被否决后的三个月里,算法团队内部关于“优化目标”的讨论文档数量增加了四倍,但实际提交的权重调整方案数量下降了百分之六十。更多的讨论,更少的行动。这个数字让朱文佳感到一种复杂的情绪。
一方面,讨论的增加意味着团队在思考更深层的问题。另一方面,行动的减少意味着决策成本在上升。每一次权重调整都需要跨部门会签,每一次目标函数修改都需要价值观评估。效率在下降,但合法性在上升。
六月的第一个周二,朱文佳主持了一次算法团队内部复盘会。会议室的投影幕布上展示着一张时间线图,标注了过去一年里所有被提出、被讨论、被否决或被实施的算法调整方案。那张图看起来很拥挤,不同颜色的标签重叠在一起。朱文佳让每个人选一个自己印象最深的节点,说说当时的想法。
一个资深工程师选了2022年1月的那次方案。他说:“我当时觉得那个方案是对的。完播率权重确实太高了。但我现在回头看,觉得它被否决也是对的。因为我们当时只看到了问题,没看到解决问题的代价。”他停了一下,补充道:“或者说,我们看到了代价,但觉得那个代价值得付。但组织不这么认为。”
另一个工程师选了三月的那份价值观指导文件。她说:“那份文件通过的时候,我觉得很失望。因为它太模糊了,什么都没有改变。但后来我发现,它改变了一件事:我们不能再假装算法是价值中立的了。每次做权重调整,我们都要写一段说明,解释这个调整对三个价值维度的影响。写多了,你就开始真正思考这件事。”
朱文佳听着这些发言,没有做记录。他注意到一个细节:过去开会时,工程师们习惯用“我们”来指代算法团队,用“他们”来指代商业化或运营团队。但这次会上,“我们”和“他们”的边界变得模糊了。一个工程师在发言中用了“我们组织”这个词。这个词在过去的算法团队会议上几乎不会出现。
会议结束后,朱文佳留在会议室里。投影幕布已经关闭,但那张时间线图的残影还留在他的视觉里。他走到白板前,拿起一支黑色马克笔,在空白处画了一个三角形。三个顶点分别标注“用户”“商业”“生态”。他在三角形中间画了一个问号。
然后他退后一步,看着这个图形。这个图形和梁汝波三月画的那个几乎一样。但朱文佳现在觉得,那个问号的位置不对。
问题不在于三个顶点之间如何平衡,而在于谁有权力定义这三个顶点分别代表什么。商业化团队定义的“商业价值”和内容运营团队定义的“生态价值”,可能指向完全不同的东西。而算法团队定义的“用户价值”,也可能与产品团队的理解不同。
平衡的前提是共识,但共识本身是需要被制造的。他把马克笔放回笔槽,走出会议室。走廊尽头的窗户开着,六月的晚风灌进来,带着楼下街道的车流声。
他想起那份被否决的方案里,有一个被忽略的细节:在离线模拟中,降低完播率权重后,用户主动搜索行为增加了百分之二。这个数字太小了,小到在评审会上没有人提起。但朱文佳记得它。因为主动搜索意味着用户不再被动接受推荐,而是主动表达需求。那是一种不同的用户价值,一种算法无法直接优化的价值。
这个细节没有被写进任何正式文件。它只存在于朱文佳的记忆里,和那份被否决的方案一起,留在抽屉的第三页。
七月,抖音电商的GMV数据开始在内部流传。万亿规模的目标被提前了。商业化团队在月度会上展示了直播电商的推荐效率:在现有算法框架下,直播间的转化率比短视频高出数倍。
这个数据让所有人兴奋,但也带来一个新的问题:直播电商的推荐逻辑与内容推荐的逻辑是否应该统一?朱文佳在会议中提出了这个问题。商业化负责人回答得很直接:“不需要统一。
那份被否决的方案在抽屉里躺了整整一个春天。朱文佳偶尔会在找其他文件时碰到它,指尖触到第三页那个月牙形的折角,像碰到一颗松动的牙齿。他没有把它抽出来重读,但也没有把它移到别处。它就留在那里,和几份过期的会议纪要、一叠未拆封的行业报告挤在同一层。抽屉关上的声音很轻,轻到坐在外间的助理从未注意过这个动作。
真正让朱文佳意识到事情已经不可逆的,是四月下旬的一个周二傍晚。那天下午四点的“推荐效率沟通会”结束后,商业化团队的一位数据分析师没有立刻离开。
他站在会议室门口,等其他人走完,然后折回来,把笔记本电脑重新打开。屏幕上是一张朱文佳没见过的图表,横轴是时间,纵轴是“单位流量商业产出”,曲线在过去六个月里缓慢但持续地下滑。分析师用激光笔点着曲线末端:“文佳,你看这个。我们内部把它叫做‘效率税’。”
朱文佳问什么是效率税。分析师说,这是他们团队私下里的叫法,指的是当推荐系统把更多权重分配给非商业目标时,单位流量能够产生的商业价值会自然衰减。“不是算法变差了,”分析师强调,“是算法在服务更多目标。每多一个目标,商业效率就被征一次税。”
朱文佳看着那条下滑的曲线,想起算法团队内部知识库上那个匿名帖——“我们到底在优化什么?”十七个点赞,零回复。他现在觉得,那个问题其实有答案,只是答案不在算法团队手里。答案在商业化团队的报表里,在内容运营团队的扶持名单里,在梁汝波白板上那个三角形的三个顶点里。算法团队能做的,只是把不同部门定义的“价值”翻译成权重参数,然后承受翻译过程中必然发生的损耗。
周四的“生态指标对齐会”上,内容运营团队展示了另一组数据。他们追踪了过去一年被算法推荐系统“冷启动”的新创作者,发现其中只有百分之十一在获得初始曝光后能够维持稳定的流量增长。运营负责人把这张图称为“漏斗的背叛”——系统在冷启动阶段给了新创作者希望,但随后的推荐逻辑又系统性地收回了这种希望。朱文佳注意到,运营团队使用的语言正在发生变化。他们不再说“算法不公平”,而是说“算法的公平需要被设计”。这个措辞的转变很微妙,但朱文佳听懂了:运营团队不再要求算法团队“修正”算法,而是要求获得参与设计算法的权力。
这种权力转移的迹象在五月的组织架构调整中变得更加清晰。梁汝波宣布成立一个跨部门的“推荐系统治理委员会”,成员包括算法、商业化、内容运营、公共事务和法务的代表。委员会的职责是审议所有涉及推荐权重结构性调整的方案。朱文佳被任命为委员会的技术负责人,但这个头衔的实际含义是:他不再是算法的唯一解释者,而是多方解释的协调者。
委员会第一次开会时,法务代表问了一个问题:“如果推荐系统造成的生态影响被外部监管关注,谁来承担解释责任?”会议室里沉默了很久。最后是商业化负责人说:“我们一起承担。”朱文佳听到“一起”这个词时,心里动了一下。他知道这个词在组织语言里意味着什么——意味着责任被稀释了,但也意味着没有人能单独撤退。
六月中旬,朱文佳在整理办公桌时翻出了一份旧文档。那是2021年他刚接手算法团队时写的一份内部讲话稿,标题是“算法的诚实”。稿子里有一句话被他用红笔圈过:“算法不需要讨好任何人,它只需要对数据诚实。”
他重读这句话时,觉得它既对又不对。对的部分是,算法确实应该对数据诚实。不对的部分是,数据本身是被选择过的——选择哪些数据进入模型、选择哪个指标作为优化目标、选择在什么时间窗口内评估效果,这些选择从来不是中立的。
他当年写那句话时,以为“诚实”是一个技术问题。现在他明白,“诚实”是一个治理问题。正如张一鸣早期所言,他的产品要把人与信息连接起来,但连接的方式和标准,如今已不由单一意志决定。
那天下午,他约了算法团队里那位在页脚批注“建议保留完播率权重不低于百分之五十”的负责人喝咖啡。两人坐在办公楼一层的咖啡区,窗外是海淀区午后的车流。
那位负责人说:“你知道我为什么批那行字吗?不是因为我反对降低完播率权重。是因为我知道,如果算法团队自己先分裂了,外面的人就会替我们做决定。”朱文佳问他现在怎么看。
负责人沉默了一会儿,说:“我现在觉得,外面的人替我们做决定,也不一定是坏事。至少他们得把理由写下来,得在会上说清楚。以前我们在自己会议室里改权重,连会议纪要都不写。”
朱文佳没有接话。他想起那份被否决的方案,第三页的折角,黄色高亮笔的痕迹。那份方案有会议纪要,有离线模拟数据,有跨部门传阅记录。它被否决的方式是透明的。透明地否决,比不透明地通过,更让他感到一种奇怪的安心。
七月的那次深夜会议之后,朱文佳开始有意识地调整自己在组织中的位置。他不再在跨部门会议上第一个发言,而是让商业化团队和内容运营团队先陈述他们的关切。
直播电商是另一个产品,应该有独立的推荐目标。”内容运营负责人则担忧,如果直播电商的推荐逻辑过度偏向转化率,会进一步挤压内容生态的多样性。两种意见在会议室里碰撞,没有结论。
朱文佳听着这些争论,意识到那个三角形又出现了。只是这一次,三个顶点的标签变了:内容、电商、生态。而算法的角色,依然是那个被争夺的解释权。
那天深夜,朱文佳离开办公室时,走廊里已经没有人了。他经过算法团队的办公区,所有屏幕都暗着,只有角落一台电脑的电源灯还在闪烁。他走到自己办公室门口,没有进去。他站在走廊里,看着窗外海淀区的夜景。远处的写字楼还有零星的灯光,像散落在黑色背景上的数据点。手机震了一下。
是TikTok北美负责人发来的消息,告知应用商店审核规则再次变化,中台评估需要三周。朱文佳看着这条消息,没有立即回复。他想起了梁汝波在去年交接时说过的一句话:“我们不是在管理一个产品,我们是在管理一个不断变化的系统。”当时他以为这句话指的是技术和市场的快速迭代。
现在他明白了,那句话指的是算法与组织之间永不停歇的相互塑造。他把手机放进口袋,转身走向电梯。电梯门打开时,里面的灯光明亮而均匀,照得他眼睛微微一眯。他走进电梯,按下楼层按钮。门关上,楼层数字开始下降。那份被否决的方案还在抽屉里。第三页的折角还在。但朱文佳已经很久没有打开那个抽屉了。