前言
近几年,深度学习在学术界和工业界掀起革命,Python语言作为机器学习的首选语言也异军突起。然而,大多数Python语言的教材侧重语法,很少有项目实战,深度学习方面的教材侧重理论,特别是针对卷积神经网络,很少涉及源码解读和实现。因此我试图通过本书,使读者掌握Python语言并深入理解卷积神经网络,并能用Python语言实现卷积神经网络结构。
为了使尽可能多的读者对卷积神经网络有所了解,本书假定读者不具备任何机器学习知识。同时,我尽量少地使用数学知识,只要掌握向量、矩阵及矩阵乘法的定义,就能理解本书中除了优化之外的所有章节;优化问题涉及的数学知识有导数、偏导数、泰勒展开式和链式法则。学习Python语言需要掌握一些基本知识,如list结构、for循环、函数、类和NumPy模块。因此,本书适合具有一定Python基础的大学二年级以上的理工科本科生和研究生,具有类似知识基础的工程技术人员和科研人员,以及对卷积神经网络有一定了解,想进一步理解的人士阅读。
全书共10章,分为3个部分:第一部分(第1章~第4章)介绍了机器学习的基本概念、线性模型、神经网络和卷积神经网络模型,采用一条主线贯穿这3种模型,层层递进,降低了学习难度;第二部分(第5章和第6章)介绍了基于梯度下降法的优化方法和梯度反向传播算法,详细地给出了各种模块的反向传播代码,读者掌握了这些方法后,如果遇到新的模块,就能独立实现其反向传播代码;第三部分(第7章~第10章)介绍了训练网络前的准备工作、神经网络实战、卷积神经网络的应用及其发展,特别详细地给出了数据归一化、梯度检测、批量归一化(BN)及各种经典的卷积神经网络结构,如VGGNet、GoogLeNet、ResNet、SENet和轻量网络MobileNetV2。除第1章外,每个关键知识点都给出了基于NumPy的代码实现,特别是第8章和第9章这两章,给出了完整的神经网络和卷积神经网络代码实现,方便读者训练网络和查阅代码。
如果你只是想了解卷积神经网络的原理,可只看第一部分和第10章。如果你只是想更好地利用TensorFlow等框架来训练网络结构,可不用看第6章,通过学习第5章就能正确选择合适的优化算法。如果你想不借助TensorFlow等框架实现各种网络结构,则需学习所有章节,特别是第二部分。
本书中的代码的一个突出优点是接近伪代码,几乎不言自明,十分容易读懂。如果读者没有Python基础,不看代码也能掌握卷积神经网络的知识。当然,强烈建议读者手工输入代码,泛读或精读代码,注意其实现细节。这能加深对卷积神经网络的理解,同时也是一个极好的Python语言项目实战训练。
卷积神经网络发展极为迅速,各种新网络结构层出不穷,理论也在一步一步发展,本书只是对卷积神经网络最基本、最核心的概念,以及最重要的网络结构进行介绍。我自认才疏学浅,略知皮毛,更兼精力有限,书中错谬之处在所难免,若蒙读者不吝告知,将不胜感激。
我的邮箱是shanjianhua.vip@qq.com,如有疑问,欢迎垂询。
最后要感谢我的家人,特别感谢我的爱人佘慧莉女士,感谢她一直以来对我的理解和支持。当然,也要感谢使本书顺利出版的编辑王军花和武芮欣两位女士。
单建华
2018年5月于马鞍山