可以通过删除一些连接来获得更好的人工神经网络吗?

机器算法验证 分类 神经网络
2022-03-07 13:17:33

我想知道在某些情况下,如果你修剪掉它们上的一些连接,ANN 是否有可能表现得更好,例如:

通过并行使用两个多层 ANN A 和 B(相同的输入和输出节点)在 A 和 B 的隐藏层之间添加一些“通信”连接来构建一个 ANN?

可以得到更好的泛化结果吗?

这是在实践中以某种方式使用的,还是总是只使用多层全连接网络?

4个回答

是的,有可能。有些人已经详细研究过这个问题。这是一篇关于这样做的方法的旧论文:最佳脑损伤

根据经验,小型和/或稀疏网络的泛化效果更好。您可以通过应用某种形式的权重衰减让您的训练算法在固定大小的网络中清除不必要的连接,或者您可以应用旨在通过删除不必要的输入、隐藏节点或连接来优化网络架构/拓扑本身的算法。

查看这些参考资料以获得进一步研究的想法和起点,或研究使用进化算法来设计、修剪和优化架构。

  1. Castellano, G., Fanelli, AM (2000) “使用神经网络模型进行变量选择”,神经计算 (31)
  2. Ji C., Psaltis D. (1997) '通过数据驱动的增长和衰减进行网络综合',神经网络卷。10,第 6 期,第 1133-1141 页
  3. Narasimha PL 等人(2008 年)“用于前馈网络训练的集成生长修剪方法”,神经计算 (71),第 2831-2847 页
  4. Schuster, A. (2008) “稳健的人工神经网络架构”,国际计算智能杂志 (4:2),第 98-104 页

在大多数情况下,如果您删除不必要的连接,您将获得更好的网络。网络很容易过度训练(过度拟合)——在这种情况下,它将在验证数据集上表现不佳。

修剪不必要的连接很可能会降低过度训练的可能性。请参阅:http ://en.wikipedia.org/wiki/Overfitting 。

是的,有可能。我们可以将计算单元之间的连接、隐藏层的数量、每个隐藏层的单元等视为超参数。通过进行一系列实验,可以找出这些参数的最佳值。

例如:

您可以将数据集划分如下:训练集 60% 的数据,交叉验证 20% 的数据,测试 20% 的数据,

然后通过使用训练数据集和使用交叉验证数据集调整参数来训练您的 NN。

最后,您可以使用您的测试数据集来评估您的神经网络的性能。