作者:mozillar
链接:https://www.zhihu.com/question/371622741/answer/1349097204
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

学习是个系统工程,但是,入门的方式多种多样,适合自己的学习方式才是最好的方式。

这篇小文简单说说如何快速入门卷积神经网络(CNN)。既然是介绍入门的,那么一定要写得具体,有较强的可操作性,这也是本文的特点。

1 学习是枯燥的过程,尤其是在入门阶段,大量陌生的术语,思路找不到头绪,都很让人抓狂,所以一定要尽可能多给自己一些正向激励。一门课一门课地去学,一本书一本书地看,这样的学习方式,不太适合深度学习的入门。

2 编程,随便找一本python看一下,或者找个视频教程。只看最重要的基础部分,web应用、数据可视化什么的都不要管,因为你要快速地获得正向反馈,就得尽快开始下一阶段知识的学习。然后从书上找一个小项目完整地实现一下。我当时看的书是

Python编程 从入门到实践 第2版(图灵出品)

¥54.90起

,只看了前11章,然后照着书上的游戏案例做了一下。提高编程水平一方面要多看别人的代码,一方面要自己多练,还得写文章总结。深度学习入门的时候不用多么高的水平,因为现在的各种框架把对编程的要求降低了很多。所以编程这一块,2个礼拜就够了。

3 深度学习,如果你用卷积神经网络,那么一定要抓重点,别去一页一页啃什么概率论线性代数,也别去啃机器学习的教材和视频。重点就是卷积运算、梯度下降和网络结构。你首先要搞明白卷积是啥,可以看这本书(第一版)的第六章(注意,这本书是讲tensorflow 1.x的,tensorflow已经发布2.0版本,这本书里的代码可以不看,但是卷积的概念讲得不错)。

TensorFlow:实战Google深度学习框架

京东

¥21.00

去购买​

更精确一些,只看卷积层和池化层的这两小节,其他的忽视不看。当时也找了不少资料,还是觉得这本书对这两个知识点的解释最清楚。再强调一遍,初学阶段要的是成就感,尽快做到对各种相关知识的最低要求的掌握,以便尽早开始用这些知识解决你面临的问题

梯度下降没啥好说的,首先看看偏导数,然后掌握几种经典方法:动量法,Adam就够了。

网络结构:你要做大的网络,还是轻量级的网络,自己要先想好。经典的网络结构和最新的网络结构都应当有所了解,仅举几个例子,大的网络:VGG,ResNet,轻量级网络:shuffleNet,mobileNet。然后学习下一步,开发框架,再反过头来去github下载他们的源代码,再研究一下如何实现这些网络,如何实现卷积、梯度下降训练、损失函数。

4 开发框架的学习。可以使用tensorflow和pytorch,也可以使用国产的。

4.1 如果使用tensorflow,可以先看我上面发的链接的书,再次强调这本书是tensorflow1.x,2.0的书我没有看过,所以没给出相关教材的推荐这时只看前五章(代码之外的部分)即可,第六章也需要,但是你在第3步已经看过了),然后下载安装CPU版的tensorflow,或者直接安装GPU版的tensorflow及cuda,cudnn(建议在ubantu系统安装)。安装好之后去tensorflow英文官网看说明文档,只看最前面有关minst数据集实验的例子,实现之后动手运行一下。代码中用到哪些函数和知识,你再去官网搜,不要一上来就妄图吃成胖子,所有文档都看一遍,这样大大影响效率,也没有必要。

4.2 如果学习pytorch,可以先看官方教程,英文文档如下:

https://pytorch.org/tutorials/​pytorch.org/tutorials/

对应的中文版如下:

主页 - PyTorch中文文档​pytorch-cn.readthedocs.io/zh/latest/

当然,官方教程还有另一套资料可供学习,也算是pytorch的官方文档,是一本书(完整版有英文纸质版,很贵),目前英文电子版只能看前五章(130页左右),但是短小精悍,对pytorch一些操作的理解很有益,初学的话足够了,英文文档如下:

PyTorch​pytorch.org/deep-learning-with-pytorch正在上传…重新上传取消

对应的中文版如下:

DL-with-PyTorch-CHN​tangshusen.me/Deep-Learning-with-PyTorch-Chinese/#/

