1. 机器学习基本概念 (Basic Concepts)

Video: https://www.youtube.com/watch?v=Ye018rCVvOo

1.1 主要机器学习任务类型 (Major Types of Machine Learning Tasks)

机器学习算法可以根据其学习目标和所处理的数据类型大致分为以下几类:

  1. 监督学习 (Supervised Learning)

    • 目标: 从带标签的训练数据(即每个数据点都有一个已知的“答案”或“目标输出”)中学习一个映射函数,以便对新的、未见过的数据进行预测。
    • 子类型:
      • 回归 (Regression):
        • 目标输出: 连续的数值 (a continuous scalar value)。
        • 例子: 预测房价、股票价格、温度。
          Image/Computer-Science/Machine Learning/1.png
      • 分类 (Classification):
        • 目标输出: 离散的类别标签 (a discrete class label) from a predefined set.
        • 例子: 图像识别(猫/狗)、邮件分类(垃圾/非垃圾)、疾病诊断(有病/无病)。 Image/Computer-Science/Machine Learning/2.png
          3.jpg
  2. 无监督学习 (Unsupervised Learning)

    • 目标: 从未带标签的数据中发现隐藏的模式、结构或关系。算法自行探索数据。
    • 子类型:
      • 聚类 (Clustering):
        • 目标: 将数据点分组成相似的集合(簇),使得同一簇内的数据点相似度高,不同簇之间的数据点相似度低。
        • 例子: 客户分群、异常检测。
      • 降维 (Dimensionality Reduction):
        • 目标: 减少数据特征的数量,同时保留重要信息,以便于可视化、提高效率或减少噪声。
        • 例子: 主成分分析 (PCA)、t-SNE。
      • 关联规则学习 (Association Rule Learning):
        • 目标: 发现数据项之间的有趣关系或关联。
        • 例子: 购物篮分析(“购买面包的人也倾向于购买牛奶”)。
      • **(概率)结构学习 (Probabilistic Structure Learning / Graphical Model Learning)
      • (部分属于此类):
        • 目标: 发现一组随机变量之间的概率依赖关系,并用图结构(如贝叶斯网络、马尔可夫网络)来表示这些关系。
        • 特性: 当没有预先指定变量间的关系,而是从数据中推断这些关系时,这通常被视为一种无监督的发现过程。它可以帮助理解数据的内在结构和生成机制。
        • 例子: 从基因表达数据中推断基因调控网络,从传感器数据中学习变量间的依赖。
  3. 强化学习 (Reinforcement Learning)

    • 目标: 智能体 (agent) 通过与环境 (environment) 交互来学习如何做出决策,以最大化累积奖励 (cumulative reward)。智能体通过试错来学习最优策略。
    • 例子: 训练机器人行走、棋类游戏AI (AlphaGo)、自动驾驶策略。

1.2 机器学习的步骤 (Steps in Machine Learning)

1.2.1 定义一个带有未知参数的函数/模型 (Define a Function/Model with Unknown Parameters)

机器学习的核心任务之一是从数据中学习一个函数(或模型),该函数能够很好地描述输入和输出之间的关系,或者发现数据中的潜在结构。这个函数通常包含一些未知参数 (unknown parameters),这些参数的值需要从训练数据中学习得到。

以一个简单的线性回归模型为例:

y=b+wx1

这里:

1.2.2 定义代价函数/损失函数以评估模型 (Define Cost/Loss Function to Evaluate the Model)

在定义了带有未知参数的模型之后,我们需要一种方法来衡量模型的预测结果与真实目标值之间的差异。这个衡量标准就是代价函数 (Cost Function)损失函数 (Loss Function)。代价函数的值反映了当前模型参数的好坏:代价越小,模型对训练数据的拟合越好。

代价函数是参数的函数 (Loss is a function of parameters):
给定训练数据集,对于一组特定的模型参数(例如 wb),我们可以计算出模型在整个训练集上的总体表现。因此,代价函数 L 可以看作是这些未知参数的函数。例如,对于参数 wb,代价函数可以表示为 L(w,b)

