ANN多输出与单输出

时间:2013-10-25 15:03:31

标签: neural-network classification

我最近开始研究人工神经网络,有些东西我一直试图弄清楚我似乎无法找到答案(可能是因为它太琐碎或因为我在寻找错误的关键词。 )。

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

2 个答案:

答案 0 :(得分:5)

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

多类

对于多类情况,正如您在问题中所写,您通常在网络中为您感兴趣的每类数据都有一个输出单元。因此,如果您尝试将数据分类为A,B之一或者C,您可以在标记数据上训练您的网络,但将所有“A”标签转换为[1 0 0],将所有“B”标签转换为[0 1 0],将“C”标签转换为[0 0 0] 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类的东西。

答案 1 :(得分:2)

例如,看看softmax层。此图层的最大输出是您的类。它有很好的理论依据。

简明扼要:您可以获取前一层的输出并将其解释为m维空间中的向量。在那之后,你让K高斯适合它,它们共享协方差矩阵。如果您对其进行建模并写出方程式,则它等于softmax层。有关详细信息,请参阅Kevin Murphy撰写的“机器学习。概率视角”。

这只是使用最后一层进行多类分类的一个例子。你也可以使用多个输出来做其他事情。例如,您可以训练ANN来“压缩”您的数据,即计算从N维到M维空间的函数,最大限度地减少信息丢失(此模型称为自动编码器)