上一篇如何开始中,介绍了对于初级研究者,如何开始自己的研究、如何选择一个题目and baseline。接下来,我会按照自己的经验与理解,记录下具体的研究过程,即一个接近半年的时间,我们要做什么和研究有关的内容,才能有始有终、善始善终。

研究非常无趣的点在于,它禁止你空想,针对于所有的想法、所有的行为,都必须有理有据,有的时候说的好听,是为了在一条清晰的道路上如果失败了可以沿着轨迹找回去发现原因,但我总寻思着这就是为失败提前找好赖的对象。

是的,禁止空想。先前,你说服了自己以及别人,你研究的主题是存在意义的。同时,机缘巧合地,你在你所看到的有限的文献中,发现了一个还蛮切合自己预期的baseline,改进、优化,是我们的唯一任务。那么接下来,我希望分三个阶段来说说整个研究步骤:研究前期、研究中期(正儿八经的研究)、研究后期。

研究前期

从哪里开始算研究前期呢,我觉得是从确定下Baseline的那一刻开始的,不过说起来,在别人的基础上做继续研究总是让人觉得没有腔调,所以要改就要大改,仿佛你只是受到了该模型或方法的一丝丝启发,之后的所有的一切成功,都是你改进的功劳。

而这第一步,就是baseline的复现,虽然吧,你之前有浅看了下模型内容,但复现是复现,其过程未必是一帆风顺的,环境的问题、源代码可能也会存在问题、另外有些甚至并没有checkpoint,要自己从头开始训练等等。这都是前期必须搞定的准备工作。对于经验足够丰富的人来说,这个过程大概需要一周即可,不过对于我们这些初级研究者,为了给自己足够的时间和足够的准备,还是把时间设置为10天吧。事实上,深度学习算法的复现不比其他方面,只要原作者开源的代码本身问题不大十分工整,运行成功也就是一天的事情,当然了,得问题不大(遇到问题是必然的,别妄想有个可以完美唰一下就运行成功的代码)。

这10天里,第一步要做的事情,就是下载源代码和下载数据集,估计大家未必用自己电脑跑,所以还要在实验室服务器上上传文件,配置环境。数据集也许不知有一个,原论文中想来有其固定使用的数据集,这个你是一定要用的,所以要全面了解这个数据集里都是些什么东西,有哪些标注。此外,相关领域得数据集也要多多了解,关注一些网站或公众号获取相关消息和下载链接,或许意外发现一个更大更棒得数据集,这是很重要的,直接决定了学习的内容,影响着模型表现和泛化能力等等。第二步,是运行模型前的检查程序文件,具体来讲,要至少能找到模型结构在哪,准备数据集的地方、损失函数、优化器的参数设置,还有读取数据集的路径和保存模型参数的路径要记得修改。第三步,就是运行了。遇到问题是正常的,上CSDN查查bug怎么改,要相信没有改不了的bug,这是程序员的觉悟。不过有时出来了个结果,但并没有取得如原文中所说的那种很好很好的效果。这里提一下,看看代码里有没有pytorch里的学习率下降设置,这个东西很奇怪,我朋友的源代码中使用了这个,但一旦把它去掉了,模型不仅收敛得更快、甚至让他一步登天取得了SOTA结果,很迷,我也还不能理解为什么,不过可以试试删除它,说不定结果就更好了。

