如何系统型的学习深度学习?
不知小伙伴们遇到没遇到这样的情况,对于想学习一个科目,总想把全部的资料收集起来,然后通过各种渠道了解总共需要学习哪些知识点,最后做一个看着非常努力而又详细的路线图时间表。 好似我们知道学习什么,资料也有了,路线图也有了,我们就真的会系统的学习,成为明日大牛了。 小编有过这种经历,如果是自己想学习的科目,而无任何考试或其他外在压力,按照这种路线,基本是整一次失败一次。我把这种经历最后归结为起步阶段的“完美主义”。 经历了几次,小编发现学习真的是学才行,如果你真的想系统的学习某一个领域知识,建议不要总是在起步阶段打转,行动起来,不管怎样资料没有收集完的时候,路线图时间表没有一次就完美的情况,做个大致规划,开始了再说。 最后,小编摘抄了几个知乎高赞回答,都是小伙伴们自身实践的经验,大家可以看看。
01
作者:机器学习入坑者
https://www.zhihu.com/question/305745486/answer/557055667
一开始,我每天固定两个小时学Python,两个小时看吴大佬的有题目的视频教程,两个小时自己实现课后习题。这期间感觉自己进步很大,但是总觉得哪里出了问题,却又说不出来。
两个多月以后,课程完结,开始学习tensorflow,看书敲代码,出现问题就百度。虽然自己能实现类似resnet这种基础网络,但是自我感觉没有之前那么好了,好像越学越糊涂。
再后来,我开始看论文了,找那些有开源实现的论文,看一篇论文,学习一篇代码。在这样稳扎稳打的步伐下,我感觉自己又进入了快速上升期。
既然能搞懂别人的论文了,能不能自己来一篇?于是我开始去怎么提出新东西,进而意识到我应该先对自己领域现存方法有所了解,知道它们的优点和不足。按照这种想法,我开始有意识的泛读自己领域的顶会论文,了解最流行的方法。我意识到,最简单的创新实际上就是把别的领域的东西搬过来用,所以我从nlp找了点思想用到对抗上(此时我并不知道已经有人这么做了,毕竟自己掌握的文献还不够)。不管怎么说,我算是有自己的成果了。
这就足够了吗?不是的。我越发感觉到自己的不足,深度学习仅仅在cv领域就有各个子分支,每个分支就算整个研究生生涯都不一定能吃透。
更要命的是,我发现我一直都是在写算法,从没考虑过如何部署模型,也就是整天纸上谈兵。所以我最近开始学网络知识,学习什么是客户机服务器模式,学习flask,想把自己的模型部署到web服务器上。
总得来说,我没有采纳我当初所看见的建议,那些建议有的列出来一系列书单,有的列出来一系列课程,对我个人来说是不太可行的计划我一般都不去做。
我觉得应该从自己想解决的问题入手,旧问题的解决往往伴随新问题的诞生。我最开始只是想知道啥玩意是反向传播,后来却自己搞出一篇论文,是那些困扰我的问题激励着我进一步研究,每次解决问题都会有那种喜悦的心理,这是我进步的源泉。
02
作者:Jason金
https://www.zhihu.com/question/305745486/answer/798114557
系统性我不太了解,但是我可以讲讲我的学习经历,我主要分为四个阶段:
1.初学阶段
啃吴恩达的机器学习的课程,然后看的是黄海广博士等人翻译的课程和笔记,这一阶段主要了解相关的概念,一定要有一个整体的结构,每个名字大概是什么意思,有什么用。
然后就是代码方面的事情,我没有马上跟上代码,而是去学习了一下一些以后会用到的基础的python库,比如pandas,numpy,matplotlib等
2.初探代码阶段
当时因为一些偶然因素要做深度学习方面的东西,然后去kaggle上下载了一段完整的训练代码。这里有一些了解的初学者可能会问到底选什么深度学习平台好,tensorflow?pytorch?keras?每个平台之间并没有绝对的优势,主要还是看自己的具体情况。
我的方向是和医学图像相关的东西,所以选择了keras,因为他上手快,可以快速构建出一个模型,但是灵活性要稍微差一些;pytorch是另一个热门选择,我的很多师兄师姐都是用的pytorch,他们很多事做的和人脸相关的方向;tensorflow不太建议初学者,相比之下前期学习花销大且代码量也比较多。
回到正题,上面说的那段完整的训练代码,我进行了一次精读,理解他每个步骤都在干些什么,然后用到了哪些有关的库,然后对训练过程有了一个整体了解,还有就是熟悉这个框架的一些函数。
3.“照葫芦画瓢”阶段(最艰难但进步最快)
这个阶段,就如小标题所说的一样,跟着别人的代码一步一步来,然后化为己用。
虽然对那段代码进行了精读,但是直接拿来自己用还是比较牵强,各个专业名词越来越混,也不知道要如何下手。没办法,只能继续巩固基础,我就去把keras的官方文档给琢磨了一遍,然后照着它给的最简单的分类网络实现了一遍,之中有很多坎坷和挫折,但是坚持下来就是胜利。然后就是将自己的数据集放入到模型中了,结果根本不好,但起码能跑起来。
接下来就是调参的过程,不会或者疑惑的地方就百度谷歌还有问师兄师姐,自己感受一遍和只看书是完全不一样的。
4.进阶阶段
到了这个阶段,已经对网络结构和训练流程有了一定认知了,接下里就是要训练出一个表现不错的模型了。又要回到专业名词中去,去看别人是怎么优化的,提出了什么网络结构,有什么创新的思路,相关的paper当然是要读的,然后就是尝试去优化自己的模型。
接下来的阶段我也还在摸索,但是最重要的事就是要不断学习,不断去理解深度学习,把它化作自己能用的东西。
03
作者:疯猫子
https://www.zhihu.com/question/305745486/answer/557090589
分享一下我的学习路径。
首先,基本的数学素养是必须具备的,这个自不必细说。
正是开始学习前,先了解神经网络的实现原理,在动手写一遍代码,是自己动手实现神经网络的算法。
有了这个基础,再开始学习深度神经网络的原理及用代码撸一遍。
开始逐步加深难度,学习激活函数并加入神经网络。学习反向传播,学习损失函数,学习梯度下降。动手撸一遍代码。
自此,基本原理搞明白之后,就可以开始熟悉主流框架,包括tensorflow keras等,能够阅读代码之后,开始研究各种成熟网络的结构和调参。
主要包括基本的cnn,RNN,GAN。这个过程不是孤立的学习,需要看论文,做一些小项目来实践,所以过程较长。
当然,人生苦短,这个过程,你还需要弄块好显卡来给深度神经网络加速。
这个过程,我大概每天平均2-3小时的学习,也差不多用了9个月,所以,祝好,祝学习快乐。
04
作者:yuquanle
https://www.zhihu.com/question/305745486/answer/558653688
个人感觉有了些基础常识之后就开始在实践中学习吧,系统的学里面涉及那么多知识,学一遍怕的黄花菜都凉了~遇到不懂的概念利用百度谷歌,然后理解学习这个概念,若是概念难懂,就多看不同的人对这些概念的理解,有的时候有些人能深入浅出的讲解一些很不错的资料,我觉得这种有目的性的实践学习方式学来的东西更加印象深刻~
这样即锻炼了个人能力(独立查找资料文献也是能力),又能达成某些目的~这样过了一段时间之后,你好像又懂很多东西了,但是好像又有很多方面不了解,其实这就是你在某个点有点深度了,但是广度还不够。如果此时有大把闲置的时间,就可以去刷刷那些不错的系统性课程,刷课的时候会发现很多概念理解起来轻松多了,或者说似曾相识(理解的知识点又得到了复习并再次确认自己的理解了的知识点和这些老师讲的是否一致)。
每天进步一丢丢
使用逻辑回归处理多标签的分类问题 使用哪一种方法来处理多分类问题取决于具体问题的定义。如果一个样本只对应于一个标签,我们可以假设每个样本属于不同标签的概率服从于几何分布,使用多项逻辑回归(Softmax Regression)来进行分类。(多项逻辑回归实际上是二分类逻辑回归在多标签分类下的一种拓展。) 当存在样本可能属于多个标签的情况时,我们可以训练k个二分类的逻辑回归分类器。第i个分类器用以区分每个样本是否可以归为第i类,训练该分类器时,需要把标签重新整理为“第i类标签”与“非第i类标签”两类。通过这样的办法,我们就解决了每个样本可能拥有多个标签的情况,
全部0条评论
快来发表一下你的评论吧 !