首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么单层MLP在数字分类器上优于多层MLP?

为什么单层MLP在数字分类器上优于多层MLP?
EN

Stack Overflow用户
提问于 2018-04-18 12:37:29
回答 2查看 499关注 0票数 1

我是做数字分类器与MNIST数据集使用MLP分类器。我观察到非常奇怪的行为。单层分类器优于多层分类器。而单层神经元数量的增加似乎提高了准确性。为什么多层比单层好?这是我的代码:

代码语言:javascript
复制
param_grid={'hidden_layer_sizes':[400,300,200,100,70,50,20,10]}
grid=GridSearchCV(MLPClassifier(random_state=1),param_grid,cv=3,scoring='accuracy')
grid.fit(train_data.iloc[:,1:],train_data.iloc[:,0])
grid.grid_scores_

产出:

代码语言:javascript
复制
[mean: 0.97590, std: 0.00111, params: {'hidden_layer_sizes': 400},
 mean: 0.97300, std: 0.00300, params: {'hidden_layer_sizes': 300},
 mean: 0.97271, std: 0.00065, params: {'hidden_layer_sizes': 200},
 mean: 0.97052, std: 0.00143, params: {'hidden_layer_sizes': 100},
 mean: 0.96507, std: 0.00262, params: {'hidden_layer_sizes': 70},
 mean: 0.96448, std: 0.00150, params: {'hidden_layer_sizes': 50},
 mean: 0.94531, std: 0.00378, params: {'hidden_layer_sizes': 20},
 mean: 0.92945, std: 0.00320, params: {'hidden_layer_sizes': 10}]

多层结构:

代码语言:javascript
复制
param_grid={'hidden_layer_sizes':[[200],[200,100],[200,100,50],[200,100,50,20],[200,100,50,20,10]]}
grid=GridSearchCV(MLPClassifier(random_state=1),param_grid,cv=3,scoring='accuracy')
grid.fit(train_data.iloc[:,1:],train_data.iloc[:,0])
grid.grid_scores_

输出:

代码语言:javascript
复制
[mean: 0.97271, std: 0.00065, params: {'hidden_layer_sizes': [200]},
 mean: 0.97255, std: 0.00325, params: {'hidden_layer_sizes': [200, 100]},
 mean: 0.97043, std: 0.00199, params: {'hidden_layer_sizes': [200, 100, 50]},
 mean: 0.96755, std: 0.00173, params: {'hidden_layer_sizes': [200, 100, 50, 20]},
 mean: 0.96086, std: 0.00511, params: {'hidden_layer_sizes': [200, 100, 50, 20, 10]}]

关于数据集: 28*28像素图像的手写数字。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-18 13:08:02

在我看来,你的模型太合适了。您可以通过比较train_scores (使用参数return_train_score=True)和test_scores来检查这一点。

如果它已经过分适合,那么使您的NN更深或增加单位的隐藏层可能会使它更糟。因此,尝试获取更多的数据和/或找到一个适当的alpha (正则化参数),以使您的模型表现得更好。

票数 2
EN

Stack Overflow用户

发布于 2018-04-18 12:53:24

我只能从理论上回答:

有一个叫做“普适逼近定理”的定理,它通常说:“任何一个ANN和MLP都可以用一个只有一个隐藏层的MLP来表示。”

所以这可能是你的问题。对于这个问题,有1层的MLP有正确的参数,而另一方面,你还没有找到适合多层的。

编辑:更多的层并不意味着更好的性能。在安,有时更大,但不是更好。(xD)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49899914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档