Appearance
可调超参数手册
本页整理题解中反复出现的可调参数。它不是库 API 清单,而是竞赛做题时的调参顺序和判断方法:先让验证方式接近评测,再调阈值和后处理,然后调特征,最后调模型容量。
调参顺序
- 先固定验证切分和评分脚本。验证集不可信时,任何最优参数都可能只是偶然。
- 保存概率、logits 或连续输出。阈值、NMS、后处理窗口通常要反复扫。
- 调特征和输入表示。窗口长度、mel 参数、图像裁剪、类别编码常决定上限。
- 调模型容量和正则。先确认欠拟合还是过拟合,再决定加深模型或加强正则。
- 最后做集成、多 seed 和 TTA。它们通常提升稳定性,但不应掩盖验证或特征问题。
通用验证与目标参数
验证切分方式
作用:决定本地分数是否能预测真实评测。它不是训练细节,而是所有调参的基础。
怎么调:
- 普通独立同分布分类:用
StratifiedKFold或分层 holdout,保持类别比例。 - 时间预测:用 TimeSeriesSplit、expanding window 或按日期切分,不能随机打乱未来。
- 多段同源数据:按用户、机器、歌曲、episode、场景、个体分组,避免相邻样本泄漏。
- 小验证集:多 seed 或多折看均值和方差,不要只追一次最高分。
现象判断:
- 随机切分很高、时间/分组切分明显下降,通常说明原切分有泄漏或分布过近。
- 每折波动很大,说明数据少、类别稀有或分布不稳定;此时参数要选稳定区域,不选单折最优。
来源原题:MAGIC、自行车共享、预测性维护、无人机飞控、MusicArtist。
概率阈值和决策规则
作用:把概率、分数或 mask 转成最终提交。F1、F-beta、IoU、多标签 strict accuracy、事件计数 MAE 都可能被阈值主导。
怎么调:
- 二分类:保存正类概率,按验证集扫描阈值,例如
0.05..0.95。正类召回重要时降低阈值,误报成本高时提高阈值。 - 多分类:不要只
argmax。可为高权重类或少数类单独降低触发阈值,再处理冲突。 - 多标签/网格:每类、每个 head、每个格子可以有不同阈值;strict 指标下要评估整行命中率。
- 分割:扫描 sigmoid 阈值,同时配合最小连通域过滤和形态学后处理。
- 事件检测:阈值要和最小峰间距、NMS、合并窗口一起调。
现象判断:
- recall 低、precision 高:阈值偏高,或正类权重/采样不足。
- precision 低、recall 高:阈值偏低,或后处理太宽松。
- 单点阈值很敏感:模型概率校准差,考虑温度缩放、验证集更大或用排名型规则。
来源原题:信用卡欺诈、Cosmic Probe、Synthetic Speech、CAPTCHA、Weather。
类别权重、采样比例和损失权重
作用:改变训练时不同样本、类别或像素对 loss 的影响。适用于少数类召回、稀疏前景和评分偏向特定类别的任务。
怎么调:
class_weight/pos_weight:少数类漏报严重时调大;误报过多时调小。- balanced sampler:让 batch 内少数类更常出现,但验证集必须保持真实分布。
- 过采样/SMOTE:只用于训练集,不能污染验证/测试。
- 多任务 loss 权重:哪个子任务被指标重视、或学得更慢,就适当加权;若一个任务拖累另一个,考虑分开训练。
- Dice/BCE、Focal/CrossEntropy 权重:稀疏分割中 Dice 提召回,BCE 稳定像素分类;Focal 更关注难例。
现象判断:
- 模型几乎不预测少数类:提高少数类权重、重采样或降低少数类阈值。
- 少数类 recall 上升但误报不可用:降低权重或提高阈值,并同时报告误报数量。
- 分割全背景:提高正类权重、加入 Dice/Focal,检查 mask 标签是否对齐。
来源原题:Language Distribution、信用卡欺诈、Radar、Weather。
集成权重、TTA 和多 seed
作用:降低单模型方差,融合不同输入视角或模型错误模式。
怎么调:
- 概率平均优先于硬投票,因为保留不确定性。
- 先在验证集扫描少量权重,如
0.2/0.8, 0.5/0.5, 0.8/0.2,不要默认平均所有模型。 - TTA 只使用不会改变标签语义的变换。细粒度纹理任务可用多裁剪,OCR/方向敏感任务要谨慎旋转翻转。
- 多 seed 对小数据更有价值;若 seed 间差异大,说明验证和模型都不稳定。
现象判断:
- 集成提升很小:模型错误高度相关,应该换特征、增强或架构,而不是继续加同类模型。
- TTA 降分:增强不符合测试语义,或训练时没见过这类变换。
来源原题:MusicArtist、APOAI T2 Audio、豹猫个体识别。
传统表格模型
Logistic Regression / Ridge / Lasso / ElasticNet
关键参数:
C:正则强度的倒数。C越大,正则越弱,训练拟合更强但更易过拟合;C越小,系数更保守。penalty:l2保留大多数特征并收缩系数;l1会让部分系数变 0,可做特征选择;ElasticNet 混合二者。class_weight:类别不平衡时提高少数类影响。- 目标变换:回归任务中
log1p、Box-Cox、标准化会改变优化难度和误差分布。
怎么调:
- 高维 one-hot 或 TF-IDF:先扫
C的对数网格,如0.01, 0.1, 1, 10。 - 特征很多且冗余:试 L1 或 ElasticNet,看验证分和非零特征数量。
- 目标长尾:比较原目标和
log1p,最终在提交尺度或题目指标上评估。
注意事项:
- 线性模型对特征缩放敏感,树模型不太敏感。比较模型时要保持预处理 pipeline 一致。
- Lasso 选出的特征不一定因果,只能说明在当前切分和共线性下有用。
来源原题:MAGIC、房价预测、APOAI Mock Text。
SVM / LinearSVC
关键参数:
C:惩罚分类错误的强度。大C更贴训练集,小C间隔更宽、泛化更稳。gamma:RBF kernel 的局部影响范围。大gamma决策边界更复杂,小gamma更平滑。- kernel:线性适合高维稀疏文本;RBF 适合中小规模连续特征。
- class weight:少数类召回不足时使用。
怎么调:
- 文本 TF-IDF:优先 LinearSVC,扫
C。 - 连续特征且样本不大:标准化后扫
C和gamma的小网格。 - 验证分高但测试不稳:降低
C或gamma,让边界更平滑。
注意事项:
- RBF SVM 在大数据上训练成本高。
- LinearSVC 默认没有概率;需要概率融合时用 Logistic Regression 或校准。
来源原题:MAGIC、IOAI Antique、APOAI Mock Text。
KNN
关键参数:
k:邻居数量。小k更敏感、可贴近局部结构;大k更平滑但可能吞掉少数类。- 距离度量:欧氏距离适合标准化连续向量;cosine 常用于 embedding 和文本向量。
- 距离权重:按距离加权可让近邻更重要。
- 标准化方式:KNN 对尺度极敏感,必须处理量纲。
怎么调:
- 小样本新类识别:从
k=1,3,5,7开始,观察旧类误伤和新类召回。 - embedding 检索:优先 cosine 或归一化后的内积。
- 类别密度差异大:试距离加权,避免多数类远邻淹没近邻。
注意事项:
- KNN 的阈值常比
k更重要,例如“距离足够近才判新类”。 - 查询量大时推理成本可能成为问题,需要缓存或近似检索。
来源原题:Help BOBAI、Restroom。
RandomForest / ExtraTrees
关键参数:
n_estimators:树数量。增大通常降低方差,但收益递减,训练和推理更慢。max_depth:单棵树深度。越深越容易记住训练集;越浅越平滑。min_samples_leaf:叶节点最少样本数。增大可显著抑制过拟合,让预测更平滑。max_features:每次分裂可看的特征数。较小会增加树之间差异,降低相关性。class_weight:类别不平衡时提高少数类影响。
怎么调:
- 先固定
n_estimators到足够稳定的值,再调深度和叶子最小样本。 - 训练分远高于验证分:减小
max_depth,增大min_samples_leaf,或减小max_features。 - 训练和验证都低:增加候选特征、树深或换 GBDT。
- 特征维度有限但噪声多:调低
max_features,看是否提升泛化。
注意事项:
- 树模型不需要标准化,但会受噪声特征和泄漏特征影响。
- feature importance 可用于诊断,但高 importance 也可能暴露泄漏字段。
GBDT / XGBoost / LightGBM / CatBoost
关键参数:
learning_rate:每棵树贡献大小。小学习率更稳,通常需要更多树;大学习率收敛快但更易过拟合。n_estimators/ boosting rounds:树轮数。应与 early stopping 联动。- 树深/叶子数:控制交互复杂度。越大越强,也越容易过拟合。
min_child_weight/min_data_in_leaf:叶子所需样本或权重。增大能平滑模型。subsample、colsample_bytree:行/列采样。小于 1 可降过拟合,但过低会欠拟合。- L1/L2 正则:抑制复杂叶子权重。
- early stopping:用验证集决定停止轮数。
怎么调:
- 建强 baseline:先用中等深度、小学习率和 early stopping。
- 过拟合:减小深度/叶子数,增大叶子最小样本,加大正则,降低行列采样。
- 欠拟合:增加树深/叶子数、降低正则、增加轮数,或改善特征。
- 数据少:浅树、较大
min_data_in_leaf、强 early stopping 更稳。 - 类别特征多:优先考虑 CatBoost 原生类别处理或谨慎 target encoding。
注意事项:
- 有些题禁用 XGBoost/LightGBM/CatBoost,使用前必须看题面。
- early stopping 的验证集必须无泄漏,否则会把泄漏模式固化进模型。
来源原题:Cosmic Probe、房价预测、预测性维护。
特征工程参数
特征数量预算
作用:在维度限制或小数据下,控制模型看到多少统计量。
怎么调:
- 先生成宽候选集,再按验证增益、重要性和跨折稳定性筛选。
- 维度预算很紧时,优先保留覆盖不同信息类型的特征,而不是同类统计的变体。
- 模型固定时,特征选择本身就是核心超参数。
现象判断:
- 加特征后训练分升、验证分降:冗余或噪声特征太多。
- 所有模型都低:特征没有覆盖目标差异,应回到领域信息。
来源原题:口袋里的运动侦探。
时间窗口、lag 和 rolling
作用:决定模型看到多长历史,以及历史如何聚合。
怎么调:
- 周期任务先从已知周期试起,如小时任务的
24/168,日任务的7/30。 - 故障预警任务同时调历史窗口和预测窗口。历史窗口太短缺少趋势,太长会稀释近期异常。
- rolling mean/std/max/min 可从小窗口到大窗口做粗网格,例如
3, 7, 14, 30。 - 趋势斜率窗口用于捕捉缓慢恶化;异常值裁剪分位数用于减少传感器尖峰影响。
现象判断:
- 峰值预测偏低:窗口过长或目标变换过强,模型学到平滑平均。
- 误报很多:窗口过短,模型被短期噪声驱动。
- 本地随机 CV 很好、时间 CV 差:lag/rolling 构造可能泄漏未来。
目标变换和异常值裁剪
作用:改变目标分布和 loss 对极端样本的敏感度。
怎么调:
- 右偏长尾回归:试
log1p或 Box-Cox,预测后反变换再算真实指标。 - 高价/高计数极端值影响 RMSE:试裁剪目标或样本权重,但要防止削弱真实高值预测。
- MAE 指标:可以尝试直接优化 MAE/Huber,而不只 MSE。
- RMSLE 指标:目标 log 变换通常更贴近指标。
现象判断:
- 高值样本系统性低估:log 变换后反变换偏保守,可调损失、加权高值样本或做分段模型。
- 验证 loss 好但提交尺度指标差:评估时忘了反变换或指标尺度不一致。
来源原题:房价预测、Chicken Counting、IOAI Antique。
类别编码与稀有类别
作用:把类别变量转成模型可用形式,并处理训练/测试类别不一致。
怎么调:
- one-hot:类别数少、线性模型或树模型都可用;注意训练/测试列对齐。
- ordinal:仅适合有自然顺序的类别,普通类别随意编号会引入假顺序。
- target encoding:高基数类别有用,但必须交叉验证内计算,防止标签泄漏。
- 稀有类别合并:阈值太低会保留噪声,太高会丢信息。可扫最小出现次数。
- 未见类别:设置
unknown或默认编码,不要让推理崩溃。
现象判断:
- 训练分异常高:target encoding 或类别字段可能泄漏。
- 测试报列缺失:训练/测试 one-hot 没有统一对齐。
来源原题:房价预测、蘑菇毒性、APOAI 2025 Mock Basketball。
科学/物理描述符
作用:把对称性、物理量或领域结构编码进特征,减少模型学习负担。
怎么调:
- 分子任务:元素计数、元素对距离统计、Coulomb matrix、fingerprint 半径和 bit 数都可作为参数。
- 坐标/点云:优先距离、角度、主轴、协方差特征值等旋转/平移不变特征。
- 天文星等:相邻波段差值比单波段更像颜色特征,可调交互项和异常值裁剪。
现象判断:
- 坐标展平模型训练好、测试差:缺少不变性,模型记住顺序或姿态。
- 元素计数 baseline 已经很强:目标主要由组成决定,几何特征应拟合残差。
来源原题:Molecular Energy、Cosmic Probe。
深度模型训练参数
深度学习网络搭建:层数、宽度、激活与模块选择
作用:网络结构决定模型能表达什么。学习率、dropout、epoch 只能在已有结构上优化;如果架构和数据形态不匹配,后续调参收益有限。
先选架构类型:
- 表格特征、统计特征、低维传感器特征:从 MLP 开始。输入已经是结构化特征时,纯线性层叠加通常比 CNN/RNN 更合适。
- 图像、mel 频谱、雷达热图、卫星 mask:从 CNN 或 encoder-decoder CNN 开始。局部纹理、边缘、空间邻域关系是核心。
- 字符、文本、音符、时间序列标签:从 RNN/GRU/LSTM、1D CNN 或轻量 Transformer 开始。序列长度不长时 BiLSTM/GRU 往往够用。
- 音频事件、视频动作、频谱随时间变化:常用 CNN 提取局部时频/图像特征,再接 temporal pooling、RNN 或 attention。
- 多源输入:用多分支结构。每类输入先用适合自己的 encoder,再 concat 或加权融合。
- 控制策略和实时任务:优先小 MLP 或极浅 CNN+MLP。推理耗时是结构参数的一部分。
隐藏层数怎么决定:
- 从浅模型开始。MLP 可先试 1 到 3 个隐藏层;小 CNN 可先用 2 到 4 个卷积 block。
- 训练分和验证分都低:模型可能欠拟合,可以加层、加宽、换更合适的模块,或补特征。
- 训练分高但验证分低:不要先加深;应减少层数/宽度,增强正则、数据增强或冻结更多层。
- 数据很少:层数越多越容易记住训练集。优先使用预训练、冻结 backbone、小 head 或手工特征。
- 有强局部结构:加深 CNN block 往往比加 MLP 层更有效。
- 有长程依赖:单纯加 MLP 层通常没用,应换 RNN/attention 或加入自相关、lag、位置编码等结构。
隐藏层大小和通道数怎么调:
- MLP 宽度控制非线性组合能力。常见起点是
64、128、256,再按验证曲线扩大或缩小。 - CNN 通道数控制纹理和局部模式容量。常见起点是
16-32-64或32-64-128。 - RNN hidden size 控制可记住的序列状态容量。字符级任务可从
64/128起步,长序列或复杂语法再增大。 - embedding 维度太小会欠拟合,太大在小数据上容易过拟合。类别/字符表不大时不要盲目设很大。
- 资源受限时,优先减少输入尺寸、通道数和全连接层宽度。全连接层参数常比卷积层增长更快。
激活函数怎么选:
- ReLU 是默认起点,简单、快、稳定。
- LeakyReLU 适合担心 ReLU 大量“死掉”的小网络或信号回归。
- GELU/SiLU 更平滑,常用于 Transformer、现代 CNN 或需要细腻优化的模型,但计算略重。
- Tanh 可用于输出需要落在
[-1, 1]附近的内部表示,但深层网络中更容易梯度变小。 - Sigmoid 通常只放在输出解释阶段;训练二分类建议输出 logits 并配合
BCEWithLogitsLoss。 - 坐标拟合和高频信号不应只靠普通激活加深网络;更有效的是 Fourier/sin-cos 位置编码或 SIREN 类周期激活。
归一化层怎么选:
- BatchNorm 适合 batch 足够大、图像 CNN 训练稳定的场景;batch 太小时统计不稳。
- LayerNorm 对 batch size 不敏感,适合序列模型、Transformer、小 batch。
- GroupNorm 适合图像小 batch,是 BatchNorm 不稳定时的替代。
- 特征已经标准化、网络很浅、数据很少时,不一定要加归一化层;加了也要看验证表现。
池化和融合怎么选:
- CNN 分类头优先用 global average pooling,减少全连接参数并降低过拟合。
- 小目标或短事件容易被 average pooling 稀释,可用 max pooling、attention pooling 或多尺度 pooling。
- 分割任务不要过早全局池化;需要保留空间分辨率,用 UNet/encoder-decoder 跳连恢复细节。
- 多分支融合先让每个分支学到同尺度表示,再 concat。若某分支强很多,可调融合权重或给弱分支单独预训练。
- 图文、音频+表格、mask+状态这类任务,不要把原始输入直接硬拼;先各自编码再融合更稳。
输出头怎么定:
- 二分类:输出一个 logit,用
BCEWithLogitsLoss;推理时 sigmoid 后扫阈值。 - 多分类:输出
num_classes个 logits,用CrossEntropyLoss;不要先 softmax 再喂 loss。 - 多标签:每个标签一个 logit,用 BCE;每类阈值可单独调。
- 回归:最后线性输出;若目标必须非负,可用 softplus、ReLU 或推理后 clip,但要检查是否造成低值偏差。
- 计数:可直接回归标量,也可密度图积分;若随机裁剪,标签必须同步调整。
- 序列标注:输出每个位置的 logits,mask 掉 padding;最后一位、合法边界等规则可后处理强制。
结构选择诊断:
| 现象 | 优先调整 |
|---|---|
| 训练和验证都低 | 加宽/加深,换更匹配的数据模块,补输入特征或位置编码。 |
| 训练高、验证低 | 减小宽度/层数,加 dropout/weight decay/增强,或使用预训练冻结。 |
| 图像/谱图局部细节识别差 | 增加输入分辨率、CNN 通道或局部 crop,避免过早池化。 |
| 短事件漏检 | 换 max/attention pooling,减小 hop,加入差分或时序分支。 |
| 序列边界错位 | 检查 padding/mask、位置编码、帧到时间对齐,再调 hidden size。 |
| 实时推理超时 | 减少输入尺寸、CNN block、全连接宽度,缓存特征,避免每帧重复加载模型。 |
来源原题:Image Fitting、MusicArtist、APOAI T2 Audio、Drum Beat Counter、SwitchSnap、图文匹配、无人机飞控、Word Segmentation、眼部疾病。
学习率、batch size、epoch 和 early stopping
作用:控制优化速度、稳定性和训练时长。
怎么调:
- 学习率过大:loss 抖动、验证分不稳定、微调时旧能力快速崩。降低学习率或冻结更多层。
- 学习率过小:训练很慢、训练分也上不去。可增大学习率或先只训 head。
- batch size 大:梯度稳定、显存/内存压力大,可能泛化略差。
- batch size 小:噪声大但有时泛化好;BatchNorm 可能不稳定。
- epoch:配合 early stopping;小数据不应盲目长训。
- early stopping patience:太小会提前停在偶然低谷,太大容易过拟合。
现象判断:
- 训练分和验证分都低:欠拟合,增加训练时间、模型容量或学习率。
- 训练分高、验证分低:过拟合,增强、正则、早停、降容量。
来源原题:蜜蜂分类、眼部疾病、APOAI T2 Audio。
Dropout、weight decay 和 label smoothing
作用:限制模型过度依赖训练样本细节。
怎么调:
- Dropout:增大可降过拟合,但过大导致欠拟合。常从
0.1..0.5试。 - weight decay:抑制权重过大。微调预训练模型时通常小一些,训练新头可略大。
- label smoothing:降低过度自信,细粒度分类和噪声标签中常有用。
现象判断:
- 训练准确率很高、验证不涨:提高 dropout/weight decay 或增强。
- 训练也上不去:正则太强,降低 dropout/weight decay。
- 概率极端但错得自信:试 label smoothing 或温度校准。
来源原题:蜜蜂分类、豹猫个体识别、Underfit CV。
冻结层数、分类头和蒸馏权重
作用:控制预训练知识保留和新任务适配程度。
怎么调:
- 数据少或旧类不能坏:冻结 backbone,只训练 head、adapter 或 logits 校正层。
- 新任务和预训练差异大:逐步解冻后几层,小学习率微调。
- 灾难性遗忘:加入 teacher logits 蒸馏或新旧模型概率融合。
- 蒸馏权重:太小保不住旧知识,太大新类学不动。
现象判断:
- bad/new 类提升但 good/old 类崩:解冻太多、学习率太大或蒸馏太弱。
- 新类几乎不提升:冻结太多、学习率太小或蒸馏太强。
来源原题:Underfit CV、Help BOBAI、眼部疾病。
输入尺寸、裁剪和增强强度
作用:决定模型能看到多少细节,以及训练分布有多宽。
怎么调:
- 细粒度纹理:提高输入尺寸、做主体裁剪,避免随机裁掉关键纹理。
- 医学/遥感/雷达:预处理和通道选择常比盲目增大模型重要。
- 小图像:过深模型收益有限,增强和正则更重要。
- 增强强度:从轻到重。若增强改变标签语义,应禁用或同步调整标签。
现象判断:
- 模型记背景:加强主体裁剪、随机擦除、颜色/灰度增强。
- 小目标识别差:提高分辨率或先检测 ROI。
- 训练增强后验证下降:增强破坏了任务语义。
来源原题:豹猫个体识别、眼部疾病、Chicken Counting、SwitchSnap。
序列模型长度和生成参数
关键参数:
max_length:截断长度。过短丢信息,过长增加计算并稀释有效 token。- embedding/hidden size:越大表达越强,也越易过拟合。
- dropout:序列小数据防过拟合。
- teacher forcing:训练生成模型时控制使用真值上下文的比例。
- beam size:越大搜索更充分,但慢且可能偏向安全模板。
- temperature/top-k/top-p:控制生成多样性。低 temperature 更保守,高 temperature 更发散。
怎么调:
- 边界标注:阈值和合法性约束通常比加大模型更直接。
- 结构修复:生成候选后用规则/约束重排,调约束权重。
- 反演/恢复:先保证候选 top-k 召回,再调语言模型约束权重。
来源原题:Word Segmentation、JSB Chorales、Mid-Layer Inversion。
音频 mel 频谱参数
常用库:
librosa.feature.melspectrogram:适合离线特征工程和 notebook 快速实验。torchaudio.transforms.MelSpectrogram+AmplitudeToDB:适合 PyTorch 训练管线,可和 Dataset、DataLoader 集成。scipy.signal.stft/numpy+ mel filterbank:适合需要自定义 STFT 或减少音频库依赖时。
sample_rate / sr
作用:决定每秒采样点数,也决定最高可表示频率。
怎么调:
- 电话语音、短事件:16 kHz 通常足够,能保留大部分语音和事件信息。
- 音乐、鼓点、音色识别:更高采样率可能保留高频音色,但计算量增加。
- 伪造检测:不要随意降采样,高频伪影可能是关键信息。
注意事项:训练、验证、测试必须统一采样率。若重采样,所有 mel 参数都要按新采样率重新理解。
n_fft、win_length 和 hop_length
作用:共同决定时间/频率分辨率。
怎么调:
n_fft大:频率分辨率高,适合音色、稳定频率结构;但瞬态会被摊宽。n_fft小:时间定位好,适合鼓点、咳嗽、响指等短事件;但低频分辨率变差。win_length通常等于或小于n_fft。短窗更敏感瞬态,长窗更平滑。hop_length小:帧更密,事件定位更准,谱图更宽、计算更重。hop_length大:速度快,但可能跳过短事件。
经验起点:
- 16 kHz 短音频事件:
n_fft=512/1024,hop_length=160/320。 - 音乐片段分类:
n_fft=1024/2048,hop_length=256/512。 - 鼓点/onset:优先较小 hop,并用验证 MAE/F1 校准帧到时间。
来源原题:Drum Beat Counter、APOAI T2 Audio。
n_mels
作用:mel 频带数量,决定频率轴分辨率和输入尺寸。
怎么调:
- 64:常用稳健起点,计算轻,适合短 clip 分类和小 CNN。
- 80:语音任务常见折中。
- 128:音色、音乐、伪造纹理更细,但模型更重、更容易过拟合。
现象判断:
- 高频/音色混淆明显:尝试增加
n_mels或调整fmax。 - 数据小且过拟合:减少
n_mels,或加强 SpecAugment/dropout。
来源原题:MusicArtist、Synthetic Speech。
fmin / fmax
作用:控制 mel 频谱覆盖的频率范围。
怎么调:
- 底鼓、低频机械声:确保低频范围保留,
fmin不要太高。 - 喷嚏、咳嗽、军鼓:中高频也重要,
fmax不要过低。 - 电话语音:可限制到电话有效频带以减少无关噪声。
- 合成语音检测:高频伪影可能有用,谨慎降低
fmax。
注意事项:fmax 不能超过 sample_rate / 2。不同采样率下同一 fmax 的含义不同。
power、log/dB 和动态范围
作用:控制谱值的尺度。
怎么调:
power=2:功率谱,常用默认,强调强能量区域。power=1:幅度谱,动态范围相对温和。log(x + eps)或 dB:压缩动态范围,让弱事件不被强背景完全淹没。top_db:限制 dB 最小值。过小会截断弱信号,过大保留更多噪声。
现象判断:
- 模型只关注强背景:尝试 log/dB、归一化或频带权重。
- 弱事件消失:检查
top_db、eps和归一化是否过度。
center、pad_mode 和时间对齐
作用:决定 STFT 帧是否以当前点为中心,以及边界如何补齐。
怎么调:
- clip-level 分类:通常影响不大,保持默认并训练/推理一致即可。
- onset/逐帧标签:必须明确帧中心对应原音频时间,否则标签会整体偏移。
- 实时推理:
center=False更符合因果处理,避免使用未来样本。
来源原题:Drum Beat Counter。
频谱归一化
作用:减少录音增益、设备和背景差异。
怎么调:
- 全局训练集均值方差:分类任务常用,推理稳定。
- 每样本标准化:能消除音量差异,但可能抹掉“整体能量大小”这个有用特征。
- 按频带标准化:适合频带能量差异大的任务,但要避免破坏伪造痕迹。
现象判断:
- 不同音量样本误差大:增强中加入增益扰动,或使用归一化。
- 伪造检测性能下降:归一化可能抹掉合成痕迹,比较轻/重归一化。
来源原题:MusicArtist、Synthetic Speech。
SpecAugment、mixup 和时间裁剪
作用:音频谱图增强,降低过拟合。
怎么调:
- 时间 mask:模拟事件位置变化;短事件任务 mask 过宽会遮掉目标。
- 频率 mask:提高频带鲁棒性;伪造检测中不要过强,可能遮掉关键伪影。
- mixup:多分类可提升平滑性;事件计数或强定位任务要谨慎。
- 时间裁剪:长音频可增加样本,但验证要按原音频分组。
来源原题:MusicArtist、APOAI T2 Audio、Synthetic Speech。
后处理参数
峰值阈值、最小峰间距和 NMS
作用:把连续概率曲线转为离散事件。
怎么调:
- 阈值低:召回高、重复和误报多。
- 阈值高:误报少、漏检多。
- 最小峰间距/NMS 大:避免一个事件重复计数,但会合并近距离真实事件。
- 平滑窗口大:降低噪声,但会让事件时间偏移。
验证方法:同时记录漏检、重复检测、平均偏移和最终计数/IoU 分,不只看帧级 F1。
来源原题:Drum Beat Counter、SwitchSnap。
连通域、形态学和边界裁剪
作用:清理分割 mask 中的小噪声和系统性边界伪影。
怎么调:
- 最小连通域面积:增大可去噪,但会删掉小目标。
- 开操作:去小点噪声;闭操作:填小洞。
- 边界裁剪:适合雷达/传感器固定边缘噪声,但不要裁掉真实边缘目标。
- mask 阈值和连通域要一起调。
现象判断:
- 空背景误报多:提高阈值、增大最小面积、加边界过滤。
- 小目标漏掉:降低面积阈值或使用 Dice/Focal 提召回。
来源原题:Radar、Weather、Pixel Efficiency。
OCR 置信度、正则优先级和默认策略
作用:在 OCR + 规则任务中决定哪些文本可信,以及解析失败时如何兜底。
怎么调:
- OCR 检测阈值高:文本更准但可能漏字段。
- OCR 检测阈值低:召回高但干扰数字多。
- 文本框合并距离:过小会拆散日期,过大会把无关文字混在一起。
- 正则优先级:优先匹配完整日期和关键词附近字段。
- 默认策略:风险敏感任务中,不确定时可偏向保守类别。
现象判断:
- 日期识别错多:调 OCR 阈值、图像预处理、日期正则。
- 保质期识别错多:调关键词窗口和单位规则。
- 规则计算错:单独写日期运算测试,不要靠模型补。
来源原题:Expired。
Beam search、top-k/top-p、temperature 和约束权重
作用:控制候选生成和规则/语言先验重排。
怎么调:
- beam size 大:搜索更充分但更慢,且可能偏向常见安全输出。
- top-k/top-p 小:候选保守;过小可能错过正确答案。
- temperature 低:输出稳定;temperature 高:多样但更容易违规。
- 约束权重高:更合法但可能牺牲局部准确率;权重低则模型原始预测主导。
现象判断:
- 输出合法但准确低:约束过强或候选召回不足。
- 准确看似高但规则扣分多:约束太弱,需要后处理或动态规划。
- 文本流畅但 token 准确低:语言先验压过 hidden/probe 证据。
来源原题:JSB Chorales、Mid-Layer Inversion、Concepts。
常见调参误区
- 只调模型不调验证切分:本地分数会很好看,但不能预测榜单。
- 固定阈值
0.5:很多 F1、F-beta、多标签和分割任务都会吃亏。 - 过早集成:集成不能解决泄漏、错误指标和坏特征。
- 忘记提交尺度:目标 log 训练后必须反变换再按真实指标评估。
- 后处理只看中间指标:事件、计数、分割和生成任务最终要按提交评分验证。