科技论文的写作质量是决定论文能否被录取的关键因素之一,再酷炫的算法如果写不好也难逃被拒的命运。因此,如何能写出好论文也成为了研究人员必须学习并掌握的一门“技术”。
这次分享主要介绍一下我在论文写作方面的一些经验,写作的核心是讲究逻辑,从文章主题到各个章节,再到各个句子都是有机结合在一起的,并要从读者的角度一一展开,层层深入。本文会按照会议论文各个章节进行逐个探讨和整理,最后会给出一些写作语言上的建议,希望对大家的写作有所帮助。
写论文的最终目标就是要表达自己的思想。
读者阅读论文,最大的期望便是了解和掌握其中的算法,继而将其应用到技术开发中去。所以我们作为作者需要做的就是将自己最核心的思想传递出去,提高自身的影响力,“汇编好算法,卖与你我他”。
从读者角度建构文章,坚持客户第一
写论文之前我们必须要牢记一个点:从读者出发的角度去写作。很多新作者都会犯一个错误,当然我也犯过,就是“站在作者自己的角度去写文章”。作为作者自己,已经对自己的算法了如指掌,整个算法从0到100的演变过程我们都非常清楚,而读者则是从0开始了解这个算法。如果不考虑读者视角,会导致作者和读者之间出现信息不对称,我们写下1,5,3,那读者就只能看到1,5,3,无法完整并有效地跟随我们的论文内容,“障碍”就无形挡在读者之前了。
因此,我们必须站在读者的角度去写我们的文章,要从读者的角度从0开始阐述并展示我们的算法。其实,写文章和做产品是一样的,都要从客户出发,做到“客户第一”。
审稿人是第一位读者
技术论文真正意义上的第一个读者是审稿人,他相对更加严肃,甚至是比较苛刻的。正所谓知己知彼,百战不殆,我们只有先了解了审稿人是怎么工作的,才能更好的让自己的文章脱颖而出。
首先我们要摆正一下我们对审稿人的理解。你认为的审稿人应该是怎样的呢?必是行业翘楚,算法专家,即便我们写得不那么尽如人意,审稿人也会殚精竭虑,仔细推敲琢磨,从中找到最核心、最有价值的东西,给我们一个Border line或以上的分数,然后在Rebuttal的时候帮我们据理力争?其实不然,很多会议论文的审稿人不一定是对应领域的专家,即便刚好是我们论文方向的专家,也可能没有那么多时间对我们的论文仔细研读,甚至很有可能是在Deadline的最后一两天抓紧时间看一下就给审稿意见了。这种情况下,他们又是如何判定我们的论文是否合格呢?
审稿人基本会先看一下题目和摘要,然后再扫一下Introduction,了解一下我们解决了什么问题,做了什么贡献。然后就会直接翻到论文的实验部分,看看算法是否有效。这一套简短迅速的流程下来,基本就可以确定是否录取。所以很现实的问题是:我们辛辛苦苦写了很久的论文,录还是不录,基本上就取决于这5分钟了。所以我们在写作时必须从审稿人的角度出发,来构建我们的文章。
这里插播一段我自己的小经历吧。我刚开始写论文的时候,也是特别烂。基本上以自我为中心,论文写出来换个封面说是实验报告都不为过。这导致整个论文基本没有什么逻辑可言,通篇都是很复杂的长句,文章前后也会有一些出入,甚至是互相矛盾的地方。为什么会这样呢?归根结底还是自己的心态没有调整好。初次写文章,先想的是怎么把字数凑够;初稿写完后,又沉不下心来修改,不能一句句地去理清文章的逻辑顺序以及各个板块之间的联系。在这种心态下写作,总是会不免带着太多的“已知”去读和修改论文,脑补了太多细节,看不到文章的问题。所以我们在以后的写作中一定要清空自己,从读者的角度去建构整篇文章。
写作并不是一种玄学,而是一种技能。只要我们多加练习,还是可以掌握其中的一些写作技巧的,帮助大家在写作时事半功倍。
论文写作是作者个人逻辑的体现
论文写作最核心的两个字:逻辑。题目和章节,章节和段落,段落与句子,句子与词之间等全部都是勾连在一起的,是一个有机整体。那我们该如何理清并加强各个部分之间的关系呢?
如上图所示,我们设计的算法从不同角度切入是有不同的效果和呈现方式的,核心算法从哪个角度切入更能体现我们的设计,在很大程度上决定了读者能否理解我们的设计思路,切入角度也显示了我们算法的覆盖Scope,进而影响到论文的影响力。
其次是整体布局,我们在论文写作时,就要有大局意识,对论文的整体布局有一个大致的设想,通过合理布局论文各部分之间的逻辑是非常严密的。作为一个有机整体,论文中出现的定义也要完全一致,只有前面已经定义过的东西,后面才可以直接引用。最后一点是充分论证,这一点我想大家都非常熟悉了,这里就不多做赘述了。
我们一起看看上面这篇论文整体配置,不用看文字,就看布局。论文有一些图片来辅助理解,也有一些算法的呈现,提升一些深度;实验结果有图像、表格,还有分析,整体的配置是比较完善的。第一印象就会觉得这篇论文还是蛮靠谱的。我们自己写文章时,也可以这样铺开来检查一下,是不是有一些例子没有补充上去,这一块如果使用图表呈现会不会更清晰,文章各部分之间的逻辑是否顺畅等。
论文的主要架构
在对技术论文有了一个大致的了解后,就可以着手处理文章中的细节了。我们一般可以将会议论文的各部分按如上结构进行分解,每一块都有一些最基本的准则,我总结了一些实用的方法和技巧,大家后续写论文的时候可以尝试用起来。
我们看到:论文可以大致分为题目、摘要、绪论、思想、细节、相关工作、实验、结论和未来方向这几个部分。括号内是各部分在文章中的占比是多少,可能会有多少是读者关注。了解了读者对各部分的关注程度,我们就可以更好在写作过程中分配自己的精力。
题目——Title
在题目上最重要的就是将自己的核心思想充分并准确的表述清楚。用简洁的词充分表达核心思想。我们一起来看2个例子,大家就会比较有感触。
我们从题目上可以看到这篇文章主要是在讲“条件随机场”,那条件随机这方面的内容我们都已经很熟悉了,继续往下看,哦~原来在讲概率模型的事情,是对Segmentation 和Labeling data的一个概率模型。这样我们就可以从标题上清晰地了解到这篇文章要做什么东西,提出了什么模型。
上图这个标题也是很有借鉴意义。这个是一个很好的切入角度和论文影响力的例子。Forest reranking这个词直接限定了这篇文章的影响力(覆盖程度):所有的reranking我的算法都能用。Forest一词在NLP有比较流行,就是超图(hyper-graph),这样两个词让读者一下了解论文做了什么核心创新。再往后看,读者就知道论文的实验是判别式的句法分析任务上做了验证。“with non-local feature”又表明我的算法可以加全局特征,这又是一个比传统方法强的地方。所以这个题目既有高度,又展示了算法的特点和优势。
摘要——Abstract
摘要难吗?也难也不难,只要掌握了一定的叙述逻辑,摘要就会非常清晰明了。我将摘要分为四部分来写。首先我们需要说明本论文研究的是一个很有意义或很重要的话题。继而引出自己发现的问题,针对该问题我们又是如何解决的。最后再讲一下我们的贡献。我相信大家对解决方案(Solution)和贡献(Contribution)这两部分应该都比较有把握,但对话题(Topic)和问题(State problem)这两部分可能没那么肯定。针对这个问题,我又扩展出2种变体,下面主要讲一下左边和右上这两个框架,右下和左边很接近,这里就不展开了。
第一种,解决方案法(左边)。先说这个有趣或重要的话题,然后说问题,再追加Solution和Contribution。
我们看一下上面这个示例:首先我们在摘要里开门见山地给出重要的或者是有趣的Topic。我在上述这份摘要里先是表明了基于句法翻译模型里,我们选择的这种模型是很有前途的一个方向。继而再去描述好在哪里——因为它和另一个系统模型相比跑得更快。紧接着就是一个转折——虽然这个模型很好,但还是有问题的。那么我要解决的问题是什么呢?因为存在错误传递的问题,所以它是不完善的。那我们是怎么解决这个的问题呢?这里我们只要将核心思想写出来就可以了。不需要非常细致的描写。比如我在这里提炼出的森林(Forest),n-best等关键名词,关键解法就差不多描述清楚了。最后我们再加一些实验数据,验证一下我们的解决方案。
所以,只要记住4句话法则,论文核心思想都基本能交代完整。另外,写摘要最难的地方不在于结构和凑字数,而是寻找切入角度。例如我在这个例子中,为什么要从句法这个角度去写呢?因为只有这样才能保证我针对所有基于句法(Syntax)的模型(比较大的scope),而不是仅仅基于树(Tree)的模型。这样才能更好地扩大算法的影响力。
第二种是,论文加减法(右上)。我们在写论文时注意到一种情况。对于某个问题有多种解决方案,A方案在a方面是比较好的,在b方面是相对不足的。B方案则相反。那我们可以将AB两种方案的优势做叠加,将两种方案结合起来。这样后人在提到这种解决方案的时候就会马上想到你。
加减法的论文摘要里,我们只要在首页上画上+-的图,审稿人就会知道我们是要在以前的工作上做一个改进。这里标注的+++不是简单的1+1=2,而是在实际工作中将优势叠加得到巨大提升。不过这种写法要注意例举该工作不是Trivial的工作,要显式写出整合的难点。
绪论——Introduction
我们在绪论这一部分,主要就是将摘要扩展开来。多说无益,我们一起看看下面的例子:
我们可以看到绪论的部分第一段就提出了一个非常有趣的研究主题,“Become a popular technique”。我们通过阅读绪论可以得知,这个作者是主攻Parsing,但是作者在题目和绪论中并没有很早的将Parsing提出来,是因为作者并不想让自己的判别方法仅仅局限于Parsing一种,而是想在更大范围内使用。这也正如前面在讲题目和摘要时说的,论文写作的切入点和角度,不是说随便找一个就行了,而是要从算法、影响力等多方面思考,将自己工作的高度拔起来。
我们继续看论文,在论文的左下角这块可以看到,作者提到“虽然已经有了很大的成效但仍然是存在问题的”。那么,我们如何阐述这个问题?用数据说话。比如引用已有论文Collins(2000)里提到的N-best list 正确答案的覆盖率远远不够,只有59%,这样才能让审稿人觉得我们言之有理。
文章的右上角第二段,我们可以看到作者提到了第二种方法,虽然这种方法也能解决部分问题,但是仍然存在一些问题是无法解决的。“However”这个转折非常好,让大家一下就把注意力拉回来了。既然这几种方法都不能完全解决问题,我们又该怎么办呢?顺势提出作者自己的解决思路,也就是整篇论文最重要的论述点。在摘要里我们只要提一下解决思路就可以了,但是在绪论里,要着重将我们的Key Idea阐述出来。最后再加一个Contribution,列举一下最好的结果是怎么样的等等。整个绪论就差不多OK了。
上文中的这篇绪论读着非常通顺,背后是用怎样一条线串起来的呢?找准关键角度,提出问题,解决问题。这里需要注意的一点是,我们在绪论中提出的问题,一定都是可以解决的,如果提出了问题,却无法解决问题,会极大地损伤阅读的积极性。其次就是我们前面提到的:切入角度要比较自然,同时还要兼顾影响力范围;观点一定要有数据支撑,善于引用相关数据或论文。最后,在写作中,注意文章前后的衔接、中心论述、数据支撑等,对写作中的每一个词都做到“精挑细选”,做到这些,你的绪论就能达到一个新的高度。
把握住大方向,注意好小细节,自然可以得到一个不错的结果。我在这里给大家补充几个绪论写作时的小Tips:
- 善于举例。当你描述的问题比较复杂、或者解决方案比较繁琐,可以尝试用样例来说明。
- 将你的Contribution直接一条条列出来,而不是让审稿人慢慢去看,帮你总结。
- 论文中尽量少用“Rest of paper is organized as follows”这样的句式结构,一是比较占空间,挤占掉论文其它内容;二是不太会有人关注。最好修改成“Forward references”,具体操作方法就是,我们在描述Idea时,直接将Section列在后面就可以了。
- 在引用相关论文或数据时,如果害怕会遗漏掉某些内容,可以在引用时加上“e.g.”。如果审稿人反馈需要加上某些论文,可以在后面直接加上就可以了。
- 绪论里提到的Background和Related work的区别是什么?我的算法在Background的基础上进行扩展,而Related work则是另一种实现方法的补充(了解即可),所以Related work是可以删掉的,可以让绪论整体更加紧凑流畅。
正文——Myidea
接下来我们进入到论文中最重要的一部分:My idea,我给大家汇总了几个关键词:
1. Somenecessary background work
我们在写作时,基本都要先进行背景工作的介绍,我们这次论述的核心工作是建立在以前的哪个工作上开展的,要让大家先有一个基础的认知。除非大家对这个背景已经非常熟知了。
2. Usingrunning examples
我们在介绍自己的核心算法时,算法语言不足怎么办呢?灵活运用流程图。审稿人可以比较轻易地通过流程图了解我们的算法逻辑,如果审稿人觉得流程图里展示的算法逻辑比较新颖,实操性很强,再去看一眼实验结果比较充分可靠,那大概率就可以录取了。
3. Yourintuition
直觉为先。我们在解决核心问题时,大部分情况下要符合人的正常直觉,这样才能保证审稿人或者读者和我们的思想保持同一频次,不然审稿人在阅读论文时,一直处于一种“自我怀疑”中——这里真的是这样吗?那是很不利于审稿人对我们论文做判断的。
4. Formalizeyour idea
如果我们的论文中提到了一个新观点、新东西,而且这个东西又不是很直接就能解释清楚的,那么我们就需要解一下这个问题。此时我们可以引入一个例子解释该问题,进而得出结论。如果读者对这个Formalization不太理解,就可以通过这个例子来了解,如果他对这个形式化定义并不感兴趣,直接跳过就可以了。这样就不会影响到后续整体论文的阅读。
5. Makeclaims in introduction
我们在介绍中提到的所有观点,在My idea这一块中一定要给出进一步的论证和介绍,证明该观点或者该论点的真实性和可行性。
相关工作——Relatedwork
Give creditto others。我们在相关工作这一部分不是说一味贬低他人,抬高自己,就能让审稿人纳头便拜。反而是我们给予别人更多的赞扬和肯定,就越容易收到其他人的肯定。毕竟,我们谁也无法保证这次的审稿人会不会就是你文章中Rlated work的作者或关联者。
另一个小细节是以前经常会有同学在绪论后直接贴上相关工作,相关工作太多就会扰乱审稿人的思维,形成思维断层。所以我们建议将related work放到experiments之后。
实验——Yoursolution
实验这一部分,对于技术人来说应该是最简单的,毕竟我们的论文就是建立在这一个个实验之上的。但我还是想强调几点:
- 清晰、可视化强的图标信息。能做彩色的图就做彩色,能打上的点就打上标记,一定要清晰可见,可读性强。
- 充足的数据分析。如果论文的Idea比较薄,就可以使用更充分的实验来做补充,不仅仅是让审稿人的观感更好,对于后来的读者也会有更强的借鉴性。
其他辅助方法:
模拟审稿——Mockreview
模拟审稿大部分情况下比较难实现,因为我们不一定每次都能找到“具备审稿能力,有能力又有时间”的那个大佬。所以我们退而求其次,邀请一位对我们此次工作不是特别清楚,但又有一定的论文阅读和鉴赏能力的同学,从读者的角度给我们提出一些意见和建议。
模拟审稿的另一个难点是,我们通常无法无条件接受模拟审稿人提出的所有意见。但是我们还是要尽量接纳,因为审稿人也好,读者也好都是从零开始了解我们所做的工作,模拟审稿人现在提出的问题,就可能是后续审稿人或者读者遇到的问题。我们只有在前期就将这些问题消弭于无形,才能在后续的审稿中顺利过审。
语言和用词——Language and style
Basic stuff
- Submitby the deadline
- Keep to the length restrictions
- Do not narrow the margins
- Do not use 6pt font
- On occasion,supply supporting evidence (e.g.experimengtaldata,or a written-out proof) in an appendix
- Alwaysuse a spell checker
我们在做论文时,严谨求实是最基础的,也是最重要的一个品质,所以不要有那么拼写错误之类的基础问题出现。
Visual structure
- Give strongvisual structure to your paper using
- Sections and sub-sections
- Bullets
- Italics
- Laid-out code
- Find outhow to draw pictures, and use them
我们前面也提到了可视化非常重要,说不准审稿人觉得你的论述非常简单易读,就能给你一个更高一点的分。
Use theactive voice
我们在写论文时经常会不自觉得使用一些弱被动语态,比如"it can be seen that……",我们就要换成"wecan see that……"。因为论文是我们主动做的,而不是被动地跑出来的。被动和主动语态的不同,也会潜移默化影响到审稿人或者读者的观感,这也是我们需要注意起来的。
Use simple,direct language
多用简单句,越简单越好。我们写论文是为了让读者更快地了解我们的算法,而不是在文章里秀我们的长难句写得多么牛。不要拐弯抹角,更不要隐晦说明什么,就直截了当的直给是最好的。当然一个算法、一个方案如何用最简单的语句表述出来,是需要我们在日常工作生活中提前进行积累和练习的。
从读者角度出发
- 逻辑是核心
- 问题切入很重要,角度要自然
- 布局合理,逻辑严密,定义一致,论证充分
- 用好流程图
- 语言
- 主动语态、简单句、用词准确
- 细节
- 图、公示、表格、用词、引用
利用好 “审稿人”
- 投稿前和投稿后
我们在写论文时,可以和上面总结的框架进行一下对照,看看有哪部分是我们还没有注意到的。前面提到的主动语态也好,简单句也好,流程图的绘制也好,都是需要我们在日常生活中提前进行一定的积累和学习的,去谷歌上查一查别人是怎么描述的,去其他论文里看看别人是怎么搭架构的,一定要多看多练。
“我知道了”和“我学会了”是不一样的。期望大家都可以做一个思想上的巨人,行动上的强者。(完)
如何写好一篇技术论文