当我开始使用人工神经网络(NN)时,我认为必须克服过度拟合作为主要问题。但是实际上,我什至无法让我的神经网络通过20%的错误率障碍。我什至无法在随机森林中超越我的分数!
我正在就如何使NN开始捕获数据趋势寻求一些非常笼统或不那么笼统的建议。
为了实现NN,我将Theano Stacked Auto Encoder与教程中的代码结合使用,该代码非常有用(错误率低于5%),可以对MNIST数据集进行分类。它是一个多层感知器,顶部有softmax层,每个隐藏的层后来被预先训练为自动编码器(在第8章的教程中有完整介绍)。有〜50个输入要素和〜10个输出类别。NN具有乙状神经元,所有数据均标准化为[0,1]。我尝试了许多不同的配置:隐藏层和神经元的数量(100-> 100-> 100、60-> 60-> 60、60-> 30-> 15等),不同的学习和预训练费率等
我能得到的最好的结果是,验证集的错误率是20%,测试集的错误率是40%。
另一方面,当我尝试使用Random Forest(来自scikit-learn)时,在验证集上我容易得到12%的错误率,在测试集上得到25%(!)。
我的具有预训练的深层NN表现如何如此糟糕?我该怎么办?