浅谈“如何快速上手做研究?”

下面我来说一下,写学术论文八步走怎么走?

一、找方向

首先要考虑一下自己的基础是否可以较快速地进入这个领域\这个方向。进入一个方向肯定是要学习很多新的东西,如果之前的基础和研究方向与该方向关联较大,则进入该领域的难度会低一些,反之会高一些。时间就是金钱,难度过高的话,则会耗费大量的时间和精力,有点不合算就是了。

二、找问题

一个方向/领域中有很多经典问题,如果这个方向/领域还比较新的话(处于一个快速发展阶段),还不断会有新问题被提出来。对做优化的人而言,只要搞清楚目标和约束是什么,目标和约束所满足的数学性质有哪些,这些一旦确定,问题也就明确了。

三、查资料

资料主要有:博客,中文专著,中文期刊,中文综述,英文专著,英文综述,普通英文期刊,领域大牛或者青年才俊的主页,顶级英文期刊(会议)等等。

问题明确后,一个主要的工作就是快速搞清楚目前该领域的学者们理论和实践都做到哪里了?一定会涉及到一些难啃的“骨头”——晦涩难懂的数学定理和数学证明。怎么办?

如果英文期刊实在看不下去,没有进展,不妨看看同领域学者的“博客”、英文专著、英文综述。其中博客是很神奇的东西,相对于高质量的期刊和会议论文,其逻辑的严谨性和观点的正确性都非常差。好处是——博客内容一般更倾向于将一些典型的“硬骨头”(最常见最难理解的理论部分,大部分初学者的疑难杂症)以口语化,浅显易懂的形势说清楚。坏处是——错误率非常高,如果自己功力不够深厚,又没去验证博主的论证细节,很容易被带偏。所以看博客可以帮我们抓住“疑难杂症”(理论硬骨头)的关键层面,借助于这个理解,再到提出这个理论的原期刊论文或者英文专著去验证正确性,很多时候,就可以突破“疑难杂症”,不至于逗留太久。英文专著和英文综述一般涉及的内容都非常多,但是都讲得非常浅。你可以将其视作一个“菜单”,找几道自己感兴趣的“菜”,然后再去找这道“菜”对于的英文期刊的原文,研读之。从中文专著,中文期刊,以及中文综述中也能找到一些有用的东西,但是一般而言,都会“不新鲜”——即从时间上都会稍落后于英文资料(专著/期刊/会议)。

如何研读顶级期刊和顶级会议论文,可以参看“浅谈如何研读算法优化类文章”。

在研读顶级期刊和顶级会议论文的过程中,你会发现经常出现相同的名字、团队、学校、组织,有时还会看到几个“不常见”的名字(可能这些还是一些年青的博士和博士后,可能是未来的大牛)。找到这些大牛、小牛、团队、学校、组织的主页,关注他们的学术进展。有时还可以下载他们提供的源代码。

四、做实验

A:先把自己的算法敲出来并调试到最佳状态

1: 要用数学工具推导出算法迭代格式,并对算法的收敛性和收敛速度有一个基本的认识,可以先尝试推推,反正理论越明了说明方向越正确。

2: 搞清楚初始条件(都有那些初始参数,如何取值)

3: 搞清楚能够影响到算法收敛精度和收敛速度的参数分别有哪些?罗列出来。

4: 明确终止条件。当前比较流行的终止条件有KKT条件,前后迭代点相对误差(绝对)充分小,前后两部目标函数相对(绝对)下降量充分小。

5: 把所有程序都敲出来。按照面向对象方式设置数据结构,按照内循环和外循环明确的内外层调用关系编写程序。载入数据,驱动程序,修改BUG。先保证程序能运行出结果,再保证程序结果是我们想要的,最后在用上所有能够加速的技术全面提速。

Debug其实就两招: 加断点和printf技术,对于matlab,Python, R,我想还可以利用可视化用具,把图画出来,以此来找到程序的BUG,并修改之。

B:下载同领域针对本问题的其他算法,一般可在论文作者的主页上下载到。如果找不到,还可以通过论文提供的邮箱地址联系作者,看看他能不能把代码发给你。在邮件里说清楚自己是谁,为什么需要这个代码,肯定作者的工作,语气委婉些,一般就没问题。

C: 确定算法比较指标,总的来说,一个是精度,一个是速度。指标要选得大众一些,这样的话,实验结果同行更容易看懂,也更容易认可。如果你觉得实在有必要的话,也可以找几个特殊指标,做几个特殊实验。但是一定三思,因为新指标,新实验可能很容易受到审稿人的质疑。你必须时刻准备好应对这种质疑。

D: 为了让实验结果更加让人信服。数据集一定要足够多样化(数据结构和数据关系多样化),要考虑各种情形。而且数据集的规模(维数)要足够大。做到这两点,基本也就可以了。另外注意,来自实际问题的数据(从大型数据平台过得的免费数据,或者行业里普遍认可的典型数据集,例如:matlab收集的一些典型数据样例),永远比虚构的数据更加吸引人的眼球。但是如果实际问题数据还没有你需要的数据结构和数据关系的,而根据你的研究经验,预测未来可能出现这样的数据,那就人为构造出这样的数据(数据结构+数据关系+噪声)就可以了!

