本科一作 3 篇 A 会是什么水平?不妨看看这份科研笔记。
本科一作 3 篇 A 会是什么水平?不妨看看这份科研笔记。
本科期间,不到两年时间,以第一作者身份发表 3 篇 CCF-A 会议论文,包括 NeurIPS 和 ICML,Google Scholar 引用超过 100 次。
最近,一位名为「橘寄」的科研博主分享了自己的本科科研经验。
除了论文成果,作者还曾获得国家奖学金,以及清北、香港和新加坡多所高校的 PhD offer。
从如何精读论文、上手大型代码仓库,到寻找科研 idea、完成顶会论文写作,这几篇笔记涵盖了不少具体做法。
以下是相关内容的整理,尽量保留作者原有的经验分享和第一人称表述。
本科科研从读论文开始
27 届保研季刚刚结束,不少学弟学妹感到焦虑,来问我:本科阶段该怎么做科研、发论文,提升升学竞争力?
和大家分享一些本科做科研的实用经验。
一、系统阅读该方向近期的文章
这里的阅读是循序渐进的过程。
1. 精读该方向 2-3 篇文章
这里的精读指的是包括 Related Work 在内的所有正文部分。
请注意,有读不懂的地方,你可以随时让 AI 给你通俗解答,最后达到的效果是:问你正文的哪一部分,你都能娓娓道来。
这一步,你建立起了对这个方向发展脉络的初步认知,且对 Introduction 怎么写、实验怎么做等有了初步认识。
2. 泛读 20-40 篇文章
把你精读的文章丢给 AI,让它去把 Related Work 的文章扒下来,再把 Related Work 的 Related Work 扒下来……
由此,你会得到一个很详细的论文列表。对每篇文章,你只需让 AI 给你总结:
Introduction:针对什么问题?
Methods:提出了什么方法?
然后,你能对着 Pipeline 图讲出整篇文章的故事和方法。
3. 分类总结
把你手上的文章串起来,通常能形成分类树或时间线。比如,A 方法下面有哪些文章,其中 A1 解决了什么问题,各篇工作之间有什么联系。
二、动手大于一切
很多同学常受制于这一步,他们有各种理由不连服务器、不开始动手。然而最关键的往往就是这里。
组里没卡?那就去 AutoDL 租。代码看不懂?让 AI 给你逐行讲解说明。
在这一步,你起码应该复现 2-3 个该方向较经典的工作,且大致掌握代码架构,能够做一些小的实验和改动。
三、想 idea 一定要与人交流
其实很多时候,在刚刚第一步和第二步的过程中,你应该已经有了 idea。但如果你还没有,那一定要更多地与人交流,而不是只问 AI!
这里更多指在社交平台上交流,包括公众号、小红书上的相关讨论,尤其是很多帖子下的评论。
你要相信,你能想到的 idea,一定有很多人跟你有一样的想法。你要做的,就是尽可能多地汲取他们的 idea。
近百个代码文件怎么入手?
关于论文复现,很多同学反馈代码看不懂,尤其是 CV 领域的项目。
这里以经典项目 CodeFormer 为例,讲解如何快速上手代码。
一、找主线,抽丝剥茧
看到这近百个文件、15k 的代码量,很多同学直接两眼一黑,丢给 Codex 了。实际上,核心文件只有几个,其他各种 Script、Utils 都属于旁路文件。
大部分 AI 论文中的项目离不开两件事:模型网络和数据。因此,核心就是抓住网络、数据和梯度的输入输出流向。
以这篇文章为例,可以分为三条主线。
1. 网络架构流:数据如何在网络里输入和输出。实际对应 archs 下的 codeformer_arch.py 等文件。
2. 训练梯度流:梯度如何在网络中传递。实际对应 models 下的 codeformer_joint_model.py。
3. 数据处理流:数据在送入网络前,经过了哪些预处理和清洗流程。这里对应 data 下的 ffhq_blind_dataset 等。
二、先模块,再追变量
定位到文件后,我们先逐步理解每个 Class 及其函数,然后开始追踪变量。
以理解 vqgan_arch.py 这个经典网络架构为例。
1. 首先理解所有主要类的架构。
比如,Encoder 类在 __init__ 函数中创建了哪些层,forward 函数又是怎么处理数据的?Encoder 的输出和 Decoder 的输入之间又是怎么连接的?
这部分完成后,你应该能做到自己拿笔,在纸上默写出网络架构图。
2. 然后去追踪关键变量。
最简单的是用一个 Input,在网络不同节点处 Print 输出、维度等,加深你对数据和网络变化的理解。
根据论文介绍的方法,可能还会有一些关键变量。此时你可以不带任何功利心地探索,尝试修改参数看效果。比如推理超参数 w、码本深度 d。
此时,你对全局有了整体认知,应该主动提出一些假设,并验证自己的猜想是否正确。
idea 也有可能就在这时迸发。
顶会论文先画主图再动笔
关于顶会论文写作,作者还整理了一份更详细的实操指南。这份指南主要面向入门者,目标是写出一篇「四平八稳」的顶会论文。
开始之前,先准备好前面提到的精读文章(2-3 篇)和泛读文章。在 AI 工具选择上,作者个人推荐 Opus 系列模型用于辅助论文写作。
作者还给出了一个按照审稿人注意力分配排序的经验判断:
Abstract > Main Figure > Introduction ≈ Conclusion ≈ Title > Methods > Experiments
此外,还有几条基础注意事项:
保证不出现 Citation 错误,尽量少引用未经同行评议的 arXiv 论文,多引用经过同行评议的工作。
不同会议尽量使用习惯的称呼,比如 ICLR 一般会带上届数。
尽量避免段落最后一行字数不足整行的三分之一,若出现则增减措辞即可,别为了凑版面改结论。
所有图表,包括左右并排放置的,尽量位于页首或页尾。
避免较大的留白,先调整图表尺寸和位置,必要时用少量
\vspace微调。所有图表都保留可编辑源文件。PPT 作图保留 PPTX,代码作图保留脚本和数据,放进论文时导出 PDF,检查小字和线条是否清楚。
一、论文完成顺序
作者推荐的顺序是:画好主图 → 拟好中文大纲 → 迭代翻译 → 补充剩余图表 → 迭代检查。
先画好主图
请参考精读论文的主图风格和配色,使用 PPT 认真改编制作。
需要图标可以在 https://www.iconfont.cn/ 找。主图是文章最重要的地方之一,一般花几个小时完成是正常的。
通常用简洁短语加图标的方法,将各个流程说清楚。输入什么,经过哪些模块,输出什么,模块之间怎么连接,都要在主图里讲清楚。
主图可以展示具体样例,但仅限于:
流程难以说清,需要用例子让流程更具体;
需要抓人眼球,或者例子就是产出的领域,如生图、多模态、数据合成。
这部分 AI 生图仅限于给你灵感,请勿直接使用或转成 SVG,当前的 AI 绘图风格还是太明显了。
以下补充几份论文主图与配色示例,供参考。
除了参考已有论文的主图,配色也可以提前整理成固定方案。
〓 科研绘图配色示例。部分方案参考第三方配色素材后重新组合,部分为自行搭配,具体来源以各方案标注为准。
〓 同色系与双极渐变配色示例,包含参考扩展及自行搭配的方案。
拟好中文大纲
这部分我们先纯手写中文大纲,按照以下顺序写:Introduction → Abstract → Method → Experiment → Related Work → Conclusion
Introduction:非常标准的「四个部分」,先按如下顺序写。
第一段:行业背景。
先说这个领域最近获得了什么能力,或者已经产生了什么实际需求。紧接着说明:在这件事里,你研究的子问题为什么重要。
尽早落到论文对象,把输入、输出或使用场景交代出来。背景只需要铺到足够理解问题就行,更重要的是从宏大叙事落到你研究的具体方向。
第二段:局限性和问题。
介绍现有方法大概怎么做,还未解决什么问题。要讲清楚已有办法在什么条件下会遇到什么问题,为什么这个问题值得单独研究。
若有多条思路,可以分别介绍,再说明各自的局限;也可以是某个实验揭示了某个问题。
第三段:我们的方法。
先说核心想法,再介绍方法的大体流程。前面提出了哪些问题,这里就说明你的哪些设计可以处理它们。这里讲思路即可,具体公式和实现留到 Method。
第四段:Contributions。
一般分三到四点,交代提出了什么方法、贡献了什么 Model/Dataset/Conclusion,以及实验验证了什么或达到了什么性能。
格式可以灵活些,有的地方一段话讲,有的地方分成几个点。四个部分讲清楚就行,不用硬凑四个自然段。
Abstract:Introduction 写完再写 Abstract。这部分可以交给 AI 辅助起草,但要多次迭代润色。
其实核心就是浓缩版的 Introduction:方向背景一句 + 当前的局限性和问题一到两句 + 我们的方法和贡献两到三句。
最后可以把主实验或性能最好的某个数字、指标放上来吸引眼球。但要讲清楚在哪个设置下、和谁比。某个子集的最好结果,别直接写成整体提升。
Method:方法部分就围绕画好的主图来写。先用一小段把整体流程介绍出来,再按图里的模块逐个展开。
每个模块讲清楚:为什么需要它、输入是什么、怎么处理、输出什么。尤其要说清楚上一模块的结果怎么交给下一模块。
数据怎么来、模型怎么训练、推理时怎么用,也要分别交代。关键设计可以放公式或伪代码,但写完公式后还需要解释它在做什么。
图和正文用同一套模块名。这一步完成后,别人应该能对着主图把整套方法讲清楚。
Experiment:这里有两类常见写法。
一种是按研究问题(RQ)组织实验,先列出研究问题,每一组实验回答一个问题。比如整体有没有效果,某个设计有没有用,换个条件还能不能用。
另一种是主实验加消融实验。先交代数据、基线、指标和设置,再给主实验,接着做消融,最后按需要补其他分析。
如何设计实验?
先问自己:Claim 的点是显而易见的、共识吗?如果不是,那么前面 Claim 的优势、特色等,都需要实验来证明,包括直接或间接的实验。
具体可以考虑以下维度:
整体效果:和哪些方法比,用什么指标,比较条件是否公平。
模块作用:移除某个模块,或换成简单方案,看看结果怎么变。
泛化与难度:换模型、数据、场景或难度,收益还在不在。
效率与规模:时间、显存、调用次数、数据量,以及参数变化后的表现。
质量与案例:数据质量、错误类型,或成功和失败的 Case 对比。
不需要把所有维度都做一遍,按前面 Claim 的东西来选。比如说减少了某类错误,就去统计这类错误;说效率更高,就把相关开销讲清楚。
主表里涨分了,还不能直接说明涨分的原因。写结果时,先讲这组实验说明了什么,再给关键数字和解释,不用把表格逐行念一遍。
Related Work:可以直接把粗读过的文章和笔记丢给 AI,让它按研究方向分类,再帮你写。每类大致讲已有方法怎么做,以及和你的工作有什么区别。
Conclusion:和 Abstract 差不多,但主要讲:本文针对什么问题、现有方法有什么缺陷、提出了什么方法、取得了什么效果。
一般一段话讲清楚即可。不用再从大背景铺一遍,也不用把方法步骤和全部数字重新复述。
迭代翻译
当你写好上述中文的大体框架后,用 AI 逐部分转为英文。可以先将前述精读的文章丢进去,让它掌握大致语言风格。
在这个过程中请确保:
不要出现破折号,只在必要情况下使用括号。
不出现生僻难懂的词,同一个概念统一一种叫法。
翻译后对照中文检查,别改了方法、数字和结论的意思。
可以多迭代几轮,一轮先看意思对不对,下一轮再改措辞、读顺语言。中文和英文里的模块名、术语也要对应上。
补充剩余图表
剩余图表主要让 AI 通过代码、Overleaf 辅助完成。具体来说:
Introduction:结合内容,可能会有一张与其他方法的对比图,或一张动机阐述图。单栏小图或扁平图为宜,要与 Main Figure 分出主次。
Method:可视情况再放一张局部图,介绍某个模块。数据或 Benchmark 类工作,也可以做数据分布可视化、数据结构统计图。
Experiment:除了正常的主表、消融小表,还可以通过代码制作折线图、柱状图等。有 Case Study,就展示相关的 Case 对比。
Appendix:补充完整设置、更多结果和案例。正文里必须讲清楚的东西别全塞到后面。
PPT 作图保留 PPTX,导出 PDF;代码作图就保留脚本和数据,让 AI 直接输出矢量 PDF。导出后放大看看,小字和线条是否清楚。
最后的迭代检查
完成后请交由你的 Supervisor。虽然大多数时候,他只会陪你一起迭代 Abstract 和 Introduction。
你自己也要回头检查,前面 Claim 的东西有没有实验支撑。最后再按开头的原则过一遍:
引用有没有错,段落末行有没有不足三分之一,大图的位置和留白是否合适,图表、公式和正文里的名称、编号是否一致。
焚诀之外
如果有充足时间,作者还推荐阅读下面两份资料,建立自己的论文写作 Know-how。
《顶会论文写作建议》:从底层逻辑介绍论文写作的要领。
https://zhuanlan.zhihu.com/p/639732057
《论文写作导览图》:包含更详细的论文写作方法论和方案。
https://www.xiaohongshu.com/discovery/item/697605fb00000000b009db3
关于进组导师与 AI 的几个问题
关于科研入门,作者也集中回答了几个常见问题,包括如何选论文、是否应该尽早进组,以及 AI 究竟适合参与哪些科研环节。
Q1:精读文章怎么找?我的 Taste 还不够怎么办?
可以参考几个标准:
公众号、小红书、推特关注度高
GitHub Star 数多或引用量大
该领域大组出品
另外,我个人有些会议论文基本不看,比如 AAAI、ACL 和所有 Workshop。并不是说这些 Paper 没有价值,主要是筛选成本过高。
直接筛选近三年三大会上拿了 Oral 和 Spotlight 的、与你研究方向相关的 Paper,也是一个方法。但请注意,无论什么 Paper,都不要迷信权威。
Q2:对独立科研与进组的看法?
完全独立科研不可取,缺乏科研交流的氛围、Senior 的指导和资源的支持。
在 Paper 爆炸的时代,一篇自己瞎搞抽中的 Paper,和在大牛组合作的 Paper,其背书是截然不同的。
最好的方式是先进组给高年级硕博打杂、入门,然后取得课题组信任后,快速 Lead 一个自己的项目。
本文针对的也是后者的情况。如果一味给硕博打杂也不可取,这样会导致你在申请时没有自己一作的 Publication,而缺乏竞争力。
Q3:感觉导师、硕博学长指导不了我怎么办?
导师指导不了是正常的,现在 AI 更新换代太快了,大部分导师跟不上最新的技术。
主要是给一些 High-level Goal、写作上的帮助,以及资源的获取和分配。你要做的是积极推进、定期汇报、向上管理,用他的思维逻辑得到他的认可。
至于硕博生,认真调查已有成果,如果还挺丰富,那可能只是你不太适应,或者他不太想耗费精力,需要自己更加积极主动。
否则,可以考虑减少在其项目上的精力投入、换组,或者多和网上的人交流。
Q4:什么时候该用、不该用 AI?
作者把科研中的 AI 使用分成了三类。
可以直接丢给 AI 做:Pull 代码、配置环境、搜集 Idea、文献英译中。
可以给 AI,但必须检查和知晓它做了什么:代码阅读、有具体目标的代码框架搭建、跑实验、idea Brainstorm。
不建议给 AI 做:核心创新点的提出、画思维导图、做分享 PPT。
Q5:日常工作流分享?
Less is More。
Idea 讨论,御三家都用(Gemini 有时会有奇效)。Coding 主用 Codex 和 CC。Typora 随手记录灵感。Zotero(内置 Codex)做文献笔记和辅助阅读。Paseo 负责解放双手。
参考文献
[1] https://xhslink.cn/o/8V9ibJPEeYp
[2] https://xhslink.cn/o/8V9ibJPEeYp
[3] https://xhslink.cn/o/1WBw7qxctyE
[4] https://xhslink.cn/o/6iubXbe6mPl
[5] https://xhslink.cn/o/A21a8ooj47n
更多阅读