关注 UAI 人工智能的小伙伴,大家好!
很开心因为大家的支持, UAI 能够陪伴着大家在人工智能的路上前行一直到现在。至今为止,我们比较自豪的是,我们确实是带领了一批热爱人工智能,并和我们一样相信 AI 可以改变世界的小伙伴们进入了 AI 的门道,我们希望有我们 UAI 的世界和没我们 UAI 的世界能有一些 difference。
为了更好帮助大家学习人工智能,让更加多的人参与人工智能,我们想把真正好的,实用的内容呈献给大家,所以我们决定在这个公众号开始连载我们UAI原创的教程译作。真正在努力学习AI,想要更进一步参与到AI应用中的小伙伴也可以加入我们的成长社群,从那里获取更加多的内容和帮助。
本深度学习入门是关于什么的?
神经网络是有史以来发明的最优美的编程范式之一。在传统的编程方法中,我们告诉计算机 做什么,把大问题分成许多小的、精确定义的任务,计算机可以很容易地执行。相比之下,在神 经网络中,我们不告诉计算机如何解决我们的问题。相反,它从观测数据中学习,找出它自己的 解决问题的方法。
从数据中自动学习,听上去很有前途。然而,直到 2006 年,除了用于一些特殊的问题,我 们仍然不知道如何训练神经网络去超越传统的方法。2006 年,被称为 “深度神经网络” 的学习 技术的发现引起了变革。这些技术现在被称为 “深度学习”。它们已被进一步发展,今天深度神 经网络和深度学习在计算机视觉、语音识别、自然语言处理等许多重要问题上都取得了显著的 性能。他们正被谷歌、微软、Facebook 等公司大规模部署。
本教程的目的是帮助你掌握神经网络的核心概念,包括现代技术的深度学习。在完成这个教程 的学习之后,你将使用神经网络和深度学习来解决复杂模式识别问题。你将为使用神经网络和 深度学习打下基础,来攻坚你自己设计中碰到的问题。
一个以原理为导向的方法
本教程一个坚定的信念,是让读者更好地去深刻理解神经网络和深度学习,而不是像一张冗⻓ 的洗衣单一样模糊地列出一堆想法。如果你很好理解了核心理念,你就可以很快地理解其他新 的推论。用编程语言对比,把这理解为掌握一种新语言的核心语法、库和数据结构。你可能仍然 只是 “知道” 整个编程语言的一小部分—许多编程语言有巨大的标准库—但新的库和数据结构可 以很快且容易被理解。
这就意味着这个教程的重点不是作为一个如何使用一些特定神经网络库的教程。如果你主要想 围绕着某个程序库的方式去学习,那不要用看这个。找到你想学习的程序库,并通过教程和文 档来完成。注意这点。虽然这也许能很快解决你的问题,但是,如果你想理解神经网络中究竟发 生了什么,如果你想要了解今后几年都不会过时的原理,那么只是学习些热⻔的程序库是不够 的。你需要领悟让神经网络工作的原理。技术来来去去,但原理是永恒的。
一个动手实践的方法
我们将通过攻克一个具体的问题:教会计算机识别手写数字的问题,来学习神经网络和深度 学习的核心理论。这个问题用常规的方法来编程解决是非常困难的。然而,正如我们所看到的, 它可以很好地利用一个简单的神经网络来解决,只需几十行代码,没有特别的库。更多的是,我 们会通过多次迭代来改进程序,逐步融入神经网络和深度学习的核心思想。
这一动手的方法意味着你需要一些编程经验来阅读这个教程。但你不必是一个专业的程序员。 我用 Python(2.7 版)写了代码,即使你不是用 Python 编程,努力一下也应该很容易理解。通过这个教程,我们将开发一个小的神经网络库,它可以用来实验和建立理解。所有的代码都可以下载。一旦你完成了这个教程,或者你读它,你可以轻松地学会一个功能更加完善的神经 网络库用于生产。
类似地,对读者数学知识的需求是适度的。在大多数章节中都有一些数学,但它通常只是初 等代数和函数图,我期望大多数读者都能看懂。我偶尔会使用更高级的数学,但已经组织了材 料,这样即使你理解不了有些数学细节,你还是可以跟上。使用数学较多的是第二部分,其中需要 一些多元微积分和线性代数。如果你不熟悉它们,我在第二章开始讨论了如何通览这个教程用到的 数学。如果你发现它真的很难,你可以直接跳到那一章的主要结果的总结。无论如何,不要一开 始就担心这点。
难得有一个这么系统的教程能兼顾理论和动手实践。但是我相信,如果我们建立了神经网络的基本思路, 你会学到最好的。我们将开发实际能用的代码,而不仅仅是抽象的理论,这些代码你可以探索 和扩展。这样你就可以理解其基础,不论是理论还是实践,并且扩展和提高你的知识面。