如果您已经了解过神经网络与深度学习,请直接跳转到第一章学习
概念:
神经网络,一种基于生物启发式编程范式,它使计算机能够从观测数据中学习
深度学习,一套用于神经网络学习的强大技术集合
简介
神经网络和深度学习目前为图像识别、语音识别和自然语言处理等许多问题提供了最佳解决方案。这本书将教你许多神经网络和深度学习背后的核心概念。
神经网络是有史以来最漂亮的编程范式之一。在传统的编程方法中,我们告诉计算机该做什么,将大问题分解成许多小的、定义明确的任务,这些任务计算机可以轻松执行。相比之下,在神经网络中,我们不告诉计算机如何解决我们的问题。相反,它通过观察数据来学习,自己找出解决手头问题的方法。
从数据中自动学习听起来很有前景。然而,直到2006年我们才知道如何训练神经网络以超越更传统的方法,除了一些特殊问题之外。2006年发生的变化是发现了在所谓的深度神经网络中学习的技术。这些技术现在被称为深度学习。它们已进一步发展,如今深度神经网络和深度学习在许多计算机视觉、语音识别和自然语言处理等重要问题上取得了杰出的表现。像谷歌、微软和Facebook这样的公司正在大规模部署它们。
本系列教程的目的是帮助你掌握神经网络的核心概念,包括深度学习的现代技术。通过学习这个系列教程,你将编写使用神经网络和深度学习解决复杂模式识别问题的代码。并且你将有基础使用神经网络和深度学习来解决你自己设计的问题。
学习方法
这个教程的一个观点是,获得对神经网络和深度学习核心原理的扎实理解,比对过多的概念清单有模糊的认识要好。如果你很好地理解了核心思想,你就能迅速理解其他新材料。用编程语言来说,就像是掌握了一门新语言的核心语法、库和数据结构。你可能仍然只“知道”该语言的一小部分——许多语言都有庞大的标准库——但新的库和数据结构可以快速而容易地被理解。
这意味着这个教程绝不是教你如何使用某个特定神经网络库的教程。如果你主要想了解一个库,请不要看这个教程!找到你想学习的库,并通过官方的教程和文档进行学习。但要注意,虽然这具有立竿见影的解决问题的效果,如果你想真正理解神经网络中发生的事情,如果你希望你的知识在未来几年仍然有用,那么仅仅学习一些热门库是不够的。你需要理解关于神经网络工作方式的持久、长久的见解。技术来了又去,但洞察力永存。
动手实践的方法
我们将通过解决一个具体问题来学习神经网络和深度学习的核心原则:教计算机识别手写数字的问题。使用传统编程方法极难解决这个问题。然而,我们将看到,使用一个简单的神经网络,仅几十行代码,无需特殊库,就可以相当好地解决这个问题。更重要的是,我们将通过多次迭代改进程序,逐步融入越来越多关于神经网络和深度学习的核心思想。
这种动手实践的方法意味着你需要一些编程经验来阅读这本书。但你不需要是专业程序员。我用Python编写代码,即使你不用Python编程,只需一点努力也应该能够理解。在整本书的过程中,我们将开发一个小型的神经网络库,你可以使用它来进行实验和构建理解。所有的代码都将开源。一旦你读完这个教程,你就可以轻松地学习更完整的、用于生产的神经网络库。
此外,阅读这本书的数学要求是适度的。大多数章节都包含一些数学内容,但通常只是基本代数和函数图表,我期望大多数读者都能应付。偶尔我会使用更高级的数学,但我已经安排好材料,即使你无法理解一些数学细节也能跟上。唯一广泛使用较重数学的是第二章,需要一点多变量微积分和线性代数。如果这些对你不熟悉,我在第二章开始时讨论了如何应对这些数学内容。如果你发现真的很难理解,你可以直接跳到章节主要结果的总结。无论如何,一开始不需要担心这个。
很少有书籍同时追求原理导向和动手实践。但我相信,如果我们构建神经网络的基本思想,你将获得最佳学习效果。我们将开发活生生的代码,而不仅仅是抽象理论,你可以探索和扩展这些代码。这样,你将理解基础知识,无论是理论上还是实践上,并为进一步增加你的知识做好准备。