我有一个多层感知器,每个隐藏层有5个隐藏层和256个神经元。当我开始训练时,我得到每个火车样本的不同预测概率,直到纪元50,但随后重复预测的数量增加,在纪元300上我已经有30%的重复预测,这是没有意义的,因为输入数据是不同的所有训练样本。知道导致这种行为的原因是什么吗?
澄清:
使用"重复预测",我的意思是具有与A类完全相同的预测概率的项目(它是二进制分类问题)
我有4000个训练样本,每个样本有200个特征,所有样本都不同,训练时重复预测的数量增加到30%是没有意义的。所以我想知道是什么导致了这种行为。
答案 0 :(得分:0)
有一点,你说你正在进行二元预测,当你说'#34;重复预测"时,即使你澄清了,也很难理解你的意思。我猜你的二进制分类器有两个输出,一个用于A类,一个用于B类,你得到的给定样本的值大致相同。如果是这样的话,那么首先要做的就是使用1输出。二进制分类问题最好用1输出建模,范围在0到1之间(sigmoid输出神经元)。这样就没有歧义,网络将不得不选择其中一个,或者当它感到困惑时你会得到〜0.5并且它会很清楚。
其次,网络很难开始学习,然后在过度训练后表现得更差。特别是对于您拥有的小数据集。实际上,即使我对你的数据集知之甚少,我也会用一个小小的赌注,你可以从像XGA Boost这样的算法中获得比神经网络更好的性能(我假设你使用的是神经网络而不是字面意思感知器。
但是随着时间的推移会降低性能。当发生这种情况时,你想要查看一些名为"提前停止"。在某些时候,网络将开始记忆输入,并且可能是正在发生的事情的一部分。基本上你训练直到你的测试数据的表现开始恶化。
为了解决这个问题,您可以应用各种形式的正则化(L2正则化,丢失,批量归一化都会浮现在脑海中)。您还可以减小网络的大小。 5层256个神经元听起来太大了。尝试修剪它,我打赌你的结果会改善。在神经网络中有一个建筑大小的最佳位置。当您的网络太大时,它可能并且经常会过度适应。如果它太小,它就无法表达足够的数据。 Angrew Ng的课程有一些有用的实用建议来处理这个问题。