为什么 L1/L2 正则化技术没有提高我的准确率?

人工智能 神经网络 深度学习 训练 过拟合 正则化
2021-10-30 13:47:07

我正在训练一个包含 146 个样本的多层神经网络(训练集 97 个,验证集 20 个,测试集 29 个)。我在用:

  • 自动微分,
  • SGD 方法,
  • 固定学习率 + 动量项,
  • 逻辑函数,
  • 二次成本函数,
  • L1 和 L2 正则化技术,
  • 添加一些人工噪音 3%。

当我使用 L1 或 L2 正则化技术时,我的问题(过度拟合问题)变得最糟糕。

我为 lambdas 尝试了不同的值(惩罚参数 0.0001、0.001、0.01、0.1、1.0 和 5.0)。在 0.1 之后,我刚刚杀死了我的 ANN。我得到的最好结果是使用 0.001(但比较我没有使用正则化技术的结果是最差的)。

该图表示不同惩罚参数的误差函数,也是不使用 L1 的情况。

在此处输入图像描述

和准确性

在此处输入图像描述

可以是什么?

2个回答

你有一个小数据集。你甚至应该使用神经网络吗?您是否进行了任何诊断以查看您是否有足够的数据?您是否使用了正确的指标?准确性并不总是正确的指标。你保留了哪些重量?如果您保存产生最低训练误差的权重,您将过拟合。保存产生最低验证错误的权重。L1、L2 和 dropout 都很棒。问题中没有描述的东西很多......

http://www.ultravioletanalytics.com/blog/kag​​gle-titanic-competition-part-ix-bias-variance-and-learning-curves

我想知道为什么您不尝试可解释的模型来查看功能的结果权重是否有意义。此外,如果您比较所有这些模型和参数,请通过设置种子将随机初始起点设置为相同。我也希望您为每个模型使用相同的训练集。

您可能需要更多数据...

没有正则化的网络似乎没有过度拟合,而是似乎收敛到最小值。考虑到您的数据集很小,我实际上有点惊讶它的表现。所以你不需要正则化。如果您想提高准确性,您可以尝试使用可调整的学习率。Keras 回调 ReduceLROnPlateau 可用于此目的。文档在这里还使用回调 ModelCheckpoint 来保存具有最低验证损失的模型。文档在这里如果您发布模型代码,这将有很大帮助。我发现如果你确实遇到过拟合 dropout 比正则化更有效。