L(w,b)=1Nn=1Nen

这里:

常见的单个样本损失计算方式 (en):

损失函数的作用 (The Role of the Loss Function):
损失函数告诉我们当前这组参数 (w,b) 的表现有多好 (how good a set of values is)。我们的目标是找到一组参数,使得这个损失函数的值最小。

误差平面 (Error Surface):
我们可以将损失函数 L(w,b) 想象成一个多维空间中的曲面,其中参数(如 wb)是坐标轴,损失函数的值是高度。这个曲面被称为误差平面 (Error Surface) 或损失平面。
Image/Computer-Science/Machine Learning/4.png (图示:损失值如何随着参数变化而变化,目标是找到曲面的最低点)

1.2.3 参数优化 (Optimization)

一旦我们定义了模型和损失函数 L(w,b),接下来的目标就是找到一组最优的参数 wb,使得损失函数的值最小。这个过程称为优化 (Optimization)

数学上,我们可以表示为:

w,b=argminw,bL(w,b)

这意味着我们要寻找使损失函数 L 达到最小值的参数 wb

主要方法:梯度下降 (Ways: Gradient Descent)
梯度下降是一种广泛应用于机器学习和深度学习中的迭代优化算法,用于寻找函数的最小值。其基本思想是沿着损失函数梯度下降最快的方向逐步调整参数。

梯度下降的步骤:

  1. 初始化参数 (Pick an initial value):
    随机选择或根据某种策略设定参数的初始值,例如 w0,b0

  2. 计算梯度 (Compute Gradient):
    计算损失函数 L 在当前参数点(例如 wt,bt)关于每个参数的偏导数(即梯度)。

    • 对于参数 w: Lw|w=wt,b=bt
    • 对于参数 b: Lb|w=wt,b=bt
      梯度指明了在该点函数值增长最快的方向。
  3. 确定更新量 (Determine Update Amount):

    • η (eta) 代表学习率 (Learning Rate),它是一个超参数 (Hyperparameters),控制每次参数更新的步长。
    • 参数更新的量由学习率乘以梯度的负值决定(因为我们要向梯度反方向,即下降方向移动):
      • w 的更新量: ηLw|w=wt,b=bt
      • b 的更新量: ηLb|w=wt,b=bt
  4. 更新参数 (Update Parameters):
    将当前参数值减去上一步计算的更新量,得到新的参数值:

    wt+1=wtηLw|w=wt,b=btbt+1=btηLb|w=wt,b=bt
  5. 迭代 (Update iteratively):
    重复步骤 2 到 4,直到损失函数收敛到足够小的值,或者达到预设的最大迭代次数,或者满足其他停止条件。

梯度下降的直观理解: 想象你在一个山上(误差平面),目标是走到山谷的最低点。在每一步,你都会观察当前位置哪个方向坡度最陡峭向下(梯度的反方向),然后朝着那个方向走一小步(步长由学习率控制)。


1.2.4 机器学习核心步骤与深度学习的关系 (Relationship of Core Machine Learning Steps to Deep Learning)

