点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本文转自|机器学习算法工程师
前言
论文阅读一直是科研过程中至关重要的一环,如何收集论文,快速选取和课题匹配的论文,高效地把握论文核心思想是每个科研人员的必备素养,也是每个科研萌新(硕士研究生)苦恼的问题。
台湾国立清华大学的彭明辉教授曾出版过一份《研究生手册》,其中关于论文阅读的内容详实精彩,将其整理如下,希望对大家有所帮助。
Paper从哪来
询问导师和同门师兄的意见,因为他们在这个领域比你经验丰富,可以推荐经典论文给你。
在Google Scholar上运用合适的关键词收集30篇左右论文(高引用量论文优先收集)。
高引论文的参考文献。
Paper怎么读
期刊论文和大学的课本截然不同。大学的课本是寻次渐进地从最基本的知识背景逐步交代出整套系统知识,只要你逐页读下去,就可以整本都读懂。但是期刊论文是没头没尾的十几页文献,只交代最核心的创意,并援引许多其它论文的研究成果(但只注明文献出处,而完全没有交代其内容)。因此,要读懂一篇论文,一定要同时读懂数篇或十数篇被援引的其它论文。偏偏,这十几篇被援引的论文又各自援引十数篇其它论文。因此,相对于大学部的教科书而言,期刊论文是一个极端没有系统的知识,必须要靠读者自己从几十篇论文中撷取出相关的片段,自己组织成一个有系统的知识,然后才有办法开始阅读与吸收。要培养出这种自己组织知识的能力,需要在学校靠着大量而持续的时间去摸索、体会,而不可能只利用业余的零星时间去培养。因此,一个大学毕业后就不再念研究所的学生,不管他在毕业生和大学毕业生最大的差别,就是:学士只学习过吸收系统知识的能力(也就是读别人整理、组织好的知识,典型的就是课本);但硕士则学习过自己从无组织的知识中检索、筛选、组织知识的能力。
你必须要有能力逐篇分析出所有相关期刊论文的优点与缺点,以及自己的研究成果的优点与缺点,然后再拿他们来做比较,总结出你的论文的优点和缺点(限制)。但是,好的期刊论文往往是国外著名学府的名师和一流的博士生共同的研究成果,假如你要在锁定的应用场域上「打败」他们,突出自己的优点,这基本上是一个极端困难的挑战。即使只是要找出他们的缺点,都已经是一个相当困难的工作了。一个大学毕业生,四年下来都是假定「课本是对的」这样地学下来的,从来没有学习如何分析课本知识的优缺点,也就是「只有理解的能力,而没有批判的能力」。硕士生则必须要有「对一切既有进行精确批判」的能力。但是,这个批判并非个人好恶或情绪化的批判,而是真的找得到充分理由去支持的批判。这个批判的能力,让你有能力自己找到自己的优、缺点,因此也有机会自己精益求精。
一般来讲,好的期刊论文有较多的创意。虽然读起来较累,但收获较多而深入,因此比较值得花心思去分析。读论文之前,参考SCI Impact Factor 及导师,学长的意见是必要的。
一篇期刊论文,主要分成三个部分。
(1)Abstract:
说明这篇论文的主要贡献、方法特色与主要内容。必须要学会只看 Abstract 和Introduction便可以判断出这篇论文的重点和你的研究有没有直接关连,从而决定要不要把它给读完。假如你有能力每三十篇论文只根据摘要和简介便能筛选出其中最密切相关的五篇论文,你就比别人的效率高五倍以上。以后不管是做事或做学术研究,都比别人有能力从更广泛的文献中挑出最值得参考的资料。
(2)Introduction:
Introduction 的功能是介绍问题的背景和起源,交代前人在这个题目上已经有过的主要贡献,说清楚前人留下来的问题,以及在这个背景下这篇论文的想解决的问题和它的意义。对初学的学生而言,从这里可以了解以前研究的概况。通常我会建议初学的学生,对你的题目不熟时,先把跟你题目可能相关的论文收集个 30~40篇,每篇都只读Abstract 和 Introduction,而不要读 Main Body(本文),只在必要时稍微参考一下后面的 Illustrative examples和 Conclusions,直到你能回答下面这四个问题:
(2A)在这领域内最常被引述的方法有哪些?
(2B)这些方法可以分成哪些主要派别?
(2C)每个派别的主要特色(含优点和缺点)是什么?
(2D)这个领域内大家认为重要的关键问题有哪些?有哪些特性是大家重视的优点?有哪些特性是大家在意的缺点?这些优点与缺点通常在哪些应用场合时会比较被重视?在哪些应用场合时比较不会被重视?
问题是,你怎么去找到这最初的30~40篇论文?有一种期刊论文叫做「review paper」,专门在一个题目下面整理出所有相关的论文,并且做简单的回顾。你可以在搜寻 Compendex 时在 keywords 中加一个「review」而筛选出这类论文。然后从相关的数篇review paper 开始,从中根据 title 与 Abstract 找出你认为跟你研究题目较相关的30~40篇论文。
通常只要你反复读过该领域内30~40篇论文的Abstract 和 Introduction,你就应该可以从Introduction的评论中回答(2A)和(2B)这两个问题。尤其要记得,当你阅读的目的是要回答(2A)和(2B)这两个问题时,你一定要先挑那些 Introduction写得比较有观念的论文念(很多论文的Introduction 写得像流水帐,没有观念,这种论文刚开始时不要去读它)。假如你读过假如30~40篇论文的 Abstract 和 Introduction之后,还是回答不了(2C),先做下述的工作。
你先根据(2A)的答案,把这领域内最常被引述的论文找齐,再把他们根据(2B)的答案分成派别,每个派别按日期先后次序排好。然后,你每次只重新读一派的 Abstract 和 Introduction(必要时简略参考内文,但目的只是读懂Introduction内与这派有关的陈述,而不需要真的看懂所有内文),照日期先后读 ,读的时候只企图回答一个问题:这一派的创意与主要诉求是什么?这样,你逐派逐派地把每一派的Abstract 和 Introduction 给读完,总结出这一派主要的诉求 、方法特色和优点(每一篇论文都会说出自己的优点,仔细读就不会漏掉)。
其次,你再把这些论文拿出来,但是只读Introduction,认真回答下述问题:「每篇论文对其它派别有什么批评?」然后你把读到的重点逐一记录到各派别的「缺点」栏内。
通过以上程序,你就应该可以掌握到(2A)、(2B)、和(2C)三个问题的答案。这时你对该领域内主要方法、文献之间的关系算是相当熟捻了,但是你还是只仔细读完Abstract 和 Introduction而已,内文则只是笼统读过。
这时候,你已经掌握到这领域主要的论文,你可以用这些论文测试看看你用来搜寻这领域论文的 keywords 到底恰不恰当,并且用修正过的 keywords 再搜寻一次论文,把这领域的主要文献补齐,也把原来30~40篇论文中后来发现关系较远的论文给筛选掉,只保留大概20篇左右确定跟你关系较近的文献。如果有把握,可以甚至删除一两个你不想用的派别(要有充分的理由),只保留两、三个派别(也要有充分的理由)继续做完以下工作。
然后你应该利用(2C)的答案,再进一步回答一个问题(2D):「这个领域内大家认为重要的关键问题有哪些?有哪些特性是大家重视的优点?有哪些特性是大家在意的缺点?这些优点与缺点通常在哪些应用场合时会比较被重视?在哪些应用场合时比较不会被重视?」然后,你就可以整理出这个领域(研究题目)主要的应用场合,以及这些应用场合上该注意的事项。
最后,在你真正开始念论文的 main body 之前,你应该要先根据(2A)和(2C的答案,把各派别内的论文整理在同一个档案夹里,并照时间先后次序排好。然后依照这些派别与你的研究方向的关系远近,一个派别一个派别地逐一把各派一次念完一派的 main bodies。
(3)Main body(含simulation and/or experimental examples):
在你第一次有系统地念某派别的论文 main bodies 时,你只需要念懂:
(3A)这篇论文的主要假设是什么(在什么条件下它是有效的),并且评估一下这些假设在现实条件下有多容易(或多难)成立。愈难成立的假设,愈不好用,参考价值也愈低。
(3B)在这些假设下,这篇论文主要有什么好处。
(3C)这些好处主要表现在哪些公式的哪些项目的简化上。至于整篇论文详细的推导过程,你不需要懂。除了三、五个关键的公式(最后在应用上要使用的公式,你可以从这里评估出这个方法使用上的方便程度或计算效率,以及在非理想情境下这些公式使用起来的可靠度或稳定性)之外,其它公式都不懂也没关系,公式之间的恒等式推导过程可以完全略过去。假如你要看公式,重点是看公式推导过程中引入的假设条件,而不是恒等式的转换。
(3D)这一派主要的缺点有哪些。
但是,在你开始根据前述问题念论文之前,你应该先把这派别所有的论文都拿出来,逐篇粗略地浏览过去(不要勉强自己每篇或每行都弄到懂,而是轻松地读,能懂就懂,不懂就不懂),从中挑出容易念懂的 papers,以及经常被引述的论文。然后把这些论文按照时间先后次序依序念下去。记得:你念的时候只要回答(3A)、( 3B)、(3C)三个问题就好,不要念太细。
这样念完以后,你应该把这一派的主要发展过程,主要假设、主要理论依据、以及主要的成果做一个完整的整理。其次,你还要在根据(2D)的答案以及这一派的主要假设,进一步回答下一个问题:(3D)这一派主要的缺点有哪些。最后,根据( 3A)、(3B)、(3C)、(3D)的答案综合整理出:这一派最适合什么时候使用,最不适合什么场合使用。
当你是生手的时候,你要评估一个方法的优缺点时,往往必须要参考它Examples。但是,要记得:老练的论文写作高手会故意只 present 成功的案例而遮掩失败的案例。所以,simulation examples and/or experiments 很棒不一定表示这方法真的很好。你必须要回到这个方法的基本假设上去,以及他在应用时所使用的主要公式(resultant equations)去,凭自己的思考能力, 并且参考(2C)和(2D)的答案,自己问问看:当某某假设在某些实用场合上无法成立时,这个方法会不会出什么状况?猜一猜,预测一下这个方法应该会在哪些条件下(应用场合)表现优异,又会在哪些条件下(应用场合)出状况?根据这个猜测再检验一次simulation examples and/or experiments,看它的长处与短处是不是确实在这些examples 中充分被检验,且充分表现出来。
那么,你什么时候才需要弄懂一篇论文所有的恒等式推导过程,或者把整篇论文细细读完?NEVER!你只需要把确定会用到的部分给完全搞懂就好,不确定会不会用到的部分,只需要了解它主要的点子就够了。
硕士生和大学生最主要的差别:大学生读什么都必须要从头到尾都懂,硕士生只需要懂他用得着的部分就好了!大学生因为面对的知识是有固定的范围,所以他那样念。硕士生面对的知识是没有范围的,因此他只需要懂他所需要的细腻度就够了。硕士生必须学会选择性的阅读,而且必须锻炼出他选择时的准确度以及选择的速度,不要浪费时间在学用不着的细节知识!多吸收「点子」比较重要,而不是细部的知识。
大学毕业后(不管是念硕、博士或工作),可以参考的资料都没有秩序地交错成一团,而且永远都读不完。用大学生的心态读书,结果一定时间永远不够用。因此,每次读论文都一定要带着问题去读,每次读的时候都只是图回答你要回答的问题。因此,一定是选择性地阅读,一定要逐渐由粗而细地一层一层去了解。上面所规划的读论文的次序,就是由粗而细,每读完一轮,你对这问题的知识就增加一层。根据这一层知识就可以问出下一层更细致的问题,再根据这些更细致的问题去重读,就可以理解到更多的内容。因此,一定是一整批一起读懂到某个层次,而不是逐篇逐篇地整篇一次读懂。
这样读还有一个好处:第一轮读完后,可以根据第一轮所获得的知识判断出哪些论文与你的议题不相关,不相关的就不需要再读下去了。这样才可以从广泛的论文里逐层准确地筛选出你真正非懂不可的部分。不要读不会用到的东西,白费的力气必须被极小化!其实,绝大部分论文都只需要了解它的主要观念(这往往比较容易),而不需要了解它的详细推导过程(这反而比较费时)。
其次,一整批一起读还有一个好处:同一派的观念,有的作者说得较易懂,有的说得不清楚。整批读略过一次之后,就可以规划出一个你以为比较容易懂的阅读次序,而不要硬碰硬地在那里撞墙壁。你可以从甲论文帮你弄懂以论文的一个段落,没人说读懂甲论文只能靠甲论文的信息。所以,整批阅读很像在玩跳棋,你要去规划出你自己阅读时的「最省力路径」。
大学部学生读东西一定要循规蹈矩,你还没修过机械视觉相关课程之前可能也只好循规蹈矩地逐行去念。但是一旦修过机械视觉相关课程,许多论文中没被交代的段落你也已经可以有一些属于你的想象(虽然有可能猜错,尤其刚开始时经常猜错,但没关系,下面详述)。这些想象往往补足论文跳跃处最快速的解决方案。其实,一个大学毕业生所学已经很多了,对许多是都可以有一个不太离谱的想象能力。但是大部分学生却根本不敢去想象。我读论文远比学生快,分析远比学生深入,主要的是我敢想象与猜测,而且多年训练下来想象与猜测的准确度很高。所以,许多论文我根本不是「读懂」的,而是「猜对」了!
假如猜错了怎么办?不用怕!猜完一后要根据你的猜测在论文里找证据,用以判断你的猜测对不对。猜对了,就用你的猜测(其实是你的推理架构)去吸收作者的资讯与创意(这会比从头硬生生地去迁就作者的思路轻松而容易);猜错了,论文理会有一些信息告诉你说你错了,而且因为猜错所以你读到对的答案时反而印象更深刻。
Paper如何写
论文的主要内容是叙述一套方法在一个特定场合中的应用。
这套方法必须要有所创新或突破,并因而对学术界有所贡献。因此,它或者是解决既有问题的新方法,或者是既有方法的新应用,或者是以一个新的方法开启一整片新的应用领域。
在论文中,你必须要有能力提出足够的证据来让读者信服说:针对这个应 用场合,你所提出来的方法确实有比文献中一切既有方法更优越之处。
此外,你必须要能清楚指出这个方法在应用上的限制,并且提出充分证据来说服读者:任何应用场合,只要能够满足你所提出来的假设(前提)条件,你的方法就一定适用,而且你所描述的优点就一定会存在。
你还必须要在论文中清楚指出这个方法的限制和可能的缺点(相对于其它文献上的既有方法,或者在其它应用场合里)
行文风格上,它是一篇论证严谨,逻辑关系清晰,而且结构有条理的专业论述。也就是说,在叙述你的方法的过程,你必须要清清楚楚地交代这个方法的应用程序以及所有仿真或实验结果的过程,使得这个专业领域内的任何读者,都有办法根据你的描述,在他的实验室下复制出你的研究成果,以便确定你的结论确实是可以「在任何时间、任何地点、任何人」都具有可重复性(可重复性是「科学」的根本要求)。
而且,你对这个方法的每一个步骤都必须要提供充分的理由说明「为什么非如此不可」。
最后,你的论文必须要在适当位置清楚注明所有和你所研究之题目相关的文献。而且,你必须要记得:只要是和你所研究的问题相关的学术文献(尤其是学术期刊论文),你都有必要全部找出来(如果漏掉就是你的过失),仔细读过。假如你在学位论文口试时,有口试委员指出有一篇既有文献,在你所讨论的问题中处理得比你的方法还好,这就构成你论文无法及格的充分理由。
第2款所谓「对学术界的贡献」,指的是:把你的所有研究成果扣除掉学术界已经发表过的所有成果(不管你实际上有没有参考过,没有参考过也算是你的重大过失),剩下的就是你的贡献。
总结
首先需要通过关键词收集论文,泛读论文来回答下面四个问题:
(A)在这领域内最常被引述的方法有哪些?
(B)这些方法可以分成哪些主要派别?
(C)每个派别的主要特色(含优点和缺点)是什么?
(D)这个领域内大家认为重要的关键问题有哪些?有哪些特性是大家重视的优点?有哪些特性是大家在意的缺点?这些优点与缺点通常在哪些应用场合时会比较被重视?在哪些应用场合时比较不会被重视?
在此基础上,需要细度一些论文,知道这个领域有哪些派别,及其对应的主要方法的优缺点,明白各个方法的适用和不适用场景,并试图提出自己的方法,以突破或改善问题瓶颈。
参考资料
怎样阅读论文(台湾彭明辉):
https://blog.csdn.net/peonyding/article/details/39528381
如何有针对地高效地阅读一篇学术论文?:
https://www.zhihu.com/question/23924014/answer/26470331
END
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~