基于MAML元训练时F1分数曲线波动过大及损失激增问题咨询
问题解答
1. 首次外循环AdamW.step()后损失骤升至数万是否正常?
这完全不正常,属于典型的训练不稳定现象,核心诱因大概率和超参数设置或二阶MAML的数值特性相关,具体包括:
- Fast LR设置过于激进:0.5的快速学习率对全VGG11模型来说过高。VGG11包含大量卷积、全连接层,一步适配的参数更新幅度过大,会让模型输出的logit值彻底偏离合理范围,交叉熵损失直接爆炸;同时二阶MAML的反向传播会放大这种参数更新的影响,进一步加剧外循环后的损失飙升。
- 二阶MAML的数值不稳定性:关闭
First order后,MAML会计算二阶导数,而二阶导数本身容易引入数值噪声,尤其是当快速学习率较大时,二阶项的放大效应会让外循环的梯度估计出现异常,导致参数更新后模型彻底偏离最优方向。 - 损失计算的数值溢出:当模型输出的logit值过大时,交叉熵损失计算可能出现数值溢出,直接导致损失跳变到极大值。可以检查损失计算环节是否有logit裁剪或数值稳定处理。
- 模型初始化不匹配:如果VGG11采用默认的PyTorch初始化(如He初始化),这类初始化可能不适配元学习场景,首次适配和外循环更新后,参数容易走向极端值,引发损失爆炸。
2. 微F1分数的元训练/验证曲线波动幅度较大是否正常?
少量波动是元学习训练中的常见现象,但幅度较大则属于异常,主要原因如下:
- 元批量过小:元批量仅为5,每个外循环的梯度估计方差极高,模型参数更新方向会频繁摇摆,直接反映在性能曲线的剧烈波动上。元学习通常需要更大的元批量(如16-64)来降低梯度估计方差。
- 适配步数不足:仅1步适配无法让模型在支持集上充分拟合,每个任务的适配效果差异极大,导致测试集上的微F1分数波动剧烈。增加适配步数(如3-5步)能提升模型在任务内的拟合稳定性。
- 自定义数据集的任务分布问题:如果构造的任务间差异过大(如部分任务样本极度不均衡、样本质量参差不齐),不同任务的泛化难度差异会直接导致微F1分数的剧烈波动。
- 微F1的特性限制:微F1基于全局样本的精确率和召回率计算,对样本不均衡的敏感度远高于准确率。如果任务内的类别样本数量波动大,微F1的波动会比准确率更明显。
- 学习率组合不合理:0.001的元学习率结合AdamW,对全模型元学习来说可能偏大,导致模型参数更新震荡;同时过高的Fast LR会让每次适配后的模型性能不稳定,进一步放大曲线波动。
内容的提问来源于stack exchange,提问作者The Exile
相关产品推荐
相关产品推荐

