《神经网络与深度学习》的教学方法

来源:互联网 发布:jquery数组长度 编辑:程序博客网 时间:2024/05/01 08:44

《神经网络与深度学习》的教学方法

神经网络,是人们发明的最优美的编程范式之一。在通常编程模式下,人们告诉计算机做些什么,把一个大问题拆解成多个小问题,并精确定义任务,以方便计算机去执行。神经网络则与此相反,人们并不告诉计算机如何求解问题,而是由计算机通过观察数据进行学习,自行得出解决问题的办法。

人们期待神经网络能从数据中自动学习,但在2006年之前,除了极少数的个例,人们并不知道如何训练神经网络,使其超越传统编程方式。2006年,人们发明了叫做“深度神经网络”的学习技术,情况改变了。这项技术,就是人们现在所说的“深度学习"。至今,深度学习技术有了长足进步,在计算机视听觉和自然语言处理等重大问题上,取得突出成就。谷歌、微软、脸书等大公司都在开发深度学习技术。

本书的目的,是要帮助你完全掌握神经网络的核心知识,其中包括深度学习的技术。在学习过程中,你要编写神经网络和深度学习的代码,以解决有关模式识别的复杂问题。这会为你攻克其他具体问题,打下基础。

注重学习原理

本书秉持这样的理念:宁可通晓核心知识,不要懵懂一堆琐碎事情。弄懂了核心思想,可以快速理解其他新东西。这如同学习一门新的编程语言时,要先精通核心语法、库和数据结构。结果,可能开始你仅仅懂这门语言的一小部分,但你能快捷轻松地掌握新的库和数据结构。

这就意味着,本书不是介绍如何使用某些特定神经网络库的教程。如果你非要学习某个库不可,就不要来读这本书!你去找这个库吧,通过它的文档和教材去学习。但你应该注意这样做的利弊得失。当你需要弄懂神经网络内部真实发生了什么时,你会发现,仅仅学会热门的库是不够的。你应该对神经网络具有持久不衰的真知灼见。技术变来变去,真知灼见永恒。

注重动手编程

我们学习神经网络和深度学习的核心知识,是在攻克一个难题的过程中进行。这个难题就是教会计算机识别人们手写的数字。对于常规编程来说,这是极其困难的事情。你会看到,使用简单的神经网络,仅仅几十行代码,也无需特别的库支持,就能轻松搞定。甚至,我们会通过多次迭代来改进程序,逐步融入神经网络和深度学习的核心思想。

注重动手编程,意味着你应该有些编程经验。但也不必是职业程序员。我用Python 2.7写的代码,即使你不用Python编程,稍加学习也能轻松看懂。通过本书的课程,我们将开发出一个小型的神经网络库,它可以用来作实验和加深对课程的理解。全部代码均可在此下载。在学习过程中,或在学习完成后,你可以轻松地得到一个功能完整的神经网络库,用于实际工作。

说明一点,阅读本书对数学知识的要求并不高。大多数章节中都有一些数学内容,但它通常只是涉及函数的初等代数和图形,我期望大多数读者会认可。我偶尔会使用更高级的数学内容,但做了结构化处理,你可以跟着学,也可以避开数学细节。大量使用数学的是第2章,用到了多变量微积分和线性代数。考虑到有人对此不熟悉,我在第2章开头讨论了如何浏览数学相关的内容。如果你还是觉得它太难,可以直接跳到该章的总结部分。在任何情况下,不必一开始就担心数学问题。

如果一本书同时以”注重原理“和”注重动手编程“作为目的,是很少见的。但我相信,如果掌握了神经网络的基本思想,你会学习得非常好。我们要开发出生动的代码,而不只是抽象的理论。你可以进一步探索和扩展代码。这样你就会从理论实践两方面,进一步增加你的知识。


0 0
原创粉丝点击