这应该也是最后一期了,主要讲一下在找到了自己的idea之后,如何去写一篇属于自己的论文。至于到底如何做工业落地实践,这个我自己还在摸索阶段,按下不表了就。
Experiments
和阅读论文的顺序以及侧重不同,在做一篇论文工作的时候,首先第一个就是要根据idea,做出一个有说服力的实验,如果你的idea侧重加速,就得比较当前的加速模型,侧重性能就要刷sota,侧重做一个benchmark就得做多角度的实验。在实验中证明有效性了才能开始论文的其他部分,或者说论文的其他部分,是依据论文的实验结果来变化的。
这里有几个点,一个是,消融实验,事实上在做论文的时候,别人不知道,我大部分时候都是反着做的,从base一点点加上去,最后性能自己觉得合格了,开始全面的对比实验,所以消融基本上在方法准备好的瞬间就做完了。还有一个就是,会议一般不要求比较当年的工作,但是去年的是一定要比的,之前有遇到过用前两年的一个基线做baseline,赶dl就直接copy的原论文里一些对比模型结果,结果被审稿人疯狂diss,没和最近的比较。AI这块对时效性的要求还挺高的,得尤其注意。
Introduction
在写intro的时候需要尤其注意的就是句子之间的逻辑递进关系,你的实验已经得到了一个好的结果,这时候应该存在一些改动,那需要做的就是来给这些改动找一个理由,为什么要做这些改动,你当然不能说自己是试验出来的,虽然确实很有可能是经过了大量的实验找到了一个最能解决这个问题的方式。换而言之,你需要思考,到底你的改动为什么生效,它具体解决了你做的任务的一个什么问题,相比于之前的工作,优势在哪里。理清楚了这些之后,你的Introduction的基本脉络就完成了。
基本的脉络结构即为:问题的背景(你准备做的工作)-要解决的问题之所以没有被完美的解决,是因为存在哪些问题?- 针对这些问题你提出了什么解决办法? - 具体写一下你的解决办法。
这里面的脉络其实是个科学素养以及科研直觉问题,对于小白来说,没有所谓的科学素养以及直觉可言,那就需要倒果为因,先试验出一个有效的解决方案。因为如果按照正方向思考,如果你思考了问题,提出了解决问题的方法,然后试验结果并没有印证你的实验,那带来的挫败感会非常强。但是做的多了,看的多了,培养了一个基本的的科学素养以及直觉之后,我建议还是正向进行思考,因为很多时候不一定是你想错了,而是同样的idea,代码实现等等方式,会导致不同的结果,你需要根据实验结果,在自己的idea基础上做修正。这对于小白来说可能有些过于难了。
Method
Method则是对于自己方案的诠释,即具体的细节是怎么做的,对于一些pipeline的工作来说,可能还需要提供伪代码。本身没有什么好说的,根据你的方法具体怎么实现来写,可能唯一需要注意的是,这里的method需要符合会议的调性,例如ICLR,ICML,NIPS这些机器学习的会议,比较看重理论推导,你的method需要写的非常详细以及严谨,实验部分可以略微少一点点,最好说推到写不下,然后附录再丢个2页理论推导,那这些会议的审稿人会觉得你的工作非常的科学。而CVPR,ECCV,ICCV这些CV的会议,比较看重你的实验结果,对于method可以少写一点,需要把更多的篇幅放在实验上。你需要做充分的对比实验,消融实验,各种比较方式,证明你方法的卓越性。
Others
其他的relate-work,conclusion这些内容,就不说了,比较简单,我自己看论文,包括审稿的时候,说实话都不会怎么仔细看这些部分。我也从来没遇到过有审稿人说这两个部分会有什么问题的。至于abstract,说白了其实就是精简化的Introduction,把引言的内容浓缩一下基本就是abstract了。到底怎么精简,只能说多看多写多练。