本节摘要:层数、隐藏维、核大小、注意力头数、学习率、批次、Dropout,SOURCE 把它们列为架构与训练要定的量。调优只允许发生在验证段。对照策略是:先锁数据契约和损失,再小网格扫对误差敏感的少数旋钮,用早停结束训练。测试段上的一次评估不是再搜一轮。
阅读完本节,你应当能够:
SOURCE 在模型选择里写:按任务类型、数据特性、计算资源选族,再定层数、神经元、核、头数。这已经是两层决策。族错了,把头数从 4 调到 8 救不回来。调优的第一对照是:族是否已由第 4 章的失败模式选定。选定之后,敏感旋钮通常是:窗口长度、隐藏维或通道数、学习率、正则强度。核大小、头数、层数是第二圈。
窗口长度既是数据参数也是结构参数。它决定模型能看见的最长滞后,应覆盖第 2 章特性表里勾过的季节。从业务周期的一倍、两倍对照,不要从 16、32、64 无脑翻倍却从不对齐 96 点的一日。
隐藏维决定容量。小样本上 32、64 往往够,512 是在背年。学习率与优化器绑定:Adam 常用 较小的数量级起步,看训练损失是否震荡或僵死。Dropout 在 0 到 0.3 扫,时间序列上过大的 Dropout 会拆散季节形状。
第一圈: 窗口、容量、学习率、Dropout/权重衰减 第二圈: 层数、核、头数、扩张谱 不要第一天就把两圈一起网格化
网格穷尽在四维以上立刻爆炸。随机搜索或贝叶斯式搜索把预算花在更多独特组合上,往往更划算。时间序列样本相关,验证指标方差大,不要因为某组超参在验证上好了 0.5% 就宣布胜利。重复几个随机种子,看排序稳不稳。
早停 SOURCE 写在正则里:验证性能不再提升就停,防过拟合。实现上要保存验证最佳权重,而不是停在最后一步。耐心值按验证曲线的噪声来:曲线抖,耐心短会过早停;我倾向按若干验证季节长度设耐心。学习率衰减可与早停并存:平台期降学习率,再不行才停。
批次与窗口会互动:窗口长、批次大,显存先爆。爆了不要优先砍掉验证,优先砍批次。多站点数据可以按站点分组抽样,避免一个批次全是同一周的高度相关窗,梯度会偏。
| 旋钮 | 过小症状 | 过大症状 | 建议对照 |
|---|---|---|---|
| 窗口 | 季节看不见 | 样本变少、早段噪声 | 对齐业务周期 |
| 隐藏维 | 欠拟合、训练损失高 | 过拟合、训练远好于验证 | 32-128 先 |
| 学习率 | 僵死 | 震荡 NaN | 对数间隔 |
| Dropout | 过拟合 | 季节被拆 | 0-0.3 |
| 层数 | 表达不够 | 难训、过拟合 | 1-3 |
| 头数 | 对齐单一 | 小样本过参 | 2-8 |
每看一次测试再改超参,测试误差的期望就会变乐观。规定:测试数字写入报告后,若要再改,必须声明这是探索、数字不再当最终评估,并尽可能再找一段更新的未来。滚动划分可以提供多段测试,但每段仍只允许该次配置看一次。
AutoML 被 SOURCE 列为未来方向:自动选模型、特征、超参。它不取消本节纪律,只是把搜索外包。外包之后泄漏更容易发生,因为流水线可能默认打乱或用未来做特征。上 AutoML 前把划分契约写成不可改的前置步骤。
⚠️ 常见坑:早停监控训练损失。训练还会继续降,验证已经升,你停晚了,过拟合已经写进权重。
💡 关键直觉:超参搜索消耗的是验证信息。验证段越短,你越不该搜太多,否则选中的是验证噪声。
港口数据一年一条,验证只有两个月,能搜的组合很少。这时先验更重要:小 GRU、窗口对齐 7 和 28,学习率少扫几档。假装搜了一百组,只是把两个月的偶然天气搜进模型。
一年一条日序列,验证两个月,可搜组合很少。先验应写成:窗口对齐 7 与 28,GRU 隐藏 32 或 64,学习率少扫三档,Dropout 0 或 0.2。搜一百组只是把两个月的偶然天气写进冠军配置。深度时间序列项目里,“我们用了贝叶斯优化”常常掩盖验证信息被用穿。AutoML 更危险,因为它可能默认打乱或用未来做特征。上 AutoML 前,划分契约必须不可改。
多种子排序不稳,说明差异小于噪声,不要为 0.5% 换结构。报告应写排序稳定的前两名,而不是绝对第一。早停回滚最佳权重;最后一步权重往往过拟合。学习率平台衰减可以与早停共存:先降学习率再停,避免把还在变好的训练掐死。但降多少次要有上限,否则变相把 epoch 搜回测试。
窗口与容量互动:窗口拉长,样本变少,同一隐藏维更容易过拟合。拉窗口属于第一圈旋钮,应与隐藏维联合看,不要先把窗口拉到 672 再抱怨要 Dropout 0.5。第二圈的头数、扩张谱,只在第一圈排序已稳、且硬伤表确实指向它们时才打开。否则又是高维搜索。
测试数字写入后若仍想改,新数字标为探索,最终评估用更新的未来段。没有更新段,就承认你没有第二次无偏评估。这比假装还有一个干净测试集更诚实。
验证两个月就少搜,先验写成窗口对齐周期、小隐藏维、学习率三档。搜一百组是把偶然天气写进冠军。多种子排序不稳则差异小于噪声,报告稳定前两名。早停回滚最佳,最后一步常过拟合。降学习率有次数上限,避免把 epoch 搜回测试。窗口拉长样本变少,应与隐藏维联合看。第二圈头数扩张谱只在第一圈已稳且硬伤指向它们时打开。测试写入后若再改,标探索,最终评估用更新未来段;没有更新段就承认没有第二次无偏评估。
窗口、容量、学习率、正则。窗口对齐业务周期不是 2 的幂迷信。隐藏维 32 到 128 先。Dropout 0 到 0.3,过大拆季节。层数 1 到 3。头数扩张谱属第二圈。族错了调头数救不回来。随机搜索高维比穷尽网格划算,多种子看排序。早停监控验证主指标并回滚。AutoML 不取消划分契约,流水线默认打乱时更危险。测试不是第四折。验证短先验值钱。把超参搜索当成消耗验证信息,验证越短越不该搜多。
验证短时它只是更高效地把噪声搜进冠军。科学与否取决于验证信息有没有被用穿。先验对齐周期、小容量、少档学习率,比一百组神秘组合更负责。多种子排序不稳就不要为半个百分点换结构。早停回滚最佳。降学习率次数封顶。窗口与容量联合看。第二圈只在硬伤指向时打开。测试写入标探索需新未来段。AutoML 更要锁划分,默认打乱会在流水线里发生。超参搜索消耗验证,验证越短越少搜。族错了调头数无意义。
调参对照把验证信息当成有限预算。第一圈只动窗口、容量、学习率、正则,窗口对齐业务周期。第二圈头数和扩张谱只在硬伤表指向它们、且第一圈排序已稳时打开。验证只有两个月,先验比一百组搜索值钱,否则冠军配置里写的是偶然天气。多种子排序不稳说明差异小于噪声。早停回滚最佳,最后一步常过拟合。降低学习率的次数要封顶,避免把训练轮数搜回测试。测试数字写入后改动标探索,最终评估需要更新的未来段。自动搜参流水线更要锁时间划分,默认打乱会在看不见的地方发生。族选错了,调头数救不回来。把搜索当成消耗验证,验证越短越少搜。
把搜参预算写成验证段长度的函数:段短则组合少、先验强、第二圈默认关闭。函数输出应能被另一人复核。多种子排序不稳则停止为微小差异换结构。回滚最佳权重。学习率衰减次数封顶。窗口与容量联合。测试写入后的改动标探索并需要新未来。自动搜参必须继承时间划分契约,发现打乱即停。族未定禁止搜头数。把预算函数贴在调参脚本开头,每次跑打印允许的最大组合数。超过即视为用穿验证。科学与否不取决于优化器名字,取决于验证信息还剩多少。剩得少,先验比搜索更科学。
预算函数每次打印最大组合数,超过即停。先验列表也打印。排序不稳打印种子方差。探索标记必须出现在测试数字旁。发现流水线打乱立即停。族未定搜头数立即停。打印出来的组合数应能被另一人用验证段长度复核。复核失败说明函数在说谎。说谎的搜参比不搜更有害,因为它消耗验证还制造科学的外观。
每次搜参打印允许组合数、先验列表、种子方差。超过组合数停。排序不稳停。探索标记贴在测试数字旁。打乱停。族未定搜头数停。另一人能用验证段长度复核组合数,复核失败说明预算函数说谎。说谎的搜索有科学外观,危害大于不搜。验证越短先验越强。第二圈默认关。打印是为了让复核发生,不是为了日志好看。
复核人用验证段长度推算最大组合数,与打印值差一档即判说谎。说谎本次搜参作废,冠军配置作废。先验列表不得事后补写。探索标记漏贴,测试数字按已用穿处理。这些规则看起来严,是因为验证段短时任何装作还能再搜的行为都会把噪声写成结构胜利。
下一节用残差诊断决定:是继续调参,还是换族,还是回去修数据。