最近刚刚赶出一篇论文,又被博导训了一通。。但是比起上一次写的时候又学到了很多可以有所提高的方法。这次记录下来以避免以后犯同样的错误。
注意:
- 科研是有领域划分的。不同的研究领域有不同的表述方式。我们是做深度学习和图像处理的,这些经验只能保证在我们的研究领域内的参考价值。
- 这些技巧是在读过写过一些论文之后总结出来的,仅仅是一些个人浅显的见解,可能对有一点经验的新手有点帮助,故以记录的方式分享出来。愿我们共同进步。
1. 坚守论文的概念框架,内容宁缺毋滥
我的理解是论文只有一个目的,就是把自己的研究清清楚楚,明明白白的讲给读者。写论文就像讲故事做ppt一样,需要有一个概念框架,用来约束你想讲的内容。只要把内容讲清楚了就OK了。当然设计一个框架不是一件简单的事情,需要突出论文的重点贡献,用不同的章节在篇幅限制以内,把最能够体现贡献的内容写出来。一旦这个框架安排好了,最好不要再做变化。把研究的内容写上去就可以了。如果在研究过程中有什么新的发现,最好不要轻易的决定把它放到论文里,因为那样会改变论文设计好的构架。而且如果每次有新东西就像放上去,这样研究容易跑偏,论文也走形了。最好是把它记下来,然后继续按照之前的计划完成论文。等事后有时间了再研究那些新的发现。最重要的是要认识一点:论文是看功劳不看苦劳的,绝不是写的越多越好。有时候多一个写一点可能导致整个论文结构分散,本来一篇可以被接收的论文就被拒了。
2. 突出一个重点,或几个同等量级的贡献
如果有一堂课的时间,让我讲一些机器学习的内容。ppt的第一页我可能会分linear regression, logistic regression, decision tree 这么几个话题。但是我不会分比如linear regression, normal equation, least square这几个话题。 因为前者是同一级别的话题,听众很容易理解我想讲的是这三种方法。后者的normal equation和least square是可以包含在linear regression以内的,讲出来听众就懵逼了,这是想讲linear regression呢,还是想突出normal equation和least square的重要性?
在接收信息的时候,受众往往会试图去寻找重点,就是”你到底想说明什么“。写论文也是一样要有章法,一篇论文尽量突出一个重点。这个重点就是论文的创新和贡献。比如,有人发明了一个算法,这个算法的应用到别人的数据库得到比别人好的结果。那么论文里应该突出的应该只有这个算法,把原理和优劣讲清楚就完事了。
如果有多个贡献要写,他们最好是在同等量级上。比如说,有人发明了一个算法,同时提出了一个自己的数据库。他在自己的数据库上应用了自己的算法,得到很好的结果。那么论文里应该突出的是算法的原理和数据库的内容。
再举个反例,比如有人发明了一个算法,这个算法的应用到别人的数据库得到比别人好的结果,同时他又对数据预处理有一点不一样的想法。由于发明一个算法和在数据预处理上做一些改动往往不是一个级别的贡献,那么论文里最好就当没有预处理这回事,还是用绝大多数的篇幅突出算法。在描述数据的章节简单的写出自己是怎么做数据预处理的,并且给出原因。在abstract甚至不用提及它。如果反过来用很多文字突出预处理的好处的话,应该解释算法的篇幅就会受到压缩,审稿人就容易产生疑问。”这个新算法我没见过,应该是一种创新,但是说的太糙我看不太懂。而且这孙子为什么说了那么多预处理的好处啊?这两个东西应该是彼此独立的啊,为什么听起来像没有这个预处理的话他的算法也得不到那么好的结果似的?“ 如果讲故事的方式不符合听众的理解习惯就可能造成这种困惑。
3. 理论严谨且完备
其实这一点可以归纳成第一条的一个分支,它是在创建论文概念框架的时候就需要考虑的。我觉得一个理论的严谨性体现在它是否有一个坚实的背景理论基础和是否可以被量化上。架空的理论肯定会被质疑;没法量化的结论容易被question它的threshold在哪。
(a) 不能用经验性或技巧性的内容代替理论性的结论。
经验性的总结或者技巧上的东西在理论构架中是苍白无力的。除非这个领域目前人类还没有找到更合适方法,这时候可以用业界普遍被承认的方法代替。deep learning业界大佬, 李飞飞的高徒,CS231n的讲师之一Andrej Karpathy曾经发过一篇长博客叫"A recipe for training neural networks",讲了33条技巧和注意事项。这些属于网络调整技巧,可以发微博,但是写成论文的话估计就悲剧了。(但是这事儿也不绝对,我在换方向之前读过一篇关于怎么写论文的论文。论文精确的建议每一章节、每一段应该有几到几句话,每句话大概有什么内容。好像雅思写作的模板一样。曾经在业界被奉为”圣经“一样的东西。作者好像叫Marina什么,现在找不到了。。)
什么是经验性的结论,我举不出例子来。
(b) 不要写无法量化的结论
有的时候自己在某一领域做了一点研究,但是找不到一个metrics能够度量这个结论的可行范围。这就是一个不完备的结论。写出来审稿人也会问”你这个东西没有精确定义呀~ 没法衡量呀~ 我们不知道它的可行范围和threshold在哪里呀~ “等等。所以最好在初建理论框架的时候就把度量自己结论的metrics找好,不然这种研究做了也是浪费时间,没法写出来。
(c) 太显而易见的结论可能不算创新
对于什么研究算创新,每个领域应该会有大概的共识。举个例子,比如闭路电视经常会拍到小偷。有一些检测方法可以自动检测到有没有人破坏门窗或者偷盗。但是由于大多数行为都是在夜间进行的,图像太黑不好检测。这时候A君提出一个理论,说把图像调亮再检测就能检测出来了(就是举个例子,其实原理没那么简单),于是写了篇论文投了。这可能就属于显而易见的结论。除非结论背后有被人忽视的更深层次的理论支持,否则这玩意儿可能没啥用处。
(d) 自己不清楚的东西不要写(废话)
写自己不是很清楚或者不知道怎么解释或者比较含糊的东西是大忌。 这种内容不但占篇幅,还会给论文减分。比如上面我写的3a里,我不能清楚的阐述”经验性的内容“指的是什么还往上写,这就是在给审稿人抓把柄的机会。
4. 假设审稿人什么都不懂
知道了论文具体要突出哪些内容以后,下面一个问题是怎么写,才能突出这些内容。解释的内容要适当。我们组的博后,现在西湖大学的教授给我强调过两次:写论文之前,要假设审稿人什么都不懂。 当然这意思不是说每个专业词汇都需要解释,而是把每一个引入的概念原理,尤其是对自己研究有帮助部分,要讲清楚。比如我们做研究需要用到Laplacian pyramid,然后把金字塔做了变换。在这部分当中,每层图片的频率和大小都会变化。那就需要讲到原本Laplacian pyramid的功能和结构是什么样的,以一种什么样的方式把原本的金字塔的哪一层做了什么样的变换,结果的到的新的金字塔形状和新的频率是什么样的。这样清楚明白的把核心内容一步步的表达给审稿人,才能让对方理解自己研究的用意。如果有直观的展示图片,涉及到可能会导致误解的地方也要解释。比如高斯底层的分辨率很小(是以2^n次方的方式指数型递减的),为了能看清楚图片的内容就要放大。那么为了避免产生误解就要提一句:那些模糊的图像都是以2^n倍数放大到原始图像的,这样方面看清内容。不然审稿人一看,诶?这层图像不是应该指数递减吗?怎么看起来和原图一样大?是不是做了什么处理呀??等等。
5. 严谨,杜绝想象力
科技论文不同于散文,只要把研究叙述清楚就可以了。不需要为了追求文字的美感而牺牲文章的严谨性。严谨性至少体现在两个方面:措词和数学符号。
(a) 用词准确
一般一个领域的研究,除非是开山之作,不然都会有比较充足的前车之鉴。在大量看过前人写的东西以后,应该对形容比如某一个实体或一种功能用什么样的词汇有一些认识。保持这种业内人事所达成的共识会有利于让自己的文章被别人所接受。而不能像写散文那样用一些似是而非的词汇。
举个例子,如果我想表达“拉普拉斯金字塔把一张图片分解成由超参数k控制的多个频层。”
"Laplacian pyramid decomposes an image into multiple frequency layers controlled by the hyperparameter k."
"Laplacian pyramid turns an image into multiple frequency layers controlled by hyperparameter k.“
一般来说第一句更好一点,因为decompose明显比turn表达的意思要更精确,因为读者不知道是怎么turn的。是复制出很多层?还是叠加出很多层? decompose这个词虽然扼杀了想象力,但是突出了严谨性,这才是论文。 吴军在《硅谷来信》里讲过写论文最忌讳的4个动词,分别是: make, have, do,,,,最后一个我给忘了(捂脸)。原因是这些词的意思很宽泛,导致这种写法一来容易产生歧义,二来显得作者不专业。
(b) 符号统一,绝不能出错
论文里的符号,尤其是数学符号,必须统一且贯穿全文包括流程图里的表示和图片的caption,不然直接被判死刑。换一个符号就不再是原本表述的意思了。这里包括论文里起符号作用的专有名词的大小写,连词杠,都要严格统一。