1.问题:为什么模型跑了越来越多次模型mse,rmse,mae,smape反而升高?
当您在多次训练模型后发现MSE(均方误差)、RMSE(均方根误差)、MAE(平均绝对误差)以及SMAPE(对称平均绝对百分比误差)等指标反而升高时,这可能是由于以下几个原因造成的:
- 过拟合(Overfitting):
- 过拟合是模型在训练数据上表现很好,但在未见过的数据(如验证集或测试集)上表现不佳的现象。如果模型变得过于复杂,它可能会学习到训练数据中的噪声或异常值,导致在训练集上的误差很低,但在其他数据集上的误差很高。
- 解决方法:使用正则化技术(如L1/L2正则化、Dropout)、增加数据量、简化模型架构、使用早停法(early stopping)等。
- 欠拟合(Underfitting):
- 虽然这通常不会直接导致MSE、RMSE、MAE等指标在多次训练后升高,但如果模型一直无法很好地拟合训练数据(即训练集上的误差也很高),那么这可能是模型架构过于简单或学习能力不足。
- 解决方法:增加模型复杂度(如增加层数、神经元数量、使用更复杂的网络结构)、优化超参数(如学习率、批大小)、使用更适合任务的模型架构等。
- 数据问题:
- 训练集和测试集之间的分布差异可能导致模型在测试集上表现不佳。
- 训练数据可能存在噪声、异常值或标签错误。
- 解决方法:检查数据清洗和预处理的步骤,确保训练集和测试集具有相似的分布,清理噪声和异常值,验证标签的准确性。
- 随机性和初始化:
- 神经网络的训练过程可能受到随机初始化和随机梯度下降等随机因素的影响。
- 解决方法:尝试多次训练并取平均结果,或使用更稳定的优化算法。
- 超参数调整不当:
- 在多次训练过程中,如果超参数(如学习率、批大小、正则化强度等)没有得到适当的调整,可能会导致模型性能下降。
- 解决方法:使用网格搜索、随机搜索或贝叶斯优化等技术来找到最佳的超参数组合。
- 模型退化(Model Degeneration):
- 在某些情况下,尤其是在使用深度神经网络时,模型可能会在训练过程中逐渐失去其学习能力,这可能是由于梯度消失或梯度爆炸等问题导致的。
- 解决方法:使用适当的激活函数(如ReLU及其变体)、批量归一化、梯度裁剪等技术来稳定训练过程。
- 目标函数与评估指标不匹配:
- 确保您正在优化的目标函数与评估模型性能的指标相匹配。例如,如果您关心的是绝对误差(如MAE),那么确保在训练过程中也将其作为优化目标之一。
为了诊断问题并找到解决方案,您可以尝试以下步骤:
- 检查训练集和测试集上的性能差异,以确定是否存在过拟合或欠拟合。
- 检查数据清洗和预处理的步骤,确保数据的准确性和一致性。
- 使用验证集来监控训练过程中的性能,并在验证集性能开始下降时停止训练。
- 尝试不同的模型架构和超参数组合,以找到最适合您任务的模型。
- 监控训练过程中的梯度、损失和其他重要指标,以确保训练过程稳定且有效。
2. 优化器
优化器的任务是根据计算得到的梯度,调整模型的参数,以最小化损失函数。具体来说:
- 前向传播: 计算模型的输出,并根据实际标签计算损失。
- 反向传播: 计算损失对每个模型参数的梯度。
- 优化步骤: 使用计算出的梯度来更新模型的参数,以减小损失函数的值。