【问题标题】:Understanding a multilayer perceptron network了解多层感知器网络
【发布时间】:2017-08-05 03:20:01
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

    标签: machine-learning neural-network deep-learning


    【解决方案1】:

    我不同意上面道格的回答,有几点。

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

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

    【讨论】:

    • 我全心全意地支持这个观点。道格的答案过于简化了问题。如果没有这种输出表示,重要的任务就会失败。此外,如果您的变量一次只能处于一种状态,请记住使用 softmax 函数。
    【解决方案2】:

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

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

    2. 输出层:您的 MLP 是否在“机器”中运行 模式或“回归”模式 (此处使用的“回归” 机器学习而不是 统计意义)--即,我的 MLP 返回类标签或预测的 价值?如果是后者,那么您的 输出层有一个节点。如果 前者,然后是你的输出层 具有相同数量的节点 类标签。例如,如果 你想要的结果是标记每个 例如“欺诈”或“不 欺诈”,这是两个类别标签, 因此,输出中有两个节点 层。

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

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

    所以在你的情况下,一个合适的网络结构应该是:

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

    【讨论】:

    • 谢谢你,道格。你的回答非常彻底和有帮助。当答案真的非常(如您所说)直截了当时,书籍和教授如何使问题显得如此高级,令人着迷。
    • 您的页码。 3 严重错误,例如如果您有 3 个输入节点和 5 个输出节点,则您的规则表明“显然”在隐藏层中不能有任何节点,因为没有 3 5;这篇论文还指出,一些作者犯了这个错误:Warren S. Sarle NN FAQ
    猜你喜欢
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    相关资源
    最近更新 更多