Optimization 去除不重要的输入神经元的最佳方法是什么?

Optimization 去除不重要的输入神经元的最佳方法是什么?,optimization,artificial-intelligence,neural-network,Optimization,Artificial Intelligence,Neural Network,我有一个训练有素的神经网络,由大约40个输入神经元组成,让我可以根据模式对一些项目进行分类。每个神经元接收一些单独的输入参数值。我很确定,并不是所有的输入参数对实现最终结果都很重要,所以如果我排除它们,我的网络应该会产生几乎相同的结果。去除网络中不必要的输入神经元,最好不要重新训练整个网络,最有效和最快速的方法是什么?谢谢两个答案可以轻松快速地完成此任务: 你可以,如果你必须训练你的神经网络(如果你修剪它,你无论如何都必须重新训练它),在一个固定的阈值下切断带有权重的连接,然后移除没有连接的神

我有一个训练有素的神经网络,由大约40个输入神经元组成,让我可以根据模式对一些项目进行分类。每个神经元接收一些单独的输入参数值。我很确定,并不是所有的输入参数对实现最终结果都很重要,所以如果我排除它们,我的网络应该会产生几乎相同的结果。去除网络中不必要的输入神经元,最好不要重新训练整个网络,最有效和最快速的方法是什么?谢谢

两个答案可以轻松快速地完成此任务:

  • 你可以,如果你必须训练你的神经网络(如果你修剪它,你无论如何都必须重新训练它),在一个固定的阈值下切断带有权重的连接,然后移除没有连接的神经元

  • 您可以计算每个输入神经元子集的Shapley值,并删除那些具有“坏”值的神经元:


根据实际测试数据生成40个不同的测试集

每组只有一个输入值随机化

使用“训练有素的NN”测试这些数据集


比较结果

这些神经元的哪些特征让你认为它们是不需要的?哦,这叫做“修剪”。谢谢你的提示,我是新来的。是什么让我觉得其中一些是不需要的?最初,我将项目的每个特征添加到一组输入参数中进行分类,常识告诉我,这40个特征中只有很少一个会影响最终结果。你可能会对这些“常识”规则进行编码。你是说这40个输入对实现结果至关重要吗?在这种情况下,我会看到“修剪”不起作用,对吗?我会看到结果不是很好。无论如何,这是值得尝试的,因为我需要提高我的网络性能