如何实现(如果可能)具有多个(> 2)可能性的输出的人工神经网络?

时间:2014-01-29 00:45:33

标签: artificial-intelligence neural-network

例如,假设我们可以将所有行星分类为水,土和空气。这些中的每一个都可以通过许多定量特征来识别,例如反照率,大小和温度,其范围为1-10,并且对于每种类型的行星是不同的。如果我有这些特性的输入,我如何格式化神经网络的输出以输出水,土或空气的结果?

根据我的(有限的)知识,我的经验告诉我,人工神经网络最多只有两个输出,最终只有结果是真或假(或不确定)。对于一个输出,存在步进函数,其中如果超过阈值则输出为1,如果未超过阈值则输出为0,或者也可以确定不确定的线性/ S形。对于两个输出,如果一个输出大于另一个输出,则总输出为1或0。

如何实现具有两个以上总输出的神经网络?我的范围只是一个真/假输出,虽然我觉得解决方案可能非常简单(我忽略了一些东西)。此外,有什么资源可以帮助我吗?我所做的查询并不是最成功的。

4 个答案:

答案 0 :(得分:2)

您不需要输出的步进功能;一旦你删除它,你有一个实值输出,你可以用几种不同的方式处理:

  • 设置被解释为每个不同输出的值范围。因此,0 ... 0.3输出1,输出0.3 ... 0.6,输出0.6 ... 1.0。然后,您将为三个可能的输出训练输出0,0.5和1.0。

  • 使用三个独立网络或三个输出节点来预测每个输出。然后,输出被认为是提供最高结果的网络。

答案 1 :(得分:1)

人工神经网络(ANN)不限于一个或两个输出。输出数量仅受可用计算资源的限制。

具有multilayer perceptrons的多类分类(两个以上类)的常用惯例是,具有与类一样多的输出,并且所需的网络输出全为零,除了单位输出与目标类对应的输出节点。例如,如果有5个类,则类2的所需网络输出将为(0, 1, 0, 0, 0),而类5的所需输出将为(0, 0, 0, 0, 1)。这种类被认为是互斥的。

但您也可以将目标输出定义为具有多个单位值。例如,如果输出1对应于“哺乳动物”而输出4对应于“狗”,那么您可以将Beagle(一种狗)的输出指定为(1, 0, 0, 1, 0)。如何将输出映射到目标类取决于您。诀窍是设置网络架构(层的数量和大小),以便您的类可以学习。

答案 2 :(得分:0)

如果是分类的情况,使用形式(a,b,c)中的三个离散输出单元达到最佳性能,其中a,b和c可以具有值0或1.准备用于网络的训练集三个输出单位并为每条记录设置正确的属性。

一般情况下,它使用“赢家全部”规则(较高的值赢得并给出最终类别)但我更喜欢使用ROC曲线来分析结果。

小心隐藏单位的数量。多个输出可以没有问题(不限于2),但更多的输出意味着更多的训练数据,固定数量的隐藏单位和中间层,以达到可接受的结果(维数问题的诅咒)。

答案 3 :(得分:0)

假设您有 n 类。然后,您可以将输出图层实现为 n 单位的Softmax Regression Layer,而不是常规的Logistic回归图层。