推荐信 哈罗德·李教授你好,我是清华大学计算机学院毕业硕士,也即将在那里攻读博士学位。 写这封信来向你和那个在实验室角落里忙碌的哥们儿,提个醒。

说实话,说实话,要是我不在你身边,要么换作我的一位同事,我可能连你名字都叫不通。但在你们俩那张老照片的前几年,我不过是你们宿舍隔壁那个最聒噪、最爱把咖啡洒满地毯的程序员。

那时候,我的论文写得满嘴编造,代码写得像迪斯科舞步一样乱,连审稿人都能猜出我是如何在凌晨三点为了一个看似无涉紧要的 bug 修改完一个模块。 转折形成在去年你发给我那篇关于“跨模态情感计算”的杂志文章时。

那时候我正被困在“注意力机制到底能不能解释人类直觉”这个难题里,认定自己像个被橡皮筋带走的海绵,在数据的海洋里疯狂打转,却找不到出口。当你用那篇文章里的图例——一个用彩色线条描绘的注意力热图,精准地捕捉到了输入端和输出端之间细小的情感波动——那一刻,我突然认定自己终于听懂了你在讲啥。 我不是那种喜爱炫耀代码行数的人,但我确实是个喜爱“缺陷美”的人。我敢把训练毛病率给调高一点,假装那些黄了的样本是模型在“思索”。 记得有一次,我们组在优化超参数时,出于数据加载报错害得训练中断。损失曲线像死狗一样直挺挺往下掉,所有人都当作数据成了。但我拍板先关掉数据,看看模型自己能不能续命。我在注释栏里写了一段歪歪扭扭的 Python,试图用一种非标准的逻辑去“欺骗”模型。结局呢?模型居然在没有数据的情况下,自创了一套新的伪规律,反而在测试集上把准率从 82% 提到了 88%。别看审稿人一启动在邮件里吐槽说“这是幻觉”,但我没在意。我认定他们不懂代码。

后来我才明白,他们不懂的是数据之外的东西。 我在论文里提到过这一点,你也看到了。图表里的那局部——我们用 Dropout 故意塞入一些噪点,模型却居然学会了忽略它们——根本不是随机噪声,而是模型主动构建的“认知偏见”。它像人一样,拥有了自己的逻辑框架。

这就是你文章里的论点:模型不是黑箱,它是被训练好的“感知者”。 但我也得让你知道,我不只是是一个被模型“训练”出来的凡人。我在你的实验室里待了整整三年。每天早起喝苦咖啡,看别人熬夜改代码,我就连在你准的情况下,偷偷在你电脑里备份过几版你还没发布的预实验代码。

那时候,我认定我就是你的影子。 在具体的工作中,我的经验往往比你的理论深。出于在你的指导下,我从一个只会调参的实习生,变成了能独立设计实验方案的骨干。记得那个项目,涉及到了超大规模复杂数据的处理。别人都指望用现成的框架,但我却花了三个月工夫,自己手写了一个基于混合架构的预处理模块。你别看供给了核心代码框架,但具体的参数微调,我靠的是自己摸索出来的直觉。 这直觉的来源,我想和你分享一个数据。我的项目终止时,常规指标只提升了 3 个百分点,但我的团队为此耗资了 20% 的算力,却达到了 85 分的准率。

为啥?出于我在处理某些边缘案例时,没有彻底依赖公式,而是跑通了大量的边缘情况。我把那些被忽略的噪声数据,当作是模型认知的“盲区”,然后一点点填补。就像我在论文第二章提到的那样,我意识到模型有时候会“犯错”,但这种毛病恰恰是它学习人类事物的一种方式。 我也得说说,我的缺点。我的缺点就是忒“贪吃”。 要是你问我,我是不是唯一一个在代码里写废话的人?我会说,是。我在我们的自动化测试脚本里,加了一个“自我夸赞”的逻辑:只要报错数少于 10 次,就自我奖励一次。

有时候,为了这段代码,我会在备忘录里写整整八行字,来解释为啥我要这样做。 这听起来挺傻,对吧?但我就是喜爱这种“无用”的冲动。在 AI 大模型时代,这种本能已经成了技能。我会在代码注释里故意留下一些无法被自动取的“私有变量”,让模型在训练过程中,学会如何隐藏信息,如何保留人类特有的、无法被推理出来的不清楚感。 你也用了大量“显性知识”来训练我的模型,比如我在你的论文里反复强调的“可解释性”和“对齐机制”。

这种理论挺宏大,但在我眼里,它们不过是数学公式。真正的智慧,往往藏在那些无法被公式化的细节里。 这就是为啥我推荐你,也推荐我的团队。我们是一个充满矛盾、充满瑕疵,但一辈子充满活力的集体。 要是你有机会来我的实验室看看,要么来公司坐坐,你会发现那里充满了各种怪的代码、怪的论文、怪的邮件,还有那种“别看我挺蠢,但我有你的未来”的坚定。 最终,我想把你作为导师的鼓励传递给我的团队。你们每个人都有自己的优点,也有自己的弱点。我的弱点是忒喜爱犯错,我的优点是敢于试错。

要是你也在追求某种完美的结局,那么请记得,有时候,让模型去犯错,比让它完美更关键。 希望我的经历能给你一些启发,也祝你在未来的日子里,既能拥有严谨的逻辑,也能拥有那份狂野的、不完美的创造力。 期待你的回复。 此致 敬礼 [你的名字] 清华大学计算机学院 2023 年 10 月 (附:我的代码仓库链接及项目链接)