通过对《神经网络与人工智能的阅读》,我发现这本书的一个信念是,最好能够深入理解神经网络和深度学习的核心原理,而不是对一堆长长的想法的朦胧理解。如果你已经很好地理解了核心思想,你就可以快速理解其他新材料。在编程语言方面,把它看作掌握新语言的核心语法,库和数据结构。您仍然只能“认识”整个语言的一小部分 - 许多语言都有大量的标准库 - 但是新的库和数据结构可以被快速轻松地理解。
这意味着这本书不是如何使用一些特定的神经网络库的教程。如果你能找到你想学习的图书,并通过教程和文档。但要警惕。虽然这有一个直接的解决问题的收益,但是如果你想了解神经网络中究竟发生了什么,如果你想从今以后仍然有相关的见解,那仅仅学习一些热门的图书馆是不够的。您需要了解神经网络如何工作的持久,持久的见解。技术来和技术去,但洞察力是永远的。
一个动手的方法
我们将通过攻击一个具体问题来学习神经网络和深度学习的核心原理:教授计算机识别手写数字的问题。使用传统的编程方法解决这个问题是非常困难的。然而,正如我们将要看到的,使用一个简单的神经网络就可以很好地解决问题,只需几十行代码,而且没有特殊的库。更重要的是,我们将通过多次迭代来完善程序,逐渐融入越来越多关于神经网络和深度学习的核心思想。
这种动手的方法意味着你需要一些编程经验来阅读这本书。但是你不需要成为一个专业的程序员。我已经用Python(2.7版)编写了代码,即使你不用Python编程,也应该很容易理解。通过本书的学习,我们将开发一个小型的神经网络库,您可以使用它来进行实验和建立理解。所有的代码都可以在这里下载。一旦你完成了本书,或者在阅读本书时,你可以轻松地找到一个用于生产的功能完整的神经网络库。
在相关的说明中,读这本书的数学要求是适度的。大多数章节都有一些数学,但通常只是基本的代数和功能图,我希望大多数读者都可以。我偶尔会使用更高级的数学,但是已经构建了这些材料,所以即使有些数学细节没有涉及到,也可以遵循。广泛使用较重数学的一章是第二章,它需要一些多变量微积分和线性代数。如果那些不熟悉的话,我将从第二章开始讨论如何驾驭数学。如果你发现真的很沉重,你可以直接跳到本章主要结果的总结。无论如何,从一开始就没有必要担心这个问题。
一本书的目标既是原则性的,也是实践性的。但是如果我们建立起神经网络的基本思想,我相信你会学得最好。我们将开发生命代码,不只是抽象的理论,你可以探索和扩展的代码。这样你就可以理解理论和实践的基本原理,并且可以进一步加深你的知识。