我正在研究深度学习分类器(Keras和Python),该分类器将时间序列分为三类。我正在使用的损失函数是标准的分类交叉熵。除此之外,我还具有在同一模型中正在学习的注意力图。
我希望此注意力图尽可能小,所以我正在使用正则化器。问题来了:如何设置正确的正则化参数?我想要的是网络首先达到其最大分类精度,然后开始最小化强度注意图。因此,我在没有正则化器的情况下训练了我的模型,而第二次在正则化器开启的情况下训练了模型。但是,如果正则化参数(lambda)太高,则网络将完全失去准确性,只会使注意力最小化;而如果正则化参数太小,则网络仅关心分类错误,即使在准确性已经是最高的了。
是否存在将分类交叉熵与正则化器结合起来的更聪明的方法?也许某些事物会考虑分类交叉熵随时间的变化,并且如果不下降(例如N次迭代),它只会考虑正则化函数?
谢谢
答案 0 :(得分:1)
正则化是应对过度拟合的一种方法。因此,您应该了解模型是否过拟合。一种简单的方法:您可以将 train 和 test 的 f1得分进行比较。如果 train 的 f1分数高,而 test 的 f1分数低,则似乎您过拟合-因此需要添加一些正则化。
答案 1 :(得分:0)
您可以考虑使用Andrew NG教授推荐的3向验证
基本上是检测模型的 过度拟合 和 拟合不足 。
为此,我们通常将成本函数J
与GridSearchCV结合使用,以找到使模型适合O.K的最佳正则化项。
J(training)
很小,J(Cross)
比J(training)
大:这可能表明模型过度拟合(即高方差)。J(training)
相对较高,J(Cross)
接近J(training)
:这可能表明模型中的拟合不足(即高偏差)。那在训练和交叉拆分上使用交叉验证后又如何呢?
如果您的模型合适,则可以使用J(test)
的结果作为最终确认,然后再对模型进行最终批准,就这么简单。
Here是有关如何详细使用GridSearchCV的非常简单,简短且不错的教程。