《Python深度学习:基于PyTorch》
为什么写这本书
在人工智能时代,如何尽快掌握人工智能的核心——深度学习,是每个欲进入该领域的人都会面临的问题。目前,深度学习框架很多,如TensorFlow、PyTorch、Keras、FastAI、CNTK等,这些框架各有优缺点,应该如何选择?是否有一些标准?我认为,适合自己的就是最好的。
如果你是一位初学者,建议选择PyTorch,有了一定的基础之后,可以学习其他一些架构,如TensorFlow、CNTK等。建议初学者选择PyTorch的主要依据是:
1)PyTorch是动态计算图,其用法更贴近Python,并且,PyTorch与Python共用了许多Numpy的命令,可以降低学习的门槛,比TensorFlow更容易上手。
2)PyTorch需要定义网络层、参数更新等关键步骤,这非常有助于理解深度学习的核心;而Keras虽然也非常简单,且容易上手,但封装粒度很粗,隐藏了很多关键步骤。
3)PyTorch的动态图机制在调试方面非常方便,如果计算图运行出错,马上可以跟踪问题。PyTorch的调试与Python的调试一样,通过断点检查就可以高效解决问题。
4)PyTorch的流行度仅次于TensorFlow。而最近一年,在GitHub关注度和贡献者的增长方面,PyTorch跟TensorFlow基本持平。PyTorch的搜索热度持续上涨,加上FastAI的支持,PyTorch将受到越来越多机器学习从业者的青睐。
深度学习是人工智能的核心,随着大量相关项目的落地,人们对深度学习的兴趣也持续上升。不过掌握深度学习却不是一件轻松的事情,尤其是对机器学习或深度学习的初学者来说,挑战更多。为了广大人工智能初学者或爱好者能在较短时间内掌握深度学习基础及利用PyTorch解决深度学习问题,我们花了近一年时间打磨这本书,在内容选择、安排和组织等方面采用了如下方法。
(1)内容选择:广泛涉猎 精讲 注重实战
深度学习涉及面比较广,且有一定门槛。没有一定广度很难达到一定深度,所以本书内容基本包括了机器学习、深度学习的主要内容。书中各章一般先简单介绍相应的架构或原理,帮助读者理解深度学习的本质。当然,如果只有概念、框架、原理、数学公式的介绍,可能就显得有点抽象或乏味,所以,每章都配有大量实践案例,通过实例有利于加深对原理和公式的理解,同时有利于把相关内容融会贯通。
(2)内容安排:简单实例开始 循序渐进
深度学习是一块难啃的硬骨头,对有一定开发经验和数学基础的从业者是这样,对初学者更是如此。其中卷积神经网络、循环神经网络、对抗式神经网络是深度学习的基石,同时也是深度学习的3大硬骨头。为了让读者更好地理解掌握这些网络,我们采用循序渐进的方式,先从简单特例开始,然后逐步介绍更一般性的内容,最后通过一些PyTorch代码实例实现之,整本书的结构及各章节内容安排都遵循这个原则。此外,一些优化方法也采用这种方法,如对数据集Cifar10分类优化,先用一般卷积神经网络,然后使用集成方法、现代经典网络,最后采用数据增加和迁移方法,使得模型精度不断提升,由最初的68%,上升到74%和90%,最后达到95%左右。
(3)表达形式:让图说话,一张好图胜过千言万语
在机器学习、深度学习中有很多抽象的概念、复杂的算法、深奥的理论等,如Numpy的广播机制、梯度下降对学习率敏感、神经网络中的共享参数、动量优化法、梯度消失或爆炸等,这些内容如果只用文字来描述,可能很难达到使读者茅塞顿开的效果,但如果用一些图形来展现,再加上适当的文字说明,往往能取得非常好的效果,正所谓一张好图胜过千言万语。
除了以上谈到的3个方面,为了帮助大家更好理解、更快掌握机器学习、深度学习这些人工智能的核心内容,本书还包含了其他方法。我们希望通过这些方法方式带给你不一样的理解和体验,使抽象数学不抽象、深度学习不深奥、复杂算法不复杂、难学的深度学习也易学,这也是我们写这本书的主要目的。
至于人工智能(AI)的重要性,我想就不用多说了。如果说2016年前属于摆事实论证的阶段,2017年和2018年是事实胜于雄辩的阶段,那么2019年及以后就进入百舸争流、奋楫者先的阶段。目前各行各业都忙于“AI ”,大家都希望通过AI来改造传统流程、传统结构、传统业务、传统架构,其效果犹如历史上用电改造原有的各行各业一样。