上述三个核心步骤——1. 定义一个带有未知参数的模型2. 定义一个损失函数来评估模型,以及 3. 通过优化算法寻找最优参数——构成了监督式机器学习的完整流程,并且这一框架在深度学习中得到了直接的应用和显著的扩展:

  1. 参数化模型的核心思想一致 (Consistent Core Idea of Parameterized Models):

    • 无论是简单的线性回归还是复杂的深度神经网络,其本质都是参数化的函数/模型,包含大量需要从数据中学习的未知参数(权重和偏置)。
    • 深度学习模型(如神经网络)通过多层非线性变换构建出表达能力极强的参数化函数。
  2. 损失函数作为统一的评估和优化目标 (Loss Function as a Unified Goal for Evaluation and Optimization):

    • 对于任何参数化模型,都需要一个损失函数来量化其预测与真实目标之间的差距。
    • 在深度学习中,训练的目标同样是找到一组使损失函数最小化的参数。
  3. 优化算法作为学习的驱动力 (Optimization Algorithms as the Engine of Learning):

    • 梯度下降及其变体是深度学习中最核心的优化工具。由于深度神经网络参数众多,损失函数的“误差平面”异常复杂,包含许多局部最小值、鞍点等。
    • 深度学习领域发展了许多先进的梯度下降变体,如:
      • 随机梯度下降 (Stochastic Gradient Descent, SGD): 每次使用单个样本计算梯度并更新,速度快但波动大。
      • Mini-batch 梯度下降: 每次使用一小批样本计算梯度,是 Batch GD 和 SGD 的折衷,也是目前最常用的方法。
      • 带动量的优化器 (Optimizers with Momentum): 如 Momentum, Nesterov Accelerated Gradient (NAG),通过引入动量项加速收敛并帮助越过小的局部极值点。
      • 自适应学习率优化器 (Adaptive Learning Rate Optimizers): 如 AdaGrad, RMSProp, Adam, AdamW,它们能为每个参数自动调整学习率,通常能更快收敛且对初始学习率不那么敏感。
    • 反向传播 (Backpropagation): 对于深度神经网络这样复杂的复合函数,高效计算梯度至关重要。反向传播算法利用链式法则,系统地计算损失函数关于网络中所有参数的梯度,为梯度下降提供“方向盘”。
  4. 深度学习的扩展与深化 (Extensions and Deepening in Deep Learning):

    • 模型复杂度与层级结构: 深度学习通过构建深层网络结构极大地扩展了模型的复杂度,使其能够学习从低级到高级的层次化特征表示。
    • 非线性能力: 深度学习模型广泛使用非线性激活函数,使其能够学习高度非线性的映射关系。
    • 特定任务的损失与模型: 针对各种复杂任务(图像识别、自然语言处理等),深度学习发展了特定的网络架构(如CNNs, RNNs, Transformers)和相应的损失函数。
    • 端到端学习 (End-to-End Learning): 深度学习常常实现“端到端”学习,即从原始输入直接学习到最终输出,整个过程由参数通过最小化损失函数自动学习得到。

总结来说,"定义模型"、"定义损失函数" 和 "优化参数" 这三个步骤是机器学习(尤其是监督学习)的基本骨架。深度学习在这个骨架的基础上,通过构建更复杂强大的模型(神经网络)、采用合适的损失函数,并利用高效的优化算法(如基于反向传播的梯度下降及其变体),来解决更具挑战性的问题并取得了巨大成功。理解这三个基本步骤及其在深度学习中的具体实现,是掌握深度学习原理的关键。


2. 深度学习基本概念 (Basic Concepts of Deep Learning)

Video: https://www.youtube.com/watch?v=bHcJCp2Fyxs

2.1 步骤一:定义带有未知参数的函数/模型 (Step 1: Define a Function/Model with Unknown Parameters)

2.1.1 动机:线性模型的局限性 (Model Bias of Linear Models)

线性模型,如 y=b+wx1y=b+jwjxj,在许多情况下非常有用且易于解释。然而,它们具有固有的模型偏差 (Model Bias),这意味着它们只能表示输入和输出之间的线性关系。

2.1.2 构建更灵活的模型:分段线性函数 (Building More Flexible Models: Piecewise Linear Functions)

为了克服线性模型的局限性,我们需要能够表示非线性关系的更灵活的模型。一种方法是使用分段线性函数 (Piecewise Linear Curves)

2.1.3 推广到多特征输入:构建神经网络模型 (Generalizing to Multiple Features: Building a Neural Network Model)

上面的讨论是基于单个输入特征 x1。现在,我们将这个思想推广到具有多个输入特征 xj 的情况。

2.1.4 模型的未知参数集 (θ) (The Set of Unknown Parameters in the Model, θ)

