第 3 章
推荐引擎的赌注
今日头条的后台数据第一次出现那条曲线时,张一鸣正站在锦秋家园那间客厅改成的办公室里。曲线本身并不陡峭,但它的方向让所有人都停下了手里的动作。日新增用户从三位数跳到四位数,只用了不到两周。推荐引擎的点击率比人工编辑的版本高出数倍。这个数字被写在白板上,旁边画了一个箭头,朝上。
那是2012年8月。距离梁汝波在深夜白板上画出第一版推荐逻辑图,不到两个月;距离张一鸣在咖啡馆里向投资人解释“信息找人”,不到半年。锦秋家园的空气里多了一种东西:亢奋。工程师在走廊里走得比平时快,产品讨论会上有人开始抢话,连外卖盒堆在门口都没人抱怨。数据在涨,算法在证明自己。
张一鸣没有加入庆祝。他坐在自己的工位上,屏幕上是后台的实时数据面板。手指在键盘上敲了几下,调出另一个维度的数据:用户次日留存。这个数字也在涨,但涨幅比日新增慢。他盯着这两个数字之间的差值看了很久。没有人知道他在想什么。
梁汝波后来说,张一鸣那几天反复说一句话:“推荐引擎的冷启动做对了,但用户为什么留下来,我们还没有完全搞清楚。”
这句话后来成了一个伏笔。
今日头条上线时的产品形态极其简单。一个信息流页面,没有频道分类,没有编辑推荐位,没有置顶新闻。用户打开应用,看到的是算法根据点击行为实时生成的内容列表。这个列表每刷新一次就变一次,每个人看到的都不一样。在2012年,这种产品形态是反直觉的。当时的主流新闻客户端——搜狐新闻、网易新闻、腾讯新闻——首页都是编辑精心编排的版块:头条、要闻、财经、体育、娱乐。每个版块的位置、每条新闻的排序、每张图片的大小,都由人工决定。编辑是信息分发的守门人。他们判断什么重要、什么值得看、什么应该被放在最显眼的位置。
张一鸣在内部会议上说过一句话,后来被反复引用:“编辑的判断力是有上限的。不是因为他们不够聪明,而是因为一个人不可能同时理解几百万人的兴趣。”这句话在当时听来像是对整个行业的挑衅。传统媒体人听到这句话的反应通常是皱眉。他们相信新闻专业主义的核心就是编辑的判断——什么重要、什么不重要,这是需要专业训练和经验的。
算法能懂什么是重要吗?算法能区分严肃新闻和娱乐八卦吗?算法能理解一条新闻背后的社会意义吗?这些质疑在2012年还没有大规模出现。今日头条的用户量还太小,小到不足以引起传统媒体的注意。但张一鸣知道,这一天会来。他等得比预想中更早。
2012年9月,今日头条日活突破十万。这个数字在今天看来微不足道,但对于一个上线不到两个月的产品,它意味着推荐引擎的逻辑在真实用户行为中得到了初步验证。更重要的是,用户在应用内的停留时长开始攀升。人均单次使用时长从最初的三分钟涨到了八分钟。这个数字被写进了周报。团队内部开始出现一种乐观情绪。有人提议加大推广力度,有人建议增加内容源,有人开始讨论要不要做个性化推送。这些提议都被记录在会议纪要里。
但张一鸣在那段时间的决策出人意料地保守。他否决了大规模推广的方案,理由是“产品还没有准备好承接更大的流量”。他否决了增加人工推荐位的折中方案,理由是“这等于承认算法不够好”。这两个否决在当时让一些人感到不解。用户量在涨,为什么不趁机扩张?算法有缺陷,为什么不先用人工补上?张一鸣没有详细解释他的逻辑。但梁汝波后来回忆说,张一鸣在那段时间反复思考一个问题:如果推荐引擎的效果依赖于人工干预来修正,那它就不是一个真正的推荐引擎。它只是一个戴着算法面具的编辑系统。这个判断后来被证明是字节跳动产品哲学的一块基石。但在2012年的秋天,它只是一个偏执的信念。
质疑声比预想中来得更早也更猛烈。2012年10月,第一篇批评今日头条的文章出现在一家科技媒体上。文章标题大致意思是“今日头条:算法推荐下的信息茧房”。作者的核心论点是:当算法只根据用户的点击行为推荐内容时,用户会逐渐被困在自己感兴趣的信息圈子里,看不到更广阔的世界。文章举了一个例子:一个用户如果连续点击了几条娱乐新闻,他的首页就会被娱乐新闻淹没,政治、经济、国际新闻会逐渐消失。这篇文章在当时的互联网圈子里引起了一些讨论。
但真正让团队感到压力的,是随后出现在应用商店评论区和社交媒体上的用户反馈。有用户写道:“刚开始用觉得挺新鲜,但用了一周发现推来推去都是那几类内容。”还有用户说:“我想看的东西它不推,我不想看的它一直推。”这些反馈被产品团队整理成报告,放在了张一鸣的桌上。那份报告不长,大概三页纸。但里面有几条评论被张一鸣用笔圈了出来。其中一条是:“这个应用让我变笨了。”另一条是:“我好像被困在一个笼子里。”
这大概是“信息茧房”这个概念第一次以如此具体的用户语言出现在字节跳动的内部讨论中。在此之前,团队关注的核心指标是点击率、停留时长、次日留存。这些指标都在涨。但这份报告提出了一个不同的维度:用户的主观感受。他们觉得自己被困住了。张一鸣在那份报告上批了几个字。据当时看到过这份报告的人回忆,批注的大意是:“这个问题的本质不是算法推错了内容,而是算法还没有足够理解用户的长期兴趣和短期兴趣之间的区别。”这个判断将问题从“算法是否应该推荐多样化的内容”转向了“算法如何更好地理解用户”。这是一个关键的方向选择。
2012年11月的一次周会上,关于内容质量的讨论第一次被正式摆上台面。会议在锦秋家园的客厅里进行。白板上还留着上一周讨论推荐参数的公式。张一鸣坐在靠窗的位置,梁汝波坐在他对面。产品负责人把那份用户反馈报告又念了一遍。有人提出应该引入编辑审核机制,对推荐内容进行质量把关。有人建议在算法中加入多样性权重,强制推荐不同类别的新闻。还有人提出应该建立一个内容分级体系,对低质内容进行降权处理。这些建议都被记录在会议纪要里。
但最终的决策是:不引入人工编辑审核,不在算法中强制加入多样性权重,不建立内容分级体系。张一鸣给出的理由是:这三个方案都是对算法的不信任投票。如果推荐引擎需要人工审核来保证质量,那它就永远无法规模化。如果算法需要强制多样性才能避免信息茧房,那它还没有真正理解用户的兴趣结构。这个决策在今天看来是字节跳动“算法至上”哲学的一次关键确立。但在当时,它并不是一个轻松的共识。会议结束后,有人私下表达了担忧:如果算法出了问题怎么办?如果用户真的被困住了怎么办?如果媒体继续批评怎么办?这些担忧没有改变决策,但它们留在了团队的集体记忆里。
张一鸣在那次周会上的具体发言没有被完整记录。但多个后来公开的访谈和内部讲话中,他反复阐述过一个逻辑:推荐引擎的本质不是“给用户想看的东西”,而是“帮用户发现他不知道自己想看的东西”。这个区别至关重要。前者是迎合,后者是探索。如果算法只做到前者,那它确实会制造信息茧房。但如果算法能做到后者——通过分析用户的点击行为、停留时长、滑动速度等信号,推断出用户潜在的兴趣方向——那它就可以帮助用户突破自己的信息边界。这个逻辑在2012年还只是一个理论假设。算法的实际表现离这个目标还有很大距离。但方向被确定了:不是用人工干预来修正算法,而是让算法变得更聪明。
外部质疑并没有因为团队的内部共识而消失。2012年12月,另一篇批评文章出现了。这次的文章来自一位传统媒体人,语气更加尖锐。文章的核心论点是:今日头条的推荐引擎本质上是在利用人性的弱点——猎奇、窥私、情绪化——来获取流量。它推荐的内容往往是标题党、煽情故事、低质娱乐,因为这些内容最容易获得点击。文章写道:“当算法成为编辑,流量成为唯一标准,新闻的公共价值就被消解了。”
这篇文章在媒体圈引起了更大的反响。一些传统媒体的编辑记者在社交媒体上转发并评论。有人写道:“终于有人说出我想说的话。”有人写道:“这不是新闻客户端,这是信息垃圾场。”这些声音传到了锦秋家园。团队的反应分成了两派。一派认为应该正面回应,用数据证明算法的推荐质量并不低。另一派认为不应该回应,因为回应等于承认这些批评值得认真对待。
张一鸣选择了第三条路:不公开回应,但在内部认真对待。他让产品团队做了一件事:对推荐结果进行人工抽样评估。具体做法是随机抽取一批用户的首页推荐列表,由人工判断这些内容的质量——是否标题党、是否有信息量、是否属于低质娱乐。评估结果没有被公开。但据参与评估的人后来回忆,结果并不乐观:确实有相当比例的推荐内容是低质的。这个评估结果在内部引起了震动。因为它证明了批评者的部分论点是对的:算法确实在推荐低质内容。
但张一鸣的反应再次出人意料。他没有下令调整算法来降低低质内容的权重。他问了一个问题:“用户点击这些内容的时候,他们知道这些内容是低质的吗?”产品团队的回答是:大部分用户知道。他们点击标题党是因为好奇,看完之后可能会后悔,但点击行为已经发生了。张一鸣接着问:“那如果我们不推荐这些内容,用户会去看更高质量的内容吗?还是会去看别的应用里的低质内容?”这个问题没有答案。
这次讨论的结果是:团队决定继续优化算法对用户长期兴趣的建模能力,而不是简单地压制低质内容。逻辑是:如果算法能更准确地识别用户的长期兴趣——而不仅仅是短期点击冲动——那它自然会减少对低质内容的推荐。因为用户的长期兴趣通常指向更有价值的内容。这是一个典型的张一鸣式决策:用算法的进化来解决算法的问题。
2013年初,今日头条的用户量突破了百万日活。这个数字在当时的新闻客户端市场中仍然很小——搜狐新闻的日活是这个数字的几十倍——但增长速度惊人。更重要的是,用户的平均使用时长开始超过一些老牌新闻客户端。这意味着推荐引擎不仅在拉新,也在留存。数据验证了算法的有效性。但质疑声也在同步升级。
2013年3月,一家都市报发表了一篇深度报道,标题的大意是“今日头条是如何偷走我们的时间的”。文章采访了几位今日头条的重度用户,描述了他们的使用体验:本来只想看五分钟新闻,结果刷了半小时停不下来;明明知道有些内容没有营养,但就是忍不住点开;感觉自己被算法控制了。这篇文章的措辞比之前的批评更加感性化。“偷走时间”“被控制”“停不下来”——这些词描绘的是一种成瘾性的使用体验。
团队内部对这篇文章的反应比较复杂。一方面,用户使用时长增长是核心指标之一,从数据角度看这是好消息。另一方面,“成瘾”这个词带有明显的负面含义。如果产品的核心价值是让用户停不下来,那这种价值本身是否正当?
这个问题在2013年初的一次内部讨论中被提出来。据参与者回忆,讨论并没有得出明确的结论。但有一个共识逐渐形成:使用时长本身不是目标,它只是衡量推荐引擎效率的一个指标。如果推荐的内容是用户真正感兴趣的、有价值的,那时长增长就是好事。如果推荐的内容只是利用人性弱点来延长使用时间,那时长增长就是问题。
但这个区分在操作层面极其困难。算法无法判断一条内容对用户是否有“价值”——它只能判断用户是否会点击、是否会停留、是否会分享。“价值”是一个需要人类判断的概念。这正是矛盾的核心所在。
2013年4月的一次产品评审会上,张一鸣做了一件让在场所有人都印象深刻的事。他让工程师调出了一位真实用户的首页推荐记录——当然做了匿名处理——然后逐条分析这位用户在过去一周内点击的内容。分析结果很有意思:这位用户点击最多的内容是娱乐八卦和搞笑视频,但他也点击了几条深度报道和行业分析。从点击频率看,娱乐内容的点击量是深度内容的数倍。但从停留时长看,深度内容的平均停留时长是娱乐内容的数倍。
张一鸣指着这个数据说了一句话:“用户用点击投票给娱乐内容,用时间投票给深度内容。”这句话后来被多次引用。
他接着问了一个问题:“我们应该更看重点击还是停留?”没有人能立刻回答。
这个问题的本质是:用户的短期行为和长期偏好之间存在矛盾时,算法应该优化哪个目标?如果优化点击率,就会推荐更多娱乐八卦;如果优化停留时长,就会推荐更多深度内容。但点击率和停留时长都是核心指标。选哪个?这次讨论没有形成最终决策。但它确立了一个方向:推荐引擎不能只看单一指标。它需要同时考虑点击率、停留时长、分享率、评论率等多个信号,并且需要理解这些信号在不同时间尺度上的意义。这个思路后来演变成了字节跳动推荐系统的一个核心原则:多目标优化。
2013年5月,今日头条的日活跃用户突破了五百万。这个数字让整个行业开始认真对待这家公司。传统门户网站开始研究今日头条的产品逻辑,投资人开始重新评估信息分发市场的格局。但“信息茧房”和“内容低质”的批评也在升级。一家门户网站的负责人在公开场合说:“今日头条的推荐引擎是在制造信息偏食者。”另一位媒体高管在接受采访时说:“算法没有价值观。”这些声音传到了锦秋家园。
团队内部的反应开始出现分化。一部分人认为应该更加积极地回应外界的质疑——发表文章解释推荐引擎的工作原理、公布内容质量评估数据、邀请媒体参观算法团队的工作流程。另一部分人认为不应该被外界声音干扰——产品的核心指标在涨,用户在用实际行动投票,批评者只是既得利益者的焦虑。张一鸣的态度介于两者之间。他一方面坚持不公开回应具体的批评——他认为回应等于将讨论引向公关层面而非产品层面——另一方面在内部加大了对内容质量的关注力度。
2013年6月的一次全员会上,张一鸣讲了一段话。这段话后来被整理进公司的内部文化手册里:“我们的推荐引擎现在还不够好。它有时候会推低质内容,有时候会让用户觉得被困住了。但这些问题的解决方案不是回到人工编辑的老路上去——那条路已经被证明走不通了——而是让算法变得更聪明、更理解人。”他接着说了一句后来被反复引用的话:“算法本身没有价值观,但设计算法的人有。”这句话在当时并没有引起太多注意。但它实际上是对“算法没有价值观”这一批评的正面回应:算法确实没有价值观——它只是一个工具——但设计和使用这个工具的人必须承担价值观的责任。问题是:如何承担?
2013年下半年,“机器取代编辑”从一个内部技术判断变成了一个公开的行业话题。起因是一家财经杂志发表了一篇封面报道,标题的大意是“编辑的终结”。文章以今日头条为主要案例,论述了算法分发如何取代人工编辑成为信息传播的主要方式。文章采访了几位从传统媒体跳槽到今日头条的编辑——他们的岗位名称不是“编辑”,而是“内容运营”——描述了他们的工作变化:不再决定什么内容上首页——那是算法的职责——而是负责拓展内容源、优化内容标签体系、处理版权问题等辅助性工作。这篇文章在媒体行业引起了巨大震动。“编辑的终结”这个说法被广泛讨论和引用。
对于今日头条团队来说,这篇文章带来了一个意想不到的后果:它把公司推到了传统媒体行业的对立面。在此之前,“机器取代编辑”只是公司内部的一个技术判断和产品哲学。“取代”这个词带有强烈的对抗性含义——它暗示着一种零和博弈:算法赢了,编辑就输了;机器赢了,人就输了。这个隐含的叙事让团队中的一些人感到不安。因为他们中的很多人就是从传统媒体出来的——他们知道编辑的工作价值在哪里——他们并不认为算法应该完全取代人的判断力。
今日头条早期团队中有一位成员来自传统媒体。他在一次内部讨论中说了一段话:“我们做的事情不是让机器取代人——是让机器做机器擅长的事(海量信息的快速匹配),让人做人擅长的事(价值判断和深度理解)。如果我们把这两件事混在一起说‘取代’,那我们就把自己放到了所有人的对立面。”这段话得到了很多人的认同。
但它并没有改变公司的产品方向——推荐引擎仍然是核心分发机制——它只是改变了内部的叙事方式:从“取代”变成了“分工”。但这个叙事转变并没有解决根本矛盾:如果算法的分发效率远高于人工编辑——数据已经证明了这一点——那人工编辑的岗位需求必然减少。
“分工”的说法掩盖不了“替代”的现实。这个矛盾后来成为字节跳动发展史上一个反复出现的主题:技术进步带来的效率提升和人的价值之间的张力。
2013年底的数据让所有争论暂时退居其次。日活跃用户突破一千万。人均单次使用时长超过二十分钟。这两个数字放在一起意味着:今日头条已经成为一个真正的流量入口级产品。投资人的态度发生了明显变化。2012年A轮融资时对字节跳动的估值还算保守——SIG海纳亚洲投了一百万美元——到了2013年底讨论B轮融资时估值已经翻了很多倍。但张一鸣在那段时间的内部讲话中反复强调一件事:“数据好看不代表没有问题。”他指的是内容质量的问题、信息茧房的问题、用户成瘾的问题。这些问题并没有因为用户增长而消失——它们只是被增长掩盖了。
2014年初的一次战略会上,张一鸣让团队做了一个思想实验:假设今日头条的用户量停止增长——停留在一千万日活——那么产品的核心挑战会是什么?团队的答案集中在三个方面:第一是内容质量问题——如何让算法更准确地识别高质量内容?第二是多样性问题——如何避免用户陷入信息茧房?第三是长期价值问题——如何让用户在今日头条上花的每一分钟都有意义?这三个问题在今天看来仍然是字节跳动面临的核心挑战之一。但在2014年初的那个节点上,它们还只是思想实验中的假设问题,而非现实中的紧迫问题。因为增长还在继续。
2014年春节前后,今日头条的日活跃用户突破了二千万大关,人均使用时长持续攀升,广告收入开始规模化变现,商业化的大门正在打开。一切都在加速。但在锦秋家园的深夜,张一鸣偶尔会想起那份2012年的用户反馈报告里的一句话:“我好像被困在一个笼子里。”这句话像一根刺,扎在他心里某个角落,不疼不痒,但始终存在。他知道这根刺不会因为用户量的增长而消失,反而会因为产品的影响力扩大而变得更加尖锐。因为困在笼子里的人会越来越多,而造笼子的人正是他自己和他的团队。
造浪机的齿轮已经咬合。算法开始决定数以千万计的人每天看什么、想什么,甚至成为什么。而这个决定的质量,取决于一行行代码背后的假设和取舍。那些假设和取舍从来不是纯粹技术性的。它们承载着设计者对人和信息的理解,承载着他们对效率和价值的权衡,承载着他们在深夜会议室里的每一次沉默和每一次争论。
2014年3月,今日头条的日活跃用户达到三千万,人均单次使用时长超过二十五分钟。同期,关于内容质量和信息茧房的媒体报道、用户投诉开始形成规模。团队内部统计显示,仅第一季度收到的关于“推荐内容重复”“内容质量低”“找不到想看的内容”的用户反馈就超过了十万条。
三千万日活的背后,是十万条关于内容生态的抱怨。这两个数字并列放在一起,构成了本章最诚实的注脚:效率已经验证,热账刚刚开始,而关于人的温度的问题,才刚刚被写下第一笔。账尚未偿还,也无法逃避。
因为造浪机不会停,齿轮不会停,浪只会越来越大。而站在浪尖上的人,必须一边造浪,一边学会不被浪吞没。这是张一鸣和他的团队在2014年春天必须面对的命运,也是此后十年所有故事的起点。