神经网络,最小神经元数

Neural network, minimum number of neurons

我有一个 2D 表面,其中一艘船(以恒定速度)在场景中航行以捡起糖果。对于船捡起的每一颗糖果,我都会增加适应度。 NN 有一个输出来操纵船(0 代表左,1 代表右,所以 0.5 是直截了当的)在 [-1 .. 1] 范围内有四个输入,代表两个归一化向量。船的方向和糖果的方向。

有什么方法可以计算出隐藏层的最小神经元个数吗?我还尝试提供两个输入而不是四个,第一个是点积 [-​​1..1](我将船的方向与糖果的方向点在一起),第二个是 (0/1) 如果糖果是到船的left/right。似乎这种方法在隐藏层中的神经元较少的情况下效果更好。

更少的输入应该意味着更少的神经元数量。这是因为输入组合的数量减少,神经网络更容易学习系统。关于如何计算隐藏层中的最佳节点数,没有黄金法则。但是,对于 2 个输入,我认为 2 个隐藏节点应该可以正常工作。这实际上取决于您输入的非线性程度。

定义隐藏层的数量和每个隐藏层中的神经元数量一直是一个挑战,它可能与每种类型的问题不同。顺便说一句,前馈神经网络中的单个隐藏层可以解决大部分问题,因为它可以近似函数。

Murata 定义了一些在神经网络中使用的规则来定义前馈神经网络中隐藏神经元的数量:

  • 该值应介于输入层和输出层的大小之间。
  • 该值应为输入层大小加上输出层大小的 2/3。
  • 该值应小于输入层大小的两倍

您可以尝试这些规则并评估它对您的神经网络的影响。