ANN 多输出与单输出

Posted

技术标签:

【中文标题】ANN 多输出与单输出【英文标题】:ANN multiple vs single outputs 【发布时间】:2013-11-04 18:42:34 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

多类

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

然后,当您训练网络时,优化“交叉熵”损失(相对于更直观的欧几里德距离损失)通常很有用,因为您基本上是在尝试教您的网络输出给定输入的每个类别的概率。通常使用"softmax"(有时也称为玻尔兹曼)分布来定义这个概率。

如需了解更多信息,请查看http://www.willamette.edu/~gorr/classes/cs449/classify.html(理论性稍强)和http://deeplearning.net/tutorial/logreg.html(更多针对代码方面)。

置信度估计

多输出的另一个很酷的用途是使用一个输出作为标准分类器(例如,只有一个输出单元生成 0 或 1),第二个输出表示该网络对其分类的置信度输入信号(例如,在 (0, 1) 区间内生成值的另一个输出单元)。

如果您在每个 A、B 和 C 类数据上训练了一个单独的网络,但随后也将来自 D 类(或其他)的数据呈现给系统,这可能会很有用——在这个在这种情况下,您会希望每个网络都表明它们不确定输出,因为它们以前从未见过 D 类的东西。

【讨论】:

【参考方案2】:

以 softmax 层为例。这一层的最大输出是你的班级。它有很好的理论依据。

简而言之:您获取前一层的输出并将其解释为 m 维空间中的向量。之后,您将 K 高斯拟合到它,它们共享协方差矩阵。如果你对它建模并写出方程,它就相当于 softmax 层。有关详细信息,请参阅 Kevin Murphy 的“机器学习。概率视角”。

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

【讨论】:

以上是关于ANN 多输出与单输出的主要内容,如果未能解决你的问题,请参考以下文章

反向传播算法(过程及公式推导)

反向传播算法的算法简介

一个简单的ANN算法

神经网络和深度学习 笔记

Java实现ANN神经网络之BP代码参考

神经网络为每个输入返回相同的输出