在我们定义的神经网络模型中,例如单隐藏层网络:

y=f(x;W,bhidden,cT,boutput)=cTσ(Wx+bhidden)+boutput

存在一系列需要通过从数据中学习来确定的未知参数 (Unknown parameters)

这些参数具体包括:

  1. 输入层到隐藏层的权重矩阵 (W):

    • 这是一个矩阵,其维度通常是 (隐藏层神经元数量 N1) × (输入特征数量 N0)。
    • 它包含了连接每个输入特征到每个隐藏层神经元的所有权重。
  2. 隐藏层的偏置向量 (bhidden):

    • 这是一个列向量,其维度是 (隐藏层神经元数量 N1) ×1
    • 8.png 中用绿色的 b 表示(为了区分,我们这里用 bhidden)。
    • 它包含了每个隐藏层神经元的偏置项。
  3. 隐藏层到输出层的权重向量 (cTc):

    • 如果输出 y 是一个标量(如回归或二分类的logit),那么 cT 是一个行向量,维度是 1× (隐藏层神经元数量 N1)。或者其转置 c 是一个列向量,维度是 (N1×1)。
    • 8.png 中用橙色的 c^T 表示。
    • 它包含了连接每个隐藏层神经元到输出单元的权重。
  4. 输出层的偏置 (boutput):

    • 这是一个标量值。
    • 8.png 中用灰色的 b 表示(为了区分,我们这里用 boutput)。
    • 它是输出单元的偏置项。

将所有参数集合为单一向量 θ:

Image/Computer-Science/Machine Learning/8.png

为了在后续的优化过程中(例如使用梯度下降)更方便地处理这些不同形状和类型的参数,通常会将它们全部 “展平 (flattened)” 并按特定顺序串联起来,形成一个单一的、非常长的参数向量 θ**。

如图 8.png 所示,这个参数向量 θ 可以这样构成:

所以,这个参数向量 θ 可以表示为:

θ=(θ1θ2θ3θK)

其中 K 是模型中所有独立参数的总数量。例如,如果 WN1×N0bhiddenN1×1cT1×N1boutput 是标量,则 K=N1N0+N1+N1+1

模型函数以 θ 为参数:
通过这种方式,我们可以将整个神经网络模型函数 f 视为以输入 x 和这个单一的参数向量 θ 为参数的函数:

y=f(x;θ)

下一步:
在明确了模型的函数形式 f(x;θ) 并识别出所有未知参数 θ 之后,机器学习的下一步骤将是定义一个代价函数来评估使用特定 θ 时模型的表现,然后使用优化算法来找到使代价函数最小化的最优 θ

2.2 步骤二:定义代价函数/损失函数以评估模型 (Step 2: Define Cost/Loss Function to Evaluate the Model)

步骤一 (2.1) 中,我们定义了一个带有未知参数 θ 的模型函数 y=f(x;θ)。现在,我们需要一种方法来衡量这个模型在使用特定参数集 θ 时,其预测结果与真实目标值之间的差异有多大。这个衡量标准就是代价函数 (Cost Function)损失函数 (Loss Function)

2.2.1 代价函数/损失函数 (Cost Function / Loss Function)

2.3 步骤三:参数优化 (Step 3: Optimization)

一旦我们定义了模型 f(x;θ) 和损失函数 L(θ),我们的目标就是找到一组最优的参数 θ,使得损失函数 L(θ) 的值最小。这个寻找最优参数的过程称为优化 (Optimization)

数学上,我们可以表示为:

θ=argminθL(θ)

这意味着我们要寻找使损失函数 L 达到最小值的参数向量 θ

2.3.1 核心优化算法:梯度下降及其变体

2.3.1.1 梯度下降 (Gradient Descent)

梯度下降是一种广泛应用于机器学习和深度学习中的迭代优化算法,用于寻找函数的最小值。其基本思想是沿着损失函数梯度下降最快的方向逐步调整参数。

