因为研究生研究方向的缘故,正在学习深度学习,其实从大学开始就一直有在断断续续的学习。浅浅的看过《python深度学习入门》、也尝试翻过李航老师的《统计学习方法》、周志华老师的《机器学习》,也在B站跟着李宏毅老师学过机器学习。但总是坚持不下去,感觉入门很难,因此,大学期间并没有做出什么实际的成果(虽然现在也没有吧,笑)。
目前研一,主要的方向是图像处理,因为大的方向与激光有关,主要做的是图像处理激光器光斑(刚刚接触课题,目前还没有做出什么)。因此深度学习成为了绕不开的学习内容。经过一段时间的学习,渐渐有了些小小的收获,因此分享一下,权当作最近一段时间的整理,也可以算作一个入门手册吧。
1-如何入门?
或许你现在正处于大学,或许也想学习深度学习,但不知道该如何入门。看到网上各种教程,视频,随便打开一个,学了两天发现看不懂。硬生生看完了,过几天就忘了,完全没有收获。所以选择什么课程去学习,如何学习,又如何与实际联系起来十分重要,但也很困难。
1.1 数学基础
高数、线代、概率论是基础,如果现在是大一,学好这些基础的数学课是关键,尤其是线代。因为日后处理的数据基本上都可以用矩阵表示,学好线代对于理解这些概念是很关键的。
推荐:线性代数的课程学习推荐看MIT老师讲的,会对线代有不一样的认识,也很适合研一复习线代,重新理解,目前的我正在学习,学完后出一篇知识点整理。
1.2 python基础
学习深度学习不能避免的要与编程打交道,因此掌握一门编程语言是基础中的基础。而很多深度学习的基础框架都可以由python调用,很方便。那对于python需要掌握些什么呢?
- 基本语法,推荐大家看mooc嵩天老师的python语言程序设计课程,掌握基本的语法,列表、for循环,字符串格式化等基本用法,是写代码的基础。
- 数据分析工具,最基本的就是numpy库、matplotlib库和pandas库,在命令行输入pip install 库名称 即可安装,numpy和pandas库涉及矩阵的相关运算,matplotlib为数据的可视化,也是日后处理数据的基础。网络上的教程也是很多的,b站随便一搜就有很多。
1.3 理论基础
看到这假设你已经掌握了前面所说的,接下来就是学习深度学习的相关理论了,这里推荐吴恩达老师最近的机器学习课程,老师会从最基础的概念讲起,配套有相关的python代码可以进行练习,很适合入门。
这个阶段不推荐直接啃书,看西瓜书、或者李航老师的统计学习方法,如果没有从最开始一点点打基础,直接看这些书是很吃力。理论的学习固然重要,但重要的在于自己的理解和应用,在于自己的一点点积累。
1.4 深度学习框架学习
具备了一定的理论基础,但如何将原理落实到代码上还有一段路要走,还需要学习相关的深度学习框架。相信你一定听说过pytorch、tensorflow这些名词,但不太能分清楚这些和python、pycharm都有什么区别,看起来名字都差不多。
简单的理解就是,如果说深度学习是一个自行车,他们就相当于轮子,你使用深度学习这个工具行驶在人工智能这条马路上,需要做的不是造轮子,而是怎么骑。pytorch和tensorflow就是这样的轮子,而我们学习的pytorch和理论基础就是如何造这个轮子。
已经有很厉害的大牛做好了这个pytorch和tensorflow相关的库,我们只需要将其安装到自己的电脑上,再进行导入即可。这两个库都可以实现深度学习中神经网络的搭建,你只需要掌握其中一个既可以实现项目的开发。
2-其他心得体会
写到这希望前面的推荐能解决你关于深度学习不知道如何入门的困惑,如果你已经完成前面学习,那么恭喜你已经完成了入门。接下来就是进阶了,目前的我刚刚学完pytorch、吴恩达老师的机器学习课程学到了深度学习讲解神经元、神经网络部分,也正在跟着MIT老师看线性代数。也仅仅是刚入进去半脚门。
后续的计划:
- 写一篇pytorch的学习总结,作为一段时期学习的总结
- 跟着B站一个博主霹雳吧啦Wz搭建图像处理、语义分割等网络,算是小小的实践
- 看相关领域的论文
- 做课题相关的实验
一入深度之门发现深似海,自己目前还有很多知识要学习,也会不定期进行更新和总结(当然看我的学习速度啦~),尽请期待了。