训练结束了,要测试,自然会得到测试结果,对于cv任务,也有必要相应地可视化出来。不是说到这里就算完了,你得分析啊!首先,你要先分析你得到的结果和作者说他自己的结果,是不是略差,通常来讲,作者会把最好的一次结果放上去了,本来这东西真伪就不可考,不过如果只是略差一些,那是可以接受的,说明完成了复现。比较麻烦的情况,是自己得到的结果和论文中所述出入极大,就算你说对方的数据是存在问题的,那也很无力。且用一天的时间,分析分析到底为什么会出现巨大的差异,不行的话再跑一次看看有无不同。要做好换模型的心理准备,这不算是好的开始,但为了防止一坏到底,及早change才是正道,这就是PlanB。有的导师会鼓励学生们攻克这些苦难,我不鼓励学生听从这些导师的意见,大家都是活了几十年的人,活着靠的是人生经验,大家都差不多,除了全国人大,谁的决定和意见会一直一直是沧桑正道。所以说啊,自己做主,你以后买房买车还能指望谁来跟你指导指导么,售楼处最懂了,你找他们吧。

闲话至此,模型是正常的,你就用它,模型咋的都有毛病,你就换它,直到找个正常的。所以说,有的时候10天都可能不够用,打好提前量吧,幸运的话,你还能余出来几天休息。然后你就该分析分析了,还有哪些可以改进呢?有什么现存问题呢?在此时的研究初期,不求提出一个极好的策略,能把问题分析清楚就够够了,“提出一个问题比解决一个问题更重要”。我之前在分析问题的时候,有一个不好的习惯,一边我在剖析这个模型的问题,一边我还在思考怎么解决这个问题。解决问题在这个阶段还不重要,毕竟我们不知道的东西还是很多,所有的想法不过是基于自己的生活经验罢了,我之前说了,要“有理有据”,此事可以之后看看论文获得灵感嘛。so得学会住脑。这就是纯粹的第二步骤:发现并提出问题。

那么如何发现问题或者说表述问题,实际上也很考验人的研究能力和水平。我的思路是:从结果上看,还有什么问题,至少可以说结果有待进一步提高;从模型的设计上看,是否结构复杂,模型参数是否过大、不足以应用于工程,在提取处理特征的能力上是否足够;从训练过程上,是否稳定,有无梯度爆炸、消失,是否容易发生过拟合。这些算是通用的吧,但特定于具体的任务,要从任务自身的特点来看某个任务最大的一两个困难是什么,要自己想清楚而非听别人一说你就同意了,因为在之后的研究中你是绝对无法避开这最大最恼人的困难的。要抓住这一点来分析作者解决到了什么程度,从而判断是否还有进步空间,一般应该是有的,就算原结果已经相当相当好了,我们也没有道理不去尝试截然不同的做法。毕竟,针对于一个问题,本就有不同的学者从不同的角度来解决。

把问题总结出来,可以说的有很多,但最最核心的问题只要两三个足矣。我觉得这个环节可以给5天时间,这很重要的。有时候,读论文的时候,就有些想法了,朋友们可以Onenote里记录一下。

研究中期

正式的研究,从我的本科毕设来看,前后共经历了5个月,当然是因为我模型极端复杂、令人发指,加上了过年,我没有丧心病狂到过年还work。那么考虑到一个学期的长短,3个月,算是很宽泛的时间了,约么着就算是研究生,也还有一个月多就到少得可怜的假期了。

这部分内容,着实不少,放在下部分吧,这次也不絮絮叨叨了,以我的毕设课题为例分析分析,这个长阶段都干点啥。

