如何在分类损失和正则化器之间取得适当的平衡?

时间:2018-10-01 09:26:37

标签: machine-learning deep-learning classification loss-function cross-entropy

我正在研究深度学习分类器(Keras和Python),该分类器将时间序列分为三类。我正在使用的损失函数是标准的分类交叉熵。除此之外,我还具有在同一模型中正在学习的注意力图。

我希望此注意力图尽可能小,所以我正在使用正则化器。问题来了:如何设置正确的正则化参数?我想要的是网络首先达到其最大分类精度,然后开始最小化强度注意图。因此,我在没有正则化器的情况下训练了我的模型,而第二次在正则化器开启的情况下训练了模型。但是,如果正则化参数(lambda)太高,则网络将完全失去准确性,只会使注意力最小化;而如果正则化参数太小,则网络仅关心分类错误,即使在准确性已经是最高的了。

是否存在将分类交叉熵与正则化器结合起来的更聪明的方法?也许某些事物会考虑分类交叉熵随时间的变化,并且如果不下降(例如N次迭代),它只会考虑正则化函数?

谢谢

2 个答案:

答案 0 :(得分:1)

正则化是应对过度拟合的一种方法。因此,您应该了解模型是否过拟合。一种简单的方法:您可以将 train test f1得分进行比较。如果 train f1分数高,而 test f1分数低,则似乎您过拟合-因此需要添加一些正则化。

答案 1 :(得分:0)

您可以考虑使用Andrew NG教授推荐的3向验证

基本上是检测模型的 过度拟合 拟合不足

为此,我们通常将成本函数JGridSearchCV结合使用,以找到使模型适合O.K的最佳正则化项。


经验法则:

  1. J(training)很小,J(Cross)J(training)大:这可能表明模型过度拟合(即高方差)。
  2. J(training)相对较高,J(Cross)接近J(training):这可能表明模型中的拟合不足(即高偏差)。

那在训练和交叉拆分上使用交叉验证后又如何呢?

如果您的模型合适,则可以使用J(test)的结果作为最终确认,然后再对模型进行最终批准,就这么简单。


Here是有关如何详细使用GridSearchCV的非常简单,简短且不错的教程。