我读过的每个用于图像识别的示例神经网络都会产生一个简单的“是”或“否”答案。一个出口节点对应于“是,这是一张人脸”,一个出口节点对应于“否,这不是一张人脸”。
我了解这可能是为了简化说明,但我想知道如何对这样的神经网络进行编程以提供更具体的输出。例如,假设我正在对动物进行分类。与其说“动物”或“不是动物”,不如说是“狗”,“鱼”,“鸟”,“蛇”等响应,而最后一个退出节点是“不是动物/我”不认识这个”。
我敢肯定这是有可能的,但是我在理解如何做上有困难。似乎是由于错误的反向传播训练算法所致,当您训练一个出口节点(即“这是一条狗”)并且神经元的权重发生变化时,您先前训练的另一个出口节点的理想状态受过训练的人(即“这是一只鸟”)将开始偏离,反之亦然。因此,训练网络以识别一个类别将破坏对另一类别所做的任何训练,从而将我们限制为简单的“是”或“否”设计。
这会使这种识别器成为不可能吗?还是我误解了算法?我能想到的只有两件事:
我们可以为要分类的每个事物训练一个神经网络,然后以某种方式使用它们来构建更大的超级网络(例如,“狗”网络,“鸟”网络等)一起创建“动物”的超级网络);要么,
创建某种荒谬的,复杂的训练方法,这将需要极其先进的数学,并且将以某种方式为所有可能的输出(换句话说
insert math magic here
)产生理想的神经元权重状态。
(旁注1:我专门将多层感知器视为一种神经网络。)
(注2:对于第一个项目符号“可能的解决方案”,具有每个特定的神经网络并对其进行迭代,直到我们收到“是”的响应是不够的。我知道可以很容易地做到这一点,但这很简单编程而不是机器学习。我想知道是否有可能使用一个神经网络将信息提供给并接收适当的响应。)