002 《深度学习的数学基础 (Mathematical Foundations of Deep Learning)》
🌟🌟🌟本文由Gemini 2.5 Flash Preview 04-17生成,用来辅助学习。🌟🌟🌟
书籍大纲
▮▮ 1. 绪论:开启深度学习的数学之旅 (Introduction: Starting the Mathematical Journey of Deep Learning)
▮▮▮▮ 1.1 什么是深度学习? (What is Deep Learning?)
▮▮▮▮▮▮ 1.1.1 人工智能、机器学习与深度学习 (AI, ML, and DL)
▮▮▮▮▮▮ 1.1.2 深度学习的核心特征 (Core Characteristics of Deep Learning)
▮▮▮▮ 1.2 为什么数学对深度学习至关重要? (Why is Mathematics Crucial for Deep Learning?)
▮▮▮▮▮▮ 1.2.1 数学是理解模型原理的基础 (Math is the Foundation for Understanding Model Principles)
▮▮▮▮▮▮ 1.2.2 数学是改进和创新模型的方法 (Math is the Method for Improving and Innovating Models)
▮▮▮▮▮▮ 1.2.3 本书涵盖的数学领域 (Mathematical Fields Covered in This Book)
▮▮▮▮ 1.3 本书结构与阅读建议 (Book Structure and Reading Suggestions)
▮▮ 2. 线性代数:表示与变换的语言 (Linear Algebra: The Language of Representation and Transformation)
▮▮▮▮ 2.1 向量、矩阵与张量 (Vectors, Matrices, and Tensors)
▮▮▮▮▮▮ 2.1.1 标量、向量、矩阵 (Scalars, Vectors, Matrices)
▮▮▮▮▮▮ 2.1.2 张量:高维数据的泛化 (Tensors: Generalization of Higher-Dimensional Data)
▮▮▮▮ 2.2 基本运算 (Basic Operations)
▮▮▮▮▮▮ 2.2.1 加法与标量乘法 (Addition and Scalar Multiplication)
▮▮▮▮▮▮ 2.2.2 向量点积与向量范数 (Vector Dot Product and Vector Norms)
▮▮▮▮▮▮ 2.2.3 矩阵乘法 (Matrix Multiplication)
▮▮▮▮▮▮ 2.2.4 元素级运算 (Element-wise Operations / Hadamard Product)
▮▮▮▮▮▮ 2.2.5 转置 (Transpose)
▮▮▮▮ 2.3 特殊的矩阵与向量 (Special Matrices and Vectors)
▮▮▮▮▮▮ 2.3.1 单位矩阵与逆矩阵 (Identity Matrix and Inverse Matrix)
▮▮▮▮▮▮ 2.3.2 对角矩阵、对称矩阵、正交矩阵 (Diagonal Matrix, Symmetric Matrix, Orthogonal Matrix)
▮▮▮▮ 2.4 行列式、秩与线性方程组 (Determinant, Rank, and Linear Systems)
▮▮▮▮▮▮ 2.4.1 行列式 (Determinant)
▮▮▮▮▮▮ 2.4.2 矩阵的秩 (Rank of a Matrix)
▮▮▮▮▮▮ 2.4.3 线性方程组及其解 (Linear Systems and Their Solutions)
▮▮▮▮ 2.5 特征分解 (Eigen Decomposition)
▮▮▮▮▮▮ 2.5.1 特征值与特征向量的定义 (Definition of Eigenvalues and Eigenvectors)
▮▮▮▮▮▮ 2.5.2 特征分解 (Eigen Decomposition)
▮▮▮▮▮▮ 2.5.3 对称矩阵的特征分解 (Eigen Decomposition of Symmetric Matrices)
▮▮▮▮ 2.6 奇异值分解 (SVD - Singular Value Decomposition)
▮▮▮▮ 2.7 线性代数在深度学习中的应用示例 (Examples of Linear Algebra Applications in Deep Learning)
▮▮ 3. 微积分:模型优化与学习的基石 (Calculus: Cornerstone of Model Optimization and Learning)
▮▮▮▮ 3.1 函数、极限与连续性 (Functions, Limits, and Continuity)
▮▮▮▮ 3.2 导数与微分 (Derivatives and Differentials)
▮▮▮▮▮▮ 3.2.1 单变量函数的导数定义与计算 (Definition and Calculation of Single-Variable Derivatives)
▮▮▮▮▮▮ 3.2.2 基本求导法则 (Basic Differentiation Rules)
▮▮▮▮ 3.3 偏导数与梯度 (Partial Derivatives and Gradient)
▮▮▮▮▮▮ 3.3.1 多变量函数 (Multivariable Functions)
▮▮▮▮▮▮ 3.3.2 偏导数的定义与计算 (Definition and Calculation of Partial Derivatives)
▮▮▮▮▮▮ 3.3.3 梯度向量 (Gradient Vector)
▮▮▮▮▮▮ 3.3.4 方向导数 (Directional Derivative)
▮▮▮▮ 3.4 链式法则 (Chain Rule)
▮▮▮▮▮▮ 3.4.1 单变量链式法则 (Single-Variable Chain Rule)
▮▮▮▮▮▮ 3.4.2 多变量链式法则 (Multivariable Chain Rule)
▮▮▮▮▮▮ 3.4.3 链式法则与计算图 (Chain Rule and Computation Graphs)
▮▮▮▮ 3.5 高阶导数与Hessian矩阵 (Higher-Order Derivatives and Hessian Matrix)
▮▮▮▮▮▮ 3.5.1 二阶导数 (Second-Order Derivatives)
▮▮▮▮▮▮ 3.5.2 Hessian矩阵 (Hessian Matrix)
▮▮▮▮ 3.6 泰勒级数 (Taylor Series)
▮▮▮▮ 3.7 积分初步 (Introduction to Integration)
▮▮▮▮ 3.8 向量微积分基础 (Basics of Vector Calculus)
▮▮▮▮▮▮ 3.8.1 Jacobian矩阵 (Jacobian Matrix)
▮▮▮▮▮▮ 3.8.2 Jacobian与链式法则 (Jacobian and Chain Rule)
▮▮▮▮ 3.9 微积分在深度学习中的应用示例 (Examples of Calculus Applications in Deep Learning)
▮▮ 4. 概率论与数理统计:不确定性建模 (Probability and Statistics: Modeling Uncertainty)
▮▮▮▮ 4.1 基本概念 (Basic Concepts)
▮▮▮▮▮▮ 4.1.1 样本空间与事件 (Sample Space and Events)
▮▮▮▮▮▮ 4.1.2 概率的定义与性质 (Definition and Properties of Probability)
▮▮▮▮▮▮ 4.1.3 条件概率与独立性 (Conditional Probability and Independence)
▮▮▮▮▮▮ 4.1.4 全概率公式与贝叶斯定理 (Total Probability Formula and Bayes' Theorem)
▮▮▮▮ 4.2 随机变量与概率分布 (Random Variables and Probability Distributions)
▮▮▮▮▮▮ 4.2.1 随机变量的定义 (Definition of Random Variables)
▮▮▮▮▮▮ 4.2.2 概率质量函数 (PMF - Probability Mass Function)
▮▮▮▮▮▮ 4.2.3 概率密度函数 (PDF - Probability Density Function)
▮▮▮▮▮▮ 4.2.4 累积分布函数 (CDF - Cumulative Distribution Function)
▮▮▮▮▮▮ 4.2.5 常见概率分布 (Common Probability Distributions)
▮▮▮▮▮▮ 4.2.6 多元随机变量与联合分布 (Multivariate Random Variables and Joint Distributions)
▮▮▮▮ 4.3 期望、方差与协方差 (Expectation, Variance, and Covariance)
▮▮▮▮▮▮ 4.3.1 期望 (Expectation)
▮▮▮▮▮▮ 4.3.2 方差与标准差 (Variance and Standard Deviation)
▮▮▮▮▮▮ 4.3.3 协方差与相关系数 (Covariance and Correlation Coefficient)
▮▮▮▮▮▮ 4.3.4 协方差矩阵 (Covariance Matrix)
▮▮▮▮ 4.4 大数定律与中心极限定理 (Law of Large Numbers and Central Limit Theorem)
▮▮▮▮ 4.5 参数估计基础 (Basics of Parameter Estimation)
▮▮▮▮▮▮ 4.5.1 最大似然估计 (MLE - Maximum Likelihood Estimation)
▮▮▮▮▮▮ 4.5.2 最大后验概率估计 (MAP - Maximum A Posteriori Estimation)
▮▮▮▮ 4.6 信息论基础 (Basics of Information Theory)
▮▮▮▮▮▮ 4.6.1 熵 (Entropy)
▮▮▮▮▮▮ 4.6.2 交叉熵 (Cross-Entropy)
▮▮▮▮▮▮ 4.6.3 KL散度 (KL Divergence - Kullback-Leibler Divergence)
▮▮▮▮ 4.7 概率统计在深度学习中的应用示例 (Examples of Probability and Statistics Applications in Deep Learning)
▮▮ 5. 优化理论:寻找最佳模型参数 (Optimization Theory: Finding the Best Model Parameters)
▮▮▮▮ 5.1 优化问题描述 (Optimization Problem Description)
▮▮▮▮ 5.2 局部最小值、全局最小值与鞍点 (Local Minimum, Global Minimum, and Saddle Point)
▮▮▮▮ 5.3 凸优化基础 (Basics of Convex Optimization)
▮▮▮▮ 5.4 无约束优化方法:梯度下降 (Unconstrained Optimization: Gradient Descent)
▮▮▮▮▮▮ 5.4.1 梯度下降原理 (Principle of Gradient Descent)
▮▮▮▮▮▮ 5.4.2 学习率 (Learning Rate)
▮▮▮▮▮▮ 5.4.3 收敛性 (Convergence)
▮▮▮▮ 5.5 梯度下降的变种 (Variants of Gradient Descent)
▮▮▮▮▮▮ 5.5.1 批量梯度下降 (BGD - Batch Gradient Descent)
▮▮▮▮▮▮ 5.5.2 随机梯度下降 (SGD - Stochastic Gradient Descent)
▮▮▮▮▮▮ 5.5.3 小批量梯度下降 (Mini-batch SGD)
▮▮▮▮ 5.6 动量、Nesterov动量 (Momentum, Nesterov Momentum)
▮▮▮▮ 5.7 自适应学习率方法 (Adaptive Learning Rate Methods)
▮▮▮▮▮▮ 5.7.1 Adagrad
▮▮▮▮▮▮ 5.7.2 RMSprop
▮▮▮▮▮▮ 5.7.3 Adam
▮▮▮▮ 5.8 反向传播算法:高效计算梯度 (Backpropagation Algorithm: Efficient Gradient Computation)
▮▮▮▮▮▮ 5.8.1 计算图与反向传播 (Computation Graphs and Backpropagation)
▮▮▮▮▮▮ 5.8.2 各层的梯度计算 (Gradient Calculation for Each Layer)
▮▮▮▮▮▮ 5.8.3 实现细节与数值稳定性 (Implementation Details and Numerical Stability)
▮▮▮▮ 5.9 正则化与约束优化简介 (Regularization and Introduction to Constrained Optimization)
▮▮▮▮ 5.10 优化理论在深度学习中的挑战与进展 (Challenges and Progress of Optimization Theory in Deep Learning)
▮▮ 6. 数学在典型深度学习模型中的应用 (Mathematics in Typical Deep Learning Models)
▮▮▮▮ 6.1 全连接神经网络 (FCNN - Fully Connected Neural Networks)
▮▮▮▮▮▮ 6.1.1 前向传播:线性变换与激活函数 (Forward Pass: Linear Transformation and Activation Functions)
▮▮▮▮▮▮ 6.1.2 损失函数与输出层 (Loss Functions and Output Layer)
▮▮▮▮▮▮ 6.1.3 反向传播:梯度计算 (Backpropagation: Gradient Calculation)
▮▮▮▮ 6.2 卷积神经网络 (CNN - Convolutional Neural Networks)
▮▮▮▮▮▮ 6.2.1 卷积运算 (Convolution Operation)
▮▮▮▮▮▮ 6.2.2 池化运算 (Pooling Operation)
▮▮▮▮▮▮ 6.2.3 CNN的前向与反向传播数学 (Forward and Backward Pass Mathematics of CNN)
▮▮▮▮ 6.3 循环神经网络 (RNN - Recurrent Neural Networks)
▮▮▮▮▮▮ 6.3.1 序列数据与循环结构 (Sequence Data and Recurrent Structure)
▮▮▮▮▮▮ 6.3.2 随时间的反向传播 (BPTT - Backpropagation Through Time)
▮▮▮▮ 6.4 自注意力机制与Transformer (Self-Attention Mechanism and Transformer)
▮▮▮▮▮▮ 6.4.1 查询 (Query)、键 (Key)、值 (Value) 与点积注意力 (Dot-Product Attention)
▮▮▮▮▮▮ 6.4.2 Softmax 函数 (Softmax Function)
▮▮ 7. 高级数学主题与未来展望 (Advanced Mathematical Topics and Future Outlook)
▮▮▮▮ 7.1 流形学习初步 (Introduction to Manifold Learning)
▮▮▮▮ 7.2 度量空间与相似性度量 (Metric Spaces and Similarity Measures)
▮▮▮▮ 7.3 数值稳定性问题 (Numerical Stability Issues)
▮▮▮▮ 7.4 贝叶斯深度学习简介 (Introduction to Bayesian Deep Learning)
▮▮▮▮ 7.5 偏微分方程 (PDE - Partial Differential Equations) 与深度学习 (PDE and Deep Learning)
▮▮▮▮ 7.6 博弈论 (Game Theory) 与深度学习 (Game Theory and Deep Learning)
▮▮▮▮ 7.7 数学在深度学习研究中的未来方向 (Future Directions of Mathematics in Deep Learning Research)
▮▮ 附录A: 数学符号速查 (Mathematical Notation Reference)
▮▮ 附录B: 常用数学公式 (Common Mathematical Formulas)
▮▮ 附录C: 概率分布常用统计量 (Common Statistics for Probability Distributions)
▮▮ 附录D: 常见激活函数及其导数 (Common Activation Functions and Their Derivatives)
▮▮ 附录E: 参考文献 (References)
1. 绪论:开启深度学习的数学之旅 (Introduction: Starting the Mathematical Journey of Deep Learning)
本章旨在为读者构建一个清晰的起点。我们将首先回顾人工智能(Artificial Intelligence, AI)、机器学习(Machine Learning, ML)到深度学习(Deep Learning, DL)的发展脉络,明确深度学习的核心概念及其独特之处。随后,我们将深入探讨数学在深度学习中扮演的不可或缺的角色,阐明为何掌握数学是理解和驾驭深度学习模型的关键。最后,本章将概述本书的整体结构和内容安排,并为不同学习背景的读者提供有效的阅读建议,帮助大家更好地规划学习路径,顺利开启深度学习的数学探索之旅。📚
1.1 什么是深度学习? (What is Deep Learning?)
理解深度学习,需要将其置于人工智能和机器学习的大背景下。深度学习并非凭空出现,而是人工智能领域长期发展演进的结果。它代表了机器学习方法的一个重要分支,并在近年来取得了举世瞩目的成就,尤其在图像识别、自然语言处理、语音识别等领域。🚀
1.1.1 人工智能、机器学习与深度学习 (AI, ML, and DL)
💡 三者之间的关系可以概括为:深度学习是机器学习的一个子集,而机器学习是人工智能的一个子集。
① 人工智能(AI)
▮▮▮▮⚝ 目标:制造能够模拟、延伸和扩展人类智能的机器。它是一个宽泛的概念,包含各种使机器能够完成通常需要人类智能的任务的技术。
▮▮▮▮⚝ 范畴:包括但不限于专家系统、规划、自然语言处理、机器学习、计算机视觉、机器人学等。
② 机器学习(ML)
▮▮▮▮⚝ 目标:使计算机系统能够从数据中学习,而不是通过 explicit programming(显式编程)来完成特定任务。通过识别数据中的模式(pattern)和规律(regularity),模型可以在没有被明确告知如何做的情况下,对新数据进行预测或决策。
▮▮▮▮⚝ 方法:涵盖多种算法,如线性回归(Linear Regression)、决策树(Decision Tree)、支持向量机(Support Vector Machine, SVM)、聚类算法(Clustering Algorithms)以及神经网络(Neural Networks)等。
③ 深度学习(DL)
▮▮▮▮⚝ 目标:利用包含多个处理层(processing layers)的神经网络来学习数据的表示(representation learning)。这些多层结构能够自动从原始数据中提取 hierarchical features(分层特征),从低级特征(如图像的边缘)组合到高级特征(如物体的特定部分或完整物体)。
▮▮▮▮⚝ 特点:对数据表示的学习能力是其核心,避免了手工设计特征(feature engineering)的繁琐过程。其“深度”体现在网络结构中的层数。
📊 关系图示(概念上):
1
+---------------------+
2
| 人工智能 (AI) |
3
| +-----------------+ |
4
| | 机器学习 (ML) | |
5
| | +-------------+ | |
6
| | | 深度学习 (DL)| | |
7
| | | | | |
8
| | +-------------+ | |
9
| +-----------------+ |
10
+---------------------+
1.1.2 深度学习的核心特征 (Core Characteristics of Deep Learning)
深度学习之所以强大,得益于其几个关键的特征:
⚝ 多层非线性变换 (Multi-layered Non-linear Transformations):
▮▮▮▮⚝ 深度神经网络(Deep Neural Network, DNN)由多个相连的层组成,每一层都对其输入进行线性的仿射变换(affine transformation),然后通过一个非线性的激活函数(activation function)。
▮▮▮▮⚝ 这种多层的非线性堆叠使得网络能够学习并表示极其复杂的函数关系,捕捉数据中的 intricate patterns(复杂模式)。
⚝ 特征学习 (Feature Learning):
▮▮▮▮⚝ 区别于传统机器学习中依赖人工设计的特征,深度学习模型能够自动从原始数据中学习有效的、具有 discriminative(区分性)和 semantic(语义性)的特征表示。
▮▮▮▮⚝ 网络的不同层学习不同抽象层次的特征,层数越多,可以学习到的特征层次越丰富。
⚝ 端到端学习 (End-to-End Learning):
▮▮▮▮⚝ 在许多深度学习应用中,模型可以直接从原始输入(如像素、原始文本)映射到最终输出(如类别标签、翻译结果),而无需中间的手动步骤或组件。
▮▮▮▮⚝ 这种端到端的方法简化了 pipeline(处理流程),并允许模型自身优化整个过程。
⚝ 大规模数据与计算能力 (Large-scale Data and Computing Power):
▮▮▮▮⚝ 深度学习模型通常包含大量参数,需要 massive amounts of data(海量数据)进行训练,以避免过拟合(overfitting)并充分发挥其表示能力。
▮▮▮▮⚝ 模型的训练计算量巨大,得益于图形处理器(Graphics Processing Unit, GPU)等硬件的发展,并行计算成为可能,极大地加速了深度学习的发展和应用。
1.2 为什么数学对深度学习至关重要? (Why is Mathematics Crucial for Deep Learning?)
虽然深度学习框架(如 TensorFlow, PyTorch)使得构建和训练模型在代码层面变得相对容易,但如果缺乏必要的数学基础,你可能会发现自己只是在“调包侠”,难以真正理解模型的工作原理,更不用说对其进行改进或创新。数学是深度学习的语言、工具和理论支撑。📐
1.2.1 数学是理解模型原理的基础 (Math is the Foundation for Understanding Model Principles)
要理解深度学习模型,你必须理解其构成单元及其相互作用方式,这完全依赖于数学描述。
⚝ 模型结构 (Model Structure):
▮▮▮▮⚝ 神经网络的层、神经元连接等可以用线性代数中的矩阵(Matrix)和向量(Vector)来表示。例如,全连接层(Fully Connected Layer)的计算本质上就是一个矩阵乘法加上向量加法。
▮▮▮▮⚝ 函数的概念用于描述神经元的激活过程(Activation Process)和整个网络的输入输出映射。
⚝ 前向传播 (Forward Propagation):
▮▮▮▮⚝ 数据在网络中从输入层传递到输出层的过程,是一系列数学运算(线性变换和非线性激活)的组合。这可以通过函数复合(Function Composition)的概念来理解。
▮▮▮▮⚝ 例如,一个简单的两层网络的前向传播可以用 \( \mathbf{y} = f(\mathbf{W}_2 f(\mathbf{W}_1 \mathbf{x} + \mathbf{b}_1) + \mathbf{b}_2) \) 来表示,其中 \( \mathbf{x}, \mathbf{y} \) 是输入输出向量,\( \mathbf{W}_1, \mathbf{W}_2 \) 是权重矩阵,\( \mathbf{b}_1, \mathbf{b}_2 \) 是偏置向量,\( f \) 是激活函数。
⚝ 损失函数 (Loss Function) 或 成本函数 (Cost Function):
▮▮▮▮⚝ 这是衡量模型预测结果与真实值之间差距的数学函数。常见的如均方误差(Mean Squared Error, MSE)或交叉熵(Cross-Entropy),它们用数学公式精确地定义了“误差”或“损失”。
▮▮▮▮⚝ 例如,对于回归问题,MSE \( L = \frac{1}{N} \sum_{i=1}^N (y_i - \hat{y}_i)^2 \),其中 \( y_i \) 是真实值,\( \hat{y}_i \) 是模型预测值。
1.2.2 数学是改进和创新模型的方法 (Math is the Method for Improving and Innovating Models)
深度学习模型的训练是一个优化过程,目标是找到使损失函数最小化的模型参数(权重和偏置)。这一过程以及对模型进行改进和理论分析都离不开数学。
⚝ 模型训练与优化 (Model Training and Optimization):
▮▮▮▮⚝ 训练的核心是优化算法,最常用的是梯度下降(Gradient Descent)及其变种。这依赖于微积分中导数(Derivative)和梯度(Gradient)的概念。梯度指示了函数值增加最快的方向,而梯度下降则沿着梯度负方向调整参数以减小损失。
▮▮▮▮⚝ 反向传播算法(Backpropagation Algorithm)是高效计算网络中各参数梯度的关键技术,其数学原理完全基于微积分的链式法则(Chain Rule)。
\[ \frac{\partial L}{\partial w} = \frac{\partial L}{\partial \text{output}} \times \frac{\partial \text{output}}{\partial \text{intermediate}} \times \dots \times \frac{\partial \text{input}}{\partial w} \]
这种逐层向前计算误差、逐层向后计算梯度的过程,是链式法则在复杂复合函数(即深度网络)上的体现。
⚝ 模型分析与理论 (Model Analysis and Theory):
▮▮▮▮⚝ 概率论和数理统计(Probability and Statistics)提供了处理数据不确定性、模型泛化能力(Generalization Ability)、评估模型置信度(Confidence)的工具。损失函数的设计(如交叉熵)、正则化技术(Regularization)都与概率统计紧密相关。
▮▮▮▮⚝ 对模型收敛性(Convergence)的分析、对模型复杂度的衡量、对不同架构的理解,都需要扎实的数学理论基础。
1.2.3 本书涵盖的数学领域 (Mathematical Fields Covered in This Book)
为了全面理解深度学习,本书将聚焦以下几个核心数学领域:
① 线性代数 (Linear Algebra):
▮▮▮▮⚝ 理解数据表示(向量、矩阵、张量)。
▮▮▮▮⚝ 理解模型结构(权重矩阵、偏置向量)。
▮▮▮▮⚝ 理解基本运算(矩阵乘法、向量点积)在模型前向传播中的作用。
▮▮▮▮⚝ 理解数据变换与降维(特征分解、奇异值分解)。
② 微积分 (Calculus):
▮▮▮▮⚝ 理解函数及其性质(激活函数、损失函数)。
▮▮▮▮⚝ 理解导数和梯度(参数更新的方向和速率)。
▮▮▮▮⚝ 理解链式法则(反向传播的核心)。
▮▮▮▮⚝ 理解函数的极值(寻找最优参数)。
③ 概率论与数理统计 (Probability and Statistics):
▮▮▮▮⚝ 理解数据的随机性与分布。
▮▮▮▮⚝ 理解损失函数(如交叉熵作为概率分布差异的衡量)。
▮▮▮▮⚝ 理解模型输出的概率解释(如分类问题中的 Softmax 输出)。
▮▮▮▮⚝ 理解参数估计(如最大似然估计 MLE, 最大后验概率估计 MAP)。
▮▮▮▮⚝ 理解模型的不确定性和泛化能力。
▮▮▮▮⚝ 理解信息论中的概念(熵、交叉熵、KL散度)在损失函数和模型分析中的作用。
④ 优化理论 (Optimization Theory):
▮▮▮▮⚝ 理解如何找到使损失函数最小的模型参数。
▮▮▮▮⚝ 理解梯度下降及其各种变体(SGD, Adam等)。
▮▮▮▮⚝ 理解优化过程中的挑战(局部最优、鞍点)。
这些数学工具构成了深度学习的基石,掌握它们将助你事半功倍。🛠️
1.3 本书结构与阅读建议 (Book Structure and Reading Suggestions)
本书旨在提供一个从基础到应用的系统性数学框架,帮助读者建立深度学习所需的数学直觉和能力。
📚 本书结构总览:
⚝ 第 1 章 (Chapter 1):绪论,介绍背景和数学的重要性。
⚝ 第 2 章 (Chapter 2):线性代数,讲解数据表示和变换的基础。
⚝ 第 3 章 (Chapter 3):微积分,讲解模型优化的数学原理(导数、梯度、链式法则)。
⚝ 第 4 章 (Chapter 4):概率论与数理统计,讲解数据建模和不确定性处理。
⚝ 第 5 章 (Chapter 5):优化理论,讲解模型训练的算法(梯度下降及其变种,反向传播)。
⚝ 第 6 章 (Chapter 6):数学在典型模型中的应用,结合具体的网络结构(FCNN, CNN, RNN, Transformer)展示数学的综合运用。
⚝ 第 7 章 (Chapter 7):高级主题与未来展望,探讨一些进阶的数学概念和研究方向。
⚝ 附录 (Appendices):提供数学符号速查、常用公式、常见概率分布统计量、激活函数等参考资料。
🧭 针对不同背景读者的阅读建议:
① 零基础的初学者 (Beginners with no prior knowledge):
▮▮▮▮⚝ 建议严格按照本书的章节顺序阅读。
▮▮▮▮⚝ 重点关注每个数学概念的基本定义、几何意义和在深度学习中的直接应用示例。
▮▮▮▮⚝ 不必一开始就钻研复杂的定理证明,理解核心思想和计算过程是关键。
▮▮▮▮⚝ 结合代码实践来加深理解,尝试用代码实现一些简单的数学运算和模型片段。
▮▮▮▮⚝ 可以适当跳过部分对数学深度要求较高的小节(如某些复杂公式推导),待有一定基础后再回过头来深入学习。
② 有一定机器学习或编程经验的读者 (Readers with some ML or programming experience):
▮▮▮▮⚝ 可以快速回顾第1章和第2章的基础概念。
▮▮▮▮⚝ 重点投入时间和精力学习第3章(微积分)、第4章(概率统计)和第5章(优化理论)。
▮▮▮▮⚝ 在学习数学概念时,积极思考它们如何体现在你熟悉的机器学习算法或深度学习模型中。
▮▮▮▮⚝ 阅读第6章时,尝试自己推导模型的前向和反向传播过程,而不仅仅是阅读书中的推导。
▮▮▮▮⚝ 遇到困难时,回溯到相关的数学基础章节。
③ 具有较强数学背景的读者 (Readers with a strong mathematical background):
▮▮▮▮⚝ 可以将本书作为连接已知数学知识与深度学习应用的桥梁。
▮▮▮▮⚝ 快速浏览前几章的基础部分,重点关注数学概念如何被应用于深度学习的特定问题(如张量运算在数据处理中的效率、链式法则在反向传播中的具体展开、概率模型在损失函数设计中的应用)。
▮▮▮▮⚝ 深入研究第5章的优化算法细节和第7章的高级主题。
▮▮▮▮⚝ 挑战自己去理解复杂模型的数学结构,并尝试从数学角度思考模型的局限性和改进方向。
无论你的起点如何,持续学习、实践和思考是掌握深度学习数学基础的不二法门。希望本书能成为你探索深度学习奥秘的得力助手!加油!💪
2. 线性代数:表示与变换的语言 (Linear Algebra: The Language of Representation and Transformation)
欢迎来到本书关于深度学习数学基础的第二章。在本章中,我们将深入探讨线性代数,这门学科堪称深度学习的基石之一。为什么这么说呢?因为无论您面对的是图像、文本、音频还是其他类型的数据,它们在计算机中往往最终被表示为一系列数字,而这些数字如何组织、如何相互作用,正是线性代数所描述的。深度学习模型的核心,如神经网络,本质上就是在对这些数字表示进行复杂的线性变换(以及非线性激活),并通过这些变换来学习数据的内在模式和结构。
线性代数提供了一种强大而优雅的方式来表示和操作这些数字集合。它不仅帮助我们理解数据的结构(比如数据的维度、样本之间的关系),也为我们构建和分析模型提供了必要的工具(比如矩阵乘法描述了层与层之间的信息传递,向量范数可以用来度量模型的复杂度,特征分解和奇异值分解则能帮助我们理解数据的主要变化方向)。
本章将系统地介绍深度学习中常用的线性代数概念、运算及其几何意义。无论您是初学者还是有一定基础的读者,我们都将力求以清晰的方式,通过结合直观的几何解释和具体的深度学习应用示例,帮助您扎实掌握线性代数的基础知识,为后续章节理解更复杂的模型打下坚实的基础。准备好了吗?让我们一起开启线性代数之旅吧!🚀
2.1 向量、矩阵与张量 (Vectors, Matrices, and Tensors)
在深度学习中,我们需要处理大量的数值数据。为了有效地组织和操作这些数据,我们引入了不同维度的数据结构,最基本的就是标量、向量、矩阵,以及更一般的张量。理解这些数据类型是理解后续所有数学运算和模型表示的第一步。
2.1.1 标量、向量、矩阵 (Scalars, Vectors, Matrices)
我们从最简单的数据类型开始。
① 标量 (Scalar)
▮▮▮▮标量是一个单独的数字。它没有方向,只有一个值。
▮▮▮▮在深度学习中,一个模型的损失值(Loss Value)、学习率(Learning Rate)或者一个神经元的偏置项(Bias Term)都可以是标量。
▮▮▮▮我们通常用小写字母表示标量,例如 \( a \in \mathbb{R} \)。如果考虑整数或复数,则表示为 \( a \in \mathbb{Z} \) 或 \( a \in \mathbb{C} \)。
② 向量 (Vector)
▮▮▮▮向量是一串有序的数字。它可以表示空间中的一个点,或者一个具有方向和大小的量。
▮▮▮▮在深度学习中,一个样本的特征(Feature)通常用一个向量表示。例如,一个描述房屋的向量可能包含卧室数量、面积、地理位置得分等。模型的权重(Weight)或梯度(Gradient)在某个层级上也可以是向量。
▮▮▮▮向量通常用粗体小写字母表示,例如 \( \mathbf{v} \)。一个 \( n \) 维实向量可以表示为 \( \mathbf{v} = [v_1, v_2, \dots, v_n]^T \in \mathbb{R}^n \)。这里的 \( T \) 表示转置,习惯上将向量写成列向量。
③ 矩阵 (Matrix)
▮▮▮▮矩阵是一个二维的数字数组,由行和列组成。
▮▮▮▮在深度学习中,一个数据集通常表示为一个矩阵,其中每一行可能代表一个样本,每一列代表一个特征。神经网络的层与层之间的权重参数通常组织成矩阵。
▮▮▮▮矩阵通常用粗体大写字母表示,例如 \( \mathbf{M} \)。一个有 \( m \) 行和 \( n \) 列的实数矩阵可以表示为 \( \mathbf{M} \in \mathbb{R}^{m \times n} \)。矩阵 \( \mathbf{M} \) 中的第 \( i \) 行第 \( j \) 列的元素通常记为 \( M_{ij} \) 或 \( m_{i,j} \)。
例如:
▮▮▮▮一个标量:\( s = 5 \)
▮▮▮▮一个 3 维向量:\( \mathbf{v} = \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix} \)
▮▮▮▮一个 2x3 矩阵:\( \mathbf{A} = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix} \)
2.1.2 张量:高维数据的泛化 (Tensors: Generalization of Higher-Dimensional Data)
张量是标量、向量和矩阵概念的自然推广,用于表示更高维度的数据。
① 张量的定义 (Definition of Tensors)
▮▮▮▮张量可以看作是多维数组。标量是 0 阶张量,向量是 1 阶张量,矩阵是 2 阶张量。更高阶的张量拥有更多的轴(Axis)或维度(Dimension)。
▮▮▮▮例如,一个 3 阶张量可能表示一个立方体状的数据块。
▮▮▮▮我们通常用粗体大写字母(有时带下标)表示张量,例如 \( \mathcal{T} \)。一个 \( k \) 阶张量有 \( k \) 个轴,其形状(Shape)由每个轴的长度组成,例如 \( (d_1, d_2, \dots, d_k) \)。
② 张量在深度学习中的应用 (Tensors in Deep Learning)
▮▮▮▮在深度学习中,张量是处理复杂数据类型的标准方式。
▮▮▮▮常见的例子包括:
▮▮▮▮⚝ 图像数据:彩色图像通常表示为一个 3 阶张量,形状为 \( (\text{高度}, \text{宽度}, \text{通道数}) \),例如 \( (256, 256, 3) \)。
▮▮▮▮⚝ 视频数据:可以表示为 4 阶张量,形状为 \( (\text{帧数}, \text{高度}, \text{宽度}, \text{通道数}) \)。
▮▮▮▮⚝ 一批图像数据:如果同时处理多张图像(Batch),则可以使用 4 阶张量,形状为 \( (\text{批量大小}, \text{高度}, \text{宽度}, \text{通道数}) \)。
▮▮▮▮⚝ 自然语言处理 (NLP) 中的词嵌入 (Word Embeddings):一批句子中的词嵌入可以表示为 3 阶张量,形状为 \( (\text{批量大小}, \text{句子长度}, \text{嵌入维度}) \)。
理解张量的概念和不同维度数据的表示方式是进行深度学习编程和理论分析的基础。大多数现代深度学习框架(如 TensorFlow, PyTorch)都是围绕张量运算构建的。
2.2 基本运算 (Basic Operations)
理解了数据如何表示后,下一步就是学习如何对这些数据进行操作。线性代数提供了一套丰富的运算规则,这些运算在深度学习中被广泛用于数据处理和模型计算。
2.2.1 加法与标量乘法 (Addition and Scalar Multiplication)
① 加法 (Addition)
▮▮▮▮向量和矩阵的加法遵循元素对应相加的规则。要求参与运算的向量或矩阵必须具有相同的形状。
▮▮▮▮例如,对于两个 \( m \times n \) 的矩阵 \( \mathbf{A} \) 和 \( \mathbf{B} \),它们的和 \( \mathbf{C} = \mathbf{A} + \mathbf{B} \) 是一个 \( m \times n \) 的矩阵,其元素为 \( C_{ij} = A_{ij} + B_{ij} \)。
\[ \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} + \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11}+b_{11} & a_{12}+b_{12} \\ a_{21}+b_{21} & a_{22}+b_{22} \end{bmatrix} \]
▮▮▮▮向量加法类似,例如对于两个 \( n \) 维向量 \( \mathbf{u} \) 和 \( \mathbf{v} \),它们的和 \( \mathbf{w} = \mathbf{u} + \mathbf{v} \) 是一个 \( n \) 维向量,其元素为 \( w_i = u_i + v_i \)。
▮▮▮▮在深度学习中,加法常用于模型中的残差连接 (Residual Connection) 或合并不同的特征表示。
② 标量乘法 (Scalar Multiplication)
▮▮▮▮标量与向量或矩阵的乘法是将标量与向量或矩阵的每一个元素相乘。
▮▮▮▮例如,对于标量 \( c \) 和 \( m \times n \) 的矩阵 \( \mathbf{A} \),它们的乘积 \( \mathbf{B} = c \mathbf{A} \) 是一个 \( m \times n \) 的矩阵,其元素为 \( B_{ij} = c \cdot A_{ij} \)。
\[ c \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} = \begin{bmatrix} c \cdot a_{11} & c \cdot a_{12} \\ c \cdot a_{21} & c \cdot a_{22} \end{bmatrix} \]
▮▮▮▮标量乘法常用于缩放向量或矩阵的数值,例如在梯度下降中调整学习率 \( \eta \) 时,参数更新为 \( \mathbf{W} \leftarrow \mathbf{W} - \eta \nabla L \),这里 \( \eta \) 就是一个标量。
2.2.2 向量点积与向量范数 (Vector Dot Product and Vector Norms)
① 向量点积 (Vector Dot Product / Scalar Product)
▮▮▮▮两个相同维度的向量 \( \mathbf{u} \) 和 \( \mathbf{v} \) 的点积是一个标量,定义为对应元素的乘积之和。
▮▮▮▮对于 \( n \) 维向量 \( \mathbf{u} = [u_1, \dots, u_n]^T \) 和 \( \mathbf{v} = [v_1, \dots, v_n]^T \),它们的点积记为 \( \mathbf{u} \cdot \mathbf{v} \) 或 \( \mathbf{u}^T \mathbf{v} \),计算公式为:
\[ \mathbf{u} \cdot \mathbf{v} = \sum_{i=1}^n u_i v_i = u_1 v_1 + u_2 v_2 + \dots + u_n v_n \]
▮▮▮▮几何意义:点积与两个向量的长度及其夹角的余弦值有关。 \( \mathbf{u} \cdot \mathbf{v} = \|\mathbf{u}\| \|\mathbf{v}\| \cos(\theta) \),其中 \( \theta \) 是向量 \( \mathbf{u} \) 和 \( \mathbf{v} \) 之间的夹角。如果两个向量正交(垂直),它们的点积为 0。
▮▮▮▮在深度学习中,点积常用于计算两个向量的相似度(比如在注意力机制中计算 Query 和 Key 的相关性),或者在线性层中计算输入向量与权重行向量的乘积。
② 向量范数 (Vector Norms)
▮▮▮▮向量范数衡量向量的“长度”或“大小”。它是从向量空间到非负实数的一个函数。
▮▮▮▮常见的范数有:
▮▮▮▮⚝ L2 范数 (Euclidean Norm):向量元素的平方和的平方根。表示向量在欧几里得空间中的长度。
▮\[ \|\mathbf{v}\|_2 = \sqrt{\sum_{i=1}^n v_i^2} = \sqrt{v_1^2 + v_2^2 + \dots + v_n^2} \]
▮▮▮▮⚝ L1 范数 (Manhattan Norm / Taxicab Norm):向量元素的绝对值之和。
▮\[ \|\mathbf{v}\|_1 = \sum_{i=1}^n |v_i| = |v_1| + |v_2| + \dots + |v_n| \]
▮▮▮▮⚝ 无穷范数 (Maximum Norm):向量元素绝对值的最大值。
▮\[ \|\mathbf{v}\|_\infty = \max_{i} |v_i| \]
▮▮▮▮在深度学习中,范数用于:
▮▮▮▮⚝ 衡量模型的权重大小(如 L1/L2 正则化,防止过拟合)。
▮▮▮▮⚝ 计算向量或矩阵之间的距离。
▮▮▮▮⚝ 评估模型的输出误差(如均方误差损失函数本质上是误差向量的 L2 范数的平方)。
2.2.3 矩阵乘法 (Matrix Multiplication)
矩阵乘法是线性代数中最核心也是在深度学习中最常用的运算之一。它描述了从一个向量空间到另一个向量空间的线性变换。
① 定义 (Definition)
▮▮▮▮只有当第一个矩阵的列数等于第二个矩阵的行数时,两个矩阵才能相乘。
▮▮▮▮设 \( \mathbf{A} \) 是一个 \( m \times n \) 矩阵,\( \mathbf{B} \) 是一个 \( n \times p \) 矩阵。它们的乘积 \( \mathbf{C} = \mathbf{A} \mathbf{B} \) 是一个 \( m \times p \) 矩阵。
▮▮▮▮乘积矩阵 \( \mathbf{C} \) 中的元素 \( C_{ij} \) 是矩阵 \( \mathbf{A} \) 的第 \( i \) 行向量与矩阵 \( \mathbf{B} \) 的第 \( j \) 列向量的点积。
\[ C_{ij} = \sum_{k=1}^n A_{ik} B_{kj} \]
▮▮▮▮示例:
\[ \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \begin{bmatrix} b_{11} & b_{12} & b_{13} \\ b_{21} & b_{22} & b_{23} \end{bmatrix} = \begin{bmatrix} a_{11}b_{11}+a_{12}b_{21} & a_{11}b_{12}+a_{12}b_{22} & a_{11}b_{13}+a_{12}b_{23} \\ a_{21}b_{11}+a_{22}b_{21} & a_{21}b_{12}+a_{22}b_{22} & a_{21}b_{13}+a_{22}b_{23} \end{bmatrix} \]
▮▮▮▮这里,第一个矩阵是 2x2,第二个矩阵是 2x3,结果是 2x3 矩阵。
② 性质 (Properties)
▮▮▮▮矩阵乘法不满足交换律:一般来说,\( \mathbf{A} \mathbf{B} \neq \mathbf{B} \mathbf{A} \)。
▮▮▮▮矩阵乘法满足结合律:\( (\mathbf{A} \mathbf{B}) \mathbf{C} = \mathbf{A} (\mathbf{B} \mathbf{C}) \)。
▮▮▮▮矩阵乘法满足分配律:\( \mathbf{A} (\mathbf{B} + \mathbf{C}) = \mathbf{A} \mathbf{B} + \mathbf{A} \mathbf{C} \) 和 \( (\mathbf{A} + \mathbf{B}) \mathbf{C} = \mathbf{A} \mathbf{C} + \mathbf{B} \mathbf{C} \)。
③ 计算方法与几何意义 (Calculation Methods and Geometric Interpretation)
▮▮▮▮计算方法:最直观的就是按照定义计算每个元素的点积。更高效的算法如 Strassen 算法等在实践中被采用。
▮▮▮▮几何意义:矩阵乘法可以看作是线性变换。将一个向量左乘一个矩阵,相当于对这个向量进行了一次线性变换(如旋转、缩放、剪切等)。将一个矩阵左乘另一个矩阵,相当于对空间进行了一系列线性变换的复合。
▮▮▮▮在深度学习中,神经网络的每一层(不考虑激活函数)就是一个矩阵乘法运算,例如 \( \mathbf{y} = \mathbf{W}\mathbf{x} + \mathbf{b} \),其中 \( \mathbf{x} \) 是输入向量,\( \mathbf{W} \) 是权重矩阵,\( \mathbf{b} \) 是偏置向量。整个网络的前向传播就是一系列矩阵乘法和非线性激活函数的复合。
2.2.4 元素级运算 (Element-wise Operations / Hadamard Product)
除了标准的矩阵乘法,深度学习中还频繁使用元素级运算,即对相同形状的张量中对应位置的元素进行运算。
① 元素级乘法 (Element-wise Multiplication / Hadamard Product)
▮▮▮▮两个形状相同的矩阵 \( \mathbf{A} \) 和 \( \mathbf{B} \) 的元素级乘积(也称 Hadamard 乘积)记为 \( \mathbf{A} \odot \mathbf{B} \) 或 \( \mathbf{A} * \mathbf{B} \),结果是一个形状相同的矩阵 \( \mathbf{C} \),其元素为 \( C_{ij} = A_{ij} \cdot B_{ij} \)。
\[ \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} \odot \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11}b_{11} & a_{12}b_{12} \\ a_{21}b_{21} & a_{22}b_{22} \end{bmatrix} \]
▮▮▮▮元素级乘法常用于掩码 (Masking) 操作,或者在某些激活函数(如 Sigmoid 的导数)的计算中。
② 元素级除法 (Element-wise Division)
▮▮▮▮类似地,两个形状相同的矩阵 \( \mathbf{A} \) 和 \( \mathbf{B} \) 的元素级除法结果是一个形状相同的矩阵 \( \mathbf{C} \),其元素为 \( C_{ij} = A_{ij} / B_{ij} \) (要求 \( B_{ij} \neq 0 \))。
▮\[ \begin{bmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{bmatrix} ./ \begin{bmatrix} b_{11} & b_{12} \\ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11}/b_{11} & a_{12}/b_{12} \\ a_{21}/b_{21} & a_{22}/b_{22} \end{bmatrix} \]
▮▮▮▮许多深度学习框架中的基本算术运算符(如 *
, /
, +
, -
)在应用于张量时,默认执行的是元素级运算,除非特别指定矩阵乘法 (@
或 matmul
)。
2.2.5 转置 (Transpose)
转置是将矩阵的行和列进行互换的操作。
① 定义 (Definition)
▮▮▮▮对于一个 \( m \times n \) 的矩阵 \( \mathbf{A} \),其转置记为 \( \mathbf{A}^T \) 或 \( \mathbf{A}' \),是一个 \( n \times m \) 的矩阵。
▮▮▮▮矩阵 \( \mathbf{A}^T \) 中的第 \( i \) 行第 \( j \) 列的元素是矩阵 \( \mathbf{A} \) 中的第 \( j \) 行第 \( i \) 列的元素,即 \( (A^T)_{ij} = A_{ji} \)。
\[ \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix}^T = \begin{bmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{bmatrix} \]
▮▮▮▮向量的转置:一个列向量转置后变成行向量,一个行向量转置后变成列向量。例如,若 \( \mathbf{v} = \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} \),则 \( \mathbf{v}^T = \begin{bmatrix} v_1 & v_2 \end{bmatrix} \)。
② 性质 (Properties)
▮▮▮▮\( (\mathbf{A}^T)^T = \mathbf{A} \)
▮▮▮▮\( (c\mathbf{A})^T = c\mathbf{A}^T \) (其中 \( c \) 是标量)
▮▮▮▮\( (\mathbf{A} + \mathbf{B})^T = \mathbf{A}^T + \mathbf{B}^T \)
▮▮▮▮\( (\mathbf{A} \mathbf{B})^T = \mathbf{B}^T \mathbf{A}^T \) (注意顺序颠倒)
③ 在深度学习中的应用 (Applications in Deep Learning)
▮▮▮▮转置在线性代数运算中非常常见,特别是在矩阵乘法相关的计算中。
▮▮▮▮例如,在计算向量点积时,我们常用 \( \mathbf{u}^T \mathbf{v} \) 的形式。
▮▮▮▮在神经网络中,反向传播算法涉及权重的梯度计算,其中会大量使用矩阵的转置运算。
2.3 特殊的矩阵与向量 (Special Matrices and Vectors)
了解一些具有特殊结构的矩阵和向量,有助于简化计算和理解某些模型特性。
2.3.1 单位矩阵与逆矩阵 (Identity Matrix and Inverse Matrix)
① 单位矩阵 (Identity Matrix)
▮▮▮▮单位矩阵是一个方阵(行数和列数相等),其主对角线上的元素都是 1,其余元素都是 0。
▮▮▮▮\( n \times n \) 的单位矩阵通常记为 \( \mathbf{I}_n \) 或 \( \mathbf{I} \)。
\[ \mathbf{I}_3 = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \]
▮▮▮▮性质:任何矩阵 \( \mathbf{A} \) 左乘或右乘一个尺寸合适的单位矩阵,结果仍是 \( \mathbf{A} \):\( \mathbf{A} \mathbf{I} = \mathbf{A} \) 且 \( \mathbf{I} \mathbf{A} = \mathbf{A} \)。单位矩阵在矩阵乘法中扮演着类似于标量 1 的角色。
② 逆矩阵 (Inverse Matrix)
▮▮▮▮对于一个方阵 \( \mathbf{A} \),如果存在一个同尺寸的方阵 \( \mathbf{B} \),使得 \( \mathbf{A} \mathbf{B} = \mathbf{B} \mathbf{A} = \mathbf{I} \),那么 \( \mathbf{B} \) 就称为 \( \mathbf{A} \) 的逆矩阵,记为 \( \mathbf{A}^{-1} \)。
▮▮▮▮只有可逆矩阵(或非奇异矩阵)才有逆矩阵。当且仅当方阵的行列式不为零时,它才可逆。
▮▮▮▮计算:计算逆矩阵通常通过高斯消元法或利用伴随矩阵等方法。
▮▮▮▮性质:\( (\mathbf{A}^{-1})^{-1} = \mathbf{A} \),\( (\mathbf{A}^T)^{-1} = (\mathbf{A}^{-1})^T \),\( (\mathbf{AB})^{-1} = \mathbf{B}^{-1}\mathbf{A}^{-1} \)。
③ 在深度学习中的关联 (Relevance in Deep Learning)
▮▮▮▮尽管直接计算大型矩阵的逆在深度学习中很少见(计算量大且数值不稳定),但逆矩阵的概念在理论分析中很重要。
▮▮▮▮例如,某些解析解(如线性回归的最小二乘解)中会涉及矩阵求逆。一些高级优化算法(如牛顿法)需要计算 Hessian 矩阵的逆(或伪逆)。
▮▮▮▮伪逆 (Pseudoinverse / Moore-Penrose inverse):对于不可逆的矩阵(包括非方阵),可以计算其伪逆,记为 \( \mathbf{A}^+ \)。它在线性方程组求解和最小二乘问题中具有重要作用,例如在某些情况下,线性系统 \( \mathbf{Ax} = \mathbf{b} \) 的最小二乘解可以表示为 \( \mathbf{x} = \mathbf{A}^+ \mathbf{b} \)。
2.3.2 对角矩阵、对称矩阵、正交矩阵 (Diagonal Matrix, Symmetric Matrix, Orthogonal Matrix)
① 对角矩阵 (Diagonal Matrix)
▮▮▮▮对角矩阵是除了主对角线上的元素外,所有其他元素都为零的方阵。
\[ \begin{bmatrix} d_1 & 0 & \dots & 0 \\ 0 & d_2 & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & d_n \end{bmatrix} \]
▮▮▮▮性质:对角矩阵的乘法非常简单,只需将对应对角线元素相乘。对角矩阵的逆矩阵(如果对角线元素均非零)也是一个对角矩阵,对角线元素是原矩阵对应元素的倒数。计算特征值和特征向量也非常简单(对角线元素即特征值,标准基向量即特征向量)。
▮▮▮▮在深度学习中,对角矩阵常用于参数化某些操作,例如在某些优化器(如 Adagrad)中对不同参数的学习率进行缩放,或者在批标准化 (Batch Normalization) 中对特征进行缩放和移位。
② 对称矩阵 (Symmetric Matrix)
▮▮▮▮对称矩阵是等于其转置的方阵,即 \( \mathbf{A}^T = \mathbf{A} \)。
\[ \begin{bmatrix} a & b & c \\ b & d & e \\ c & e & f \end{bmatrix} \]
▮▮▮▮性质:对称矩阵具有一些非常好的性质,例如它的特征值都是实数,并且可以被特征向量组成的标准正交基对角化。协方差矩阵 (Covariance Matrix) 就是一种重要的对称矩阵。
▮▮▮▮在深度学习中,对称矩阵出现在协方差矩阵的计算中(用于理解数据特征之间的关系),或者在表示二次型(Quadratic Form)时。
③ 正交矩阵 (Orthogonal Matrix)
▮▮▮▮正交矩阵是一个方阵 \( \mathbf{Q} \),其转置等于其逆矩阵,即 \( \mathbf{Q}^T = \mathbf{Q}^{-1} \)。等价地,它的列向量是相互正交的单位向量(构成一个标准正交基),行向量也是如此。
▮▮▮▮性质:正交矩阵的乘法保留向量的长度和夹角(即它是等距变换 Isometry),只进行旋转或反射。\( \|\mathbf{Q}\mathbf{x}\|_2 = \|\mathbf{x}\|_2 \)。
▮▮▮▮在深度学习中,正交矩阵或接近正交的矩阵在权重初始化、循环神经网络 (RNN) 的一些变种中用于保持梯度的大小,避免梯度消失或爆炸。奇异值分解 (SVD) 也涉及正交矩阵。
2.4 行列式、秩与线性方程组 (Determinant, Rank, and Linear Systems)
这些概念帮助我们理解矩阵所代表的线性变换的性质,以及线性方程组是否有解、有多少解。
2.4.1 行列式 (Determinant)
① 定义 (Definition)
▮▮▮▮行列式是一个只对方阵定义的标量值,记为 \( \det(\mathbf{A}) \) 或 \( |\mathbf{A}| \)。
▮▮▮▮对于 2x2 矩阵 \( \begin{bmatrix} a & b \\ c & d \end{bmatrix} \),行列式为 \( ad - bc \)。
▮▮▮▮对于更大尺寸的矩阵,行列式定义递归进行,涉及代数余子式等概念。
② 几何意义 (Geometric Interpretation)
▮▮▮▮行列式的绝对值表示矩阵所代表的线性变换对空间体积(或面积,对于 2D)的缩放因子。
▮▮▮▮如果行列式为正,表示变换保持空间的定向;如果为负,表示变换翻转了空间的定向。
▮▮▮▮如果行列式为零,表示变换将空间压缩到更低的维度,从而失去了体积(或面积)。
③ 在深度学习中的关联 (Relevance in Deep Learning)
▮▮▮▮行列式为零是判断矩阵是否可逆(或奇异)的标准。可逆矩阵对应的线性变换是可逆的,这意味着没有信息丢失。
▮▮▮▮行列式在理论分析中出现,例如在计算多元概率分布的密度函数变换时需要用到 Jacobian 矩阵的行列式。
2.4.2 矩阵的秩 (Rank of a Matrix)
① 定义 (Definition)
▮▮▮▮矩阵的秩表示其列向量(或行向量)的极大线性无关组的个数。
▮▮▮▮等价地,秩是矩阵所能张成 (Span) 的向量空间的维度。
▮▮▮▮对于 \( m \times n \) 的矩阵 \( \mathbf{A} \),其秩记为 \( \text{rank}(\mathbf{A}) \),满足 \( \text{rank}(\mathbf{A}) \le \min(m, n) \)。
▮▮▮▮如果 \( \text{rank}(\mathbf{A}) = \min(m, n) \),则称该矩阵是满秩 (Full Rank) 的。
② 与列(行)向量空间维数的关系 (Relationship with Column (Row) Space Dimension)
▮▮▮▮矩阵的列空间 (Column Space) 是其列向量所有可能的线性组合构成的空间。矩阵的秩等于其列空间的维度。
▮▮▮▮类似地,矩阵的行空间 (Row Space) 是其行向量所有可能的线性组合构成的空间。矩阵的秩也等于其行空间的维度。
③ 在深度学习中的关联 (Relevance in Deep Learning)
▮▮▮▮矩阵的秩反映了其所表示的数据或变换的内在维度或信息含量。
▮▮▮▮在主成分分析 (PCA) 等降维技术中,我们寻找数据协方差矩阵的秩(或近似秩)来确定保留多少维度。
▮▮▮▮在分析模型的表达能力时,矩阵的秩的概念有时也会被提及。低秩矩阵分解 (Low-Rank Matrix Factorization) 是一种常用的技术,可以用于数据压缩或特征提取。
2.4.3 线性方程组及其解 (Linear Systems and Their Solutions)
线性方程组是线性代数最经典的应用之一,理解它的解结构与深度学习中的优化问题有深层联系。
① 矩阵表示 (Matrix Representation)
▮▮▮▮一个包含 \( m \) 个方程和 \( n \) 个未知量的线性方程组可以写成矩阵形式:
\[ \mathbf{Ax} = \mathbf{b} \]
▮▮▮▮其中 \( \mathbf{A} \) 是 \( m \times n \) 的系数矩阵,\( \mathbf{x} \) 是 \( n \) 维的未知量向量,\( \mathbf{b} \) 是 \( m \) 维的常数向量。<END_OF_CHAPTER/>
3. 微积分:模型优化与学习的基石 (Calculus: Cornerstone of Model Optimization and Learning)
欢迎来到本书第三章,我们将深入探讨微积分(Calculus)这一重要的数学工具。如果说线性代数(Linear Algebra)提供了表示和组织数据的框架,那么微积分就是赋予深度学习(Deep Learning)模型“学习”能力的基石。模型的学习过程本质上是一个优化(Optimization)过程,即通过调整模型的参数(Parameters),最小化某个衡量模型预测结果与真实值之间差距的函数,我们称之为损失函数(Loss Function)或成本函数(Cost Function)。而微积分,特别是导数(Derivative)和梯度(Gradient),正是实现这一优化过程的核心工具。
在本章中,我们将从微积分最基础的概念——函数(Function)、极限(Limit)和连续性(Continuity)——出发,逐步深入到单变量(Single-variable)和多变量(Multivariable)的导数、偏导数(Partial Derivative)、梯度,以及用于处理复合函数(Composite Function)求导的链式法则(Chain Rule)。这些概念将直接帮助我们理解深度学习中最核心的算法之一:反向传播(Backpropagation)。我们还将简要介绍高阶导数(Higher-order Derivatives)、Hessian 矩阵(Hessian Matrix)以及泰勒级数(Taylor Series),它们在理解优化算法的行为、分析模型的性质等方面扮演着重要角色。最后,我们将通过具体的深度学习应用示例,展示微积分在模型优化和学习过程中的实际作用。
无论您是初学者还是希望加深理解的进阶读者,本章都将为您提供扎实的微积分基础,让您不仅知其然,更能知其所以然,更好地理解和改进深度学习模型。🎯
3.1 函数、极限与连续性 (Functions, Limits, and Continuity)
在深入探讨导数和梯度之前,我们需要回顾微积分中最基本也是最重要的概念:函数、极限和连续性。这些概念是理解后续微积分工具的起点。
3.1.1 函数 (Functions)
一个函数 \(f\) 是一个规则,它将某个集合(定义域,Domain)中的每个元素唯一地映射到另一个集合(值域,Range)中的一个元素。在深度学习中,我们处理的函数通常是将输入数据(通常是向量或矩阵)映射到输出(预测值、概率等)的数学表达式。模型的每一层,从输入到输出,都可以看作是一个复杂的复合函数。
例如,一个简单的线性模型可以表示为一个函数:
\[ y = f(x) = wx + b \]
这里,\(x\) 是输入(自变量,Independent Variable),\(w\) 是权重(Weight),\(b\) 是偏置(Bias),\(y\) 是输出(因变量,Dependent Variable)。在深度学习中,\(w\) 和 \(b\) 就是需要通过学习过程来调整的参数。
一个更复杂的例子是一个包含激活函数(Activation Function)的神经元(Neuron):
\[ a = g(z) = g(wx + b) \]
这里,\(z = wx + b\) 是线性变换的结果,\(g\) 是一个非线性函数(如 Sigmoid, ReLU 等),\(a\) 是神经元的输出。整个神经网络(Neural Network)就是这些函数层层嵌套和组合而成的巨大复合函数。
理解函数的概念,特别是输入和输出可以是多维的,是理解深度学习模型结构的基础。
3.1.2 极限 (Limits)
极限描述了当函数的输入趋近于某个值时,函数的输出所趋近的值。极限是微积分中导数和积分等概念的基石。
对于单变量函数 \(f(x)\),如果当 \(x\) 无限趋近于 \(c\) 时,\(f(x)\) 无限趋近于 \(L\),我们就说 \(f(x)\) 在 \(x \to c\) 时的极限是 \(L\),记作:
\[ \lim_{x \to c} f(x) = L \]
在深度学习中,虽然我们不直接计算极限,但极限的概念内嵌在导数的定义中,而导数是计算梯度和优化算法的关键。理解极限有助于我们理解导数是如何衡量函数局部变化率的。
3.1.3 连续性 (Continuity)
如果一个函数在其定义域内的每一点都连续,那么这个函数就是连续函数。直观上,一个连续函数的图像是“没有断点”的。
对于函数 \(f(x)\),如果在点 \(c\) 处满足以下三个条件,则称 \(f(x)\) 在点 \(c\) 处连续:
① \(f(c)\) 存在(函数在 \(c\) 有定义)。
② \(\lim_{x \to c} f(x)\) 存在。
③ \(\lim_{x \to c} f(x) = f(c)\)。
在深度学习中,我们使用的许多核心数学运算和函数都是连续的,例如线性变换、多项式函数、指数函数、Log 函数(在其定义域内)、Sigmoid 函数、Tanh 函数等。ReLU 函数虽然在 \(x=0\) 处导数不存在,但它是连续的。连续性对于优化算法(特别是基于梯度的优化方法)的收敛性分析很重要,因为许多优化理论都建立在目标函数连续可微(Continuously Differentiable)或至少连续的假设之上。
3.2 导数与微分 (Derivatives and Differentials)
导数是微积分中最核心的概念之一,它描述了函数随输入变化而变化的瞬时速率。在深度学习中,导数(或其多变量形式:偏导数和梯度)是计算参数更新量的基础。
3.2.1 单变量函数的导数定义与计算 (Definition and Calculation of Single-Variable Derivatives)
对于单变量函数 \(f(x)\),它在点 \(x_0\) 处的导数定义为:
\[ f'(x_0) = \lim_{h \to 0} \frac{f(x_0 + h) - f(x_0)}{h} \]
这个极限描述了当输入从 \(x_0\) 变化一个无穷小的量 \(h\) 时,函数输出的变化量 \(f(x_0 + h) - f(x_0)\) 与输入变化量 \(h\) 之比的极限。它衡量了函数在 \(x_0\) 点附近的局部变化率。几何上,导数 \(f'(x_0)\) 表示函数图像在点 \((x_0, f(x_0))\) 处切线(Tangent Line)的斜率(Slope)。
导数的几何意义 (Geometric Meaning of Derivative):
导数表示函数曲线在某一点的斜率,斜率的大小反映了函数在该点附近的变化陡峭程度;斜率的正负反映了函数在该点附近的增减趋势。
常用函数的导数:
我们需要熟悉一些基本函数的导数,以便进行更复杂的求导。
⚝ 常数函数 \(f(x) = c\),\(f'(x) = 0\)
⚝ 幂函数 \(f(x) = x^n\),\(f'(x) = nx^{n-1}\) (对于任意实数 \(n\))
⚝ 指数函数 \(f(x) = e^x\),\(f'(x) = e^x\)
⚝ 对数函数 \(f(x) = \ln(x)\),\(f'(x) = 1/x\) (对于 \(x>0\))
⚝ 三角函数 \(f(x) = \sin(x)\),\(f'(x) = \cos(x)\)
⚝ 三角函数 \(f(x) = \cos(x)\),\(f'(x) = -\sin(x)\)
在深度学习中,激活函数是神经元中的非线性部分,它们的导数对于反向传播计算至关重要。例如:
⚝ Sigmoid 函数:\(\sigma(x) = \frac{1}{1 + e^{-x}}\),\(\sigma'(x) = \sigma(x)(1 - \sigma(x))\)
⚝ ReLU 函数:\(ReLU(x) = \max(0, x)\),\(ReLU'(x) = \begin{cases} 1 & x > 0 \\ 0 & x < 0 \\ \text{undefined} & x = 0 \end{cases}\)。实践中通常约定 \(ReLU'(0) = 0\) 或 \(0.5\)。
⚝ Tanh 函数:\(\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}\),\(\tanh'(x) = 1 - \tanh^2(x)\)
3.2.2 基本求导法则 (Basic Differentiation Rules)
为了计算复杂函数的导数,我们需要掌握一些基本的求导规则。
① 线性性 (Linearity):
▮▮▮▮⚝ 常数乘法法则:\((cf(x))' = cf'(x)\)
▮▮▮▮⚝ 加法/减法法则:\((f(x) \pm g(x))' = f'(x) \pm g'(x)\)
② 乘积法则 (Product Rule):
▮▮▮▮⚝ \((f(x)g(x))' = f'(x)g(x) + f(x)g'(x)\)
③ 商法则 (Quotient Rule):
▮▮▮▮⚝ \((\frac{f(x)}{g(x)})' = \frac{f'(x)g(x) - f(x)g'(x)}{(g(x))^2}\) (当 \(g(x) \neq 0\) 时)
这些法则允许我们分解复杂函数,并利用已知基本函数的导数来计算其导数。在深度学习中,模型的损失函数通常是模型输出和真实值之间的复杂函数,需要利用这些法则来求导。
3.3 偏导数与梯度 (Partial Derivatives and Gradient)
深度学习模型通常处理高维数据,模型的损失函数是关于大量参数(权重和偏置)的多变量函数。为了优化这些参数,我们需要将导数的概念从单变量函数推广到多变量函数,这就引入了偏导数和梯度的概念。
3.3.1 多变量函数 (Multivariable Functions)
一个多变量函数是一个输入是多个变量(通常构成一个向量),输出是一个或多个变量的函数。例如,一个输入是二维向量 \(\mathbf{x} = [x_1, x_2]^T\),输出是一个标量的函数 \(f(x_1, x_2)\)。更一般地,一个函数的输入是 \(n\) 维向量 \(\mathbf{x} = [x_1, x_2, \dots, x_n]^T\),输出是 \(m\) 维向量 \(\mathbf{y} = [y_1, y_2, \dots, y_m]^T\),这可以表示为 \(\mathbf{y} = F(\mathbf{x})\),其中每个输出分量 \(y_i\) 都是 \(\mathbf{x}\) 中所有输入变量的函数。
在深度学习中:
⚝ 损失函数(如均方误差 MSE):输入是模型的预测输出向量和真实标签向量,输出是一个表示误差大小的标量,这是一个从多维到一维的函数。
⚝ 全连接层(Fully Connected Layer):输入是一个向量,输出是另一个向量,中间涉及矩阵乘法和向量加法,这是一个从多维到多维的函数。
3.3.2 偏导数的定义与计算 (Definition and Calculation of Partial Derivatives)
对于一个多变量函数 \(f(x_1, x_2, \dots, x_n)\),它关于其中一个变量 \(x_i\) 的偏导数(Partial Derivative)定义为当固定其他所有变量不变时,函数随 \(x_i\) 的变化率。记作 \(\frac{\partial f}{\partial x_i}\) 或 \(f_{x_i}\)。
形式上,函数 \(f(x_1, x_2, \dots, x_n)\) 在点 \((a_1, a_2, \dots, a_n)\) 处关于 \(x_i\) 的偏导数定义为:
\[ \frac{\partial f}{\partial x_i}(a_1, \dots, a_n) = \lim_{h \to 0} \frac{f(a_1, \dots, a_i + h, \dots, a_n) - f(a_1, \dots, a_i, \dots, a_n)}{h} \]
计算偏导数时,只需要将除待求偏导数变量以外的所有变量视为常数,然后按照单变量函数的求导法则进行计算即可。
示例:
考虑函数 \(f(x, y) = x^2y + \sin(x) + y^3\)。
关于 \(x\) 的偏导数:将 \(y\) 视为常数。
\[ \frac{\partial f}{\partial x} = \frac{\partial}{\partial x}(x^2y) + \frac{\partial}{\partial x}(\sin(x)) + \frac{\partial}{\partial x}(y^3) = 2xy + \cos(x) + 0 = 2xy + \cos(x) \]
关于 \(y\) 的偏导数:将 \(x\) 视为常数。
\[ \frac{\partial f}{\partial y} = \frac{\partial}{\partial y}(x^2y) + \frac{\partial}{\partial y}(\sin(x)) + \frac{\partial}{\partial y}(y^3) = x^2 \cdot 1 + 0 + 3y^2 = x^2 + 3y^2 \]
3.3.3 梯度向量 (Gradient Vector)
梯度(Gradient)是将一个标量函数 \(f\) 关于其所有自变量的偏导数排列成的向量。对于函数 \(f(x_1, x_2, \dots, x_n)\),其梯度记作 \(\nabla f\) 或 grad \(f\)。
\[ \nabla f = \begin{pmatrix} \frac{\partial f}{\partial x_1} \\ \frac{\partial f}{\partial x_2} \\ \vdots \\ \frac{\partial f}{\partial x_n} \end{pmatrix} \]
梯度向量的方向指向函数值增加最快的方向,其大小是该方向上的最大变化率。在深度学习中,我们通常希望最小化损失函数,因此沿着梯度的负方向进行参数更新可以使函数值下降最快。这就是梯度下降(Gradient Descent)算法的基本思想。
梯度的几何意义 (Geometric Meaning of Gradient):
⚝ 方向: 梯度向量指向函数增长最快的方向。
⚝ 大小: 梯度向量的模长(Magnitude)表示函数在该点沿梯度方向的最大变化率。
3.3.4 方向导数 (Directional Derivative)
方向导数(Directional Derivative)衡量函数沿任意给定方向的变化率。对于函数 \(f(\mathbf{x})\) 和单位向量 \(\mathbf{v}\),函数 \(f\) 在点 \(\mathbf{a}\) 沿方向 \(\mathbf{v}\) 的方向导数记作 \(D_{\mathbf{v}}f(\mathbf{a})\),其计算公式为:
\[ D_{\mathbf{v}}f(\mathbf{a}) = \nabla f(\mathbf{a}) \cdot \mathbf{v} \]
其中 \(\cdot\) 表示向量点积(Dot Product)。
方向导数的概念告诉我们,函数在任何方向上的变化率都可以通过梯度与该方向单位向量的点积来计算。这再次强调了梯度在描述函数局部变化中的核心作用。最小化损失函数时,我们沿着负梯度方向,因为这是函数值下降最快的方向(即该方向上的方向导数是最小的)。
3.4 链式法则 (Chain Rule)
链式法则是微积分中用于计算复合函数导数的重要法则。在深度学习中,神经网络是层层堆叠的结构,每一层都对输入进行变换,整个网络是一个大型的复合函数。反向传播算法的本质就是利用链式法则高效地计算损失函数关于每一层参数的梯度。
3.4.1 单变量链式法则 (Single-Variable Chain Rule)
回顾单变量的链式法则。如果 \(y\) 是 \(u\) 的函数 \(y=f(u)\),而 \(u\) 又是 \(x\) 的函数 \(u=g(x)\),那么 \(y\) 是 \(x\) 的复合函数 \(y=f(g(x))\)。\(y\) 关于 \(x\) 的导数可以通过链式法则计算:
\[ \frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx} = f'(u) \cdot g'(x) = f'(g(x)) \cdot g'(x) \]
这个法则可以推广到更多层的复合函数。
3.4.2 多变量链式法则 (Multivariable Chain Rule)
多变量的链式法则更为复杂,因为中间变量和最终变量都可能是多维的。这是理解神经网络反向传播的关键。
情况一: 函数 \(z = f(x, y)\),其中 \(x = g(t)\) 且 \(y = h(t)\)。此时 \(z\) 是 \(t\) 的复合函数。
\[ \frac{dz}{dt} = \frac{\partial z}{\partial x} \frac{dx}{dt} + \frac{\partial z}{\partial y} \frac{dy}{dt} \]
这里,\(\frac{\partial z}{\partial x}\) 是 \(f\) 关于 \(x\) 的偏导数,\(\frac{dx}{dt}\) 是 \(g\) 关于 \(t\) 的导数,以此类推。
情况二: 函数 \(z = f(x_1, x_2, \dots, x_n)\),其中每个 \(x_i\) 都是变量 \(t_1, t_2, \dots, t_m\) 的函数。此时 \(z\) 是 \(t_1, \dots, t_m\) 的多变量复合函数。\(z\) 关于 \(t_j\) 的偏导数为:
\[ \frac{\partial z}{\partial t_j} = \frac{\partial z}{\partial x_1} \frac{\partial x_1}{\partial t_j} + \frac{\partial z}{\partial x_2} \frac{\partial x_2}{\partial t_j} + \dots + \frac{\partial z}{\partial x_n} \frac{\partial x_n}{\partial t_j} = \sum_{i=1}^n \frac{\partial z}{\partial x_i} \frac{\partial x_i}{\partial t_j} \]
这是一个更一般形式的多变量链式法则,它表明如何计算最终输出对某个输入变量的偏导数:沿着从该输入变量到最终输出的所有可能路径,将路径上经过的每个中间函数关于其直接输入的偏导数(或导数)相乘,然后将所有路径的结果相加。
在深度学习中,假设损失函数 \(L\) 依赖于模型的输出 \(\hat{y}\),模型输出 \(\hat{y}\) 依赖于最后一层的激活值 \(a^{(L)}\),\(a^{(L)}\) 依赖于最后一层的加权输入 \(z^{(L)}\),\(z^{(L)}\) 依赖于最后一层的权重 \(W^{(L)}\) 和前一层的激活值 \(a^{(L-1)}\),以此类推,直到第一层的权重和输入。要计算损失函数 \(L\) 关于某一层权重 \(W^{(k)}\) 的梯度 \(\frac{\partial L}{\partial W^{(k)}}\),就需要反复应用多变量链式法则,从输出层开始,逐层向前(反向)计算每一层的梯度。
3.4.3 链式法则与计算图 (Chain Rule and Computation Graphs)
计算图(Computation Graph)是一种可视化表示复杂数学表达式中各运算和变量之间依赖关系的方式。节点(Node)代表变量(输入、输出、中间结果)或操作(加、乘、函数等),边(Edge)表示数据流动的方向。
例如,考虑函数 \(f(x, y, z) = (x + y) \cdot z\)。其计算图可以表示为:
⚝ 输入节点:\(x, y, z\)
⚝ 中间节点:\(u = x + y\)
⚝ 输出节点:\(f = u \cdot z\)
边:\(x \to u\), \(y \to u\), \(u \to f\), \(z \to f\)
计算图极大地简化了链式法则的应用。要计算输出对某个输入节点的梯度,可以沿着计算图中从输出节点到该输入节点的所有路径进行。对于每条路径,将沿途所有边上的局部导数(Local Derivative)相乘;如果有多条路径,则将所有路径的结果相加。
在深度学习中,神经网络本身就可以看作是一个巨大的计算图。每个层或每个操作(如矩阵乘法、偏置加法、激活函数)都是计算图中的一个节点或一组节点。反向传播算法正是基于这个计算图,从损失函数节点开始,沿着指向输入或参数节点的反方向,利用链式法则逐层计算梯度。计算图不仅帮助理解链式法则,也是现代深度学习框架(如 TensorFlow, PyTorch)自动微分(Automatic Differentiation)功能的基础。
3.5 高阶导数与Hessian矩阵 (Higher-Order Derivatives and Hessian Matrix)
除了第一阶导数(偏导数和梯度),高阶导数(Higher-Order Derivatives)也提供了关于函数行为的重要信息。特别是二阶导数(Second-Order Derivative)和由二阶偏导数组成的 Hessian 矩阵,在理解函数局部形状、判断极值类型以及设计更高级优化算法(如牛顿法)中非常有用。
3.5.1 二阶导数 (Second-Order Derivatives)
对于单变量函数 \(f(x)\),其二阶导数是其导数 \(f'(x)\) 的导数,记作 \(f''(x)\) 或 \(\frac{d^2f}{dx^2}\)。
二阶导数描述了函数变化率的变化率,即函数曲线的凹凸性(Concavity and Convexity)。
⚝ 如果 \(f''(x) > 0\),则函数在该点附近是凸的(Convex),开口向上。
⚝ 如果 \(f''(x) < 0\),则函数在该点附近是凹的(Concave),开口向下。
⚝ 如果 \(f''(x) = 0\),可能是拐点(Inflection Point)。
在优化中,凸函数(Convex Function)具有非常好的性质:任何局部最小值(Local Minimum)都是全局最小值(Global Minimum)。然而,深度学习中的损失函数通常是非凸的,这意味着可能存在多个局部最小值、全局最小值和鞍点(Saddle Point)。
3.5.2 Hessian矩阵 (Hessian Matrix)
对于多变量函数 \(f(x_1, x_2, \dots, x_n)\),其 Hessian 矩阵 \(H\) 是一个 \(n \times n\) 的矩阵,由函数的二阶偏导数组成。矩阵的第 \(i\) 行第 \(j\) 列元素是 \(f\) 关于 \(x_i\) 和 \(x_j\) 的二阶偏导数:
\[ H_{ij} = \frac{\partial^2 f}{\partial x_i \partial x_j} \]
通常,如果二阶偏导数连续,则混合偏导数相等:\(\frac{\partial^2 f}{\partial x_i \partial x_j} = \frac{\partial^2 f}{\partial x_j \partial x_i}\),因此 Hessian 矩阵是对称矩阵(Symmetric Matrix)。```xml
本章重点介绍与深度学习优化过程紧密相关的微积分概念,特别是导数、梯度、链式法则及其在反向传播中的应用。
```