前言

如今,数学的地位举足轻重,而深度学习也在日渐扮演重要角色。从无人驾驶汽车敢于给出的安全允诺,到比顶尖骨科医生还厉害的骨科诊断医疗系统,再到越发强大甚至引起担忧的语音助手,深度学习已经无处不在。

本书涵盖要理解深度学习所必须掌握的数学知识。当然,你确实可以利用现成的组件,在完成好相应设置并准备好Python代码以后,就对数据进行处理并完成模型训练任务,而无须理解自己在做什么,更不用理解背后的数学理论。而且,由于深度学习的强大,你往往能成功地训练一个模型。但是,你并不理解自己为什么能成功,也不该就此而满足。想搞明白原因,就需要学习数学。虽然用不着大量的数学知识,但一定的数学功底还是必需的。具体来说,你需要理解与概率论、统计学、线性代数和微分相关的一些理论知识,而这些知识刚好就是本书所要讨论的内容。

本书面向谁

本书不是一本深度学习的入门教材,它不会教你深度学习的基础知识,而是此类书籍的有效补充[你可以参考我的另一本书:Practical Deep Learning: A Python-Based Introduction(No Starch Press, 2021)]。虽然本书假设你对深度学习的核心概念已经比较熟悉,但我还是会在讲解的过程中做必要的解释说明。

此外,本书假设你具备一定的数学基础,包括高中数学知识,尤其是代数知识。本书还假设你对Python、R或其他类似编程语言较为熟悉。本书使用Python 3进行讲解,书中会用到它的一些主流组件,如NumPy、SciPy以及scikit-learn。

对于其他方面,本书就不作要求了,毕竟本书的目的就是给你提供成功使用深度学习所必备的知识。

关于本书

这虽然是一本关于数学的书,但其中不会有大量公式证明和练习题,我们主要通过代码来阐述各种概念。深度学习是一门应用学科,所以你需要在实践中理解其内涵。我们将用代码填补数学理论和应用实践之间的空白。

本书内容安排有序,首先介绍基础理论,然后引出更高级的数学内容,最后用实际的深度学习算法让你将之前掌握的内容融会贯通。建议你按照书中的内容顺序阅读,如果遇到已经非常熟悉的内容,你可以直接跳过。

第1章:搭建舞台

该章对工作环境以及深度学习中的常用组件进行配置。

第2章:概率论

概率论影响深度学习的方方面面,它是理解神经网络训练过程的关键。作为本书概率论的前半部分,该章介绍该领域的基础知识点。

第3章:概率论进阶

单靠一章难以覆盖重要的概率论的全部内容,该章继续探索概率论中与深度学习相关的知识点,包括概率分布和贝叶斯定理。

第4章:统计学

统计学对理解数据和评估模型非常重要,而且概率论也离不开统计学,要理解深度学习,就不得不理解统计学。

第5章:线性代数

线性代数是一门关于向量和矩阵的学科,而深度学习就以线性代数为核心。实现神经网络本身就是在运用向量和矩阵进行运算,所以理解相关概念和运算方法非常关键。

第6章:线性代数进阶

该章继续讨论线性代数知识,内容聚焦于矩阵的相关核心内容。

第7章:微分

或许训练神经网络的最核心理论基础就是梯度。要想理解和使用梯度,就必须掌握如何对函数求导。该章介绍求导和梯度的理论基础。

第8章:矩阵微分

在深度学习中,求导往往是针对向量和矩阵进行的。该章把导数的概念扩展到这些对象上。

第9章:神经网络中的数据流

要想理解神经网络如何对向量和矩阵进行运算,就必须理解数据在神经网络中是如何流转的。该章讨论这些内容。

第10章:反向传播

成功训练神经网络离不开两个关键算法:反向传播和梯度下降。该章通过介绍反向传播,帮助你对前面所学知识加以应用。

第11章:梯度下降

梯度下降使用反向传播过程中计算得出的梯度来训练神经网络。该章从简单的一维函数开始探讨梯度下降,一步步讲到全连接网络的情况。除此之外,该章还会介绍并对比梯度下降的各种变体。

附录:学无止境

本书虽然略过了概率论、统计学、线性代数和微分中的很多知识点,但附录部分会给你提供进一步学习相关领域的资源。

本书的配套代码可以从GitHub网站的rkneusel9/MathForDeepLearning库中下载。现在就让我们开始学习吧!