7

我正在尝试了解如何训练多层;但是,我在弄清楚如何确定合适的网络架构时遇到了一些麻烦——即网络每一层中的节点/神经元的数量。

对于特定任务,我有四个输入源,每个输入源可以输入三种状态之一。我想这意味着四个输入神经元发射 0、1 或 2,但据我所知,输入应该保持二进制?

此外,我在选择隐藏层中的神经元数量时遇到了一些问题。任何评论都会很棒。

谢谢。

4

2 回答 2

10

我在几点上不同意道格的回答。

您有 4 个离散(3 路分类)输入。您应该(除非您有充分的理由不这样做)将其表示为 12 个二进制输入,对您的四个概念输入中的每一个使用 1-of-3 编码。因此,如果您输入的是 [2,0,1,1] 那么您的网络应该给出: 0 0 1 1 0 0 0 1 0 0 1 0 如果您的网络实现需要手动偏差,那么您应该添加另一个始终在线对于偏差,但大多数明智的神经网络实现不需要这样做。

尝试几个不同数量的隐藏单元。您不需要将自己限制为小于输入层大小的隐藏层大小,但如果您将其变大,则应小心调整权重,可能会使用 L2 或 L1 权重衰减,甚至可能还会进行早期停止在训练中(当你在验证集上的错误停止改善时停止训练)。

于 2010-04-30T21:29:44.620 回答
9

为多层感知器确定可接受的网络结构实际上很简单。

  1. 输入层:数据中有多少特征/维度——即每个数据行中有多少列。添加一个(对于偏置节点),这是第一个(输入层)的节点数。

  2. 输出层:您的 MLP 是在“机器”模式还是“回归”模式下运行(“回归”用于机器学习而不是统计意义)——即,我的 MLP 是否返回类标签或预测值?如果是后者,那么您的输出层只有一个节点。如果是前者,那么您的输出层具有与类标签相同数量的节点。例如,如果您想要的结果是将每个实例标记为“欺诈”或“非欺诈”,那就是两个类标签,因此,输出层中有两个节点。

  3. 隐藏层:在这两个(输入和输出)之间显然是隐藏层。总是从一个隐藏层开始。那么H\有多少个节点?这是一个经验法则:将隐藏层的(初始)大小设置为一些节点数,略大于输入层中的节点数。与具有比输入层更少的节点相比,这种过剩的容量将有助于您的数值优化例程(例如,梯度下降)收敛。

总之,从网络架构的三层开始;第一个(输入)和最后一个(输出)的大小分别由您的数据和您的模型设计固定。一个比输入层稍大的隐藏层几乎总是一个好的设计开始。

因此,在您的情况下,一个合适的网络结构将是:

输入层:5个节点->隐藏层:7个节点->输出层:3个节点

于 2010-04-25T11:32:22.337 回答