毕设走过的路——如何研究(一)相关推荐

  1. 少有人走过的路:分析-策略-产品

    本文由作者 古牧聊数据 于社区发布 开局一张图 "绝望之谷"+"开悟之坡"的朋友们好-今天古牧君想聊聊自己在数据岗位上走过的路,从数据分析师.到策略产品经理.再 ...

  2. 新手如何开始学深度学习?别着急,看看别人走过的路先

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Arkar Min Aung 编译:ronghuaiyang 前戏 新手如 ...

  3. 《你的误区》《少有人走过的路》下载doc格式

    <你的误区> <少有人走过的路> 下载 <你的误区>.doc <https://pan.baidu.com/s/1aJoC-UCkpGmvA5bc_87Tsw ...

  4. 走过的路,脚会记得;

    走过的路, 脚会记得; 爱过的人, 心会记得! 路, 不通时, 选择绕行; 心, 不快时, 选择看淡; 情, 渐远时, 选择随意. 有些事, 挺一挺, 就过去了; 有些人, 狠一狠, 就忘记了; 有些 ...

  5. 只有走过的路 才懂她的内容

    年少初遇常在我心 傻傻的站在十一教门前一排高高的杨树下伫立,独念风凉,叶落肩头,我该用什么去聆听这走过的两个月,明年的枝头,依然会看到今日的灿烂.想想磕磕绊绊的两个月,学习的故事轮番上演,一个比一个精 ...

  6. 仅仅有走过的路 才懂她的内容

    年少初遇常在我心 傻傻的站在十一教门前一排高高的杨树下伫立,独念风凉.叶落肩头.我该用什么去聆听这走过的两个月.明年的枝头,依然会看到今日的灿烂. 想想磕磕绊绊的两个月,学习的故事轮番上演.一个比一个 ...

  7. 你的人生格局:遇过的人,读过的书,走过的路

    我们可以通过不断进步,提升自己的格局,改变自己的命运.而你遇过的人,读过的书,走过的路,这些就构成了你的人生格局. 遇过的人:怀着感恩的心 每个人的生命历程中总会遇到很多人,在我们生命中出现的人就是我 ...

  8. 你走过的路,每一步都算数

    你走过的路,每一步都算数!这是前两天在一档节目中看到的,总有和作者相同的观点,但是这句话将我的想法表达出来,很幸运遇到这句话.这次的年末来的比以往更加让人猝不及防,也许是全国的雪儿巧妙的绕过了北京,没 ...

  9. 走过的路,做过的事——我的2014

    2014年刚刚过去,2015年迎面而来!在这辞旧迎新之际,我们应该停下脚步(趁这三天放假的时间),稍作休息,回顾这一年走过的路. 说变化 2014,对我来说最大的改变有两个:一个是身份的转变,一个是技 ...

最新文章

  1. Spring Boot + Mybatis 多模块(module)项目的完整搭建教程
  2. 《陶哲轩实分析》引理17.2.4证明_导数的唯一性
  3. SAP Business One
  4. How SAP concrete schema id is got based on transaction type plus catalog type
  5. hystrix应用 博客_用Hystrix保护您的应用程序
  6. Java:汇总堆外数据
  7. 前端学习(2007)vue之电商管理系统电商系统之优化复选框的样式
  8. UGUI滚动列表ScrollView使用注意点
  9. oracle 11g安装过程中问题:找不到WFMLRSVCApp.ear
  10. 三分钟掌握Go mod常用与高级操作
  11. android command line tools 下载,Mac 安装 Android commandlinetools 各种报错的问题
  12. oracle查询语句中case when的使用
  13. Java语言基础--集合
  14. 《微电子概论》2.1 理论基础
  15. 汇率换算自然语言理解功能JAVA DEMO
  16. C语言输入10个分数 去掉最高分,gogo电竞网页登录-gogo电竞网页登录
  17. ROS学习之CMakelists.txt和package.xml
  18. ssms 连接 oracle,【SQL】用SSMS连接Oracle手记
  19. Quasi-globally Optimal and Near/True Real-time Vanishing Point Estimation in Manhattan World 论文阅读学习
  20. iphone11计算机显示计算过程,iPhone11怎么显示电池百分比

热门文章

  1. Android倒计时实现
  2. Xshell 修改系统时间命令
  3. 记一次TP-LINK路由器问题排查
  4. python滑动平均
  5. 在线考试系统-教师服务-业务功能说明
  6. 用800行代码做个行为树(Behavior Tree)的库(3)
  7. 万人物流企业如何实现无负担沟通
  8. 资金表实现过程方案一:资金表与冻结表合并(一)
  9. TCP连接的几种状态及转换
  10. 批处理命令——rem 和 pause