快速入门深度学习,两到三个星期够啦。
0、不用面面俱到:
想要快速上手深度学习的项目,其实用不上两到三个月,有了明确的目标和路径,其实上手还是蛮快的。
如果现在在小红书上搜索深度学习入门路径,有不少帖子会说从机器学习开始,还要学习numpy,Sklearn,更有甚者还要说要去学习贝叶斯原理矩阵变换的,我觉得他们说的对,但是也不全对。当然如果能从基础学起,很多知识便于我们以后的理解,这是好事,但是现在深度学习的节奏非常快,尤其是一些在读研或者跟着老师做项目的小伙伴,等把梯度贝叶斯全部搞明白,但是没有短时间看到结果,加上导师一催促,距离心态大崩也不远了。这种方法固然有它的道理,但是它无法持续,很难坚持下去。
我觉得大家要纠正一个观念,上了大学之后,我们学习知识很多时候不再是渐进式的了,不像以前一环套一环,大学的学习,尤其是做深度学习的项目,我们是可以跳跃式的学习的。具体方法可以分为以下几点。
1、学习目标
如果学习深度学习不知道自己的最终目的,就会产生东学一下西学一下的想法。比如觉得python太难,我就去学花书,觉得花书难,我就去学数学,数学难我就去找找代码跑一跑。这样漫无目的的学习不连贯,不知道自己到底该去哪儿,到最后就会从入门到放弃。
需要可以给自己定一个目标,有的放矢,这样就会在浩如烟海的资料中,精准找到自己该学习的知识,不会像猴子掰玉米一样,捡芝麻丢西瓜。比如导师安排我在一个月内要完成某医学图像的分类任务,或者说我觉得深度学习股票预测很有意思想了解一下,网上换脸的技术很神奇,这样有了自己的目标就知道自己该往哪个大方向走,知道哪部分该学,哪部分可以暂时跳过。把自己当成一个无情的目标机器,所有的一切都为这个目标服务,带有目的性的去择取知识,一方面知道自己距离目标还有多远,另一方面会给自己带来成就感和获得感,更容易坚持下去。
2、学习路线
有了航行目标之后我们就要开始造船了,当然造船没必要每一块木板都自己来锯,也没有必要去刻意去了解造出螺旋桨的五个步骤,你是一个船长,不是木匠,你的目标是带领大家到达目的地。很多东西我们知道怎么用就行了。
1.先从python开始:
一个星期可以掌握python ,你只用掌握基础的数据结构,循环和函数然后自己模仿着敲一遍,至于网络编程多线程这些你大可跳过。争取做一个小功能,把相关的数据结构都用上,加上函数循环条件语句等等,python就可以过关了。 至于sklearn、torch这些平台或者库函数,我的经验是直接跳过,哪里不会点哪里,看不懂就去搜具体函数的作用,这些只是工具。
2.秒掉深度学习理论:
为什么说没有必要去学习矩阵论和概率学,虽然深度学习里面有很多公式,但是讲道理随便拉一个已经搞了几年的硕士过来,他们可能知道梯度下降反向传播的大概原理,但是要手推公式原理,估计大部分人做不到。
比如CV方向,花一个星期学懂卷积神经网络已经足够。首先学习卷积的原理(这个比较简单,也不涉及复杂的公式),然后知道什么是反向传播梯度下降损失函数,有了百分之五六十的感性认识,就可以继续前进了。
在了解CNN后,再去了解经典的模型,比如AlexNet、ResNet,学习它们的创新之处,模型理论就可以过关啦。
如果是自然语言处理,也就是NLP方向的话,可以从RNN开始,再到LSTM再到Transformer,学会这三个模型,自然语言处理也有了感性的认识,知道这其中的原理,了解了什么是注意力机制,什么是残差,什么是编码解码器,心底也会更容易接受后续学到的知识。
上述说到的理论,如果没有任何基础的话,学起来可能稍微会吃力一些,但是以前没有AI,网上博客良莠不齐,有的讲的错的我们也不知道。好在现在如果碰到不懂的理论,我们可以有很多种方法去弄懂,比如让AI给我们举例,去小破站看对应章节的视频,多看几篇知乎csdn的文章,主要去找不懂的点,尽量不要发散。不要恋战。
3.开始上代码:
已经有了python 基础和深度学习理论,此时我们就可以直接上GitHub去搜索简单的demo跑一跑,比如图像分类的,可以去找手写体数字识别,鸢尾花识别,猫狗识别的等等项目。
安装相应的python 、torch环境顺利的话一上午就可以,如果不顺利,可能需要卡几天,但是最暴力的依然是遇到什么报错就去搜索,或者问AI,我们遇到的问题,绝大部分一定有人遇到过。一切准备就绪后,就可以开始运行代码,这也就到了最后一步,也是最容易出错的地方,包含从数据集读取,模型测试等一系列踩坑的地方,这里就没有办法速成了,就需要积累经验一步一步来,遇到问题就解决问题,直到模型跑出结果,那一刻,你可以舒一口气,并且有巨大的成就感。
4.在跑通了别人的模型之后,我们需要把别人的数据换成自己的数据集,此处就需要仔细研究相应的python、torch以及numpy的库了,这里我们就没有必要再去规避,即使用AI来写,我们也是需要尽量弄懂相应的代码的,否则我们后续不知道怎么修改代码,优化自己的项目工程。现在我们相当于有了一个基础版本,这时候我们再去深究深度学习其他模块的理论,比如一些即插即用的模块,可不可以应用到我们的模型上来?别人好的想法,我可以怎么做代码适配?如果加入之后效果不错,此时大概率就可以着手写一篇论文了,不过这个也看导师哈。
4、学习心态
其实一直到跑通别人的模型这一步,如果我们能够保证自己那天投入的精力,两到三个星期确实是足够了。可能有些小伙伴还是觉得我能办得到吗?感觉难度还是挺大的。
其实做很多事情困扰我们的从来不是有多难,而是我们自己一开始就给自己蒙上了一层困难的迷雾,不敢迈出第一步,害怕自己做了也没结果。
我在以前刚接触这个领域的时候,也没想到自己在很短的时间内能够掌握这么多基础理论。有时候需要适当逼自己一把,其实你能做到的远比自己想象的多。
我们要在战略上重视敌人,战略上藐视敌人,现在互联网最后发达,都能学会自己想学的知识。
大多数人其实都差不多,我们虽然不是天赋异禀,但也绝不是朽木不可雕。可能还有很多读研的小伙伴至今还是放养状态,分配的方向自己甚至完全没有接触过,导师不管,丢了一个课题自生自灭,每天浑浑噩噩,看别人干的如火如荼自己每天原地踏步,焦虑不已。如果你也是基本上没啥深度学习的基础,但是恰好课题与深度学习有关,或者没有方向,但是课题可以和深度学习结合,我建议你可以行动起来,试一试,自己开始学一学,相信半个月后,你肯定能脱胎换骨,有了自己的方向,知道自己该去哪儿。你在南极点,你在迷茫在低谷,只要你出发了,怎么走都是往北,都是向上走,还能坏到哪里去呢?
行动起来,未来的青千,院士,诺贝尔选手们。
欢迎大家围观我的gzh:阿龙AI日记,不定期分享文章和资料代码哦。
更多推荐
所有评论(0)