You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kaggle房价预测任务中神经网络训练损失突降原因与自定义损失影响咨询

损失突降及震荡的核心原因

  • 损失阶梯式突降是训练前期模型陷入损失曲面的平坦局部极小值导致:使用ReLU激活函数容易出现神经元死区,前期大量神经元未激活,模型拟合能力受限,损失长时间不动;当某次参数更新刚好激活了批量死神经元,或者跳出了平坦极小值区域,模型拟合能力会突然提升,损失出现陡降,这是小网络训练回归任务的常见现象。
  • 陡降后区间的震荡确实对应学习率过高:平坦极小值区域梯度极小,固定学习率在该阶段显得过小,损失更新慢;进入陡降区域后损失曲面梯度变大,原有学习率的步长就会超出收敛需要的范围,导致参数在最优值附近来回摆动,出现对应震荡现象,两者并不矛盾,是损失曲面不同区域的特性差异导致的。

和自定义损失函数的关联

所用损失是**MAPE(平均绝对百分比误差)**的简化版本,和该现象直接相关:

  • MAPE类损失的曲面本身存在大量平坦区域,当预测值和真实值差异处于一定区间时梯度极小,很容易导致训练前期长时间停滞,触发阶梯式损失下降。
  • MAPE的梯度和真实标签y成反比:低价房样本的梯度会远高于高价房样本,不同样本梯度量级差异极大,训练稳定性差,陡降后很容易出现梯度震荡,加剧损失波动。
  • 优化提示:Kaggle本竞赛的官方评估指标就是对数房价的RMSE,可直接用对数MSE替代当前损失:loss = F.mse_loss(torch.log(y_hat), torch.log(y)),本质也是衡量相对误差,但是损失曲面更光滑,训练稳定性会提升很多,也和竞赛评分规则对齐。

过拟合问题判断

当前网络总参数量仅3万左右,属于极小的网络结构,正常情况下不会出现过拟合:

  • 如果是训练集损失震荡下降、验证集损失同步震荡下降,不属于过拟合,只是学习率过高导致的收敛不稳定。
  • 只有当训练集损失持续下降、验证集损失开始上升时,才属于过拟合,这种情况再加L2正则、Dropout即可。

优化建议

  • 替换固定学习率为动态调度策略,比如使用ReduceLROnPlateau在验证集损失不动时自动下调学习率,或者使用Cosine退火学习率,适配不同训练阶段的学习率需求。
  • 可以在全连接层之间增加LayerNorm层,减少ReLU死神经元的出现概率,缓解前期训练停滞的问题。

内容的提问来源于stack exchange,提问作者Matej Murin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:48:02