《动手学深度学习》
Table Of Contents
《动手学深度学习》
Table Of Contents

如何使用本书

本书将全面介绍深度学习从模型构造到模型训练的方方面面,以及它们在计算机视觉和自然语言处理中的应用。我们不仅仅阐述算法原理,还将基于 Apache MXNet 对算法进行实现,并实际运行它们。本书的每一节都是一个 Jupyter 笔记本(将文字、公式、图像、代码和运行结果结合在了一起),你不但能直接阅读它们,而且可以运行它们以获得交互式的学习体验。

面向的读者

本书面向希望了解深度学习,特别是对实际使用深度学习感兴趣的大学生、工程师和研究人员。本书并不要求你有任何深度学习或者机器学习的背景知识,我们将从头开始解释每一个概念。虽然深度学习技术涉及了数学和编程,但也仅需要高数基础(线性代数,微积分,概率)和 Python 编程即可。在附录中我们提供了本书所涉及的主要数学知识供你参考。如果你之前没有接触过 Python,可以参考中文教程 http://www.runoob.com/python/python-tutorial.html 或英文教程 http://learnpython.org/ 。当然,如果你只对本书中的数学部分感兴趣,你可以忽略掉编程部分,反之亦然。

内容和结构

本书内容大体可以分为三部分:

  • 第一部分(第 1 章至第 3 章)涵盖预备工作和基础知识。第 1 章介绍了深度学习的背景和本书的使用方法。第 2 章提供了动手学深度学习所需要的预备知识,例如获取并运行书中的代码。第 3 章包括了深度学习最基础的概念和技术,例如多层感知机和模型正则化。如果你时间有限,并且只希望了解深度学习最基础的概念和技术,那么你只需阅读第一部分。
  • 第二部分(第 4 章至第 6 章)关注现代深度学习技术。第 4 章描述了深度学习计算的各个重要组成部分,并为后续更复杂的模型打下基础。第 5 章解释了近年来令深度学习在计算机视觉领域大获成功的卷积神经网络。第 6 章阐述了近年来常用于处理序列数据的循环神经网络。阅读第二部分有助于掌握现代深度学习技术。
  • 第三部分(第 7 章至第 10 章)讨论计算性能和应用。第 7 章评价了各种用来训练深度学习模型的优化算法。第 8 章检验了影响深度学习计算性能的几个重要因素。第 9 章和第 10 章分别列举了深度学习在计算机视觉和自然语言处理中的重要应用。这部分内容可供你根据兴趣选择阅读。

图 1.2 描绘了本书的结构。

本书的结构。由甲章指向乙章的箭头表明甲章的知识有助于理解乙章的内容。如果你想短时间了解深度学习最基础的概念和技术,只需阅读第1章至第3章;如果你希望掌握现代深度学习技术,还需阅读第4章至第6章。第7章至第10章可供你根据兴趣选择阅读。

本书的结构。由甲章指向乙章的箭头表明甲章的知识有助于理解乙章的内容。如果你想短时间了解深度学习最基础的概念和技术,只需阅读第1章至第3章;如果你希望掌握现代深度学习技术,还需阅读第4章至第6章。第7章至第10章可供你根据兴趣选择阅读。

代码

本书的一大特点是每一节都提供可运行的代码。你可以改动代码后重新运行,并通过运行结果进一步理解改动带来的影响。我们认为这种交互式的学习体验对于学习深度学习非常重要,因为深度学习目前并没有很好的理论解释框架,很多结论只可意会。文字解释在这时候可能比较苍白无力,而且不足以覆盖所有细节。你需要通过不断改动代码、观察运行结果并进行经验总结,逐步领悟和掌握深度学习的核心方法。

本书的代码基于 Apache MXNet 实现。MXNet 是一个开源的深度学习框架。它是 AWS(亚马逊云计算服务)首选的深度学习框架,也被众多学校和公司使用。本书所有代码已在 MXNet 1.2.1 下测试通过。但由于深度学习发展极为迅速,未来版本的 MXNet 可能会造成书中部分代码无法正常运行。遇到类似问题可参考“获取和运行本书代码”一节来更新代码和运行环境。此外,为避免重复描述,我们将本书中多次使用的函数和类封装在版本号为 1.0.0 的gluonbook包中。这些函数和类定义的对应章节已在附录“gluonbook 包索引”里列出。

本书可以作为 MXNet 入门教程使用。除了文字,图像和公式之外,我们还提供了可执行的代码以及一个交互式的运行环境,这有助于大家理解各个模型和算法在真实数据上的实际效果。书中只使用了 MXNet 的ndarrayautogradgluon等模块的基础功能,这样做可以更好的让你将注意力放到深度学习算法的实现细节上。即便你在研究和工作中使用了其他深度学习框架,书中的代码也能帮助你更好地理解深度学习算法。

讨论区

本书的学习社区地址是 https://discuss.gluon.ai/ 。当你对书中某节内容有疑惑时,请扫一扫该节末尾的二维码参与该节内容的讨论。值得一提的是,在有关 Kaggle 比赛章节的讨论区中,众多社区成员提供了丰富的高水平方法。我们强烈推荐大家积极参与学习社区中的讨论,相信你一定会有所收获(本书作者和 MXNet 开发人员也时常参与社区中的讨论哦!^_^)

小结

  • 我们选择 MXNet 作为本书使用的深度学习框架。
  • 本书力求提供一个多方位交互式的学习方式。

练习

  • 在本书的学习社区 https://discuss.gluon.ai/ 上注册一个账号。搜索关键字 Kaggle,浏览其中回复量最大的几个帖子。

扫码直达讨论区

image0