新芽经验分享:南开24级王奕瑜
0. 前言
我曾经与一些和我同届参加新芽计划的同学交流过,也在线下的经验汇报时与台下的同学交流过,总结来说,我发现了一个普遍的问题:很多初学者面对新芽计划这个挑战性极大的任务时,并不清楚自己需要做些什么事,需要克服哪些困难,这就使得有很多初学者并不知道从哪里入手,也有很大可能在未来学习过程中“处处踩坑”。综上所述,我认为我既然要分享自己在新芽计划中的经验,有一定的义务去着力帮助解决初学者的“痛点”问题,所以在后面的章节中,我将从论文阅读、代码复现、汇报展示和心态调整这四个方面展开介绍,并在最后分享一下我完成新芽计划前两个阶段之后,通过反思得到的一点教训。
1. 论文阅读
论文阅读方面,首先我认为需要带着思考去阅读。那什么是带着思考去阅读呢?
首先读完论文后,我至少应该能讲出这篇论文搭建的模型结构以及这篇论文的创新之处;
其次在细节上,论文中有没有不认识的学术名称甚至是英文单词,大家在初学阶段可能对很多学术名称都很陌生,我认为大家需要做的就是多去查找相关资料。如果像做英语阅读题一样,不认识的先跳过,那么你会错过很多学习新知的机会;
最后,我们阅读论文时也可以尝试与其他论文相联系,甚至思考对方法的改进。
我的第二点建议,是在阅读论文的时候做好标注,形成自己的标注习惯,下面就是我的标注习惯:
- 黄色标注不认识的学术名称;
- 绿色标注模型、数据库的名称;
- 蓝色标注传统模型的一些问题;
- 橙色标注这篇论文提出模型的创新点或重点。

我的第三点建议是定期总结。我们当时是每周都需要写文字报告的,这虽然听起来十分的繁杂,但是起到了温故知识、记录想法的重要作用。俗话说“温故而知新”,我希望大家如果能抽出一些时间,还是多多总结,形成自己的文字周报。
我的第四点建议是善用AI,尽管现在AI大模型阅读论文的能力似乎很强大。但是,它只能作为一个参考,一篇论文的亮点可能就藏在不起眼的一句当中,所以我认为我们在当下还是需要培养阅读论文的能力。但是,AI可以当做一个词典用,我们向其询问不认识的学术名称或许比我们自己查找归纳更有效率。
最后,在论文阅读阶段,如果你还有很多空余的时间,可以通过源码加深对论文的理解,这样你在后面的学习中就相对要轻松一些。
2. 代码复现
首先,我认为这部分的学习路线是Python→PyTorch→Jittor。
Python 作为语言基础,至少应当掌握类的基础知识和使用方法。
PyTorch 框架建议结合书本和网络资源学习,并多多实践提高动手能力。 -为什么需要提高动手能力?——各位初学者应该或多或少都接触过程序设计,应该已经发现大多数的程序设计课程都不应该也不可能是纸上谈兵,只有亲手实践才能真正掌握。
Jittor 框架与 PyTorch 框架类似,无需专门学习,但是部分内容有不同,你可以借助官方文档、社区、AI 等资源加深理解。 -官方文档有什么作用?——Jittor 框架下一些函数的用法与 PyTorch 框架不同,需要结合官方文档进行学习。 -社区有什么作用?——Jittor 框架下很多局限性问题都有人已经问过,并且已经得到解答,可以利用社区进行搜索。
其次,对于初学者来说,环境配置是一个较为费时的过程,我认为在新芽计划中至少需要掌握的技能有:
下载 Anaconda、CUDA、cuDNN;
学会 Anaconda 环境配置,配置 PyTorch 环境;
利用 WSL 搭建 Linux 子系统,在子系统下下载 Anaconda、CUDA、cuDNN,配置 Jittor 环境;
如果你发现训练速度受限于笔记本的 GPU 算力,你可能还需要掌握的技能有:
租借服务器(如 AutoDL),在服务器下配置环境
在 Xftp/IDE 中连接远程主机——传小文件的时候不需要使用命令
此外,代码阅读是我们以后工作的基础,阅读代码的方法可归纳为三个“观”。
-整体观:将代码分段,明确这一段代码做了什么事,最好能在脑海中形成关系图或者思维导图(例如下图的形式)
-细节观:要了解每一个语句的作用 ,跟踪每一个 Tensor 的变化,这对于快速学习的初学者而言是十分宝贵的学习机会
-联系观:要用联系的观点看问题,明确每一段代码之间的联系

