回望这一年,从 24 年 12 月正式进组开启科研生活,到如今也快一年多了。这一路走来,心境在变,认知也在重塑,值得落笔记录。

起点

本科时的我,对科研有着一种近乎单纯的崇拜,总觉得能发一篇 A会 非常 nb。然而受限于当时的认知和能力问题,加之缺乏体系化的引导,我更像是在黑暗中摸索,空有热情却不知路径,蹉跎了不少时间。在进入ZVG实验室后,运气很好,导师安排了俊哲师兄带我做 自动驾驶 3DGS 重建。说实话,师兄对我的帮助真的是无微不至。从最开始定 idea 到后来的实验分析,大部分心血都是师兄花的,他起码占了 90% 的功劳。我当时做的事情比较机械,主要是写代码、跑实验。甚至到后面的论文润色和 rebuttal(审稿回复),基本也都是师兄在盯着。

当时的我可能觉得,自己已经上手了,知道怎么做科研了。但现在回过头来看,其实那时候全是师兄在前面带着我走,我更像是师兄 idea 的一个“执行者”。虽然跑实验的过程也挺累,但因为有师兄在,整体过程其实是比较顺的。从 12 月知道要做什么,到 25 年 3 月 8 日投 ICCV,前后也就三个月。后来文章能中,确实非常幸运。但这三个月让我明白,有一个好的引导者,起点真的完全不一样。

迷茫

如果觉得读博的过程会一直一帆风顺,那绝对是最大的错觉。在经历过第一次异常顺利的投稿后,我开始了下一个任务:世界模型(World Model)。简单来说,就是做一个自动驾驶的 action-conditioned 视频生成模型。做这个任务的过程,我感觉是非常痛苦的。

这个痛苦主要来源于 2种研究领域的差异性:

  1. 失败成本的差异 我此前一直做的是 NeRF, 3DGS 这种偏图形学的 AI(可能算不上AI),成本很低,大概是一张 A6000 跑个2小时就能知道结果;然而,面对 DiT 这种大模型时,通常是需要多机多卡才能跑的动,并且还得等个好几天才能知道结果。然而众所周知科研肯定是失败占据主导的,成功都是靠失败堆砌的。3DGS的失败成本是比较小的。然而训练 DiT 的成本是巨大的,等了几天再看一个失败的实验结果,这对于科研心态的影响是非常负面的。
  2. 反馈直观性的差异 3DGS debug 相较于 AI 炼丹是更加显式和直观的,比如可以非常明晰的知道点云在相机坐标系中的位置是否正确来判断能否正确渲染;然而 AI 炼丹很难直观知道自己的方法是否合适,只能靠 benchmark 的一些指标才知道自己训的好不好。换句话说,做 3DGS 时,我在训练前就能预判大概率有没有 Bug;而炼丹往往只有等开奖那一刻才知道好坏。(如果大家在“大模型 Debug”这方面有什么好建议,也非常欢迎一起讨论。)

再加上当时组里完全没有人接触过这个方向,即便和师兄讨论,也因为领域跨度太大而给不了太多实质性的建议。那段时间进度推进得极其缓慢,加上我刚搬到创智学院这边,身边没什么朋友,生活状态非常压抑,整个人特别迷茫。从五月份开始,我一直在各种“乱搞”,但始终没搞出什么名堂。这种状态一直持续到了十月份,最后实在没办法,只能决定放弃。

现在回想起来,这给了我一个很深的教训:对于自身水平还比较有限的新手来说,最好不要轻易尝试组里从未涉及过的全新方向。如果一定要做,也最好拉一个能真正一起讨论、一起干的“战友”。读博真的不能闭门造车,一定要多和厉害的人沟通,这比自己瞎搞要重要得多。

成长和转机

十月份决定放弃世界模型后,我随组里投入了目前组里主攻的方向:具身智能。柏舟师兄给我推荐了一个方向:VLA+World Model。有一说一,这个方向其实还挺不错的,正好适合我这个刚从世界模型转过来的新手。我先复现了 UniVLA 的baseline,然后发现了一个问题,后面在这上面钻研钻研。幸运的是,在这段科研过程中,组里的家辉师兄来创智做 CVPR26的真机实验。我把我的想法和他聊了一下,他给了我一些鼓励并教我怎么做实验。不同于俊哲师兄那种“手把手”的带教,这次我更多是收获了一套科研上的方法论。

我在前文中说过,训练 DiT 是一个非常耗时的过程;训练 VLA 也是如此。家辉师兄教给了我一个非常好的思想:加速迭代,简单来说就是:用小数据集来验证。在前期工作中,我们的目标主要是验证自己的 idea 是否会 work。这其实可以不需要用全数据集来训练,比方说,评估模型在 LIBERO benchmark 上的效果,我们可以单独训一个 LIBERO-SPATIAL,甚至为了更快,可以只用 1/5 的 LIBERO-SPATIAL 数据集来训练。原来训一个完整的 LIBERO 可能要 10 小时,现在就能 2小时解决。这和 翁家翌 说的:一个pipline是否能快速的work,不在于idea有多牛逼,多新,而在于有更好的system,infra帮助实验验证快速迭代。有异曲同工的意思。

在家辉师兄的帮助下,我开始冲刺 ICML。老实说,这一次我并没有当时 ICCV 的从容,由于 代码 类的抽象写的巨差加上 git 版本各种切换,有些参数时常忘了修改,经常跑错实验。走了非常多的弯路。。我也吃了个教训,下次代码一定要好好写,一定要健壮。。最后也是匆匆忙忙投了出去,虽然自认为是仍有诸多不足的地方,应该不大能中,后续投完也是会继续改进。不过这篇工作,我感觉自我主导的部分要远远高于 ICCV 这一篇,也是成长了很多。希望以后可以实现自己完全主导一篇工作。

同时,我在这个过程中,心态也更加平静了。在过往时,我的心态往往会受到实验结果的影响,好的实验结果会让我高兴,坏的实验结果会让我难受,不想继续啃了。我逐渐意识到这不是一个正确的价值观,如果抱着这个心态的话,很难推进下去,因为科研中就是失败占了主旋律,如果一直因为失败而难受,那是做不了科研的。这种心态也是非常功利的,它追求的不是探索科学边界的好奇心,而是胜利的果实,它很难可循环的持续下去。现在的我依然会因为失败的结果而难受,但是我知道这不是终点,一步步解决这些失败,才是通往成功的唯一路径。