七月底的深圳,热得像一个巨大的蒸笼。下午四点,太阳还毒辣地掛在天上,晒得柏油路面浮起一层透明的、摇曳的热浪。城中村的巷子又窄又深,两侧是密密麻麻的“握手楼”,阳光只能从楼缝里漏下几道惨白的光柱,照在积著污水的坑洼路面上。
林浩从建材市场出来,t恤后背已经湿透,紧贴在皮肤上。他手里拿著一捲图纸,是创新大厦五楼的装修设计图——刚和设计师吵了一架,对方坚持要做吊顶、大理石前台、玻璃隔断,说“这才像正规公司”。林浩坚持要做开放空间、水泥地、裸露管线,说“这才像创业公司”。最后各让一步:前台用水泥砌,但打磨光滑;不吊顶,但刷黑漆;办公桌用实木板,但自己钉。
省钱,但要酷。这是林浩的要求。
他拐进巷子口一家网吧。招牌是褪色的“极速网咖”,玻璃门上贴著《传奇》《奇蹟》《cs》的海报,但边角捲起,被太阳晒得发白。推门进去,冷气和烟味、泡麵味、汗味混杂的气浪扑面而来。
下午的网吧人不多,大半机子空著。几个少年在打游戏,大呼小叫。角落里,一个瘦得像竹竿的年轻人,背对著门,坐在最里面的位置。他没打游戏,屏幕上是黑色的终端窗口,绿色的字符快速滚动。桌上摊著一本厚厚的书,砖头一样,是《算法导论》英文原版,书页泛黄,边角捲起,密密麻麻写满了笔记。
林浩在他斜后方找了个位置坐下。开机,打开邮箱,处理装修报价单。但眼角余光一直瞟著那个年轻人。
年轻人很专注。手指在键盘上快速敲击,但动作轻盈,几乎没有声音。屏幕上的代码在滚动,是c++,但风格很独特——变量名用下划线分隔,函数短小,注释精確。林浩能看到几个关键词:collaborative_filtering、user_vector、item_similarity……协同过滤,用户向量,物品相似度。
这是推荐算法的核心概念。在2003年,这太超前了。当时国內网际网路还处在门户时代,新闻是编辑手动推荐,电商还没起步,推荐算法只是学术论文里的概念。
林浩起身,去吧檯买了两瓶冰镇矿泉水。走回来,把一瓶放在年轻人桌上。
“喝点水。”
年轻人抬起头。很年轻,可能二十出头,戴一副黑框眼镜,镜片很厚,眼睛很大,但眼窝深陷,有黑眼圈。脸很瘦,颧骨凸出,嘴唇乾裂。他看了一眼水,又看了一眼林浩,眼神里有警惕,也有困惑。
“谢谢,不用。”
“天热,脱水。”林浩在他旁边的空位坐下,拧开自己那瓶,喝了一口,“看你写代码,是推荐系统?”
年轻人愣了一下,警惕更深:“你懂?”
“懂一点。协同过滤,基於用户的,还是基於物品的?”
“都在试。”年轻人说,声音很轻,但清晰,“但稀疏矩阵问题解决不了。用户-物品矩阵太大,太稀疏,相似度计算不准。”
“用svd(奇异值分解)降维。或者,加隱语义模型。”林浩说。
年轻人眼睛睁大了。他看著林浩,像看著一个突然从地里冒出来的怪物。2003年,svd在推荐系统中的应用,还只是少数实验室在研究的课题。
“你……你是哪个实验室的?”年轻人问。
“不是实验室,是公司。”林浩说,“浩宇科技,做游戏的。但我们对推荐算法有兴趣。你在做什么项目?”
年轻人犹豫了几秒,然后说:“个性化新闻推荐。我想做一个系统,根据用户的瀏览歷史,自动推荐他可能感兴趣的新闻。但现在还在理论阶段,数据都没有。”
“爬虫抓新闻,用户行为模擬,先跑起来。”林浩说,“算法不验证,永远是纸上谈兵。”
“我知道。”年轻人苦笑,“但没伺服器,没数据,没资源。我在深大读书,实验室的机器要排队,一次只能跑一小时。”
“深大?计算机系?”
“嗯,大三。张一鸣。”
林浩的心臟重重跳了一下。张一鸣。这个名字,他上辈子在无数科技新闻里见过:今日头条创始人,字节跳动ceo,中国网际网路新生代巨头。但现在,他只是个在网吧啃《算法导论》的穷学生。
“我叫林浩。”林浩伸出手。
张一鸣握手。手很瘦,但有力。
“你刚才说,浩宇科技?做游戏的?《血战天下》是你们做的?”
“你知道?”
“玩过。”张一鸣说,脸上第一次露出一点笑容,“国战系统很厉害,同步算法做得很好。我逆向分析过客户端,你们的预测矫正模型,比论文里的方案更实用。”
“你还逆向分析?”林浩笑了。
“兴趣。”张一鸣说,“我觉得,游戏里的很多技术,可以用在其他地方。比如状態同步,可以用在实时推荐上——用户每点一次,系统立刻更新推荐列表,像游戏里每动一步,画面立刻更新。”
“思路不错。”林浩说,“但实时推荐的计算量太大,伺服器扛不住。”
“所以要做增量更新,做局部刷新,做客户端缓存。”张一鸣语速快起来,眼睛里有了光,“就像游戏里,只同步视野內的玩家。推荐系统里,只更新用户可能感兴趣的几个品类。其他部分,用缓存,用异步更新。”
林浩听著,心里越来越惊。这个二十岁的年轻人,思维已经跳出了时代。他看到的不是眼前的技术局限,是技术背后共通的逻辑——状態同步、增量更新、缓存优化,这些游戏引擎里的概念,被他自然地迁移到推荐系统里。
“你做过实验吗?”林浩问。
“在实验室跑过小规模数据。”张一鸣从书包里掏出一个软盘,“里面是模擬数据,十万用户,一百万新闻,用简单的协同过滤,准確率只有30%。但如果加上时间衰减因子——用户最近的行为权重更高——能提到40%。再加社交关係——朋友喜欢的,你也可能喜欢——能到50%。但计算量指数级增长,单机跑一次要三天。”
“用分布式。”林浩说,“把数据切分,多台机器並行计算。mapreduce的思路,听过吗?”
“google那篇论文?”张一鸣眼睛更亮了,“我看过,但没实践过。实验室没那么多机器。”
“浩宇有。”林浩说,“我们刚租了一层楼,正在装修。伺服器买了二十台,下周到货。如果你有兴趣,可以来我们那儿做实验。数据,我们有——游戏里几百万玩家的行为数据,每天產生几千万条日誌。伺服器,我们也有。缺的,是人。”
张一鸣愣住了。他看著林浩,像在判断这话的真假。一个陌生人,在网吧,邀请他去公司做实验,用真实数据,用真实伺服器。这听起来像骗子,或者……像做梦。
“为什么?”他问。
“因为我觉得你的想法有价值。”林浩说,“个性化推荐,是未来。新闻、音乐、视频、商品,一切內容都需要推荐。谁先做好推荐,谁就掌握了流量入口。浩宇现在做游戏,但未来要做平台,要做生態。推荐系统,是生態的大脑。我们需要这个大脑。”
“可我只是个学生……”
“学生怎么了?”林浩笑了,“我今年十八岁,高中刚毕业。浩宇是我创立的,四个月前还在县城发传单。现在月流水千万。年龄、学歷、背景,都不重要。重要的是,你有没有想法,敢不敢干。”
张一鸣沉默了很久。他低头看著手里的软盘,手指在塑料壳上摩挲。然后他抬头,看著屏幕上的代码,又看看那本《算法导论》。
“我能得到什么?”他问,很直接。
“实习工资,一个月三千。包住。实验资源,隨便用。如果项目有成果,可以转正,薪资翻倍,给期权。”林浩说,“更重要的是,你可以把一个理论想法,做成真实可用的系统。这个系统,可能会改变几亿人获取信息的方式。”
最后这句话,打动了张一鸣。他眼里那种技术人的纯粹光芒,亮得灼人。
“但我还要上课……”
“时间自由。你什么时候有空,什么时候来。我们需要的是你的脑子,不是你的坐班时间。”林浩说,“而且,深大离南山不远,公交车半小时。”
张一鸣又思考了几分钟。然后他点头:“好。我试试。”
“欢迎加入浩宇。”林浩伸出手。
这次握手,很用力。
两人聊了三个小时。从推荐算法,聊到分布式系统,聊到资料库优化,聊到用户体验。张一鸣的话越来越多,从拘谨到兴奋,到滔滔不绝。他有很多想法,很多在2003年看来天马行空的想法:基於用户画像的精准推送、基於社交关係的病毒传播、基於地理位置的热点发现……
林浩听著,偶尔提问,偶尔补充。他脑子里有2023年的推荐系统是什么样子——今日头条、抖音、淘宝千人千面。但他不能说,只能引导,让张一鸣自己“发明”出来。
天黑了。网吧的灯亮起来,屏幕的光映在两人脸上。旁边打游戏的少年换了一拨,烟味更浓了。但两人都没在意。
“走吧,吃饭。”林浩说,“边吃边聊。”
他们去了巷子口的大排档。塑料桌椅,红色灯罩,风扇嗡嗡转。点了炒牛河,椒盐虾,蒜蓉青菜。张一鸣吃得很香,但手在桌上比划,还在说算法。
“用户冷启动问题怎么解决?”他问,“新用户,没数据,怎么推荐?”
“用热门內容引流,同时快速收集行为数据。”林浩说,“就像游戏里,新手进来,先给简单任务,让他快速升级,產生正反馈。推荐系统也一样,先给大眾都喜欢的內容,同时埋点,记录他的每一次点击、停留、分享。数据够了,再切个性化。”
“那数据隱私呢?”张一鸣皱眉,“收集用户行为,会不会……”
“会。”林浩说,“所以必须透明。告诉用户,我们在收集什么数据,用来做什么。给用户选择权,可以关闭个性化推荐。但大部分用户,会为了更好的体验,愿意交出数据。这是交换。”
“这会不会……有点邪恶?”
“技术是工具,看人怎么用。”林浩说,“我们可以用它推荐垃圾信息,也可以用它推荐有价值的內容。浩宇要做的事,是让技术服务於人,不是奴役人。所以,算法要有价值观,要有底线。这比技术本身更重要。”
张一鸣停下筷子,看著林浩。大排档昏黄的灯光下,这个比自己还小的少年,眼神里有种他看不懂的深邃。
“林浩,”他说,“你好像……想得很远。”
“必须想得远。”林浩说,“网际网路才刚起步,我们现在做的每一个决定,都可能影响十年后的世界。所以不能只盯著眼前的技术,要盯著技术背后的东西:它让人变得更好了,还是更坏了?它让社会更开放了,还是更封闭了?它让信息更自由了,还是更垄断了?”
张一鸣沉默。他低头吃了几口菜,然后说:“我想做个实验。用浩宇的游戏数据,先做一个游戏內的推荐系统。比如,根据玩家的职业、等级、装备,推荐他可能需要的道具、副本、攻略。这个系统如果跑通了,再迁移到新闻、视频、音乐。”
“好主意。”林浩点头,“从垂直领域切入,验证技术,再横向扩展。游戏数据维度丰富,行为密集,是训练推荐算法的绝佳土壤。你做方案,我批资源。”
“谢谢。”
吃完饭,林浩送张一鸣回深大。校门口,路灯下,张一鸣背著那个旧书包,身影瘦长。
“下周一,我来公司。”他说。
“好。地址我发你qq。”
“嗯。”张一鸣转身要走,又回头,“林浩,你为什么相信我?我们才认识几个小时。”
“因为你在网吧啃《算法导论》。”林浩笑了,“因为你在做2003年没人做的事。因为你的眼睛里有光。技术人有没有天赋,一眼就能看出来。你有。”
张一鸣也笑了,很靦腆,但眼里有光。
他转身走进校门,背影消失在树影里。
林浩站在路灯下,点了根烟——他很少抽,但今天想抽一根。烟雾在夏夜的热风里散开,很快没了痕跡。
他想起上辈子,2012年,今日头条上线,顛覆了新闻行业。2016年,抖音上线,顛覆了短视频。2020年,tiktok风靡全球。而这一切的起点,是2003年深圳的一家网吧,一个啃《算法导论》的穷学生。
现在,这个学生,要成为浩宇的cto了。
命运,真奇妙。
他掐灭烟,往回走。城中村的巷子很深,很暗,但远处有光。
浩宇的版图,又多了一块拼图。
而未来,正在加速到来。
林浩从建材市场出来,t恤后背已经湿透,紧贴在皮肤上。他手里拿著一捲图纸,是创新大厦五楼的装修设计图——刚和设计师吵了一架,对方坚持要做吊顶、大理石前台、玻璃隔断,说“这才像正规公司”。林浩坚持要做开放空间、水泥地、裸露管线,说“这才像创业公司”。最后各让一步:前台用水泥砌,但打磨光滑;不吊顶,但刷黑漆;办公桌用实木板,但自己钉。
省钱,但要酷。这是林浩的要求。
他拐进巷子口一家网吧。招牌是褪色的“极速网咖”,玻璃门上贴著《传奇》《奇蹟》《cs》的海报,但边角捲起,被太阳晒得发白。推门进去,冷气和烟味、泡麵味、汗味混杂的气浪扑面而来。
下午的网吧人不多,大半机子空著。几个少年在打游戏,大呼小叫。角落里,一个瘦得像竹竿的年轻人,背对著门,坐在最里面的位置。他没打游戏,屏幕上是黑色的终端窗口,绿色的字符快速滚动。桌上摊著一本厚厚的书,砖头一样,是《算法导论》英文原版,书页泛黄,边角捲起,密密麻麻写满了笔记。
林浩在他斜后方找了个位置坐下。开机,打开邮箱,处理装修报价单。但眼角余光一直瞟著那个年轻人。
年轻人很专注。手指在键盘上快速敲击,但动作轻盈,几乎没有声音。屏幕上的代码在滚动,是c++,但风格很独特——变量名用下划线分隔,函数短小,注释精確。林浩能看到几个关键词:collaborative_filtering、user_vector、item_similarity……协同过滤,用户向量,物品相似度。
这是推荐算法的核心概念。在2003年,这太超前了。当时国內网际网路还处在门户时代,新闻是编辑手动推荐,电商还没起步,推荐算法只是学术论文里的概念。
林浩起身,去吧檯买了两瓶冰镇矿泉水。走回来,把一瓶放在年轻人桌上。
“喝点水。”
年轻人抬起头。很年轻,可能二十出头,戴一副黑框眼镜,镜片很厚,眼睛很大,但眼窝深陷,有黑眼圈。脸很瘦,颧骨凸出,嘴唇乾裂。他看了一眼水,又看了一眼林浩,眼神里有警惕,也有困惑。
“谢谢,不用。”
“天热,脱水。”林浩在他旁边的空位坐下,拧开自己那瓶,喝了一口,“看你写代码,是推荐系统?”
年轻人愣了一下,警惕更深:“你懂?”
“懂一点。协同过滤,基於用户的,还是基於物品的?”
“都在试。”年轻人说,声音很轻,但清晰,“但稀疏矩阵问题解决不了。用户-物品矩阵太大,太稀疏,相似度计算不准。”
“用svd(奇异值分解)降维。或者,加隱语义模型。”林浩说。
年轻人眼睛睁大了。他看著林浩,像看著一个突然从地里冒出来的怪物。2003年,svd在推荐系统中的应用,还只是少数实验室在研究的课题。
“你……你是哪个实验室的?”年轻人问。
“不是实验室,是公司。”林浩说,“浩宇科技,做游戏的。但我们对推荐算法有兴趣。你在做什么项目?”
年轻人犹豫了几秒,然后说:“个性化新闻推荐。我想做一个系统,根据用户的瀏览歷史,自动推荐他可能感兴趣的新闻。但现在还在理论阶段,数据都没有。”
“爬虫抓新闻,用户行为模擬,先跑起来。”林浩说,“算法不验证,永远是纸上谈兵。”
“我知道。”年轻人苦笑,“但没伺服器,没数据,没资源。我在深大读书,实验室的机器要排队,一次只能跑一小时。”
“深大?计算机系?”
“嗯,大三。张一鸣。”
林浩的心臟重重跳了一下。张一鸣。这个名字,他上辈子在无数科技新闻里见过:今日头条创始人,字节跳动ceo,中国网际网路新生代巨头。但现在,他只是个在网吧啃《算法导论》的穷学生。
“我叫林浩。”林浩伸出手。
张一鸣握手。手很瘦,但有力。
“你刚才说,浩宇科技?做游戏的?《血战天下》是你们做的?”
“你知道?”
“玩过。”张一鸣说,脸上第一次露出一点笑容,“国战系统很厉害,同步算法做得很好。我逆向分析过客户端,你们的预测矫正模型,比论文里的方案更实用。”
“你还逆向分析?”林浩笑了。
“兴趣。”张一鸣说,“我觉得,游戏里的很多技术,可以用在其他地方。比如状態同步,可以用在实时推荐上——用户每点一次,系统立刻更新推荐列表,像游戏里每动一步,画面立刻更新。”
“思路不错。”林浩说,“但实时推荐的计算量太大,伺服器扛不住。”
“所以要做增量更新,做局部刷新,做客户端缓存。”张一鸣语速快起来,眼睛里有了光,“就像游戏里,只同步视野內的玩家。推荐系统里,只更新用户可能感兴趣的几个品类。其他部分,用缓存,用异步更新。”
林浩听著,心里越来越惊。这个二十岁的年轻人,思维已经跳出了时代。他看到的不是眼前的技术局限,是技术背后共通的逻辑——状態同步、增量更新、缓存优化,这些游戏引擎里的概念,被他自然地迁移到推荐系统里。
“你做过实验吗?”林浩问。
“在实验室跑过小规模数据。”张一鸣从书包里掏出一个软盘,“里面是模擬数据,十万用户,一百万新闻,用简单的协同过滤,准確率只有30%。但如果加上时间衰减因子——用户最近的行为权重更高——能提到40%。再加社交关係——朋友喜欢的,你也可能喜欢——能到50%。但计算量指数级增长,单机跑一次要三天。”
“用分布式。”林浩说,“把数据切分,多台机器並行计算。mapreduce的思路,听过吗?”
“google那篇论文?”张一鸣眼睛更亮了,“我看过,但没实践过。实验室没那么多机器。”
“浩宇有。”林浩说,“我们刚租了一层楼,正在装修。伺服器买了二十台,下周到货。如果你有兴趣,可以来我们那儿做实验。数据,我们有——游戏里几百万玩家的行为数据,每天產生几千万条日誌。伺服器,我们也有。缺的,是人。”
张一鸣愣住了。他看著林浩,像在判断这话的真假。一个陌生人,在网吧,邀请他去公司做实验,用真实数据,用真实伺服器。这听起来像骗子,或者……像做梦。
“为什么?”他问。
“因为我觉得你的想法有价值。”林浩说,“个性化推荐,是未来。新闻、音乐、视频、商品,一切內容都需要推荐。谁先做好推荐,谁就掌握了流量入口。浩宇现在做游戏,但未来要做平台,要做生態。推荐系统,是生態的大脑。我们需要这个大脑。”
“可我只是个学生……”
“学生怎么了?”林浩笑了,“我今年十八岁,高中刚毕业。浩宇是我创立的,四个月前还在县城发传单。现在月流水千万。年龄、学歷、背景,都不重要。重要的是,你有没有想法,敢不敢干。”
张一鸣沉默了很久。他低头看著手里的软盘,手指在塑料壳上摩挲。然后他抬头,看著屏幕上的代码,又看看那本《算法导论》。
“我能得到什么?”他问,很直接。
“实习工资,一个月三千。包住。实验资源,隨便用。如果项目有成果,可以转正,薪资翻倍,给期权。”林浩说,“更重要的是,你可以把一个理论想法,做成真实可用的系统。这个系统,可能会改变几亿人获取信息的方式。”
最后这句话,打动了张一鸣。他眼里那种技术人的纯粹光芒,亮得灼人。
“但我还要上课……”
“时间自由。你什么时候有空,什么时候来。我们需要的是你的脑子,不是你的坐班时间。”林浩说,“而且,深大离南山不远,公交车半小时。”
张一鸣又思考了几分钟。然后他点头:“好。我试试。”
“欢迎加入浩宇。”林浩伸出手。
这次握手,很用力。
两人聊了三个小时。从推荐算法,聊到分布式系统,聊到资料库优化,聊到用户体验。张一鸣的话越来越多,从拘谨到兴奋,到滔滔不绝。他有很多想法,很多在2003年看来天马行空的想法:基於用户画像的精准推送、基於社交关係的病毒传播、基於地理位置的热点发现……
林浩听著,偶尔提问,偶尔补充。他脑子里有2023年的推荐系统是什么样子——今日头条、抖音、淘宝千人千面。但他不能说,只能引导,让张一鸣自己“发明”出来。
天黑了。网吧的灯亮起来,屏幕的光映在两人脸上。旁边打游戏的少年换了一拨,烟味更浓了。但两人都没在意。
“走吧,吃饭。”林浩说,“边吃边聊。”
他们去了巷子口的大排档。塑料桌椅,红色灯罩,风扇嗡嗡转。点了炒牛河,椒盐虾,蒜蓉青菜。张一鸣吃得很香,但手在桌上比划,还在说算法。
“用户冷启动问题怎么解决?”他问,“新用户,没数据,怎么推荐?”
“用热门內容引流,同时快速收集行为数据。”林浩说,“就像游戏里,新手进来,先给简单任务,让他快速升级,產生正反馈。推荐系统也一样,先给大眾都喜欢的內容,同时埋点,记录他的每一次点击、停留、分享。数据够了,再切个性化。”
“那数据隱私呢?”张一鸣皱眉,“收集用户行为,会不会……”
“会。”林浩说,“所以必须透明。告诉用户,我们在收集什么数据,用来做什么。给用户选择权,可以关闭个性化推荐。但大部分用户,会为了更好的体验,愿意交出数据。这是交换。”
“这会不会……有点邪恶?”
“技术是工具,看人怎么用。”林浩说,“我们可以用它推荐垃圾信息,也可以用它推荐有价值的內容。浩宇要做的事,是让技术服务於人,不是奴役人。所以,算法要有价值观,要有底线。这比技术本身更重要。”
张一鸣停下筷子,看著林浩。大排档昏黄的灯光下,这个比自己还小的少年,眼神里有种他看不懂的深邃。
“林浩,”他说,“你好像……想得很远。”
“必须想得远。”林浩说,“网际网路才刚起步,我们现在做的每一个决定,都可能影响十年后的世界。所以不能只盯著眼前的技术,要盯著技术背后的东西:它让人变得更好了,还是更坏了?它让社会更开放了,还是更封闭了?它让信息更自由了,还是更垄断了?”
张一鸣沉默。他低头吃了几口菜,然后说:“我想做个实验。用浩宇的游戏数据,先做一个游戏內的推荐系统。比如,根据玩家的职业、等级、装备,推荐他可能需要的道具、副本、攻略。这个系统如果跑通了,再迁移到新闻、视频、音乐。”
“好主意。”林浩点头,“从垂直领域切入,验证技术,再横向扩展。游戏数据维度丰富,行为密集,是训练推荐算法的绝佳土壤。你做方案,我批资源。”
“谢谢。”
吃完饭,林浩送张一鸣回深大。校门口,路灯下,张一鸣背著那个旧书包,身影瘦长。
“下周一,我来公司。”他说。
“好。地址我发你qq。”
“嗯。”张一鸣转身要走,又回头,“林浩,你为什么相信我?我们才认识几个小时。”
“因为你在网吧啃《算法导论》。”林浩笑了,“因为你在做2003年没人做的事。因为你的眼睛里有光。技术人有没有天赋,一眼就能看出来。你有。”
张一鸣也笑了,很靦腆,但眼里有光。
他转身走进校门,背影消失在树影里。
林浩站在路灯下,点了根烟——他很少抽,但今天想抽一根。烟雾在夏夜的热风里散开,很快没了痕跡。
他想起上辈子,2012年,今日头条上线,顛覆了新闻行业。2016年,抖音上线,顛覆了短视频。2020年,tiktok风靡全球。而这一切的起点,是2003年深圳的一家网吧,一个啃《算法导论》的穷学生。
现在,这个学生,要成为浩宇的cto了。
命运,真奇妙。
他掐灭烟,往回走。城中村的巷子很深,很暗,但远处有光。
浩宇的版图,又多了一块拼图。
而未来,正在加速到来。