梯度下降的步骤:

  1. 初始化参数 (Initialize Parameters):

    • 随机选择或根据某种策略设定参数向量 θ 的初始值,记为 θ0。(Randomly) Pick initial values θ0.
  2. 迭代更新 (Iteratively Update): 重复以下操作直到满足停止条件:

    • a. 计算梯度 (Compute Gradient):

      • 计算损失函数 L(θ) 在当前参数点 θt (其中 t 是迭代次数) 关于参数向量 θ 中每一个分量 θk 的偏导数。这些偏导数共同构成了损失函数在 θt 处的梯度向量 (gradient vector) g (或 L(θt))。g=L(θt)=(Lθ1Lθ2LθK)θ=θt
      • 在神经网络中,这个梯度通常通过反向传播 (Backpropagation) 算法高效计算。
      • 当使用 mini-batch 时,计算的是 Lbatch(θ) 的梯度。
        Image/Computer-Science/Machine Learning/9.png
      • (图示:梯度指向函数增加最快的方向)
    • b. 更新参数 (Update Parameters):

      • 根据梯度信息,沿着梯度的反方向更新参数,以减小损失函数的值。θt+1θtηg或者写成:θt+1θtηL(θt)
      • 其中:
        • θt+1 是更新后的参数向量。
        • θt 是当前迭代的参数向量。
        • η (eta) 是学习率 (Learning Rate),它是一个正的小值(超参数),控制每次参数更新的“步长”或幅度。学习率的选择对训练过程至关重要。
        • g (或 L(θt)) 是在 θt 处计算得到的梯度向量。
  3. 停止条件 (Stopping Condition):

    • 可以设定最大迭代次数 (或最大 epoch 数)。
    • 可以监控损失函数的值,当其变化很小或不再下降时停止。
    • 可以监控在验证集上的性能,当验证集性能不再提升(甚至开始下降,表明过拟合)时停止(早停法 Early Stopping)。

Image/Computer-Science/Machine Learning/10.png

2.3.1.2 批量大小的选择 (The Choice of Batch Size)

在实践中,我们很少一次性使用整个训练集来计算梯度并更新参数。相反,我们会根据每次更新所使用的样本数量,将梯度下降分为三种主要类型。批量大小 (Batch Size) 的选择是一个重要的超参数,它在计算效率模型性能之间做出了权衡。

特性 批量梯度下降 (Batch GD) 随机梯度下降 (SGD) 小批量梯度下降 (Mini-batch GD)
批量大小 整个数据集 (N) 1 介于 1 和 N 之间 (e.g., 32, 64)
更新速度 非常慢 非常快
收敛路径 平滑、直接 噪声大、曲折 相对平滑,有小幅波动
内存占用 非常高 非常低 中等
优点 梯度准确,稳定 更新快,能跳出局部最优 综合了两者的优点,是实践首选
缺点 速度慢,易陷于尖锐极值 噪声大,收敛不稳定 需要额外设定 batch size 超参数

但是由于GPU的并行运算,在数据集较小的时候,Mini-batch GD不一定比Batch GD快

2.3.1.3 动量法 (Momentum)

为了解决梯度下降在狭窄山谷中震荡和在平坦区域停滞的问题,可以引入动量 (Momentum)


2.3.2 优化中的泛化与几何视角

2.3.2.1 批量大小对模型泛化能力的影响

除了影响训练速度和稳定性,批量大小还会对模型的泛化能力 (Generalization Performance) 产生显著影响。泛化能力指的是模型在未见过的测试数据上的表现,通常用验证集准确率 (validation accuracy) 来衡量。

Image/Computer-Science/Machine Learning/13.png

上图展示了在两个不同的数据集(MNIST 和 CIFAR-10)上,最终达到的训练准确率(train acc)和验证准确率(validation acc)与批量大小(batch size)的关系。