最后,代码复现是很多高校对于研究生的基本要求,所以各位初学者在本科阶段能体验一次代码复现是十分宝贵的。在新芽计划中你需要完成:
跑通 PyTorch 框架下的代码,做好训练/测试/评估,尽可能与论文结果对齐
在 PyTorch 框架下代码的基础上向 Jittor 框架下修改,跑通 Jittor 框架下的代码,做好训练/测试/评估,
将两个框架下的代码进行对比(比较方面可以有训练时的 loss 曲线、图像生成质量评估指标等)
复现代码时,还需要关注的是选择一个合适的论文复现,一个好的选择可以让我们在既定任务要求下节省更多的时间,通常需要关注的点通常包括:
Github 上的代码是否完整?——一些期刊对论文代码的要求不高,很有可能会存在代码不完整的情况
issue 是否 close 的比较及时?——issue close 比较及时的,说明有很多人在维护这个项目,自己在复现代码时有不理解的问题,也可通过这个渠道请教。
数据集是否提供完整并且易于下载?
数据集的大小以及训练时长?——数据集的大小直接决定着你的训练时长
3. 汇报展示
我认为,一个好的汇报展示,至少应该做到以下几点:
具有清晰的逻辑层次
具有自己的理解与思考
具有数据的可视化展现(图表、图片对比…)
站在观众的角度思考介绍内容(例如这一段内容介绍的较为凌乱,考虑使用小结来进行归纳)
同时应该避免:
花里胡哨的 PPT 主题和表意不明的装饰→选择学术汇报主题
抑扬顿挫的"演讲"风格→采用与人交流学习的语气即可
体量巨大且字号极小的文字,把 PPT 作为演讲稿朗诵→将 PPT 作为你介绍内容的浓缩版本
各位初学者在以后大多都需要从事科研工作,从本科阶段培养高品位的科研审美,对今后的论文配图和科研汇报十分重要。
4. 心态调整
新芽计划是一个挑战性极大的训练过程,在此期间你可能会遇到大大小小的挫折,但这些挫折是你科研道路上必须要经历的,并且在你有所成就回顾这些挫折时,会发现当时困扰着自己的问题已经不值一提。培养能吃苦、敢坐冷板凳的科研态度,也是新芽计划培养目标中的一部分。
以下是可能可以帮助你找准目标、调整心态的方法:
对于看上去难以企及的目标或任务,应当先思考如何将任务划分,将大任务细分成能在 20-30 分钟内完成的原子级任务
学会利用碎片化的时间,一些问题可能在出勤、吃饭、运动的时候就能产生一些想法
把克服挫折的过程看做是学习新知的过程
时常给自己正向的心理反馈,减少无意义的焦虑等思想负担
5. 一些教训
由于我们专业课程安排在我们这一届有较大改动,直接地导致大一下学期的课程比之前几届的课程要密集,这就使得我在初学阶段的基础并不是十分牢固。我希望各位初学者如果课余时间充足的话,一定要多花一些时间放在新芽计划上,可以多去尝试尝试练习 PyTorch, 也可以在论文完一篇论文后再看看它的引用文献……我觉得每个人在新芽计划中的任务不应该有一个上限值,因为常言道“学无止境”。最后希望各位初学者在这个过程中能学有所获。