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

Keras训练时MAPE指标激增但MSE损失正常的原因探究

问题拆解与解答

1. MAPE在epoch末尾激增的核心原因

这完全是MAPE自身的计算公式缺陷导致的:

  • MAPE的数学表达式是:
    MAPE = (1/N) * Σ( |y_true - y_pred| / y_true ) * 100
    
    当训练数据中存在y_true趋近于0的样本时,分母接近0,单个样本的MAPE会直接飙升到几千甚至上万,瞬间拉高整个batch的MAPE值。
  • 你观察到的“epoch末尾激增”,本质是那个epoch的最后几个batch刚好集中了这类y_true接近0的样本,而前面的batch没有这类数据,所以前半段epoch的MAPE看起来正常,到末尾被拉高。
  • 而MSE和MAE不受这个问题影响:MSE是误差的平方,MAE是误差的绝对值,两者都没有除法依赖y_true的操作,所以表现始终稳定。

2. 这个现象会影响训练吗?

完全不会影响训练的收敛过程:

  • 你的模型用MSE作为损失函数,反向传播的梯度计算只由MSE主导,MAPE只是一个用于评估的“旁观者”,不会参与模型参数的更新。只要训练集和验证集的MSE、MAE都在持续下降,就说明模型在正常学习。
  • 不过要注意:如果你的业务场景中频繁出现y_true接近0的情况,MAPE的参考价值会大打折扣,这时候建议优先关注MAE、MSE,或者换成更鲁棒的指标(比如SMAPE,它用(|y_true| + |y_pred|)/2作为分母,避免了除以0的问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:52:34