首页 深度学习科研方法论(非知识或技术)
文章
取消

深度学习科研方法论(非知识或技术)

本文总结一下深度学习科研里的一些常识,指的是非具体知识或技术的方法论性质的东西,涉及科研流程、论文发表等大方面。我重点介绍深度学习科研特有的,当然也有一些是所有专业科研都会涉及的。(感觉我整理癖有点强啊,连这都要整理……不过也好了,闲着没事整理一下还是对自己有好处,虽然自己还没有什么科研成果 Q_Q)希望这篇总结可以帮助到即将进入深度学习这行科研的朋友,或者纯粹对我们这行科研好奇的朋友。

所有学科的学术科研都离不开论文。本文以论文为主要对象,顺着科研工作的一整套流程来总结:

  • 第一章介绍论文发表在哪儿,这是首先应该了解的;
  • 第二章介绍找论文的方法,自己的科研问题都是通过阅读前沿论文产生的;
  • 第三章介绍实际的科研流程,在深度学习领域就是提出算法并做实验。这些都作为一篇论文的主体部分;
  • 第四章介绍完成一个工作后,如何写论文。这里会介绍深度学习论文通常的格式与内容;
  • 第五章介绍如何发论文,涉及论文投稿和审稿的常识,以及后续事项如参加会议等; 最后一章会说一些我了解的深度学习圈内的八卦,大家就看个乐子好了。

深度学习这一行讲求分享精神,免费、共享、开源的东西比其他理工科要多(据我了解,很多其他专业的论文都要从学校买下的数据库里找)。希望在看完后大家能对此有所体会。

一、论文发表在哪儿

论文是科研人员总结科研成果、与他人交流的主要载体,也是衡量学术成就的重要指标。论文和报纸、杂志里面的文章性质一样,都是投稿到一个出版物中,由审稿人(一般是领域内的专家)审核,通过后在出版物中出版。

有的出版物在圈里是公认的、口碑好、论文质量高,有的则不被人所知、论文也比较水。投稿前者难,代表着科研水平高;后者容易,水平也低。所以每个专业的圈子都有公认的出版物“好坏”标准,论文发表的出版物“好坏”就是衡量其科研水平的一个指标。

每个专业的论文发表都有自己的特点。深度学习目前的论文主要发表在各种会议、期刊中。

会议(conference)是指学术会议,顾名思义就是研究者讨论学术成果的会议,在某个地方集中开好几天的那种,当然这种大型会议可不是组里平时的讨论班,随便交流一下想法思路的,而是需要有会议认可的学术成果才能参加,即在开会之前的某个时间向其提交论文,通过后才有参加资格,组织者也会把通过的论文整理出版出来。所以,会议可以看成一种出版物。

期刊(journal)就是专门刊载某个领域学术内容的杂志,和普通的杂志道理是一样的,不多解释。

会议和期刊的区别:

  • 期刊对论文的字数、工作的完善程度要求更高(投了会议的论文可以继续完善再去投期刊);
  • 期刊的审稿慢,从投稿到出版的周期长;
  • 期刊论文数量少,会议论文数量巨大,每个会议每年一般会有上千篇论文;
  • 期刊不需要开会;
  • 深度学习论文喜欢投会议(这是历史原因慢慢形成的环境。因为深度学习这行变化太迅速,而会议发表比较快);

深度学习的领域有很多,会议、期刊也有太多太多。衡量“好坏”的标准有:

  • CCF(中国计算机学会)推荐的国际学术会议与期刊目录(请看人工智能、数据挖掘等相关的部分)把会议和期刊分为 A、B、C 三个等级,A 代表“好”,C 代表“差”。国内顶尖高校的计算机专业院系认可这个评价体系,并将其作为研究生毕业或老师评职称的参考标准;
  • 被哪个数据库(存放论文的数据库)收录也是一种评价标准,它平行于 CCF 的评价体系,是理工科科研通用的标准。常见数据库有 SCI(科学引文索引)、EI(工程索引)、核心期刊等,SCI 代表着最好、最权威(注意只收录期刊论文),EI 次之(期刊和会议都有收录),核心期刊是国内大学或院所定的,只收录中文期刊。由于很多不收录会议论文,所以计算机专业一般不按照这个标准来,但也有方向比较多的院系将其作为参考标准(例如我在的数学学院)。它们内部也有自己的细分等级:
    • SCI 为其收录的论文发明了一个评价指标:影响因子(是用引用频率算出来的),越高越“好”,根据影响因子的排名将论文分成四个区(一区、二区、三区、四区),一区的影响因子最高;
    • EI 将其论文分成两个档次:核心与非核心;
    • 制定核心期刊标准的机构有很多,对理工科,认可度最高的是北大核心期刊(由北大图书馆制定),其次是中科院的中国科学引文数据库中国科技核心期刊等。

