调研是为了掌握课题的子任务以及解决子任务的现有方法,是找到问题、提出改进的前置任务
依稀记得自己刚进入实验室第一次和导师交流科研计划的时候,导师分配的课题是人体姿态估计:“先调研一下这个方向上的最新进展,做成PPT我们讨论一下。”于是我搜索了一堆论文一篇一篇开始看,花了很多时间去通读,但是最后没有多少收获,也没记住多少论文的内容。现在想想,当时自己根本就不知道调研要干什么,看论文似无头苍蝇、闲庭漫步,没有目标自然也就没有收获。
写这篇文章之前特意“采访”了几位朋友,发现不只有我一个人不知道调研的目标是什么。那么接下来,我们就从调研的目标开始说起。
1. 调研的目标
调研
我们为什么要调研?不就是为了发(几)篇论文好毕业嘛。那怎么才能发论文呢?虽然我的专业是计算机学科,但是个人认为,提出方法的或者说偏工科的课题,都可以大致用上方的流程图概括。而论文的意义就是找到现有方法存在的问题并提出改进,从而提升效果或者减少成本。
调研是就是为了掌握课题的子任务以及解决子任务的现有方法,是找到问题、提出改进的前置任务。因为几乎所有发表的论文都遵从着“任务、方法、问题、解决”的逻辑,所以阅读文献的过程中也能够了解到课题的子任务以及现有解决方法。
注意我们这里使用了“子任务”和“问题”两个不同的词。“子任务”指的是从输入到输出的步骤,更类似于“流程”;“问题”指的是子任务现有解决方法的不足,也就是经常被提到的“痛点”。以 ResNet 论文的 Abstract 为例:
Deeper neural networks are more difficult to train. We present a residual learning framework to ease the training of networks that are substantially deeper than those used previously. We explicitly reformulate the layers as learning residual functions with reference to the layer inputs, instead of learning unreferenced functions. ····· On the ImageNet dataset we evaluate residual nets with a depth of up to 152 layers---8x deeper than VGG nets but still having lower complexity. ······
这里的“任务”就是“从图片到类别中间的深度神经网络结构”,“现有方法”是 VGG 这种单路卷积网络,“问题”是层数一深就难以训练,“改进”是添加一个学习残差函数的支路。而之后也有论文指出 ResNet 这种“现有方法”的“支路设计对于轻量化和并行不友好”这一“问题”。至于如何寻找现有方法所存在的问题提出改进,那就是找 Idea 的内容了。之后我会专门写一篇文章,总结和分享一下怎么找 Idea 。
明确了调研的目标之后,接下来就是怎么实现这个目标了。
2. 如何找论文
Guide
“相关文献有那么多,范围也太广了,总不能全都看完吧?这么多论文要怎么选呀?”
个人的建议是先读综述,去大概了解这个课题以及现有文献,然后再读综述中提到的论文。因为读综述的目标是快速地了解课题,所以没有必要读英文survey,因此个人推荐的综述选择优先级:
- 中文综述文章/博客/专栏,搜索“[课题关键词]+综述/入门”
- 英文综述博客,搜索“[Subject Keywords] + guide”
- 英文综述论文,搜索“[Subject Keywords] + survey”
综述就是前人调研的总结,如果课题有一篇非常好的综述,我们花费非常少的时间就可以对课题有不错的掌握。如果是一个很大的课题,看综述就可以了解到有哪些小课题;如果是小课题,看综述就可以了解课题大概是一个什么任务,输入输出是什么,现存方法大概有哪些流派,每个流派从输入到输出大致的流程。
例如:
- 机器学习模型安全与隐私研究综述 - 浙江大学 中提供了以下信息:机器学习中的隐私保护可以分为模型窃取、成员推断和模型反演等子课题;成员推断的输入是一个样本和一个训练好的模型,输出是“它是否在该模型的训练集中”,分为基于置信度向量和只基于标签的······
- An Overview of Human Pose Estimation with Deep Learning 中提供了以下信息:多人人体姿态估计的输入是包含多个人体的图片,输出是多组人体关键点的坐标,分为 top-down 和 bottom-up;top-down 先检测人体框,再对每个人体框裁剪的图片预测单人人体关键点坐标······
当然,综述只能让我们大致地了解一个课题,接下来还得进行更加细致深入的阅读。综述中提到的论文一般都是经典的或者有重要贡献的论文,所以可以从这些论文开始扩展。
3. 如何读论文
3.1 调研时如何读一篇论文
高亮
需要注意的是,调研时的读一篇论文和“如何精读一篇论文”是有很大的不同的。
精读是为了学习一篇论文如何写故事,包括但不局限于:如何引出问题和自己的(每个)改进、如何用实验验证自己的方法等等,以及文章的逻辑衔接等等;
而调研时的读一篇论文,主要目标是论文针对的子任务、(如果不是新任务)该子任务现有方法、现有方法的问题、论文提出的改进。
所以在调研中读论文,往往只需要略读。个人在调研中读一篇论文的流程如下:
- 阅读 Abstract,将任务描述用颜色A高亮,将现有方法与问题用颜色B高亮,将论文提出的改进用颜色C高亮。大致了解论文提出的方法。
- 阅读 Introduction,将任务描述用颜色A高亮,将现有方法与问题用颜色B高亮,将论文提出的改进用颜色C高亮。尝试理解论文提出的方法。
- 阅读 Related Work,将提到的任务和其对应的现有论文高亮。
如果 Introduction 阅读过程中还不理解论文提出的方法,也很正常,这时候就需要判断论文需不需要精读。可以有以下几个判断角度:
- 论文质量。通过引用量、相关解读文章的数量、有无开源代码、开源代码 Star 数,和阅读时论文语言表述质量来判断。比如姿态估计的 RLE 论文是 ICCV 2021的论文,而我2021年阅读的时候,就能搜到相关的论文解读,并且开源代码已经有了很多 Star,是一篇值得精读的论文;刚开始单阶段姿态估计调研,看 FCPose的时候,论文一堆细节都说“详见FCOS(论文作者的目标检测工作)”,就不适合精读。
- 方法价值。通过方法性能提升的大小、与研究方向的相关程度来判断。再拿 RLE 举例,读论文前我就有一个有了很长时间的疑惑:“热图回归的热图为什么一定是高斯分布?”,而这篇论文就有关这个问题,并且该方法第一次让坐标回归性能超过了热图回归,提升很大,值得精读。
3.2 下一篇读什么
ReadPaper
按照上一节的方法读完一篇论文之后,我们会收获以下信息:
- 该论文针对的子任务,以及该任务的现有方法(如果有)
- 课题的其他子任务,以及这些任务的现有方法
这时候,对于下一篇读什么,个人推荐先根据当前论文针对的任务进行回溯,看该任务的现有方法对应的论文(好家伙,DFS),然后再去回溯论文中提到的其他任务。
这里推荐一下沈向洋博士带领的IDEA团队出品的 ReadPaper 文献管理工具:
- 自动解析文章生成目录
- 引用的论文有超链接可以直接跳转
- 笔记存在云端,取消收藏论文,笔记不会消失
- 文件夹管理体系非常方便
4. 总结与输出
top-down
按照上面的方法读完论文之后,我们会收获以下信息:
- 课题从输入到输出的一系列子任务
- 前人对于这些子任务提出的方法
我们可能会有以下问题:
- 如何做成PPT和导师讨论?
- 读过的论文很容易忘记怎么办?
- 这样调研会不会漏掉一些子任务/论文?
个人推荐一个总结办法——画课题的从输入到输出的流程图,并将已经阅读的文献根据子任务归类。上面的这些问题,画流程图都可以解决:
- 根据流程图,我们可以让导师迅速地了解任务具体在做什么。特别是对于实验室有多个研究方向的,导师不会也不可能掌握所有研究方向,所以讨论新 Idea 的时候,我们要假设导师可能已经忘了课题的任务流程。
- 画流程图和为了画流程图看代码的过程会加深我们对于文献核心内容的印象,流程图和根据子任务分类的结构也更有利于记忆。实在不行,忘记的时候通过流程图也很容易重拾知识体系。
- 如果画完流程图,你发现有一个子任务的相关论文列表是空的,那就可以针对该任务搜索是否有相关论文。如果查阅文献后发现这个子任务真的没有相关论文,那么恭喜你,你找到了一个新坑!
画流程图的时候可以用 draw.io 之类的软件,画图过程中可能会有一下问题:
- 流程图应该细致到什么程度?——至少细分到每一篇论文针对的子任务都可以找到对应的流程,
- 每个任务只能用一个流程概括吗?——不一定,看不同论文的流程是否有很大的不同(可以划分流派)。例如多人姿态估计中top-down 和 bottom-up 方法就很难整合到一个图中;基于置信度向量和基于标签的成员推断也很难整合到一个图中。
- 不清楚任务流程细节/已读文献的子任务拼不齐输入到输出的过程?——找一份较优质的开源代码学习。直接读源码可能会有一些磕磕绊绊,可以用 IDE 跑通,然后调试查看某一句/段代码的作用。
- 怎么选取代码?——对于相同流派的多个开源代码,越易读越好。一般来说,机构发布的代码风格和模块化比较好,可以优先考虑。但是机构的代码也有可能存在过于模块化的问题。个人认为,一个开源代码如果包括了多个论文的方法,那么这个开源代码的模块化、封装程度就太高了,不适合入门。如果可以,选取只对应一篇论文的开源代码。
“检验知识最好的方法,就是讲给别人听。”在画完流程图之后,可以通过以下方式进行输出:
- 与导师讨论,根据流程图进行课题的大致介绍和想法表述
- 论文分享时,在分享具体论文之前,利用流程图让听众先了解论文背景知识
- 写成课题综述文章发布,方便后人快速入门。我自己就打算针对人体姿态估计写三篇(top-down, bottom-up, one-stage)综述文章,研究这个方向的同学可以关注一下~
5. 及时更新
每次新会议的录取结果出来之后,我们都需要阅读这些最新的论文,并更新自己的课题知识体系。一般来说,新论文的核心内容不外乎以下两种情况:
- 针对流程图现有子任务提出新的方法
- 针对流程图中细化出新的子任务
如果是前一种情况,那么把论文分类到流程图中已有的子任务下;如果是后者,则把子任务所处的任务进行细分,更新流程图之后再把论文分类。
6. 其它
- 后续会对不同课题的调研进行案例分析,目前计划的是人体姿态估计和机器学习中的隐私保护两个课题。
- 其实按这样的一个调研流程走下来,在了解子任务与现有方法的过程中,很可能就有了改进想法。
7. 参考资料
- 如何读论文【论文精读】_哔哩哔哩_bilibili
- 如何找研究想法 1【论文精读】_哔哩哔哩_bilibili
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/79668.html