您的位置 首页 百科

如何写论文

工欲善其事必先利其器!这是CVHub公众号的第十六篇原创文章,也是《学术小白也能看懂的学术进阶专栏》(计算机视觉方向)的第十六篇文章,同样是学术进阶专栏进阶篇的第七篇文章!
引言
首先,在进入正式的论文写作之前,我们应该尝试多问自己几个问题:
待解决的任务是什么?
解决这个任务有什么意义?
这个任务还存在哪些未解决或者待改善的难点?
前人是如何解决这个任务的?
我比前人的方法好在哪里?
我的方法又为什么会比别人好?
所提出的方法取得了什么效果?

其次,在对上述问题有了清晰的认知后,进一步地,我们需要明确一篇文献通常由哪几部分组成(如果还不清楚的可以移步至《一篇文献的结构与阅读》)。
Step 1:
摘要(粗写,帮助自己明确整体的框架)
方法(有图的先放图,然后按图描述)
实验(实验的提出是为了论证所提出的观点,所以实验的设计一定要有针对性,要能够说明问题所在,一般也是按照先图后表的顺序,按图表去描述)
Step 2:
介绍(一般是按照时间线去收集每个阶段具有代表性的工作,有些也可以按照版块内容去展开,然后对每一个工作的贡献用1-2句话去总结)
相关工作(介绍下与此工作相关的一些内容,可以是前人在这个任务上所尝试的方法总结以及与你创新点相关的一些技术总结等)
摘要(细写,通过对前文的撰写,此时也会更明确整篇文章的中心主旨)
关键词总结(凝练出3-8个关键词)
结论(总结你这篇工作的贡献点以及对未来的一些展望或想法)
标题(标题一定是高度概况你所要做的事情以及你所提出的核心创新点)
Step 3:
通读一遍(对不合理的地方,如实验设计不当、方法描述不当、描述不当等地方进行大改)
快速过一遍(看下各个章节之间、章节内各小节中上下文的逻辑衔接是否恰当等)
细读一遍(核对下错别字、图表序号章节是否一一对应、参考文献引用是否正确等)
最后,我们将以《Deep Residual Learning for Image Recognition》这篇经典文献来进行讲解。大家可以下载原论文进行对照此文加深理解,本文将直接按原文顺序进行讲解,帮助大家剖析文章的逻辑,强化大家的写作思维。
写作
摘要(Abstract)Q:待解决的任务是什么?A:训练更深层的网络。
Q:解决这个任务有什么意义?
A:使网络更容易优化,并且可以显著增加网络的深度来提高准确性。
Q:这个任务还存在哪些未解决或者待改善的难点?
A:直接加深网络的深度会造成网络出现“退化”现象。
Q:前人是如何解决这个任务的?
A:未有人解决。
Q:我比前人的方法好在哪里?
A:比当前的SOTA模型(VGG)深8倍但仍然具有较低的复杂度
Q:所提出的方法取得了什么效果?
A:在各个分类、检测和分割任务上均取得了第一名的成绩。
介绍(Introduction)Part 1:介绍下任务的背景和意义。如本文要解决的一个任务便是解决如何更好更快地训练更深层的网络。所以首先要介绍的应该是加深网络的深度有什么用?
Part 2:介绍下任务的难点和挑战。如本文任务中存在的一个难点便是网络的深度在加大到一定程度上时会引起退化问题。
Part 3:介绍下现有方法是如何解决的。如本文中直接就点名了目前没有更好的解决方案。如果不是本质上创新的话,这里就应该阐述下前人是如何解决这些问题的,然后在分析下他们的不足之处。
Part 4:介绍下自己是如何解决的。如本文中通过引入残差连接来解决网络层数过深而引发的退化问题。假设输入为 x,映射函数(卷积)为 F(·),输出函数为 H(·)。那么常规的方法所得到的结果为 H(x) = F(x);而引入残差后便得到 H(x) = F(x) + x.
Part 5:介绍下如什么这样做是有效的。可以发现,x即为上一层的输出,当x为0时(一般不可能全为0),这一层等价于原始的输出。即表明这一层并没有学习到任何新的特征,因此我们也将这一层称为恒等映射。而当x不为0时,则表示为当前的输出引入前面所学习到的一些特征,从而构建出更复杂的特征。这样一来,就算是将网络堆叠地很深,“信息”也能随着前向传播顺利的流动到深层并通过反向传播进行梯度更新,从而获得更加抽象的表达方式,取得一个更加好的结果。
Part 6:介绍下这样做的好处是什么。通过引入残差,可以在不额外增加参数也不增加计算复杂度的情况下,优化了深度神经网络的训练。
Part 7:介绍下所提出的方法取得了什么效果。如本文实验证明所提出的方法在ImageNet分类数据集中获得了很好的结果。最后,较深的层数也表明在其它识别任务中也有较好的泛化性能,包括ILSVRC&COCO 2015竞赛中的ImageNet检测和定位以及COCO检测和COCO分割冠军。
相关工作(Related work)Part 1:残差表示。由于本文的核心的创新关键点为“残差映射”,因此首先介绍的便是关于残差表示的一些相关工作。主要论述的观点是良好的重构或预处理操作可以用于简化优化,以此来支撑所提出的论点。
Part 2:快捷连接。这一部分介绍的是快捷连接在某些应用场景下的一些相关工作。首先讲一下早期工作通过引入跳层连接来解决梯度消失和爆炸的问题。其次,着重分析了下与本文工作类似的相关工作,阐述两个方法之间的区别点和自身的优势体现在哪里。
方法(Method)Part 1:残差学习。第一部分集中论述了下残差网络为什么能避免网络的退化。然后点明残差映射起始相当于进行一次重构,即对输入做一个预处理操作,使网络能够更好的学习。
Part 2:快捷恒等映射。第二部分简要介绍了下残差块的数学公式,然后描述下引入残差所带来的的好处。比如引入快捷连接既没有引入额外的参数又没有增加计算复杂度。
Part 3:网络结构。本文采用的是“分总”的形式,即先讲子模块再讲整体网络架构。作者在这里主要给出了两种网络(普通网络和残差网络)并比两者做了一个比较分析。
Part 4:实现细节。
实验(Experiment)Part 1:消融实验普通网络
设计思路:验证增加网络深度对性能的整体影响。
实验结论:深层的网络会引起训练误差的增加,即网络过深会出现退化现象。
残差网络
设计思路:评估引入残差机制后对性能的整体影响。
实验结论:一方面,在引入快捷连接之后,加大网络深度会显著的改善网络的性能,这说明深度网络优化的问题并不是由梯度消失/爆炸所引起的。另一方面,也加快了网络的收敛,说明快捷连接有利于网络的优化。
恒等映射 vs. 投影快捷连接
设计思路:前面的实验表面了Shortcut有助于训练且不增加额外的参数。作者这里设计了三种方案来探讨哪种快捷连接方式是最好的。
实验结论:无论哪种方案均比单纯的原始网络效果要好。其中C方案的效果要好于B方案,其次是方案A,这可能是因为方案C引入了额外的参数。但为了减少内存/时间复杂度和模型大小,后续实验将不再采用C方案。
更深的瓶颈层
设计思路:前面已经验证了34层网络的效果,现在要验证下网络对于更深层神经网络训练的效果,如逐步增加到50/101/152层。为此,作者这里还特别设计了一个瓶颈层,以进一步地降低网络的参数量和计算量。
实验结论:增加网络的深度能够显著的提高模型的准确性。
Part 2:对比实验
设计思路:选取一些具有代表性的方法进行比较。在与其他方法比较时,我们可以选取自己最好的模型,比如作者这里最好的便是ResNet152,然后选取最能体现差距的指标来展现结果,比如这里仅给出了top-5错误率的比较,从而来凸显我们所提出方法的优势。
Part 3:扩展实验
设计思路:实验部分后面几节的内容主要是要验证所提出方法的一个泛化性能。第一点是验证在同一个子领域的不同任务(数据集)上的一个泛化性能。第二点是验证在不同子领域上的一个泛化性能(检测和分割)。实验结果也表明也提出的方法是具有普适性的。
总结通过以上的案列分析,我们对一篇文章的写作框架有了一个初步的认知。但是,写好一篇论文不仅需要对自己的方法知根知底,而且还需要掌握一定的写作经验、熟悉论文的整体框架以及写文章的一些技巧(套路)。比如对于一些核心的部分我们就应该重点突出,对于一些无关痛痒但又有必要写上去的部分我们就应该简单带过等。后续我们也会推出一系列的文章解读和专题总结来帮助大家进一步的提升。
交流渠道微信群(长按加入):

版权声明