尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

早停梯度下降的Minimax最优性:高斯混合分类中的隐式正则化分析

早停梯度下降的Minimax最优性:高斯混合分类中的隐式正则化分析 看到这个标题时我第一反应是这不是一篇教你“怎么训练模型更快”的工程博客而是一篇讨论统计学习理论的论文。它把三个概念绑在了一起minimax 最优、早停梯度下降、高斯混合分类。很多人一看到 minimax 就想到博弈树里的极大极小搜索看到早停就想到深度学习训练时防过拟合的小技巧看到高斯混合就想到聚类算法。这都没错但在这篇论文里它们指的是另一个层面的问题。这里先给一个总判断论文研究的核心是当一个分类器在高斯混合分布的数据上通过梯度下降训练时提前停止迭代是否不仅能节省计算时间还能在统计意义上达到最优的分类误差。换句话说早停不只是“训练久了会过拟合所以我停一停”而是“停在哪一步可以精确地平衡优化误差和泛化误差并且在这个分布类上达到理论上的最优风险”。这篇文章我会按三条线展开第一把论文的数学问题拆开讲清楚高斯混合分类、贝叶斯误差和 minimax 风险分别是什么第二解释早停为什么能产生类似正则化的效果这背后的谱分解和内隐正则化逻辑是什么第三给出一个可复现的模拟实验路线包括数据生成、梯度下降、早停点选取、基线对比和常见坑。最后再聊聊这类理论结果落到实际训练里到底能拿走什么不能拿走什么。1. 先把“minimax 最优 早停 高斯混合分类”三个概念拆开1.1 论文标题的三句话理解标题里最关键的不是“Gradient Descent”而是“Early-Stopped”和“Minimax Optimal”。这说明论文不是从零提出一个新的优化算法而是分析一个所有人都用过的方法梯度下降训练一个分类器但不到收敛就停下来。具体场景通常是这样数据来自高斯混合分布也就是样本不是单个高斯分布而是若干个高斯分量的加权混合。最常见的是二分类问题每一类对应一个高斯分量或者各类内部又是一个小混合。训练方法是从某个初始化出发用梯度下降更新分类器参数迭代次数记为 T。不在 T 趋于无穷大时才收手而是在某个有限步数 T 处截断用截断后的参数去做预测。论文关心的问题是这个停下来的 T 怎么选选完之后分类误差和贝叶斯最优分类器相比差多少。在理论论文里T 不是一个手工设的“训练轮数”而是一个需要和样本量 n 匹配的尺度。比如常见的分析形式是T 太小优化不充分T 太大过拟合风险上升。最优停点通常随着 n 变化而移动这与实际训练经验完全一致。1.2 minimax 最优到底是什么意思Minimax 在统计学习里是一个相对抽象但很基础的概念。它不是在比较两个模型谁更好而是在描述“最坏情况下的最好表现”。假设我们有一个分布族 D这个分布族包含了所有满足某种性质的数据分布。学习算法 A 在任意分布 P 上都会有一个分类风险 R(A, P)。分布族里总存在一个最难处理、让算法表现最差的分布 P*。我们关心的是这个最差风险有多高。如果一个算法能够达到所有可能算法中最差风险的下界或者达到这个下界对应的收敛速度我们就说它是 minimax 最优的。换句话说站在最坏情况的立场上没有别的算法能做得更好了。放到高斯混合分类里分布族可能是“两个高斯分量之间重叠程度不超过某个上限”“均值之差不超过某个范围”“协方差特征值在某个区间之间”这一类约束的组合。论文要证明的是在这个分布族上使用合适的早停梯度下降最坏情况的分类风险已经无法再改进或者说它达到了统计上能允许的最低收敛速度。这个性质和“显式正则化达到最优”是对应的。传统做法往往要给损失函数加 L2 正则项然后精确求解一个带惩罚的经验风险最小化问题。早停梯度下降则提供了一条相似但不完全一样的路不动损失函数不设正则化参数只是提前截断。1.3 谁适合读这类论文应该带着什么问题来读如果你是做应用机器学习尤其是用 PyTorch、TensorFlow 或者 scikit-learn 训练模型那这篇论文的正文大概率不会直接给你一个“早停步数查表”。它不是调参指南它的结论更多落在理论保证上。适合读的人群包括做统计学习理论、优化理论或者学习算法理论的研究生。想深入了解早停为什么有效、它和 L2 正则化到底什么关系的算法工程师。需要写论文证明某个算法在特定分布族下能够取得最优收敛速度的研究者。在高斯混合、线性判别分析、逻辑回归这类经典模型里遇到“训练不收敛但收敛后测试误差反而变差”问题的学习者。读之前最好具备三个基础知道高斯混合模型的后验概率公式知道梯度下降的更新规则知道分类风险和经验风险的区别。如果这三个概念都不熟悉建议先补一下再进入正文否则很容易被符号淹没。2. 从数据生成到风险函数论文的数学骨架2.1 高斯混合分类模型的基本设定高斯混合分类和高斯混合聚类看着相似目标完全不同。聚类是不知道标签要把数据拆成几簇分类是有标签的要学一个从特征到标签的映射。论文里常用的二分类设定可以写成这样类别变量 y 取 0 或 1先验概率分别是 π_0 和 π_1。给定 yk特征 x 服从一个高维高斯分布 N(μ_k, Σ_k)。那么 x 的边缘分布就是 π_0 N(μ_0, Σ_0) π_1 N(μ_1, Σ_1)这是一个高斯混合。后验概率 p(y1|x) 由贝叶斯公式计算。在等协方差的情况下即 Σ_0 Σ_1 Σ后验概率的 log-odds 是 x 的线性函数log(p_1(x)/p_0(x)) (μ_1 - μ_0)^T Σ^{-1} x - 1/2 μ_1^T Σ^{-1} μ_1 1/2 μ_0^T Σ^{-1} μ_0 log(π_1/π_0)所以最优分类边界通常是一个仿射超平面。这是线性判别分析的基础。如果两个协方差矩阵不同决策边界会带二次项变成二次判别分析。这些细节看似是老生常谈但对理解论文很重要高斯混合分布下的分类问题决策边界是有结构的。算法需要从样本中估计均值、协方差或者分类器参数。早停梯度下降的“早点停”会影响这些估计的方差和偏差而风险分析就是要把这种影响量化出来。2.2 分类器、贝叶斯误差和超额风险给定训练集 D_n训练出一个分类器 f_n。对一个新的样本 (x, y)分类器的风险定义为R(f_n) P(f_n(x) ≠ y)在所有可测函数中贝叶斯分类器 R* 是最优的它按后验概率最大的类别做决策f_Bayes(x) 1[p(y1|x) ≥ 1/2]对应的风险 R* 就是数据自身带有的不可约误差。即使知道了真实分布也不可能低于这个值。实际学习算法的表现不能直接用 R(f_n)因为不同数据分布下基线的难度不同。更公平的指标是超额风险E(f_n) R(f_n) - R*超额风险衡量的是因为训练集有限、算法有偏或者训练不充分分类器比“上帝视角”差了多少。论文里讨论的分类误差通常就是超额风险。minimax 最优关注的是在分布族 D 上所有的算法都无法保证超额风险低于某个下界而早停梯度下降能不能达到这个下界。2.3 minimax 风险下界和上界的关系这类论文的证明通常分两块下界部分构造一组特殊的高斯混合分布让任何一个算法在这些分布上都会遇到足够大的困难从而证明任意算法的最大超额风险都不可能低于某个数量级。上界部分证明早停梯度下降在同一个分布族上的最大超额风险被严格控制在这个数量级以内。当下界和上界匹配时就说算法是 minimax 最优的。值得强调的是下界不是针对某一个具体分布而是针对一组分布。真实数据如果恰好在这一组分布里那无论你把模型换成 SVM、随机森林还是其他深度学习结构理论上都不能突破这个瓶颈。这是统计误差的底线不是优化问题的瓶颈。3. 早停为什么能产生类似正则化的效果3.1 训练误差一直下降测试误差不是先看一个长时间运行会出现的现象。把迭代轮数 T 从小往大调训练集上的损失通常单调下降或者至少不会明显上升。但验证集或测试集上的误差往往不是单调的它先下降经过一个最小值然后缓慢上升。这就是典型的过拟合曲线。这种情况在传统的正则化解释里称为偏差-方差权衡T 很小时模型还没有把数据中的主要结构学完偏差大欠拟合。T 增大偏差下降方差还比较小整体误差下降。T 继续增大模型开始把训练集里的噪声也学进去了方差上升整体误差上升。早停就是在测试误差刚刚开始回升或者在回升之前截断训练在“偏差已经不大”和“方差还没膨胀”之间取一个平衡点。但理论论文要的不是一个“看着差不多停”的经验判断而是给这个平衡点一个定量的刻画在分布族上最优 T 应该随样本量 n、维度 d、步长 η 和损失函数曲率如何变化。3.2 谱分解视角梯度下降先学主要方向后学噪声方向在高斯假设下这种“先快后慢”的过拟合过程有一个非常直观的谱解释。假设分类器目标函数是参数 θ 的二次型比如最小二乘目标。梯度下降在第 t 轮更新时参数误差沿协方差矩阵特征方向按不同速率衰减。大特征值对应的方向方差大、信息多梯度方向也强收敛快小特征值对应的方向方差小、容易被噪声支配收敛慢。完整训练到最后算法会尽量把所有方向都拟合精确也包括那些主要由噪声主导的小特征值方向。这样测试风险反而上升。早停相当于对小特征值方向做了一个截断。它只让那些被训练数据“强烈支持”的大特征值方向充分更新而把小特征值方向留在接近初始值的状态。这种行为在二次目标中可以精确对应到一种滤波器训练充分的方向几乎没有收缩。训练不足的方向收缩到接近初始化等价于把参数拉回初始点。如果初始化在原点附近这个行为就和岭回归的收缩效应非常相似。这就是早停常被称为隐式正则化的原因。3.3 早停和 L2 正则化的对应关系不能无限外推早停和权重衰减确实有关系但不能画等号。在二次近似下L2 正则化每个方向上的收缩率是均匀的或者说由同一个正则化参数 λ 控制早停每个方向上的收缩率取决于该方向上的特征值、学习率和迭代次数。特征值大的方向更新得多特征值小的方向更新得少。所以早停更像一种数据相关的自适应收缩而不是对所有方向一视同仁的正则化。这个差异在分布偏离高斯、目标函数高度非凸、或者标签噪声很强时会变大。很多时候调早停调的是“什么时候收手”调 L2 调的是“每一步往目标方向走多远”两者手感完全不同。还有一个容易忽略的点早停只能影响训练过程中尚未被充分学习的部分无法纠正已经发生在早期迭代里的偏差。如果初始化选得很差或者学习率太大导致前期就跳到坏的参数区域早停并不能帮你修回来。所以早停的保证通常依赖一个合理的学习率、合适的初始化以及损失函数足够规整。3.4 什么时候早停会失效论文里的最优结论是带条件的不是无条件成立。常见会让早停失效的情况包括学习率设置过大梯度更新来回震荡风险不下降反而上升。损失函数高度非凸早停停在一个很差的山谷里。标签噪声非常强验证集曲线本身没有清晰的谷点。样本量太小验证误差曲线噪声太大很难定位最优停点。数据分布偏离高斯混合假设特别是长尾分布和重尾噪声。做实验时如果发现早停的表现和论文结论对不上先不要怀疑理论错误应该先检查这些前置假设是否被破坏了。4. 把论文观点变成可复现实验的完整路线4.1 从读证明到跑模拟先明确要复现什么理论论文没有给你一张训练配置表也没有现成的模型权重。要验证它的核心观点你需要自己构造一个实验环境观察早停梯度下降在合成高斯混合数据上是否表现出“U 形测试误差曲线”和“接近理论风险下界”的特点。这里给一个通用复现路线不依赖论文里的具体证明技巧适合当作理解辅助确定一个简单的分类器例如线性分类器。在一组固定分布参数下生成训练集和规模较大的测试集。跑梯度下降按迭代轮数记录测试风险。找出测试风险最低的 T*。在多个不同分布参数和不同样本量下重复观察 T* 的变化趋势。对比完整训练和显式 L2 正则化的结果看早停在哪个区间更接近最优风险。如果论文重点不是线性分类器那就把分类器换成论文里使用的参数化模型。但为了快速建立直觉先用线性模型跑通一轮是最省时间的做法。4.2 合成高斯混合数据的生成方式数据生成代码要能同时控制先验概率、均值差、协方差矩阵和样本量。下面给一个概念版骨架用 NumPy 生成训练数据用 scikit-learn 里的接口做最基础的评估。这个代码不是论文原码只是帮你建立一个能动手改的实验底座。import numpy as np def generate_gaussian_mixture( n200, d4, mu0None, mu1None, sigma0None, sigma1None, pi10.5, random_state42 ): rng np.random.default_rng(random_state) if mu0 is None: mu0 np.zeros(d) if mu1 is None: mu1 np.ones(d) * 0.5 if sigma0 is None: sigma0 np.eye(d) if sigma1 is None: sigma1 np.eye(d) n1 int(n * pi1) n0 n - n1 x0 rng.multivariate_normal(mu0, sigma0, sizen0) x1 rng.multivariate_normal(mu1, sigma1, sizen1) x np.vstack([x0, x1]) y np.hstack([np.zeros(n0), np.ones(n1)]) # 打乱顺序 perm rng.permutation(n) return x[perm], y[perm], (mu0, mu1, sigma0, sigma1, pi1)上面代码里最重要的参数不是 n 和 d而是 mu1 - mu0 的范数和 sigma0、sigma1 的特征值结构。这两个因素直接决定贝叶斯误差均值差大贝叶斯误差小两类很好分。均值差小贝叶斯误差大分类器很容易受训练集波动影响。协方差矩阵病态特征值相差几个数量级梯度下降会沿某些方向收敛很慢早停的影响会很大。建议一开始固定 d4 或 d6把均值差控制在中低难度比如贝叶斯误差在 10% 到 25% 之间。不要一上来就做 d100 的高维实验否则数值稳定性问题会掩盖你要观察的早停现象。4.3 梯度下降、早停条件与评估指标分类器用最简单的线性函数f_θ(x) σ(x^T θ)其中 σ 可以是 sigmoid。训练损失使用 logistic 损失这和高斯混合分类的最大似然估计关系密切。在全批梯度下降下更新规则是θ_{t1} θ_t - η · ∇L(θ_t)实践中往往使用随机梯度下降或小批量 SGD但理解论文时先跑全批 GD 更清晰因为它不叠加小批量噪声。等全批版本的曲线稳定了再换成 SGD 观察批量噪声对最优停点的影响。评估指标建议看迁移到尚未见过的数据上的分类错误率。要获得足够平滑的风险曲线可以把测试集做很大比如 10 万甚至 100 万个样本因为“预测错误率”的方差会随测试集规模增大而变小。衡量理论意义的指标是超出贝叶斯误差的部分。先根据真实分布计算出贝叶斯分类器错误率再用每个停点 T 对应的分类错误率减去它得到 excess risk。这条曲线才是最重要的结果而不是训练 loss 曲线。4.4 三个必须做对比的基线只画一条早停误差曲线还不够因为无法证明它有优势。至少要和下面三组方法对比完整训练到收敛的模型。用来观察早停到底避免了什么。带 L2 正则化的模型。把 λ 从很小扫描到很大看能不能找到比早停更低的最优误差。固定迭代次数但不同学习率的多组运行。学习率会改变最优早停点和收敛速度。另外如果只是为了判断 minimax 最优性质还需要在同一组分布参数下换不同的训练样本观察最大超额风险是否稳定在论文给出的数量级上。真实情况下单次实验的误差可能是运气造成的所以需要多次重复取平均。4.5 一个概念性的实验循环骨架下面再补一个小而完整的实验骨架它不直接对应某篇论文的证明但能复现“早停导致测试误差 U 形曲线”的核心现象。def run_early_stop_experiment( T_max200, eta0.1, n_train200, n_test100000, d4, random_seed0 ): x_train, y_train, params generate_gaussian_mixture( nn_train, dd, random_staterandom_seed ) x_test, y_test, _ generate_gaussian_mixture( nn_test, dd, random_staterandom_seed 1 ) # 计算贝叶斯风险 bayes_error estimate_bayes_error(params, x_test) theta np.zeros(d) test_risks [] for t in range(T_max): p 1.0 / (1.0 np.exp(-x_train theta)) grad x_train.T (p - y_train) / n_train theta theta - eta * grad p_test 1.0 / (1.0 np.exp(-x_test theta)) pred (p_test 0.5).astype(int) err np.mean(pred ! y_test) test_risks.append(err - bayes_error) best_t int(np.argmin(test_risks)) return best_t, test_risks这个代码有几个明显要补充的地方需要写 estimate_bayes_error需要加验证集需要记录训练误差。但核心骨架已经足够说明问题。在实际复现论文时最好把四个变量存下来迭代次数 t、训练误差、测试误差、验证误差。前两个看优化是否正常后两个看早停是否有效。5. 实验结果怎么判断关键指标和控制参数5.1 先看曲线形状再找最佳停点第一张图画出来之后先不要急着调参。确认三件事训练误差是否在稳定下降。如果训练误差不降说明学习率太小、初始化有问题或者数据预处理出错。测试误差是否呈现先降后升的 U 形。没有 U 形可能是数据太简单模型从一开始就能稳定拟合也可能数据太难整个训练过程都没有过拟合风险。最佳停点是否落在曲线谷底附近。如果最佳停点出现在 T_max 的边界上说明 T_max 设得太小需要扩大范围。最佳停点 T* 的定义应该是T* arg min_t E(R_t) - R*其中 E 表示对多个随机种子取期望。只跑一次找到的“最佳点”可能是随机噪声带来的所以在正式汇报时至少重复 10 到 20 次。5.2 样本量 n 和最优迭代次数 T* 的关系这是最能体现论文价值的一项观察。在经验学习里直觉是训练集越大越不容易过拟合所以可以训练更久。理论论文通常会给出这层关系的定量描述。常见的结论形式是最优迭代次数 T* 随样本量 n 增长但增长速率不会超过某个阈值比如和 sqrt(n)、n 的某个幂次或者 log n 相关。做实验时把一个固定分布生成不同 n 的训练集比如 n50、100、200、400、800、1600记录每个 n 下的最优 T*。然后把 log T* 对 log n 画图看斜率。如果斜率接近 0.5说明 T* 大概按 n 的平方根增长如果接近 1说明接近线性增长如果基本不增长说明早停对训练集规模不那么敏感。这种做法不能代替论文证明但能帮你理解理论结论在实验中的表现形态。5.3 多次重复实验、置信区间和随机种子理论实验很容易被随机性淹没。高斯混合数据虽然比真实图像数据干净但样本量小的时候一次实验的最优停点可能从 30 跳到 150。比较稳妥的做法是固定分布参数固定训练样本量。使用多个随机种子生成独立训练集。每个种子上跑完整的早停曲线。把相同 T 下的所有重复结果取平均得到一个平均风险曲线。同时记录平均曲线上的上下波动区间比如 5% 到 95% 分位数。如果平均曲线仍然有清晰谷底结论就比较可信。如果平均曲线很平说明早停在这个设定下带来的收益有限这本身也是一个值得记录的结论。5.4 核心参数一览和默认值下面这张表适合作为复现实验的起点。参数含义常见设定调整优先级d特征维度4 到 10先固定后调n训练样本量100 到 1600核心变量n_test测试集规模50000 到 100000越大越平滑η梯度下降学习率0.05 到 0.5先固定小值T_max最大迭代轮数100 到 1000观察曲线再扩初始化参数起点全零或接近零最好固定批量大小全批 GD 还是小批量全批优先后调重复次数随机种子数量10 到 50影响结论可信度如果发现最佳停点始终在边界那就说明 T_max 不够先把 T_max 加一倍。如果发现在很小 T 时测试误差已经很高说明初始化或学习率可能不合适。5.5 什么时候应该怀疑你的实验结果不对如果复现结果和论文结论差异很大先按这个顺序排查代码是否有 bug标签是否对齐是否把训练集泄进测试集。贝叶斯误差是否算错两步验证一是直接用真实分布枚举测试样本二是与等协方差线性判别分类器的理论错误率对照。学习率是否失控看训练误差每一步变化是否平滑如果震荡严重立即降低 η。分布参数是否覆盖了论文的分布族条件比如论文假设协方差特征值在一定范围内你的协方差矩阵是否病态。是否只用了一次实验就下结论单次实验的谷底位置容易被噪声主导。6. 做这类理论验证实验最容易踩的坑6.1 把损失曲线当成判断标准训练损失下降很容易给人“模型在变好”的错觉。对于分类问题真正要量的是分类风险。训练损失下降而测试误差上升是过拟合的典型信号不是异常。实验报告里要同时画损失和错误率但早停决策只看验证集或测试集上的错误率。如果测试集很大可以直接用测试集。但更规范的做法是留一部分验证集因为论文研究的是“学习算法如何利用训练数据在未见数据上表现”不应该把验证选择训练过程也变成利用测试数据。6.2 每次换训练集时不小心改了测试集这是一个很低级但很容易犯的错误。假设你要比较 n200 和 n400 两种样本量下最优早停点的区别如果不固定测试集两次实验里的测试风险根本没有可比性。同一算法同一参数在不同测试集上的波动可能远大于样本量带来的差异。建议在所有实验开始前先生成一个固定的大规模测试集或者固定一个 random_seed 用于生成测试集。训练集可以换种子测试集保持唯一。6.3 忽略先验概率和类别不平衡高斯混合分类里的先验概率 π_0 和 π_1 直接影响贝叶斯临界阈值。如果实验里生成两类样本数量永远一比一得到的结论可能只适用于平衡分类问题。真实场景中类别不平衡会让分类器的决策边界移动也会让梯度下降的梯度方向产生偏移。做论文实验时可以专门跑一组 π_1 ∈ {0.1, 0.3, 0.5} 的对照观察最优早停点是否明显移动。如果发现在类别不平衡时早停几乎不带来收益先不要直接放弃检查一下是否因为简单把阈值固定为 0.5 导致偏差。理论分析里通常允许分类器对阈值做更精细的选择或者考虑更一般的判别规则。6.4 协方差矩阵里的数值稳定性高维高斯分布最麻烦的地方是协方差矩阵。如果特征值非常小求逆或者计算后验概率时会放大数值误差。尤其当 d 增大到几百时即使数据本身没有问题协方差矩阵估计也可能变得病态。在复现实验时建议先限制协方差矩阵的条件数比如让最大特征值和最小特征值之比不超过 100。这样梯度下降的收敛行为会更稳定早停现象也更清晰。不要一上来就用随机正交矩阵生成极端协方差那是把精力浪费在调试数值稳定性上而不是理解算法本身。6.5 只跑一条学习率的曲线早停的最优迭代次数和学习率强相关。学习率大收敛快最优 T 小学习率小收敛慢最优 T 大。如果只跑 η0.1 这一条曲线得到的结论可能只适用于这个学习率。理论上学习率和早停存在耦合关系。一步跨得太大即使停得早也可能跳过最优区域一步跨得太小要在很大的 T 上才能进入泛化有效区间。建议至少跑三组学习率比如 0.05、0.1、0.2分别记录最优 T 和最优超额风险。如果三组学习率下最优超额风险非常接近那说明早停带来的泛化效果是稳健的如果差异很大说明早停不能单靠调 T 解决问题还要配合学习率。6.6 发现曲线没有 U 形就急着调参测试误差没有 U 形不一定是实验失败也可能是问题本身太简单。比如两个高斯分量的均值差很大0-1 错误率已经接近贝叶斯误差任何合理训练方法都能达到最优此时增加训练轮数也不会产生明显过拟合。这时候画出来的曲线接近一条水平线没有必要强行找谷底。另一种情况是训练集太小验证误差曲线噪声远大于趋势。这时候需要降低维度、增大样本量或者用更多随机种子的平均曲线重新画图。U 形出现不了时先记录现象再调整实验设定不要直接否定论文结论。7. 最后从这篇论文里真正能拿走什么7.1 最值得记下的观点早停是一种可分析的正则化策略论文的核心观点并不复杂训练分类器时提前停下来不只是“省时间”它本身就在改变统计风险。如果算法没有显式正则项那么训练过程的迭代步数就是模型中一个隐藏的复杂度控制参数。这个概念在日常训练里非常实用。很多项目里你并没有时间仔细调 L2 正则化系数但早停几乎无处不在。无论是 PyTorch 里的 patience 参数、XGBoost 里的 early_stopping_rounds还是深度学习训练里的 checkpoint 选择本质都是选择模型复杂度。这篇论文把它从工程技巧提升到一个可以被理论证明的位置在某些分布类上早停梯度下降能达到最优风险。这意味着省时间这种操作同时也在省统计风险。7.2 不能拿走的东西不要盲目拿 T 去套真实数据集早停的最优停点不是一个通用常数。它不仅取决于损失函数和数据分布还取决于初始化、学习率、批量大小。论文里的 minimax 最优是一个最坏情况保证是在分布族约束下成立的性质。当你的真实数据不满足这些约束时结论不一定成立。所以正确的姿势是把论文里的定性结论当作实验设计指南而不是参数表。用它来理解自己训练曲线为什么是 U 形用它来解释为什么调大迭代次数后测试集性能反而下降用它来提醒自己在做模型选择时要同时观察训练和验证两条曲线。7.3 如果要做后续实验优先级是什么如果这篇文章读完后你想自己动手复现并进一步扩展建议按这个优先级安排下一步工作先复现已确定的现象高斯混合数据上梯度下降的测试误差曲线有 U 形。再复现已确定的尺度关系最优早停点随训练样本量移动。再加入显式正则化对比观察早停和 L2 之间的差距。尝试更换损失函数比如从 logistic 换成平方损失观察早停行为是否一致。最后再考虑把方法迁移到更复杂的分类器或真实数据集。一步一步来每一步都能独立验证。直接把实验复杂度拉满反而很难判断最后的结果到底来自早停、分布选择还是模型结构。这个做法不只是为了复现论文也适合任何需要验证“某个理论方法是否有效”的日常工作。
返回列表