• 【转载】 浅谈科研经验


    原文地址:

    https://blog.csdn.net/UESTC_C2_403/article/details/80475097

    -------------------------------------------------------------------------------------------------

    科研经验之浅谈

          本人是科研界的菜鸟,刚入科研界不久,下面是对自己科研一段时间的一个总结与归纳,也是一些经验和感悟,如果有错误或者夸大之处还请各位批评指正,谢谢!

    预热篇

    兴趣培养(阅读顺序)

         开始阅读不要从最基础的书籍开始,因为最基础的书籍很多是理论说明,非常多的数学公式的推导以及数学方面的描述和证明(也就是非常多的高深的理论知识点),如果一开始就接触会非常的枯燥,容易失去兴趣。建议从一个相对比较容易的开始,对各位比较有好处。

    如果不想要从文献开始阅读,建议从几个基础的算法开始做起(或者其他领域的基础部分开始),比如主成分分析算法Principal component analysisPCA)或者逻辑斯特回归(Logisticregression,LR)。

    我认为以这样的方式作为阅读论文或者科研的第一步有一个很大的好处,那就是有利于兴趣的培养,不会那么容易失去对某领域的兴趣!!!!!!!!!!!!!!!反正你的第一步可以选择你想要进入领域的比较容易理解的部分作为切入点哦!

    入门阶段之前传(理解某算法或者文章)

           科研的第一步做起了比较容易,下面以第一次从PCA算法开始为例子说明如何进行科研的第一步,以其他的算法开始也是相同的哈

    1.       兴趣保持:先读一遍PCA算法的基础理论部分,不要求你很懂PCA算法的理论部分,这一次你只需要懂个大概,知道PCA算法大概是怎么推导出来的,核心思想大概是什么,还有就是PCA算法在哪些领域(这些领域知道部分就好了,不一定要全都知道,因为可能太多,你也查不完)大概用过,如何用,用的效果如何。(建议时间:一周到三周)。
     

    2.       感性认识:可以直接从网上下载一个PCA算法的程序运行一下,看看结果如何,也就是你从别人提供的例子中得到数据,运行代码,看看能否得到别人的结果,这部分代码你也可以自己编写,但是没有必要,你可以下载现成的PCA算法的程序,如果是别的算法,你就去作者的主页下载,你把作者的名字用谷歌搜索就可以搜出来哈,谷歌用不了就采用中文搜索引擎,采用英文检索也可以哈(建议时间:一周)。
     

    3.       兴趣巩固(理性认识):从新精读PCA算法,精读里面的每一步,每一步的理论推导都要知道,如果碰到不会的部分,可以去查书籍,也可以去看看第一部分基础文献里面的数据有没有提供资料,或者去用互联网资源(建议时间:一周到二周)。



    4.       复现:对理论部分有了很深的理解,自己编写代码实现PCA算法,每一步都自己搞定(建议时间:一周到两周,难一点的可以到达三周)。



    5.       兴趣提升:理论与实际相结合,加深对算法的理解,比如你发现PCA用在人脸识别方面,你结合PCA理论部分的知识,通过理论的理解去明白为什么PCA可以这么用,理论上是不是有什么保证。比如PCA用于降低维度,理解为什么可以这么做,通过理论层面去解释这么用的原因,用在其他方面的也是如此去理解,这样可以进一步加深和巩固算法理解(建议时间:一周到两周)。



    6.       这部分就是想要进入某一科研领域的第一步,也就是理解某个算法或者文章的详细过程。
     

    正式篇(通过数据找创新点)

           通过上面的训练,预计应该对算法或者自己感兴趣的那一领域有一个最基本的了解,也加深了对算法的理论部分和应用部分的理解,为进入某领域做好了基本的准备。

           当你准备进入某一领域的时候应该做到以下几点,下面以算法为例:

    1.         当你想要进入算法领域,先要知道你算法面对的对象时什么,也就是算法要处理的数据是什么类型的数据,明白了这些以后,了解你要处理数据的特性,也就是这个数据本身的特点(特性或者特征)是什么,比如稀疏特性,时间特性等等(建议时间:这个问别人就好了,一周)。


    2.         读国内外研究现状,也就是通过读文献,看看别人用了什么算法去处理你接下要处理的数据,在进一步理解这几个算法,通过算法本身的理论知识与数据本身的特性进行结合,分析为什么这些算法用在这个数据上面会有这样的效果,进一步加深理解别人的算法,也可以自己复现别人的算法,把别人的代码下载下来,运行出结果就好了(建议时间:一周到三周)。
     

    3.         总结已有的算法有什么优缺点,用在这个数据上面存在什么问题,是算法那部分出现问题导致这种缺点的存在,比如说,通过这些算法处理的结果存在噪声的干扰,你可以分析为什么,再进一步分析造成这种情况的原因,如果是算法本身的理论部分就无法克服的问题,那么你就要想办法换一种算法,如果不是理论本身的问题,那就可以想办法在此算法进行创新,解决这个问题(建议时间:一周到三周)。
     
    4.         现有的算法受到算法本身理论部分的限制,如何寻找新的算法就是接下来要做的工作,首先明白上述算法面临的问题是什么,其次就是分析数据本身具备的特性,再次就是分析上述算法用到了数据本身的哪些特性,哪些特性没有用到,最后就是寻找新的算法把数据本身的特性都用进去,这样一般就可以解决这些问题。比如你想用数据的稀疏特性,那你就要去寻找和稀疏有关的算法等(建议时间:一周到三周)。


    5.         如果你找到了一种算法,你先拿来用一下,直接下载别人的代码,用你的数据去运行,看看结果,如果有一定的效果,那就有进一步研究的可行性,你接下就是深入研究那个算法(如何深入理解这个算法请参考入门阶段之前传的详细介绍),看看此算法在何处进行改进可以解决目前的此算法在你的数据上面遇到的困境(建议时间:二周到四周)。



    6.         当你在做这个的过程中,你可以同时阅读基础文献提供给你的数据进行自己算法领域基础知识的补充,并不断的加深对算法的理解,可以同步进行哦,不必要分开进行哦(建议时间:一直坚持)。
     

    终极篇

          通过上面对算法的理解,相信你们的算法能力已经具备一定的基础,上面的采用通过数据对算法进行创新的思路,相对来说稍微简单一点点,下面就是如何直接对算法本身进行创新、如何读文献以及如何在文献中找到创新点。


    精度文献三步法(建议时间:不超过三周)

    1.         这部分与理解文献的有点区别,如果你理解了相同领域的一些论文,那么在此基础上再次精度读同一领域的论文只需要关注这几点就好了,如果没有理解过相同领域的文章,就采用理解文献的那种读法吧。



    2.         当你拿到一篇优秀的论文时,你先通读一遍,这一次你可以只是知道一个大概,并不能完全理解文章的知识,主要看文章的摘要,introduction的后面几段,就是关注文章的创新点(建议时间:不超过一周)。



    3.         运行论文的代码,看看结果是不是如此,让自己对这个算法有一个感性的认识,并且让自己提升对这个算法的兴趣(建议时间:不超过一周)。



    4.         理解明白文章为什么要这么做,这么做的好处是什么,也就是创新点的意义何在,明白作者为什么这么做就可以解决这个问题。比如,某个模型无法解决噪声的问题,那么作者是如何在这个模型上面进行修改来解决这个问题的,以及为什么这么做就可以解决这个问题,同时思考作者的创新会不会导致其他的问题存在(建议时间:不超过一周)。



    5.         在理解作者的意图的时候也是同时进行论文公式的推导过程,详细的推导论文公式的每一步骤,加深对算法的理解(建议时间:不超过一周)。
    泛读文献(建议时间:不超过一周)



          如果你精度了某个领域的部分优秀的论文,你持续在这个领域发展或者你对算法已经有很深的造诣那就可以采用泛读文献的方式,以算法为例的步骤如下:

    1.       读摘要部分的创新点,也就是作者的意图和目的。



    2.       看作者如何做的,也就是如何创新的,思考为什么这么做可以达到作者的效果,思考同时可能引入什么新的问题
    创新点的寻找(从模型本身出发)



          切记!这些创新点都是建立在你理解模型的基础上哈,在做这些创新的时候对国内外的研究现状要搞清楚,也就是别人在此模型的基础上做的怎么样,已经有了什么创新,防止你的创新点已经有别人做出来了。



    1.         论文的假设可以作为创新点,因为作者的假设都是为了防止某些情况的发生而做的,比如稀疏,假设高斯分布(正太分布)可能是为了公式推导,如果你假设为拉普拉斯分布,要是也可以推出公式,那就可以得到更好的结果。



    2.         模型的参数和超参数,模型的超参数一般都是人为选择,如果你可以通过模型学习,那就创新了,模型的参数选择一般是通过算法去估计,如果你可以改变估计参数的方式,得到更好的结果。



    3.         论文的conclusions部分会存在作者没有解决的问题,可以作为你要攻克的创新点。



    4.         模型本身考虑不全面,比如模型只是考虑某种情况,其他情况没有考虑,你可以对此加入另外的情况。比如A模型没有考虑噪声,你可以考虑,这样也是创新,模型本身的局限性就可以作为创新点。



    5.         运行别人的代码通过代码测试同种数据不同的样本或者不同的数据发现算法本身的问题,比如深度学习做目标检测,对有重合的比较难办也有一些框靠的非常近,而我只需要一个,你看看别人的算法是否可以做到,如果不行,那就分析是算法本身的问题,还是代价函数问题,哪里有问题就对哪里就行修改,这样也是可以找到创新点的。



    6.         还有其他的方式寻找创新点,这就不一一列举。

    总结

          上面每一部分的建议时间可以随着自己的水平随时调整。每个模型都有自己的优势和局限性,关键是在于你如何运用模型的优势,并且尽最大可能避免模型的劣势,达到一个平衡,这样可以得到非常好的算法处理的效果。切记!!!!!!!!!这一切的一切(包括创新点)都是建立你对模型或者数据理解的比较深度的基础之上。最后,祝各位美满幸福一生!!!!

    -----------------------------------------------------------------------------------------------------------------------------------------

  • 相关阅读:
    教你如何开发一个完败Miracast的投屏新功能
    深度评测--安卓免费的银行卡识别SDK,华为 HMS MLKit 和Card IO哪个好?
    别让算法和数据结构拖你职业生涯的后腿
    接入卡片类快服务你必须知道的事情
    手机智眼——智慧视觉
    解放双手的革命——智慧语音
    Android | 超简单集成HMS ML Kit实现最大脸微笑抓拍
    快服务常见TOP3审核雷区,再不过审就要崩溃啦!
    图标新纪元——服务直达
    集成机器学习服务上架华为应用市场指南
  • 原文地址:https://www.cnblogs.com/devilmaycry812839668/p/10960954.html
Copyright © 2020-2023  润新知