Neural network 为什么添加更多层会使我的中立网络变得更糟?

Neural network 为什么添加更多层会使我的中立网络变得更糟?,neural-network,conv-neural-network,convolutional-neural-network,Neural Network,Conv Neural Network,Convolutional Neural Network,我有点困惑。。。我首先从以下几点开始: model = Sequential() # (32, 32, 3) model.add(Conv2D(4, (3, 3), activation='relu', input_shape=input_shape)) model.add(Conv2D(8, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) m

我有点困惑。。。我首先从以下几点开始:

model = Sequential()    # (32, 32, 3)
model.add(Conv2D(4, (3, 3), activation='relu', input_shape=input_shape))
model.add(Conv2D(8, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2))) 
model.add(Dropout(0.25)) 

model.add(Flatten())
model.add(Dense(16, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))
还有另外两个型号,型号2中有一个额外的
Conv2D、Conv2D、MaxPool、Dropout
块,型号2中有16个和32个conv过滤器;型号3中有两个额外的块,有16个、32个、64个、128个conv过滤器。 我得到的最大准确率分别为75%,78%,82%

然后,我将第一个模型中Conv2D中的过滤器数量更改为16和32,将平面层中的节点数量更改为300,并获得97%的精度。 然而,改变模型2和模型3,本质上与模型1相同,但有更多的层,并没有提高精度,实际上使它更糟。。。我在额外的Conv层中尝试了不同数量的过滤器,在平面层中尝试了不同数量的节点,从300到1500,但似乎没有什么不同。不管怎样,第一个模型,层数最少,似乎做得最好


为什么会这样?

搜索空间越大,需要了解的参数越多。因此,学习者将花费更多的时间来学习和面对更多的局部最优解、鞍点、高原等@phoxis,好吧,但是,如果迭代次数越多,层数越多的模型整体性能会更好吗?在第一次运行中,我对所有三个都做了40次,并且获得了这些精度,而在更改第一个模型后,因为它做得很好,速度很快,我只做了10次。那么,他们是否只是学习较慢,但最终会做得更好?还是不是真的?>>您需要使用一个验证集(或交叉验证),我假设您正在使用它来获得估计的准确性。没有必要让更多的层获得更好的结果。如果模型很复杂,那么它将倾向于过度拟合,因此测试集或新数据的结果很差。此外,增加数据点的数量会有所帮助,迭代次数也会有所增加。在保持其他一切不变的情况下,更大的网络具有更多的功能,但这也可能是一件坏事(通常不仅需要更多的时间,还需要更多的数据)。网络的能力越强(先验假设越少),通常越容易过度拟合。@sascha,哦,好的,是的,越复杂的模型越容易过度拟合是有意义的。