为什么写这本书
人工智能(AI)是一种新的通用技术,如同19世纪的铁路和电力,以及20世纪的汽车、电脑、互联网一样,将应用到生产经济的方方面面。从个人到企业,从企业到国家,都已感受到人工智能的强大及其带来的机遇与挑战。人工智能将深入到各个领域,也正在改变各个领域,各行各业都在忙于实现AI+,希望通过AI+突破瓶颈,改造原有的一些流程,提高效率,提升竞争力,激发新的创新能力。
“千里之行,始于足下”,在人工智能的千里之行中,学好Python及Python相关的大数据、机器学习、深度学习技能就是“足下”。
为什么是Python,而不是其他语言?因为Python是人工智能的首选语言。Python为何能成为人工智能的首选语言?因为现在大数据分析处理、网络开发、机器学习、深度学习都使用Python。为何这些技术都愿意选择Python,而不是Java、R、C或其他语言?这应该归功于Python的易用、好用、强大。我们知道Java、C很强大,但易用、好用方面做得不够好;R也比较好用、易用,但又不够强大。
本书重点介绍了Python基础,使用Python作为开发语言的各种数据处理、机器学习、深度学习的框架,以及使用这些框架的具体实例。具体来说,本书先介绍了Python入门级的一些基础知识,从Python特殊语法到变量、数据结构、控制语句,再到函数和类等。接着介绍了Python非常强大的“基因”—NumPy。NumPy是整个Python数据处理、机器学习、深度学习的基石,这也是很多深度学习、机器学习架构选择Python的重要原因之一。NumPy主要用于向量、矩阵运算,NumPy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能。所以,NumPy简单、好用,并且高效。最后介绍的机器学习工具Scikit-Learn,深度学习框架PyTorch、Keras都能看到NumPy的影子,如PyTorch、Keras中的张量(Tensor)基本都是基于NumPy,尤其是PyTorch中的Tensor,可以说就是可使用GPU的NumPy。
NumPy的不足之处就是无法直接在GPU上运行,GPU是现在机器学习、深度学习的重要资源,其计算性能是CPU的几十倍,甚至更多。所以在介绍Python基础之后,本书介绍了目前最流行的两种深度学习框架PyTorch和Keras,这两种框架各有特点,易用、好用,且功能强大。
机器学习、深度学习是人工智能的核心内容,Python是人工智能的首选语言。掌握这些关键技术,就相当于拿到了打开人工智能大门的钥匙。
为了广大人工智能初学者或爱好者能在较短时间内掌握Python及人工智能方面的技术,我们编写了本书。我们花了近一年的时间打磨,为便于大家更好地学习和掌握相关技术,在内容选择、安排和组织等方面采用了以下方法。
1.内容选择:常用又重要的内容+实战
Python涉及的内容非常多,本书只选择了其中与数据处理、机器学习相关的一些内容,没有涉及网络开发、爬虫等内容。这样有利于聚焦Python入门和人工智能。在介绍机器学习工具、深度学习框架时,选择了PyTorch和Keras这两个易学、好用的框架。其中PyTorch的很多内容可以看成是Python的延伸,这也是首先介绍此框架的重要原因。Keras简单明了,非常适合初学者或有一定实践经验的读者使用。对Python及各种框架的理解和掌握离不开实战,所以本书介绍了很多实例,以及对实例的后续思考等内容。
2.内容安排:简单实例开始,循序渐进
一个简单的实例胜过千言万语,所以本书的讲解都是从简单实例开始,然后逐步扩展。实例的说明也采用了类似的方法,如识别手写数字的任务,先使用Python实现,然后分别用PyTorch、Keras实现,这有利于读者更好地理解图像识别的原理和各种框架的特色。
3.表达形式:让图说话,一张好图胜过千言万语
在Python开发、机器学习、深度学习中有很多抽象的概念、复杂的算法、深奥的理论,如NumPy的广播机制、梯度下降对学习率敏感、神经网络中的共享参数、误差反向传播等,这些概念如果只用文字来描述,可能很难解释清楚。但如果用一些图形来展示,再加上适当的文字说明,往往能取得非常好的效果。
除了以上谈到的3个方面,为了帮助大家更好地理解,并更快地掌握Python、机器学习、深度学习这些人工智能的核心内容,本书还讲解了很多其他方法。我们希望通过这些方法或方式,能带给读者不一样的理解和体验,使读者感到类和对象不抽象,机器学习容易学习,难学的深度学习也非常好学。
本书特色
本书的特色概括来说就是:把理论原理与代码实现相结合;找准切入点,把复杂问题简单化;图文并茂,使抽象问题直观化;实例说明,使抽象问题具体化。希望通过阅读本书,读者能拥有新的视角、新的理解,甚至更好的未来。
读者对象
·对Python感兴趣的广大在校学生、在职人员。
·对人工智能感兴趣的广大在校学生、在职人员。
·对PyTorch、Keras等感兴趣,并希望进一步提升的在校学生、在职人员。
如何阅读本书
本书分为两部分,共20章,第一部分为Python基础,第二部分为人工智能基础。
第一部分(第1~11章)为Python基础部分,这也是本书的基础,可以为后续章节的学习打下坚实的基础。第1章介绍了Python的安装与配置;第2章介绍了变量与数据类型;第3、4、5章介绍了序列、字典、集合等数据结构及if、for循环等内容;第6、7章是第一部分的重点,分别介绍了函数、类和对象等概念;第8章涉及文件与异常处理;第9、10章分别介绍了科学计算的神器NumPy、善于数据处理的Pandas;第11章介绍了如何实现数据可视化。
第二部分(第12~20章)为人工智能基础部分,这是本书的核心部分,包括机器学习常用算法、机器学习一般流程、神经网络和两种深度学习框架等内容。第12章为机器学习基础,也是深度学习基础,其中包含很多机器学习经典理论、算法和方法等内容;第13章介绍了神经网络;第14章介绍了PyTorch及用PyTorch实现神经网络;第15章介绍了卷积神经网络;第16章介绍了提升模型性能的几种方法;第17章为Keras入门;第18、19、20章分别用Keras实现图像识别、迁移学习、风格迁移等内容。
勘误和支持
由于笔者水平有限,加之编写时间仓促,书中难免出现错误或不准确的地方,恳请读者批评指正。读者可以通过链接下载资源。
可通过以下渠道给我们反馈,非常感谢您的支持和帮助。
QQ:1715408972
邮箱:wumg3000@163.com
致谢
在本书编写过程中,得到了很多同事、朋友、老师和同学的支持!感谢博世王冬的大力支持;感谢上海交大慧谷的程国旗老师,上海大学的白延琴老师、李常品老师,上海师范大学的田红炯老师、李昭祥老师,赣南师范大学的许景飞老师等的支持和帮助!
感谢北京大学出版社魏雪萍老师给予本书的大力支持和帮助。
最后,感谢我的爱人赵成娟,在繁忙的教学工作之余帮助审稿,提出不少改进意见和建议。
吴茂贵