关键观察 (Key Observations):

  1. 大批量 (Large Batch) 倾向于损害泛化能力:

    • 在这两个实验中,当批量大小变得非常大时(例如,超过1000),验证集准确率(橙色线) 明显下降。
    • 这意味着虽然模型在训练集上可能表现尚可(虽然训练准确率也在下降),但它在新数据上的表现变差了。我们称之为泛化差距 (Generalization Gap) 变大。
  2. 小批量 (Small Batch) 通常能获得更好的泛化能力:

    • 使用较小的批量大小(例如,1到几百之间)时,模型在验证集上取得了更高的准确率。
    • 这表明小批量训练出的模型具有更好的泛化能力。

为什么会出现这种现象?—— 损失曲面的“平坦度”

一个被广泛接受的解释是,小批量梯度下降所引入的噪声有助于优化过程找到更“平坦”的局部最小值,而大批量梯度下降倾向于收敛到更“尖锐”的局部最小值

论文实证:《On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima》

这篇著名的论文 (https://arxiv.org/abs/1609.04836) 通过大量实验系统地验证了这一现象。

14.jpg

为什么“带噪声”的更新更好?

Image/Computer-Science/Machine Learning/15.jpg

这张示意图从另一个角度解释了为什么小批量的噪声更新是有益的。

总结:

因此,在实践中,选择一个合适的(不大也不太小)的 mini-batch size(如32, 64, 128, 256等)是在训练效率和模型最终性能之间取得平衡的关键策略。

2.3.2.2 优化进阶:泰勒展开与损失曲面近似 (Advanced Optimization: Taylor Expansion & Loss Surface Approximation)

在梯度下降中,我们利用损失函数的一阶导数(梯度)来确定下降方向。为了更深入地理解优化过程,特别是更高级的优化算法(如牛顿法),我们可以使用泰勒级数 (Taylor Series) 来近似损失函数。

泰勒展开的核心思想是,在任意一个参数点 θ 附近,我们可以用一个更简单的多项式函数来近似复杂的损失函数 L(θ)。对于优化而言,通常使用到二阶的泰勒展开就足够了。

Image/Computer-Science/Machine Learning/11.png

如上图所示,在点 θ 附近的二阶泰勒展开为:

L(θ)L(θ)+(θθ)Tg+12(θθ)TH(θθ)

临界点分析 (Analysis at Critical Points)

当梯度下降进行到某一步时,如果梯度 g=L(θ)=0,我们称 θ 为一个临界点 (Critical Point)。在临界点,梯度下降会停止更新,因为它找不到下降的方向。此时,泰勒展开的一阶项为零,损失函数的行为完全由二阶项决定:

L(θ)L(θ)+12(θθ)TH(θθ)

v=(θθ),我们可以通过海森矩阵 H 的性质来判断这个临界点的类型:

如何逃离鞍点 (Don't be afraid of Saddle Point!)

Image/Computer-Science/Machine Learning/12.png

在高维空间中(例如深度神经网络的参数空间),鞍点远比局部最小值点更常见。那么,当梯度下降卡在鞍点时(因为梯度为零),我们该怎么办呢?海森矩阵 H 告诉了我们逃离的方向!
鞍点的最速逃离方向 (The fastest escape direction for the stationed point)

实际应用中的意义:

虽然在大型神经网络中显式地计算整个海森矩阵及其特征向量的成本极高,但这个理论非常重要:

  1. 它解释了为什么鞍点在理论上不是一个根本性的障碍。总有“下山”的路可走。
  2. 许多先进的优化算法,如带动量的SGD、Adam等,虽然没有直接计算海森矩阵,但它们引入的机制(如动量)在实践中能帮助模型“冲过”平坦区域和鞍点。
  3. 一些二阶优化算法的变体(如Hessian-Free优化)会尝试用更高效的方法来近似海森矩阵与某个向量的乘积(即 Hv),从而利用曲率信息来逃离鞍点和加速收敛。

与优化的关系:

  1. 梯度下降 (Gradient Descent): 只考虑一阶信息(梯度 g),可以看作是在一个线性的近似下寻找下降方向。它简单高效,但不知道“走多远”最合适(需要手动设置学习率 η),也无法很好地处理不同方向上曲率差异很大的情况(例如狭长的山谷)。

  2. 牛顿法 (Newton's Method): 同时考虑一阶(梯度 g)和二阶信息(海森矩阵 H)。它通过找到上述二次近似函数的最小值点来确定下一步的更新方向和步长。更新规则为 θt+1=θtH1g

    • 优点: 收敛速度通常比梯度下降快得多,因为它利用了曲率信息,能够更直接地跳向最小值点。
    • 缺点: 计算和存储海森矩阵 H 以及其逆矩阵 H1 的开销巨大。对于有数百万参数的深度神经网络来说,这是不现实的。

因此,在深度学习中,虽然我们不直接使用标准的牛ton法,但许多先进的优化器(如 Adam、RMSProp 等)都受到了“利用曲率信息来调整步长”这一思想的启发,它们通过各种方式来近似海森矩阵的信息,以实现比朴素梯度下降更快的收敛。泰勒展开为理解这些高级优化算法提供了坚实的理论基础。

“最小比率”:一个用于分析损失曲面几何的指标 (The "Minimum Ratio": A Metric for Analyzing Loss Surface Geometry)

重要澄清: 此处讨论的 "Minimum ratio" 是一个用于分析海森矩阵特性的指标,与线性规划单纯形法 (Simplex Method) 中的 "Minimum Ratio Test" 完全无关

在深度学习的优化研究中,研究者们有时会使用一个比率来量化损失函数在某个特定点 θ 附近的几何形状,特别是判断它有多像一个真正的“谷底”(局部最小值)。你提供的图片中就定义了这样一个比率:

Minimum ratio=Number of Positive EigenvaluesTotal Number of Eigenvalues

这个指标的意义是什么?

这个比率衡量了在当前点,损失曲面在所有主轴方向中,有多少个方向是“向上弯曲”的(即具有正曲率)。

如何解读这个比率的值?

  1. 当 Ratio ≈ 1.0 时:

    • 这意味着几乎所有的特征值都是正的。
    • 海森矩阵 H 近似于一个正定矩阵
    • 当前点 θ 的几何形状非常像一个真正的局部最小值,即一个在所有方向上都向上弯曲的“碗”或“盆地”。在优化过程中,我们希望找到的就是这样的点。
  2. 当 Ratio ≈ 0.5 时:

    • 这意味着大约一半的特征值是正的,另一半是负的。
    • 这是鞍点 (Saddle Point) 的一个典型特征。损失曲面在很多方向上向上弯,但在同样多的方向上向下弯。
  3. 当 Ratio ≈ 0.0 时:

    • 这意味着几乎所有的特征值都是负的。
    • 海森矩阵 H 近似于一个负定矩阵
    • 当前点 θ 的几何形状非常像一个局部最大值,即一个在所有方向上都向下弯曲的“山峰”。

为什么叫 "Minimum ratio"?

这个名字可能有些令人困惑。一个可能的解释是,这个比率是用来分析和表征损失函数的最小值点 (loss minimum) 的。一个“好的”最小值点,其“Minimum ratio”应该接近1。因此,这个比率可以看作是衡量一个临界点“有多好”或者“有多像一个真正的最小值”的指标。在文献中,你可能也会看到它被称为正特征值比率 (Positive Eigenvalue Ratio)局部凸性比率 (Local Convexity Ratio),这些名字可能更具描述性。

在训练过程中,模型参数从一个随机初始点开始,可能会经过许多“Minimum ratio”较低的区域(鞍点),最终收敛到一个“Minimum ratio”接近1的区域(一个好的局部最小值)。


注:

拓展:
1. 为什么我们要的是 "Deep" 的 network 而不是 "Fat" 的?
Deep 而非 Fat 的 Neural Network
2. 为什么我们不 "Deeper" ?
不一直 Deeper 的神经网络