我想将输入分类为三种可能性之一。使用 3 个网络(每个网络有一个输出)还是 1 个网络(每个网络有 3 个输出)更好?
(即 3 个网络输出0
or 1
或 1 个输出长度为 3 的单热向量的网络[1,0,0]
答案是否会根据输入数据分类的复杂程度而变化?
在多少输出量下才有意义对网络进行划分(如果有的话)?比如我想分成20组,有什么区别吗?
我想说使用具有多个输出的单个网络更有意义。
主要原因是隐藏层(我假设您至少有一个隐藏层)可以解释为将数据从原始空间(特征空间)转换为更适合任务(分类)的不同空间在你的情况下)。例如,当训练网络从原始像素识别人脸时,它可能会使用一个隐藏层首先根据像素检测简单的形状,例如小线条,然后使用另一个隐藏层根据像素检测简单的形状,例如眼睛/鼻子。来自第一层的线条等(它可能并不完全像这样“干净”,但这是一个易于理解的示例)。
网络可以学习的这种转换通常对于分类任务很有用,无论特定示例属于什么类别。例如,无论实际图像是否包含面部,都能够检测图像中的眼睛是有用的;如果你确实检测到两只眼睛,你可以将其分类为人脸,否则你将其分类为不是人脸。在这两种情况下,你都在寻找眼睛。
因此,通过分成多个网络,您最终可能会在所有网络中学习非常相似的模式。那么你不妨节省自己的计算量,只学一次。
分成多个网络的另一个缺点是,您可能会导致数据集变得不平衡(或者如果已经不平衡则更加不平衡)。假设您有三个类,每个类正好有 1/3 的数据集。如果您使用三个网络来执行三个二元分类任务,那么您突然总是有 1/3 个“1”类和 2/3 个“0”类。然后,网络可能会偏向于预测各处的 0,因为这些是三个独立问题中每个问题中的大多数类别。
请注意,这都是基于我的直觉;如果您有时间,最好的解决方案就是简单地尝试这两种方法并进行测试!不过,我认为我在实践中从未见过有人使用多个网络来执行单个分类任务,因此,如果您只有时间采用一种方法,我建议您使用单个网络。
我认为使用多个网络真正有意义的唯一情况是,如果您实际上想要预测多个不相关的值(或者至少是不强相关的值)。例如,如果给定图像,您想要 1) 预测图像上是否有狗,2) 它是照片还是绘画。那么最好使用两个各有两个输出的网络,而不是一个有四个输出的网络。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)