如何实现恰当的拟合

一、选择合适的隐藏层数目

首先我们需要注意到当我们增加层数和神经元数目的时候,神经网络的性能也会有所提升。因为神经元可以协同作用表达出不同的函数来对数据进行表示。比如说假设我们在二维空间中有一个二值的分类问题,我们可以训练3个不同的神经网络,每个神经网络都包含一个隐含层,但是隐含层中包含的神经元数目不一样,我们来看一下分类器的分类效果: 


在上图中,我们看到包含更多神经元的神经网络能够表达更加复杂的函数。但是这既好又不好,好是因为可以对更复杂的数据进行分类,不好是因为它容易对训练数据过拟合(overfitting)。比如说隐层包含20个神经元的那个图,它虽然把所有的数据都分对了但是把整个平面分成了红绿相间、相互脱节的小区域,看上去很不平滑;而3个神经元的图,它能够从大方向上去分类数据,而把一些被绿色点包围的红色点看成是异常值、噪声(outliers)。实际中这能够使得模型在测试数据上有更好的泛化能力。 

基于上述讨论,貌似当数据不太复杂的时候,我们可以选用小一点的神经网络来预防overfitting?不不不,这是不对滴,我们可以选择其他更好的方法来避免过拟合(比如L2正则化,dropout,增加噪声等,我们后面再讨论)。实际中用这些方法避免过拟合比减少神经元的个数要更好。比如说我们可以看看不同的正则强度是如何控制20个隐含神经元的过拟合的: 


总的来说就是你不能因为害怕过拟合就使用小一点的神经网络,相反如果你的计算机性能允许,你应该用大的神经网络,然后通过一些正则的方法来控制overfitting.

参考文献:

1.https://blog.csdn.net/u014365862/article/details/52710698

猜你喜欢

转载自blog.csdn.net/kongxp_1/article/details/80726718