以上评价最“好”的一批会议或期刊通常被称为顶会、顶刊。深度学习赫赫有名的顶会有 CVPR、NIPS、AAAI、IJCAI、ICML、ICLR、ICCV、ECCV、ACL、EMNLP 等,顶刊有 IEEE TPAMI、JMLR 等。此外,深度学习领域的中文期刊或会议比较水,比较受认可的期刊也就计算机学报、软件学报、自动化学报这几个,大部分人也不会考虑中文论文,这一点可能与很多文科专业不太一样。

有的会议有自己细分的评价标准,以下是几个例子:

  • 分 workshop 和非 workshop:workshop 意思是小型的分享会,因此发论文在会议 workshop 分会的难度比正式会议小很多,含金量也低;
  • 分 oral、spotlights、posters:含金量依次降低,分别对应开会时的口头报告、小的口头报告、海报演示(见第五章),自然可见其重要程度。

预印本

深度学习这一行在正式发表论文前,通常习惯把论文草稿先上传到网上的预印本平台。这样的目的是:

  • 分享给大家阅读并提出更改建议;
  • 自己提出的想法先占坑,防止晚一步被别人抢发论文(预印本发出来之后);

深度学习领域都是使用 ArXiv 这个预印本平台。找论文时要看是不是预印本;如果是的话,再看是作者还没有正式发表,还是已经正式发表了,预印本只是之前的版本。正式发表的文章一般比预印本完整、正式,比如有完整的附录、第一页脚注处也有很多论文发表信息。预印本毕竟是草稿。

二、找论文:寻找科研问题

科研获得最新知识的来源一般都是最新发表的论文,深度学习的大部分会议和期刊都是年度的,包含了一年来各路研究者的最新成果,通常在会议或期刊名后面加上年份,如 CVPR 2021。论文在网上一般都可以检索到,以下介绍在网上找论文的方法:

  • 找某一篇特定的论文或包含某关键词的论文:去 Google Scholar 或 Google(不建议使用百度)上搜题目或关键词。它们能把世界上几乎所有的论文搜出来(包括预印本 ArXiv 上的),并且给出其引用量、信息、下载链接(如果不付费的话)。中文论文去中国知网万方数据等国内网站搜更好。如上所述,SCI、EI 的数据库 Web of ScienceEngineering Village一般是不用的;
  • 如果只是想涉猎最新的论文,可以关注感兴趣的会议出版的论文集和期刊的网站,每年都有固定的时间发布论文集(proceedings,记住这个单词),可以 Google 搜索“会议名 + 年份 + paper list 或 proceedings”找到论文集网站。当然,论文很多不可能这样遍历,也可以在论文集网站上使用关键词等检索。以下列一些有名的网站,它们可以搜到更具体会议的论文:
    • Open Review:收录了大量会议的开放评审(关于开放评审,请见)的论文,包括完整的 ICLR 会议论文,以及很多如 NIPS 等会议的论文;
    • CVF open access:由计算机视觉基金会(CVF)资助的数据库,收录视觉相关的三个会议 CVPR、ICCV、WACV 的论文;
    • PMLR:Proceedings of Machine Learning Research,主要收录 ICML、AISTATS、COLT 等会议的论文;
    • 很多会议/期刊会在自己的官方网站中公布论文集(注意不是 Accepted Paper List,而是 Proceeding):NIPSAAAIICMLJMLRIEEE TPAMI;还有的会委托其他出版社出版:KSEM
  • 想随意地探索深度学习最新的进展,可以浏览一些第三方的博客、公众号或社区,会有最新的论文列表推荐,如 Paper With CodeCSDN、微信公众号 PaperWeekly 等;
  • 对一个问题或领域深入研究,入门的话建议找综述论文,一般可以检索“领域 + survey”找到;可以关注一些更具体的博客;
  • 对于具体的工作,应以一篇论文为锚点,找其引用的文章(如用了谁的方法、“相关工作”部分)来看。

