- 深度学习程序设计实战
- 方林 陈海波编著
- 1350字
- 2025-02-25 14:02:53
前言
能够透过现象看本质,通过结果分析原因,这是人类拥有智能的主要表现。现象和结果就展现在我们面前,是显式(Explicit)的,很容易获取;本质和原因藏在它们身后,是隐式(Implicit)的,不容易被发现。深度学习就是一门这样的科学,它试图以人工神经网络(Artificial Neural Network,ANN)为工具,揭示网络参数与样本之间的本质关系。但在这样做之前,我们有必要理解什么是梯度下降法(GD)和反向传播算法(BP)。它们是揭示上述关系的关键,是本书从第2章开始所有内容的核心。梯度概念来源于微分和偏导,所以读者需要拥有一定的微积分的知识。最起码,需要知道什么是切线和切线的斜率,以及如何计算偏导。
也许这并不是一个很高的要求,但作为计算机专业的科研和教育工作者,我们深感很多大学生并不是没有学习理论,而是不会在实践中使用理论。例如,学了微积分,却不知道能派什么用场;学了编译原理,以为只有在开发编译系统中才有用。可是,你知道吗?这些理论在深度学习中却很重要。
所以,学以致用是本书的宗旨。本书不仅要讲理论和理论的实质,还要讲如何用代码实现这些理论。读者需要一边看书,一边在计算机上动手编程,同时提高自己的理论水平和动手能力。
提到计算机理论和数学原理,可能有些读者心里会打退堂鼓。其实,计算机理论和数学原理是用来指导我们工作的,能够帮助我们更轻松地完成深度学习编程任务。它们都是为“懒人”服务的,也是像我一样的“懒人”发明的。因为懒得应付程序设计或者软件开发过程中千变万化的复杂情况,我们就从其中提炼、抽象出了一些固定不变的东西,这些就是计算机理论和数学原理。所以,如果你想有技巧地偷懒,就学习计算机理论和数学原理吧,它会给你打开一个新天地,让你从一个更高的角度看深度学习、人工智能和程序设计。
所以,尽管本书的确会用到Python编程和人工智能框架Tensorflow(TF),也会讲解部分具体的语法和约定,但是都不是重点。重点是问题分解方法、递归的实质、梯度下降法、反向传播原理、三层神经网络、模型的结构和训练方法以及梯度分析。Python和TF不过是实现它们的工具。如果愿意,你也可以使用其他语言或者其他框架。
本书的目的是提高读者对深度学习基础理论的深刻理解。对很多基础性理论、数学、方法和算法的理解,例如面向对象、梯度、递归程序设计方法、数的进制等,都是编者30年来从事计算机科学理论研究和教学工作经验的总结。对读者来说,学习这些经验的价值可能超过了学习深度学习本身。
本书用到的Python版本为3.5以上,Tensorflow版本为1.9.0~1.14.0。由于TF框架还在飞速更新中,所以不要奇怪可能有些代码不能在你的机器上运行。我们建议把TF的版本设置在上述版本范围之内,或者上网搜索一下怎么做。
虽然本书已经提供了所有的代码,但建议读者一开始不要看代码,而是跟随本书一行一行地手写代码,这对学习深度学习是有很大好处的。如果程序总是出错,却又找不到原因,这时才有必要下载代码,然后运行看看结果如何。
请读者先安装好PyCharm社区版或以上版本,这是我们的集成开发环境。最好准备一个GPU,否则单GPU和多GPU训练就无法学习。书中用到的包主要是numpy和GPU版的Tensorflow,这些包可以通过pip安装。
本书写作过程中得到了李珂、赵昕、雷璐丹、潘志锐、权甲和吴鹏辉等人的大力协助,谢谢你们!
让我们从五猴分桃问题开始,一步一步地开启奇妙的深度学习之旅吧。
编者

关注本微信公众号
回复“深度学习”下载配套资源