文章目录
- 导语
- 论文生产发表流程
- 写好论文的意义
- 创新点和论文核心
- 论文的写作要点
- 笔者的论文投稿
- 常见的负面审稿意见
- 总结
导语
2021年来,笔者在多次论文被拒稿期间,开始研究和反思顶会论文生产到投稿的全流程,并全程参与了十几篇论文的审稿。近一年笔者有三篇论文录用 (笔者主页),总共投了 5+4+1=10 次,其中感悟颇多。本文希望结合经历回顾,为新手提供一个指南,提高论文的质量和命中率。本文深度参考了计算机科学家 Simon Jones 的 《How to write a great research paper》和北京大学施柏鑫老师的《从审稿人视角,谈谈怎么写一篇CVPR论文》。
论文生产发表流程
为了方便读者理解,先科普一下一般的深度学习相关会议的论文生产发表流程。首先有一个好的想法或者一些好的实验结果后,作者们围绕它扩充实验,撰写和修改一篇双栏六到八页,或者单栏十到十四页的论文,具体形式取决于当前投稿会议的要求。论文的结构通常是标题-摘要-介绍-相关工作-方法-实验-讨论-总结-参考文献。之后,作者们会将论文和一些代码、演示视频等补充材料在规定的截止日期前打包投稿会议。
如果没有严重的问题,比如忘记匿名,格式偏差严重,超过页数等导致 desk reject(意思是从编辑的桌子上直接被拒绝),就会进入审稿阶段。等待两个月左右,会收到一般由三个审稿人给出的意见反馈,附带对论文的总体评分。大部分审稿人在相关领域已经有论文发表,且这些审稿人有很大概率就出自于投稿论文的引用列表。基于这些初次的审稿结果,作者们需要写一个简短的反驳,通常为一页纸的长度,来回答一些问题或者补充一些结果。在反驳过程中,有一半的论文会直接放弃提交。审稿人们基于反驳和其他人的审稿意见进行一两周的讨论(一般是非公开形式),一般是陈述自己的问题是否被反驳解决,讨论论文的亮点等等。大部分情况下审稿人们会达成一致的正面或者负面意见,也有少部分情况由区域主席进行裁决。
最终的接收结果又需要再等待一个月左右的时间,在某个失眠的夜晚突然出现在邮箱里,或者在微信投稿群中流传。一般来说,在所有投稿论文中,有六分之一到四分之一的论文会被录用,作者们将会结合审稿人的意见进行修改,之后提交最终版本以供发表。大部分的论文会被拒绝而返工。作者们可能会重新进行如上流程尝试投稿,或者放弃。从命中概率来看,大多数论文都会经历比较长时间的打磨和修改过程。大家都戏称“斐波那契投稿法”,即每次投的论文等于上次的论文加上新论文。
写好论文的意义
论文是一种传达思想的载体,在深度学习领域它通常像是一个机器的说明手册,把一些精妙设计的亮点和思路点明,以便后人继续改进;另一方面,写论文能够帮助作者更严格地完成一个工作,把一个成果划分成已有的前人工作和新的想法,按照读者能接受的方式表达出来。有的时候把一个工作做好了,但没有充分的调研之前,作者并不知道做的到底有多好,以及方法是不是前人已有的,这就需要在撰写论文时进行大量思考。Simon Jones 甚至十分推荐一种研究方法:当有一个好的想法的时候,就可以开始写论文了。写到一个地方,发现自己并没有研究清楚的时候,就再做一些实验研究,以此对论文进行修改,通过写论文来监督作者不断审视和改进一个研究工作的前进方向。
一个论文要做得非常非常好,才能有很大的影响力,一个学者一生的科研成就可能由他最好的几篇论文就能体现。好的论文会有很多被宣传和展示的机会,圈内圈外会自发地引用和传播。借用 William T. Freeman 的一张图片(图1):特别高质量的论文一篇顶百篇。很多艺术家也说,好的作品能为未来长期的工作提供动力。相反,写的差的论文可能误导别人,或者成为作者未来要处理的黑历史。
创新点和论文核心
在谈论一篇深度学习论文时,大家常常谈到的一个词是 novelty(创新性),那么什么是创新性?在计算机技术领域,创新性不是天然存在的,因为技术本身不引起大多数人的兴趣,特别是随时被淘汰的前沿技术;科研是一种文化传播,创新性的衡量主要靠的是读者的直觉和经验,论文在其中起到说服的作用。Michael Black 曾经说,论文的创新性就像艺术作品的美感,毕加索的简笔画和伦勃朗的油画展示了完全不同维度的美。创新性也可以有很多角度,可能是提出新的问题,报告新的发现,颠覆现存理论等等。
MXNet 作者李沐有个很有实践意义的计算公式,创新性大致是论文的影响领域范围(解决问题的大小),有效性,以及方法的新颖性的三者乘积。比如在深度学习领域,早期很多影响大的工作出自基础模型研究,因为它们能影响整个领域。其中像“批归一化”,“残差学习”这样的方法因其有效性而备受推崇。方法的新颖性主要是区分一个任务更像是一个工程类任务还是研究类任务,因为前者可能用已有工具就能解决。李沐老师 B 站视频 - 你(被)吐槽过论文不够 novel 吗?
在衡量创新性上,常见的错误有很多。比如认为复杂就是创新,简单就不是创新。但是把一个东西变得很复杂而无用是很容易的,找到本质是难的,越本质的东西越有广泛的影响力。再比如把别人已有的工作说成是自己的创新,没有找出增量的那一部分。还有一个忌讳是说不清自己的工作到底创新性在哪,“我的方法整体体现了我的创新性”,这种模糊的说辞通常会被认为没有创新性,像是一个做技术报告而非学术论文。
明确了什么是创新性,尽量在论文选题的时候就要想好瞄准的目标,先想好它的潜在影响力有多大,要做到什么程度才算有效。在真正开始写论文时,尝试为论文明确一个核心的想法。举例:本文做了一件别人做不到的事,我们是这样做的;本文提出了一个算法,它可以把某些问题做得更好;人们对于某个问题的认识是空白或错误的,本文试图更新大家的认知,等等。有时一开始的核心想法听起来未必很棒,需要慢慢打磨,让它能够说服更多的人。往往做到最后会发现,其实很多想法会变得很好,只是一开始不够明确。理想状态是“一条巨龙,一招制敌”。
核心想法的反面教材举例:我从多个方面改进了某个算法(除非这个算法非常重要,不然读者可能没兴趣读下去);没有人在 A 领域用过 B 算法,我是第一个;论文想法设计的概念完全过时,社区不太关心。当然也有一些硬拗的核心想法,可能听着很棒,消融实验却无法验证。
论文的写作要点
当把论文核心思想和主要实验都做完后,就可以尝试写论文了。大部分深度学习的论文挺“八股文”的,常用的写作思路是:摘要本身就可以是一个完整的小故事,介绍是扩写版的故事脉络,全文是一个完整的故事。换句话说,一个同样的故事在一篇论文里面说三遍,逐层递进。
论文最重要的部分是标题和摘要,其次是介绍部分,剩下部分只有百分之一的人会读。取个好标题非常重要,笔者读过一些很不错的论文,后来想要引用的时候发现怎么也没法检索到,就是标题起的晦涩难懂。现在比较流行的做法是除了标题,还给自己的方法起一个好记的名字,比如 ShuffleNet,MoCo,Transformer 都是不错的例子。标题和摘要除了吸引读者,在投稿阶段还有一个更重要的作用,即匹配合适的审稿人。把论文的主题在标题和摘要处点明能够帮助自己的论文更易匹配到合适的审稿人。比如做轻量化模型的会在标题写“Efficient”,在摘要部分强调运行速度相对提升了多少倍。
从读者的角度,读一篇论文的感觉是:
「好论文」 介绍:这个问题确实重要或者新颖,解决思路有理有据;
核心想法:听起来就很有效果;
实验部分:前人之述备矣,这篇更上一层楼;
消融实验:贡献非常扎实,没有藏着掖着。
「差论文」 介绍:千篇一律,跳过,或者好不容易读完,感觉啥也没说清楚;
核心想法:瞎拼凑的,或者哪抄来的;
实验部分:故意挑自己好的,或者根本不好;
消融实验:根本不看,早就关了。
在构建论文的时候,新手常见的一个错误是“带着读者经历作者的痛苦”:想象读者们开心地坐着观光车去旅游,结果旅途中遍历各种死路,死路的墙上还能看见作者的血!弯路曲折可以偶尔提及,论文主要还是要把成功的喜悦分享给读者。在内容修改上,有几个有用的小技巧:
尝试把图串一遍,看故事是否完整。努力提高图表质量,做到图表自明,即不看论文也能看懂。
看文本和图片的详略是否得当,尽量去掉冗余,把重要的信息放在显眼的位置。
先考虑怎么写一篇满分作文(严谨性),再想着写一篇好作文(美观性)。
查缺补漏,把细节、引用处理清楚;最容易引起迷惑的错误是符号或者缩写没定义和用法前后不统一。
想想哪些东西其实不是常识,需要在论文里说清。这里可能隐藏了一些作者的创新,被作者误认为是大家都认可的知识,见图 2。多和其它人讨论,可以慢慢地把错误认知给修正。要在写作时就考虑不同的读者群体。
在最终修改的时候,着重检查容易被看到的部分,比如图的配字,公式等。
笔者的论文投稿
笔者在多次改稿投稿中,有两个深刻体会:一是作者容易存在各种各样的盲区,因为和读者的知识储备不同以及对方法的熟悉程度不同,需要大量自我反思或者他人反馈才能意识到。二是要通过审稿意见理解审稿人的真实意图,在接下来的章节会有讨论。
被拒四次论文名字是 RIFE,做的是轻量化的光流视频插帧。1) 第一次投稿遇到的主要负面评价是说论文基准有问题,一个审稿人指出我们报告的已有算法的测速是错误的,因为我们写论文的时候图省事复制了前人的一些结果没有检验。前人并不是非常关心算法的速度,所以他们的表格做的不对但无伤大雅,到我们论文里就成了原则问题。第二次投稿负面评价主要是研究动机不明,以及 “overclaim”,意思是可能夸大了自己的结果。因为过往研究很多,我们的论文没有充分地合并到前人的研究路线上,导致论文的陈述和实验设计都不容易被圈内人理解。第三第四次投稿都有一个明显负面评价,说这篇论文好像没什么特别新的东西,然后大家挑一些看起来不是很要紧的问题就拒了。经过分析后,我们认为本质是因为论文呈现上,没有把亮点突出。改起来就比较简单了,把乏味的东西缩略或者往论文后面放,把大家想看的新的东西强调一下放在前面。最后第五次投稿获得了比较一致的正面意见。
另两篇论文笔者主要负责写作和修改。其中被拒了三次的论文名字是 CoNR,这篇论文做的事情战线很长:首先是定义了一个新的任务,根据已有的一些动漫人物设定生成舞蹈动画。为了做这个任务,收集了数据集和标注,然后提出了一整套方法来解决这个问题。因为是用计算机视觉的方法来解决一个偏图形学的问题,几次投稿遇到了很多看起来背景完全不同的审稿人,提出的意见也是五花八门。但是总结起来就是两类:1)关于研究话题的讨论,论文试图解决的问题范围以及如何说明方法有效性?2)论文的细节和贡献不明,因为做的是一个设计领域跨度较大的系统,所以没表述清的细节很多,以及哪些是新东西让人不解。除了逐步提高论文的整体质量以外,针对 (1),我们不能求着一篇论文包罗万象,需要适当裁剪论文的内容,把几个重点说清。针对(2),我们把一些琐碎的细节给出参考文献或者放到附录,尽量把新颖的凝练的内容留在正文里。
一次就中的论文名字是 DMVFN,我们在写的时候就希望突出优势:效果好,有新方法,实验详尽,而且宁可内容少些也不能不清晰,这样第一次投稿就得到了很不错的反馈,最后甚至被录为 CVPR 亮点论文之一(占接收论文的10%)。
常见的负面审稿意见
对于会议论文来说,审稿人一般会觉得,投稿周期最多三四个月,有问题的论文改改重新投下一个会议也无妨。所以一般挑到几个明显问题就会给出拒绝的评分。在投稿前,想想论文有哪些可能被拒稿会对修改很有帮助。笔者列出了在投稿和审稿期间,最常见到的几类负面评价,并把潜在的解决方案以方括号注在后面。
觉得作者不懂行或者太新手:缺少了某些重要参考文献 [参考近期发表论文的参考文献列表];论文结构混乱,该有的要素缺乏,比如做视频的研究却不提交补充的视频结果,做的实验数据集都和别人不一样。
觉得作者做错了或者不诚实:报告的结果不符合常识,不可信,或者没引用最新的结果,做低基准实验;夸大自己的成果或者作出一些明显错误的论断 [多做实验,改良表达];混淆自己的工作和前人的贡献[多做论文调研]。
创新性差:故事写得不好,逻辑没说清楚,或者大部分都是已知知识 [找一些小同行讨论];觉得工作是增量式(incremental)的贡献不大。换句话说在嫌弃效果不好 [突出亮点]。
论文呈现质量差:比如把数据测错,不管是自己的做法还是别人的已有方法 [和现有工作的表格多对照];语法错误多,写的不好,英文水平差 [找chatGPT或者grammarly帮忙];看不懂,缺乏某些细节 [找朋友帮忙读一下]。
路线分歧:不认可实验设计或者不相信这个技术路线 [多做一些实验或者引述相关文献中的类似表述撑腰,争取其它审稿人]。
基本上审稿人先是找到一些严重的缺点,但不一定会在审稿意见里挑明说到底最关心哪个,会混着一些其它的问题或者给小意见。反驳审稿意见或修改论文的时候,需要读懂弦外之音。关于写论文反驳,推荐阅读丁霄汉博士的《顶会rebuttal技术浅谈:站着,还把论文中了》,有特别丰富的实操讲解。
总结
囿于篇幅和笔者水平,本文尽可能地分享一些经历和见解,但疏漏和片面在所难免。希望抛砖引玉,对读者能有些许帮助,祝各位工作顺利!
致谢 感谢旷视研究院 AI 计算组的同学对本文提出的诸多宝贵建议和实践反馈。感谢施柏鑫老师和周舒畅老师对笔者论文投稿的长期指导。感谢您阅读本文!