另外,推荐下面这本书作为补充,因为自己想做一点深度强化学习的研究,我只看了前五章和第16章,做卷积神经网络可以只看前六章。虽然书里有些代码的运行结果没有打印出来,部分代码的功能和结果也没有提供详细说明,但总体来说看着还行。

Python深度学习:基于PyTorch 9787111637172

京东

¥33.80

去购买​

一大缺憾就是有些地方注释少,尤其是后面深度强化学习部分,代码注释少得可怜,但是这本书最大的优点就是提供了源代码,想看书中代码运行结果的话很方便,可以直接复制粘贴,代码可以在下面的网站找到:

http://www.feiguyunai.com/index.php/2019/06/13/python-ml-pytorch/​www.feiguyunai.com/index.php/2019/06/13/python-ml-pytorch/

因为自己的问题是用C++实现的,所以使用的是pytorch C++ 的前端API,与python API的环境配置步骤还是很相似的,下面针对python API给出一个其他人写的配置环境的方法,我自己也试过这个方法是可行的(转载自mind_programmonkey的经验并表示感谢):

win10下pytorch-gpu安装以及CUDA详细安装过程_Mind_programmonkey的博客-CSDN博客_win10 pytorch gpu​blog.csdn.net/mind_programmonkey/article/details/99688839正在上传…重新上传取消

至于C++ API,我是在VS2019中配置环境的,与使用其他第三方库的方法是一样的,有时间我会再单独开一个回答。

5 到这里,看一下我第3步最后一句话,吃透那几个神经网络的源代码(如果看不懂数据预处理部分也没关系,先吃透搭建网络结构部分的代码和训练的代码)注意这一步很关键,一定要吃透,理解每一行代码,不能停留于似是而非,只有完全搞懂,后面才能高效地学习。

6 找一个包含了制作数据集,预处理,网络结构搭建,训练,网络模型保存,结果保存和可视化的完整示例。制作适合tensorflow1.x 的自定义数据集可以看我前面推荐过的讲卷积那本书的第七章。跟上一步的重要性一样,关键在于吃透每一行代码和背后涉及到的数学原理。

7 动手做数据集时需要数据清洗,可以查一下相关方法。

8 尝试着去用你学到的知识解决问题吧,哪些知识点还有遗漏,或者有尚待提高的地方,也会很快地学习完,因为你已经掌握每个部分的知识脉络了。

9 如果要创新,强烈建议去CSDN看看别人的博客,和那个预印本网站找最新论文,关注机器之心、新智元、量子位、paperweekly这些公众号,多读别人的东西才能有思路。

10 入门基本上就是这样了。等你解决了手头的问题之后,最好再抽时间系统地学习一遍,这是很有必要的,学习初期为了尽快得到激励,很多东西都是零零散散地学过,为了弥补带来的负面作用,必须认真查缺补漏,加深理解。

11 上述步骤的第2到第8步最多也就需要两个月的时间。

PRML前面简单,后面难一些,总体来说不适合入门。有关机器学习的学习路线知乎已经有不少有价值的回答了,我是看李航老师的统计学习方法(第一版)入门的,写得很清晰。因为我主要研究的是强化学习和智能决策问题,所以只看了第一版,给研究生上课用的教材是第一版,并且自己补充了强化学习、深度学习和聚类。个人觉得如果不做NLP的话,第一版足够了。以下是第一版:

统计学习方法李航【正版】

京东

¥24.77

去购买​

目前已经有第二版了:

统计学习方法 第2版 第二版 李航著 机器学习入门教材

¥70.50起

第二版包含了第一版的内容,更正了第一版的一些小错误(大概两三处),并且增加了一倍的篇幅用于介绍NLP相关的机器学习方法。所以做NLP或者将来打算做NLP的同学,可以看第二版。

再回到开头,精通任何东西都不是一件容易的事情,有时候需要系统学习,有时候需要专门查阅相关资料深入一点往下钻,但是入门方法还是要找对的,能起到事半功倍的作用,少花时间绕弯路,希望对大家有所帮助。

需要机器学习深度学习统计学习电子书籍+500G人工智能学习资料(内含电子书,论文合集,最新技术资料,行业报告等)可以关注我回复(123)白嫖领

Logo

一站式 AI 云服务平台

更多推荐