中国知网、万方数据等虽然是论文数据库,但它们更像搜索引擎,而不能像 SCI、EI、核心期刊一样当做评价指标。

三、准备论文:提出算法与实验

深度学习的研究问题大部分是完成某个任务,科研就是为该任务提出模型或算法,并进行代码实验验证。

深度学习的任务如图像分类、机器翻译等,有太多太多,这里不详细讨论,具体技术细节可以参考我的这篇笔记

对每种任务,会有前人提出他们的模型或算法(称为 benchmark),发表了论文并获得认可,我们的目标是提出自己的,在效果上超过他们,如果比别人的好,就可以发论文了。(如果超过了该任务上最好的模型或算法(称为 SOTA,state of the art 的缩写),那发出来的论文水平也就相当高了)

为了证明自己的效果更好,深度学习领域都是在数据集(dataset)上,用自己和别人的模型或算法做代码实验(此时被比较的别人的模型称为 baseline),比较验证结果(通常用定义好的评价指标(metrics))。为了公平,每种任务都有大家公认的数据集,大家的实验也都在这些数据集上做。(这里额外为完全不懂计算机的朋友解释一下,这里的模型或算法并不是一个摸得到的物体,而是我们敲到电脑里的代码对应的程序,做的实验都是敲敲键盘在电脑上完成的,而没有像生物、化学那样真正的实验室。数据集可以理解为实验对象如小白鼠,输入到程序中,实验结果就是输出的评价指标)

深度学习由于常常使用大型数据集,所以实验周期也不是想象地那么短。真正深度学习科研的程序不是几秒、几分钟就出结果的,往往需要几天、几周,甚至几个月。这里就涉及到算力这个话题,做代码实验使用的是计算机的计算性能,算力就是指一个研究组计算机设备(常称为计算资源)的计算性能。有的组经费充足,算力强大,实验周期短,就可以加快科研进度,更快地发论文;有的组计算资源少,做实验就慢。深度学习主要使用显卡这个计算机部件,因此圈内大家讨论、吹牛的也是谁的显卡厉害。

在这个阶段,除了看别人的论文内容外,网上很多还有代码资源可以利用:

  • 深度学习领域的研究者通常会把代码完整地发布到网上(称为开源),一般就放在 GitHub 上(最大的代码托管与分享网站);
  • 一些网站将深度学习各任务的数据集、benchmark 及相应的代码分类汇总起来,典型的是 Paper With Code,非常实用。

四、写论文:论文的格式与内容

上一章看到了深度学习科研的流程,非常固定,所以深度学习的论文,用我们老师的话说,和八股文差不多,意思是遵循固定的写作格式,比较死板,所以写起来、读起来都是有章法的。下面就按组织顺序讨论这种论文的格式与内容。

开头和结尾是非主体部分,和其他专业基本一样:

  • 题目:深度学习比较卷,论文题目经常比较花里胡哨;
  • 作者:按照贡献程度分为第一作者、第二作者、第三作者…,(允许出现共同一作),比较特殊的是通讯作者,一般是作者的导师或指导论文的专家,作为负责人。通讯作者可以是第一作者(一般不能是第二作者等),也可以没有。
  • 摘要:与科研流程一致;
  • 引言;
  • 相关工作;
  • 最后一章结论;
  • 参考文献:有很多,但并不是所有都和文章有重要的关联。引言等部分中的参考文献一般关联不大,重点是方法部分、相关工作中的,才是直接继承的工作。

主体部分有深度学习自己的特色:

  • 问题定义:会给出深度学习任务的数学定义,目的是讲清楚问题,并为下文统一数学记号。对于一些大家都知道的任务,这一部分往往省略;
  • 模型与算法部分:给出作者提出具体的模型或算法的描述,通常会画一张图来示意,有时候会在里面做一些简单的数学证明,可以合在一章,也有的拆成很多章;
  • 实验部分
    • 第一小节一般是实验设置:介绍使用的数据集、baseline、训练细节(计算资源、超参数等);(注:上文说过 baseline 就是被比较的别人已有的模型或算法,用来证明自己的有效果,类似于其他理工科实验的对照组)
    • 第二小节一般是主要结果的呈现与分析。结果通常呈现在一张表中,一维是各种模型,另一维是各种评价指标。通常会把每个指标效果最好的数加粗;该节正文中会写一些对该结果的分析;
    • 后面的小节是其他次要的实验,可能会发现一些有趣的事情;
    • 最后一节一般是消融实验(ablation study)。对于模型中有多个独立的机制或模块的,第二小节合起来的结果不足以说明每个机制或模块都是有效的(例如:有一个模块是很有效的,但另一个模块没有用甚至拖后腿,但合起来有效,这样会误导人以为两个模块都有效果),需要单独验证每个模块的效果,就是消融实验(也和对照试验原理相似);
  • 附录:包含正文里放不开、次要的长图、长段证明、长结果等等。

