七月底的深圳,热得像一个巨大的蒸笼。下午四点,太阳还毒辣地掛在天上,晒得柏油路面浮起一层透明的、摇曳的热浪。城中村的巷子又窄又深,两侧是密密麻麻的“握手楼”,阳光只能从楼缝里漏下几道惨白的光柱,照在积著污水的坑洼路面上。
林浩从建材市场出来,t恤后背已经湿透,紧贴在皮肤上。他手里拿著一捲图纸,是创新大厦五楼的装修设计图——刚和设计师吵了一架,对方坚持要做吊顶、大理石前台、玻璃隔断,说“这才像正规公司”。林浩坚持要做开放空间、水泥地、裸露管线,说“这才像创业公司”。最后各让一步:前台用水泥砌,但打磨光滑;不吊顶,但刷黑漆;办公桌用实木板,但自己钉。
省钱,但要酷。这是林浩的要求。
他拐进巷子口一家网吧。招牌是褪色的“极速网咖”,玻璃门上贴著《传奇》《奇蹟》《cs》的海报,但边角捲起,被太阳晒得发白。推门进去,冷气和烟味、泡麵味、汗味混杂的气浪扑面而来。
下午的网吧人不多,大半机子空著。几个少年在打游戏,大呼小叫。角落里,一个瘦得像竹竿的年轻人,背对著门,坐在最里面的位置。他没打游戏,屏幕上是黑色的终端窗口,绿色的字符快速滚动。桌上摊著一本厚厚的书,砖头一样,是《算法导论》英文原版,书页泛黄,边角捲起,密密麻麻写满了笔记。
林浩在他斜后方找了个位置坐下。开机,打开邮箱,处理装修报价单。但眼角余光一直瞟著那个年轻人。
年轻人很专注。手指在键盘上快速敲击,但动作轻盈,几乎没有声音。屏幕上的代码在滚动,是c++,但风格很独特——变量名用下划线分隔,函数短小,注释精確。林浩能看到几个关键词:collaborative_filtering、user_vector、item_similarity……协同过滤,用户向量,物品相似度。
这是推荐算法的核心概念。在2003年,这太超前了。当时国內网际网路还处在门户时代,新闻是编辑手动推荐,电商还没起步,推荐算法只是学术论文里的概念。
林浩起身,去吧檯买了两瓶冰镇矿泉水。走回来,把一瓶放在年轻人桌上。
“喝点水。”
年轻人抬起头。很年轻,可能二十出头,戴一副黑框眼镜,镜片很厚,眼睛很大,但眼窝深陷,有黑眼圈。脸很瘦,颧骨凸出,嘴唇乾裂。他看了一眼水,又看了一眼林浩,眼神里有警惕,也有困惑。
“谢谢,不用。”
“天热,脱水。”林浩在他旁边的空位坐下,拧开自己那瓶,喝了一口,“看你写代码,是推荐系统?”
年轻人愣了一下,警惕更深:“你懂?”
“懂一点。协同过滤,基於用户的,还是基於物品的?”
“都在试。”年轻人说,声音很轻,但清晰,“但稀疏矩阵问题解决不了。用户-物品矩阵太大,太稀疏,相似度计算不准。”
“用svd(奇异值分解)降维。或者,加隱语义模型。”林浩说。
年轻人眼睛睁大了。他看著林浩,像看著一个突然从地里冒出来的怪物。2003年,svd在推荐系统中的应用,还只是少数实验室在研究的课题。
“你……你是哪个实验室的?”年轻人问。
“不是实验室,是公司。”林浩说,“浩宇科技,做游戏的。但我们对推荐算法有兴趣。你在做什么项目?”
年轻人犹豫了几秒,然后说:“个性化新闻推荐。我想做一个系统,根据用户的瀏览歷史,自动推荐他可能感兴趣的新闻。但现在还在理论阶段,数据都没有。”
“爬虫抓新闻,用户行为模擬,先跑起来。”林浩说,“算法不验证,永远是纸上谈兵。”
“我知道。”年轻人苦笑,“但没伺服器,没数据,没资源。我在深大读书,实验室的机器要排队,一次只能跑一小时。”
“深大?计算机系?”
“嗯,大三。张一鸣。”
林浩的心臟重重跳了一下。张一鸣。这个名字,他上辈子在无数科技新闻里见过:今日头条创始人,字节跳动ceo,中国网际网路新生代巨头。但现在,他只是个在网吧啃《算法导论》的穷学生。
“我叫林浩。”林浩伸出手。
张一鸣握手。手很瘦,但有力。
“你刚才说,浩宇科技?做游戏的?《血战天下》是你们做的?”