神经网络学习序言

神经网络是有史以来最漂亮的编程范例之一。在传统的编程方法中,我们告诉计算机要做什么,将大问题分解成计算机可以轻松执行的许多小的,精确定义的任务。相比之下,在神经网络中,我们不告诉计算机如何解决我们的问题。相反,它从观测数据中学习,找出解决手头问题的办法。

从数据自动学习听起来很有前途。然而,直到2006年,我们还不知道如何训练神经网络来超越更传统的方法,除了一些特殊的问题。2006年发生的变化是在所谓的深度神经网络中发现学习技术。这些技术现在被称为深度学习。它们已经得到了进一步发展,今天深度神经网络和深度学习在计算机视觉,语音识别和自然语言处理等许多重要问题上取得了出色的表现。它们正在被谷歌,微软和Facebook等公司大规模部署。

本书的目的是帮助你掌握神经网络的核心概念,包括现代深度学习技术。在完成本书之后,您将编写使用神经网络和深度学习来解决复杂模式识别问题的代码。你将有一个基础来使用神经网络和深度学习来攻击你自己设计的问题。

原则导向的方法

本书的一个基本信念是,最好能够深入理解神经网络和深度学习的核心原理,而不是对长长的一系列想法的朦胧理解。如果你已经很好地理解了核心思想,你可以快速理解其他新材料。在编程语言方面,把它看作掌握新语言的核心语法,库和数据结构。您仍然只能“认识”整个语言的一小部分-许多语言都有巨大的标准库-但新的库和数据结构可以快速轻松地理解。

这意味着本书不是关于如何使用一些特定的神经网络库的教程。如果你主要想在图书馆学习,不要读这本书!找到你想学习的图书馆,并通过教程和文档。但要警惕。虽然这有一个直接的解决问题的收益,但如果你想了解神经网络中究竟发生了什么,如果你需要从现在开始相关的见解,那么仅仅学习一些热门图书馆是不够的。您需要了解神经网络如何工作的持久,持久的见解。技术来和技术去,但洞察力永远。

实际操作方法

我们将通过攻击一个具体问题来学习神经网络和深度学习背后的核心原理:教授计算机识别手写数字的问题。使用传统的编程方法解决这个问题是非常困难的。然而,正如我们将看到的那样,使用简单的神经网络可以很好地解决问题,只需几十行代码,并且不需要特殊的库。更重要的是,我们将通过多次迭代来改进程序,逐渐融入越来越多关于神经网络和深度学习的核心思想。

这种动手方式意味着您需要一些编程经验才能阅读本书。但你不需要成为一名专业程序员。我用Python(2.7版)编写了代码,即使你不用Python编程,也应该很容易理解,只需一点点努力。通过本书的学习,我们将开发一个小型的神经网络库,您可以使用它来进行实验和理解。所有的代码都可以在这里下载。完成本书或阅读本书后,您可以轻松选取适用于生产的功能完整的神经网络库之一。

在相关说明中,读这本书的数学要求是适度的。大多数章节都有一些数学,但它通常只是初等代数和函数图,我希望大多数读者都可以。我偶尔会使用更高级的数学,但是已经构建了这些材料,所以即使某些数学细节未能提供给您,也可以遵循。广泛使用较重数学的一章是第2章,它需要一些多变量微积分和线性代数。如果那些人不熟悉,我将从第2章开始讨论如何驾驭数学。如果你发现真的很沉重,你可以直接跳到本章主要结果的摘要。无论如何,从一开始就无需担心这一点。

一本书旨在既要以原则为导向,又要实践。但是我相信,如果我们建立神经网络的基本思想,你会学得最好

相关推荐