多个神经网络各有一个输出还是一个有多个输出?
Multiple neural networks with one output each or one with multiple outputs?
我想将输入分类为 3 种可能性之一。使用 3 个网络各有一个输出还是使用 1 个网络有 3 个输出更好?
(即输出 0
或 1
的 3 个网络或输出长度为 3 [1,0,0]
的单热向量的 1 个网络
答案是否会根据输入数据分类的复杂程度而改变?
在多少输出量下划分网络(如果有的话)是有意义的?比如我要分成20组,有区别吗?
我会说使用具有多个输出的单个网络更有意义。
主要原因是隐藏层(我假设你至少有一个隐藏层)可以解释为从原始 space(特征 space)转换数据进入更适合任务的不同 space(classification 在你的情况下)。例如,当训练网络从原始像素识别人脸时,它可能会使用隐藏层首先检测简单的形状,例如基于像素的细线,然后使用另一个隐藏层检测简单的形状,例如基于 eyes/noses在第一层的线上,等等(它可能不完全像这样''clean'',但这是一个easy-to-understand示例)。
网络可以学习的这种转换通常对 class化任务很有用,无论 class 具体示例有什么。例如,无论实际图像是否包含面部,都能够检测图像中的眼睛是很有用的;如果确实检测到两只眼睛,则可以 class 将其确定为人脸,否则 class 将其确定为不是人脸。在这两种情况下,您都在寻找眼睛。
因此,通过分成多个网络,您最终可能会在所有网络中学到非常相似的模式。那么你还不如省去计算工作,只学一次。
拆分成多个网络的另一个缺点是您可能会导致数据集变得不平衡(或者如果它已经不平衡则更加不平衡)。假设您有三个 classes,恰好 1/3 的数据集属于每个 class。如果你使用三个网络来完成三个二进制 classification 任务,你突然总是有 1/3 ''1'' classes 和 2/3 ''0'' classes。然后,网络可能会偏向于到处预测 0,因为在三个独立的问题中,这些都是大多数 classes。
请注意,这完全基于我的直觉;如果您有时间,最好的解决方案就是简单地尝试这两种方法并进行测试!不过,我认为我从未见过有人在实践中使用多个网络来完成单个 classification 任务,因此,如果您只有时间使用一种方法,我建议您使用单个网络。
我认为使用多个网络真正有意义的唯一情况是您实际上想要预测多个不相关的值(或者至少是不密切相关的值)。例如,如果给定图像,您想要 1) 预测图像上是否有狗,以及 2) 它是照片还是绘画。那么最好使用两个各有两个输出的网络,而不是一个有四个输出的网络。
我想将输入分类为 3 种可能性之一。使用 3 个网络各有一个输出还是使用 1 个网络有 3 个输出更好?
(即输出 0
或 1
的 3 个网络或输出长度为 3 [1,0,0]
答案是否会根据输入数据分类的复杂程度而改变?
在多少输出量下划分网络(如果有的话)是有意义的?比如我要分成20组,有区别吗?
我会说使用具有多个输出的单个网络更有意义。
主要原因是隐藏层(我假设你至少有一个隐藏层)可以解释为从原始 space(特征 space)转换数据进入更适合任务的不同 space(classification 在你的情况下)。例如,当训练网络从原始像素识别人脸时,它可能会使用隐藏层首先检测简单的形状,例如基于像素的细线,然后使用另一个隐藏层检测简单的形状,例如基于 eyes/noses在第一层的线上,等等(它可能不完全像这样''clean'',但这是一个easy-to-understand示例)。
网络可以学习的这种转换通常对 class化任务很有用,无论 class 具体示例有什么。例如,无论实际图像是否包含面部,都能够检测图像中的眼睛是很有用的;如果确实检测到两只眼睛,则可以 class 将其确定为人脸,否则 class 将其确定为不是人脸。在这两种情况下,您都在寻找眼睛。
因此,通过分成多个网络,您最终可能会在所有网络中学到非常相似的模式。那么你还不如省去计算工作,只学一次。
拆分成多个网络的另一个缺点是您可能会导致数据集变得不平衡(或者如果它已经不平衡则更加不平衡)。假设您有三个 classes,恰好 1/3 的数据集属于每个 class。如果你使用三个网络来完成三个二进制 classification 任务,你突然总是有 1/3 ''1'' classes 和 2/3 ''0'' classes。然后,网络可能会偏向于到处预测 0,因为在三个独立的问题中,这些都是大多数 classes。
请注意,这完全基于我的直觉;如果您有时间,最好的解决方案就是简单地尝试这两种方法并进行测试!不过,我认为我从未见过有人在实践中使用多个网络来完成单个 classification 任务,因此,如果您只有时间使用一种方法,我建议您使用单个网络。
我认为使用多个网络真正有意义的唯一情况是您实际上想要预测多个不相关的值(或者至少是不密切相关的值)。例如,如果给定图像,您想要 1) 预测图像上是否有狗,以及 2) 它是照片还是绘画。那么最好使用两个各有两个输出的网络,而不是一个有四个输出的网络。