多个神经网络,每个输出一个输出或一个多输出?

时间:2017-01-16 11:50:05

标签: machine-learning neural-network artificial-intelligence

我想将输入分类为3种可能性之一。最好是使用3个网络,每个网络有一个输出,还是1个网络有3个输出? (即输出01或1个网络的3个网络输出一个长度为3 [1,0,0]的热矢量

答案的变化取决于传入数据的分类复杂程度吗?

分区网络(如果有的话)输出的数量是多少?例如,如果我想分为20组,它会有所作为吗?

1 个答案:

答案 0 :(得分:6)

我想说使用具有多个输出的单个网络会更有意义。

主要原因是隐藏层(我假设你至少有一个隐藏层)可以解释为将数据从原始空间(特征空间)转换为更适合于任务(在您的情况下分类)。例如,当训练网络识别来自原始像素的面部时,它可能会使用隐藏层首先检测简单形状,例如基于像素的小线条,然后使用另一个隐藏层来检测简单形状,例如基于眼睛/鼻子的简单形状。来自第一层的线等等(它可能不完全像这样'干净',但这是一个易于理解的例子。)

网络可以学习的这种转换通常对分类任务有用,无论具体示例具有什么类。例如,无论实际图像是否包含面部,都能够检测图像中的眼睛是有用的。如果你确实检测到两只眼睛,你可以将它分类为一张脸,否则你将它归类为不是一张脸。在这两种情况下,你都在寻找眼睛。

因此,通过分成多个网络,您最终可能会在所有网络中学习非常相似的模式。那么你可能已经节省了自己的计算工作并且只学了一次。

分割成多个网络的另一个缺点是,您可能会导致数据集失衡(如果已经不平衡,则会导致更多不平衡)。假设您有三个类,每个类只有1/3的数据集。如果您使用三个网络进行三个二进制分类任务,那么您突然总是拥有1/3“1”类和2/3“0”类。然后,网络可能会偏向于在任何地方预测0,因为这些是三个不同问题中每个问题的主要类别。

请注意,这完全取决于我的直觉;如果你有时间,最好的解决方案是简单地尝试两种方法和测试!我不认为我曾经见过有人在实践中使用多个网络进行单一分类任务,所以如果你只有时间进行一种方法,我建议你选择一个网络。

我认为使用多个网络真正有意义的唯一情况是,如果您确实想要预测多个不相关的值(或者至少是不相关的值)。例如,如果给定图像,您想要1)预测图像上是否有狗,以及2)它是照片还是绘画。那么最好使用两个网络,每个网络有两个输出,而不是一个有四个输出的网络。