F: 展示实验结果——从表现力上来说,图>表>文字。文字部分没句话一定来源于对于图和表的某个“位置”的观察,而不是凭空“想象”出来的。语言组织上也不应该是简单地罗列实验事实,而是有一条内在逻辑的,而且各个事实之间不应该有矛盾而是前后一致的,把一些相关的事实前后有逻辑地关联起来,你就会得出一些有趣的结论。

五、补理论

为什么叫“补”理论呢?因为做到这里,算法实验都做完了,而且效果不错。很多理论结果也已经零零碎碎出来了。我们这一步要做的绝对不是无脑地罗列一些理论事实。而是将理论事实先分类,哪些是说明收敛性的,哪些是说明收敛速度的。然后用一条有逻辑的思路将所有事实串起来。实质上,一篇文章的理论体系就是这个逻辑严谨的“树”,根节点是假设条件,定义,性质;主干部分是定理。引理和推论作为分支,他们都是打辅助的,服务于定理。引理作为定理的证明台阶,使得证明不是那么冗长,晦涩难懂。推论是对定理结果的自然扩展和延伸,增加的理论体系的丰富性和完整性。

六、写文章

A:短小精悍——摘要(是同行还没有往下看你的论文之前,为了让同行瞬间GET到你做了什么,得到什么结果)

摘要部分其实格式非常严格和统一。你无需自己编写段落结果,哪一句要说明或者必须说明什么本质上都是规定死的,你弄花哨了只会显得你不够专业。所以最聪明的做法就是洞察同领域专家的摘要格式,我们只要按照人家的版块格式按要求“填空”即可。

B:短小精悍——结论(是假设读者已经阅读了文章中所有主要理论结果和实验结果后,对整篇论文做了什么得到什么结果做大致简要概括,并做一点点展望)

结论和摘要内容上很类似,就是对文章的提炼。但是前提不同,摘要是供那些还没看过文章内容的人看的,格式比较严格和统一。而结论则是假设读书已经大致了解文章工作的前提了,做一个简要概括。格式较摘要而言要稍微自由一些。

以上两部分对于初学者非常难以区分,所以单列出来说明。

下面才是写文章正常顺序:

1:前言

前言又分为大背景、小背景(前人的工作)、本文的贡献(我们的工作)。大背景的文字篇幅一定要简练,给出你所研究问题的“来”(来源)和“去”(应用)。小背景主要阐述跟你本文中的内容相关的文献对你所关注的“点”都做了哪些工作?得到了哪些结果?(理论结果/实验结果)他们的优缺点?由此引出我们的工作(继承其优点并克服其缺点)。

2:问题描述

这一块一个重要的工作就是——选择恰当的数学符号。对于一个待描述的事物或者数据,尽量选择比较专业的,用的比较多的符号,否则同行读起来也会非常费劲。大家都应该懂让审稿人读起来费劲的后果吧!这一块最主要的工作就是搞清楚要用什么数学符号?要刻画什么问题关系?

3:做数值实验(已有初步想法、算法设计框架、和一些零碎的理论)

4:完善理论体系(收敛吗?收敛到哪里?收敛速度如何?以及其他有趣的理论结果)

理论路线:定义->性质->引理->定理->推论,以定理为主线。

5:总结文章理论体系和实验结果形成结论,并关联相关领域或者问题做部分展望。

6:要字字提炼和斟酌,做完这道关键的“填空题”——摘要

7:提炼文章题目

不管你如何命名,你一定要明确你的目的。人家通过必应和google,以你们同领域跟你的文章内容最接近的关键词搜索,一定能搜索到你的文章。以一些相关度很高的词搜索也能非常快搜索到你的文章,且你的文章很大概率就是他们想要的。把这个事情想想清楚,文章题目基本就确定了。

七、投稿

投稿需要考虑的问题:要投什么期刊?或者会议?根据你对同领域或者相关领域各个等级期刊的观察,你应该了解你这篇文章的理论贡献和实践贡献处于什么档次。或者跟某一篇文章或者某几篇文章非常相似,看看那些文章都是发表哪里,然后尽量投一个好的期刊,根据等级梯度由高到底不断投稿、被拒搞、修改、再投稿,直到被接收为止。如果确定投到哪个期刊,最好把版面格式调成一样的,并查一下这个期刊最近有什么文章跟你做的非常相关,能引用尽量引用一下。

八、修改文章及回复审稿意见

审稿意见回来后,通过细细琢磨审稿人的价值倾向,你大致可以看到发表的希望大不大。如果审稿人直接说不感兴趣,然后还提一大堆莫名其妙的要求和疑问,攻击性非常强,那基本就没多大希望了。可能你费老大力气改还是被拒稿,但是这种期刊一般都是顶级期刊,我们新手最好还是老老实实想办法修改,碰碰运气。如果审稿人承认论文的贡献,但是提出一些修改意见。那你可要根据审稿意见逐条修改了,而且在回复里告诉人家,针对他的每条审稿建议你都是怎么改的。这种审稿意见回复都是有模板的,下载一个套用一下就行了。如果审稿人基本没意见,那么恭喜你,基本就没啥问题了。也可能暗示了一个问题:可能你投期刊的等级投低了。

猜你喜欢

转载自blog.csdn.net/qq_25733951/article/details/88696801