我正在使用 KNIME MLP 神经网络学习器(如果您不熟悉 KNIME,可以把它想象成一个将神经网络实现到一组数据的包)。
问题是你可以调整隐藏层的数量、迭代次数和每层的神经元,所以第一个问题来了:如何知道这些参数的先验值?例如,对于随机森林,500 棵树应该是在第一阶段测试其性能的标准。
其次,我知道通常添加更多层和/或神经元并不能确保预测的任何增强,有时甚至会发生相反的情况。有人可以就这个话题给出一些理论见解;为什么通过添加更多层,预测可能会恶化?
提前致谢!
塞尔吉
我正在使用 KNIME MLP 神经网络学习器(如果您不熟悉 KNIME,可以把它想象成一个将神经网络实现到一组数据的包)。
问题是你可以调整隐藏层的数量、迭代次数和每层的神经元,所以第一个问题来了:如何知道这些参数的先验值?例如,对于随机森林,500 棵树应该是在第一阶段测试其性能的标准。
其次,我知道通常添加更多层和/或神经元并不能确保预测的任何增强,有时甚至会发生相反的情况。有人可以就这个话题给出一些理论见解;为什么通过添加更多层,预测可能会恶化?
提前致谢!
塞尔吉
很抱歉不知道第一个问题的确切数字,但我的观点是从最简单的模型开始,而不是任何随机参数。然后通过验证使用网格搜索参数。
至于第二个问题,模型的误差来自方差和偏差两部分。偏差来自您的模型缺乏复杂性。例如,当使用线性模型来拟合距离与佳能的拍摄角度时,总会有很大的偏差。这可以通过使用更复杂的模型来克服,例如向 NN 添加层。
方差来自于对数据过于敏感,甚至对数据中的噪声也很敏感。当由于使用过于复杂的模型而导致方差很大时,称为过拟合。您可以查看此页面(在 wiki 上过度拟合)。并且使用更多层/神经元正在使用更复杂的模型,这意味着该模型可能会受到高方差的影响。这可以通过降低模型复杂度(这可能会增加偏差)或添加训练数据来克服。
基本上,如果您获得恒定数量的数据,那么您必须找到偏差和方差都不太高的地方。