由于这种固定的格式,看深度学习论文不需要从头一字不落看到尾,需要找到有助于自己科研需要的论文的重点。关于如何看论文、速读论文这种心得性质的东西就不在这里聊了。

五、发论文:投稿、审稿、开会

我们在发论文时并不只有某一个会议/期刊。很多会议/期刊的领域都有重叠,所以可以选择的有很多。这些年度的会议/期刊散布在一年的各个时间,一般人的做法是盯着这些时间节点来合理规划自己的科研工作节奏,在恰当的时间投稿恰当的会议/期刊。有很多网站会定期整理和更新最新的会议/期刊时间节点,很方便,这里列几个:CCF推荐会议截止时间WikiCFP

以下是发会议论文的流程:

  • 作者投稿;
  • 审稿人审稿(一般在投稿结束后1-2月出结果);
  • 如果没有中,那就准备投其他的;如果中了,就需要去参加会议。

看起来很简单,但具体事务是比较繁琐的。下面的几节不会涉及具体事务,但会详细讲解必须知道的常识。

投稿

发论文需要遵守相应会议/期刊的规则,通常会在官网上通常会有 CFP(Call For Papers) 版块发布,值得关注的信息包括:

  • 各种截止时间:注册时间(提交摘要)、提交时间(提交论文)、其他材料提交时间(一般晚提交时间 7 天);
  • 论文要求:长度要求(页数),格式要求(一般都会提供 LaTeX 模板);
  • 审稿方式(见下节),这关系到是否需要给出作者列表(双盲审不能给);

有些会议为了组织方便要求作者在提交时间前注册稿件并提交一份论文的摘要,这就是上面的注册时间。

审稿

会议的审稿很像考试,但其结果只有两个:录用/不录用。审稿是由一批审稿人完成的,每篇文章一般会分配几个审稿人。

审稿方式有以下几种:

  • 单盲审:审稿人知道作者的身份,但是作者不知道审稿人的身份;
  • 双盲审:审稿人不知道作者的身份,作者也不知道审稿人的身份;
  • 开放式评审(Open Review):审稿人知道作者的身份,作者也知道审稿人的身份。ICLR除了 ICLR 以外,一些会议也强制规定开放式同行评审,例如 CVPR。深度学习论文的开放式评审结果一般都可以在 Open Review 网站 中查到。

审稿结果:大部分审稿只有一轮审稿。深度学习领域的审稿结果一般有 5 个分数等级:

  1. Strong Accept;
  2. Weak Accept;
  3. Borderline;
  4. Weak Reject;
  5. Strong Reject; 每位审稿人打分,并写下审稿意见。最后根据各审稿人的打分,由上一级的组织者决定是否录用。(注意,录用之后过一段时间才会出版,录用和出版不是一回事。)

有两轮审稿的,中间多了给作者申辩(rebuttal),类似于上诉,一般只有 7 天时间。第二轮审稿时审稿人会结合 rebuttal 重新评判分数。

开会

会议一般要求每篇论文必须有一个作者要参加(线上会议除外),费用一般可以由所在学校或机构报销。

(待更新)

发期刊论文的流程

(简单介绍,待更新)

圈内八卦

深度学习圈的八卦信息汇总于此。

(待更新)

大牛

这里列举深度学习领域大牛,简单介绍其工作、贡献。

(待更新)

  • David Marr:
  • 深度学习三巨头
    • Yoshua Bengio:
    • Geoffrey Hinton:
    • Yann LeCun:
  • Ian Goodfellow:
  • 何恺明:
本文由作者按照 CC BY 4.0 进行授权,转载请注明

Linux 学习笔记:从科研使用需求出发

配置 Python 环境备忘