Neural network ANN多输出与单输出

Neural network ANN多输出与单输出,neural-network,classification,Neural Network,Classification,我最近开始研究ANN,我一直试图找出一些我似乎找不到答案的东西(可能是因为它太琐碎了,或者是因为我在搜索错误的关键字……) 何时使用多个输出而不是单个输出?我想在最简单的1/0分类情况下,使用“符号”作为输出激活函数是最简单的。但在哪种情况下,您会使用多个输出?例如,如果你有一个多重分类问题,那么你想把某个东西分类,比如说,a,B或C,然后为每个类选择一个输出神经元?您如何确定它属于哪个类?例如,看看softmax层。该层的最大输出是您的类。它有很好的理论依据 简而言之:您获取上一层的输出,并将

我最近开始研究ANN,我一直试图找出一些我似乎找不到答案的东西(可能是因为它太琐碎了,或者是因为我在搜索错误的关键字……)


何时使用多个输出而不是单个输出?我想在最简单的1/0分类情况下,使用“符号”作为输出激活函数是最简单的。但在哪种情况下,您会使用多个输出?例如,如果你有一个多重分类问题,那么你想把某个东西分类,比如说,a,B或C,然后为每个类选择一个输出神经元?您如何确定它属于哪个类?

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

简而言之:您获取上一层的输出,并将其解释为m维空间中的向量。然后你将K个高斯函数拟合到它,它们共享协方差矩阵。若你们对它进行建模并写出方程,它等于softmax层。有关更多详细信息,请参阅凯文·墨菲的“机器学习。概率视角”


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

在分类上下文中,使用多个输出单元可能会有帮助:多类分类,和显式置信度估计

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

然后,当你训练你的网络时,优化“交叉熵”损失(与更直观的欧几里德距离损失相反)通常是有用的,因为你基本上是试图教你的网络输出给定输入的每个类的概率。通常使用(有时也称为Boltzmann)分布来定义这种概率

有关更多信息,请查看(稍微理论化一点)和(更多地针对代码方面)

置信度估计 多个输出的另一个酷用法是使用一个输出作为标准分类器(例如,仅一个输出单元生成0或1),第二个输出指示该网络在其输入信号分类中的可信度(例如,另一个输出单元生成间隔(0,1)中的值)

如果您在每个a、B和C类数据上训练了一个单独的网络,然后还向系统提供了来自D类(或其他)的数据,那么这可能会很有用——在本例中,您希望每个网络都表明它们对输出不确定,因为它们以前从未见过来自类d的内容