前言
本书主题
本书将探讨以下两个主题。
神经网络:一种受生物学启发的编程范式,能够让计算机从可观测数据中学习。
深度学习:用于神经网络学习的一套强大的技术。
神经网络和深度学习是目前图像识别、语音识别和自然语言处理等领域中很多问题的最佳解决方案,本书将讲解神经网络和深度学习背后的核心概念。
内容设置
神经网络是最佳编程范式之一。传统的编程方法告诉计算机做什么,把大问题分解成许多小问题,明确定义任务,以便计算机执行。神经网络不直接告诉计算机如何解决问题,而让它从可观测数据中学习,让它自己找出解决问题的方法。
主动从数据中学习听上去很妙,然而直到 2006 年,除了一些特殊问题,神经网络仍未能超越传统方法。2006 年,名为“深度神经网络”的学习技术诞生,并引发了变革。现在,人们将这些技术称为“深度学习”。随着这些年的发展,如今深度神经网络和深度学习在计算机视觉、语音识别、自然语言处理等许多问题上表现不俗,已被谷歌、微软、Facebook 等公司大规模采用。
本书旨在介绍神经网络的核心概念和深度学习的现代技术,以及如何使用神经网络和深度学习解决复杂的模式识别问题。有了神经网络和深度学习的应用基础后,你可以将其用于解决实际问题。
以原理为导向
本书将细致阐释神经网络和深度学习的核心概念,而不是笼统地罗列想法。这些核心概念是理解其他新技术的基础,类比学习编程语言的话,这相当于掌握一种新语言的核心语法、库和数据结构。你可能只了解某一门编程语言的一小部分(许多编程语言的标准库非常庞大),但新的库和数据结构会容易理解。
这意味着本书不会重点讲授如何使用特定的神经网络库。如果你想学习某个程序库的用法,可以参考相关教程和文档。请注意,这样可能暂时解决了某些问题,然而如果想理解神经网络的运行机制,以及未来几年都不会过时的原理,那么只学习流行的程序库是不够的,还需要掌握神经网络的工作原理。技术兴衰起落,而原理是长久的。
注重实践
本书将通过解决具体问题——教计算机识别手写数字——来介绍神经网络和深度学习的核心理论。这个问题用常规方法解决的话非常困难,诉诸神经网络则简单得多,只需几十行代码,不涉及特别的库。此外,我们会通过多次迭代来改进程序,贯彻神经网络和深度学习的核心思想。
这意味着阅读本书需要拥有一定的编程经验,但你不必是专业程序员。本书代码是用 Python 编写的,Python 语法简单易学,新手也可以很快入门。我们将开发一个小型神经网络库,它可以用于试验和加强理解。本书代码下载地址为:https://github.com/mnielsen/neural-networks-and-deep-learning1。基于本书内容,你可以构建出一个功能完备的生产级神经网络库。
1你可以直接访问本书中文版页面,下载本书项目的源代码:http://www.ituring.cn/book/2789(也可查看或提交勘误)。——编者注
阅读本书需要一定的数学基础。很多章节涉及一些数学知识,但通常只是初等代数和函数图,大多数读者应该可以看懂;偶尔会涉及高等数学,但我已经组织好内容结构,即使不懂某些数学细节,也不妨碍对本书内容的整体理解。第2章涉及多元微积分和线性代数的些许内容,为了方便阅读,章首给出了指导。如果确实感到理解困难,可以直接跳到那一章的总结部分。无论如何,无须一开始就担心内容过难。
本书兼顾理论和实践。掌握神经网络的基本概念是很好的开端。我们将开发实际可用的代码,而不仅仅讨论抽象的理论,你可以探索和扩展这些代码。有了理论和实践的基础,你可以走得更远。
关于练习和问题
科技类图书的作者往往会呼吁读者要多做练习(exercise),多解决问题(problem),我对此不以为然。如果不这么做会有什么不良后果吗?当然不会,你省了时间,但会影响深入理解。有时这么做是值得的,有时却不然。
对于本书要怎么做呢?建议你尝试去做大部分练习,但不必去解决所有的问题。
你应该做大部分练习,因为这样做有助于你检验自己是否很好地理解了所学内容。如果你不能轻松完成一个练习,说明对基础知识掌握不牢。当然,如果偶尔一个练习困住了你,可能只是因为你对个别知识点理解有偏差,继续前行便会柳暗花明。但是如果感到大多数练习很难,那么就需要重温前面的内容了。
问题是另外一回事,解决问题比完成练习更难,往往需要付出更多努力。有的问题很棘手,当然,面对困境,耐心是加强理解和内化知识的唯一途径。
因此,不建议你去解决所有问题,自己开发项目会更好。也许你想用神经网络来分类曲目,或者预测股票价格。如果找到了一个感兴趣的项目,可以忽略本书中的问题,或者把它们简单地应用于自己的项目中。解决再多的问题,也不及钻研感兴趣的项目收获得多。兴趣是精通技艺的关键。
当然,当下你可能缺乏这样一个项目,这没有关系。解决本书中的问题可以激发动力,启发你找到自己的创新项目。
致谢
本书源于我为一个神经网络和深度学习的在线学习研讨会准备的一系列笔记。感谢研讨会的所有参与者——Paul Bloore、Chris Dawson、Andrew Doherty、Ilya Grigorik、Alex Kosorukoff、Chris Olah 和 Rob Spekkens,我从你们身上学到了很多。尤其感谢 Rob,他提出了如此多有见地的问题和想法;还有 Chris,他持续分享自己迅速掌握的神经网络知识。还要感谢 Yoshua Bengio,他阅读了其中一章并提供了反馈。
电子书
扫描如下二维码,即可购买本书电子版。
动态示例
扫描如下二维码,即可获取本书配套的动态示例。