我最近开始学习ANN,并且我一直在尝试找出无法找到答案的原因(可能是因为它太琐碎,或者是因为我搜索了错误的关键字。)。

什么时候使用多个输出而不是单个输出?我猜想在最简单的1/0分类情况下,最容易使用“符号”作为输出激活函数。但是在哪种情况下,您使用几个输出?例如,是否存在多重分类问题,是否要将某类分类为A,B或C,并为每个类别选择1个输出神经元?您如何确定它属于哪个类?

最佳答案

在分类环境中,有几种情况下使用多个输出单位可能会有所帮助:多类分类和显式置信度估计。

多类

对于多类情况,正如您在问题中所写的那样,对于您感兴趣的每一类数据,网络中通常都有一个输出单元。因此,如果您尝试将数据分类为A,B或C中的一种,您可以根据标记的数据训练网络,但是将所有“ A”标签转换为[1 0 0],将所有“ B”标签转换为[0 1 0],将“ C”标签转换为[0 0 1 ]。 (这称为"one-hot" encoding。)您可能还想在输出单元上使用logistic activation,以将其激活值限制为间隔(0,1)。

然后,当您训练网络时,优化“交叉熵”损耗(相对于较为直观的欧几里得距离损耗)通常很有用,因为您基本上是在尝试教网络输出概率。给定输入的每个类。通常,人们使用"softmax"(有时也称为Boltzmann)分布来定义这种可能性。

有关更多信息,请查看http://www.willamette.edu/~gorr/classes/cs449/classify.html(理论上略微多一点)和http://deeplearning.net/tutorial/logreg.html(更多针对事物的代码端)。

置信度估计

多个输出的另一个不错的用法是将一个输出用作标准分类器(例如,仅一个生成0或1的输出单元),以及第二个输出以指示该网络对其输入信号的分类具有信心(例如,另一个输出单元会生成一个间隔(0,1)中的值)。

如果您在A,B和C数据类的每一个上训练了一个单独的网络,但是后来又将来自D类(或任何类)的数据提供给系统,则这可能很有用-在这种情况下,您希望每个网络都表明他们不确定输出,因为他们以前从未见过D类产品。

08-25 01:19