神经网络能否提供比“是”或“否”更多的答案?


11

我读过的每个用于图像识别的示例神经网络都会产生一个简单的“是”或“否”答案。一个出口节点对应于“是,这是一张人脸”,一个出口节点对应于“否,这不是一张人脸”。

我了解这可能是为了简化说明,但我想知道如何对这样的神经网络进行编程以提供更具体的输出。例如,假设我正在对动物进行分类。与其说“动物”或“不是动物”,不如说是“狗”,“鱼”,“鸟”,“蛇”等响应,而最后一个退出节点是“不是动物/我”不认识这个”。

我敢肯定这是有可能的,但是我在理解如何做上有困难。似乎是由于错误的反向传播训练算法所致,当您训练一个出口节点(即“这是一条狗”)并且神经元的权重发生变化时,您先前训练的另一个出口节点的理想状态受过训练的人(即“这是一只鸟”)将开始偏离,反之亦然。因此,训练网络以识别一个类别将破坏对另一类别所做的任何训练,从而将我们限制为简单的“是”或“否”设计。

这会使这种识别器成为不可能吗?还是我误解了算法?我能想到的只有两件事:

  • 我们可以为要分类的每个事物训练一个神经网络,然后以某种方式使用它们来构建更大的超级网络(例如,“狗”网络,“鸟”网络等)一起创建“动物”的超级网络);要么,

  • 创建某种荒谬的,复杂的训练方法,这将需要极其先进的数学,并且将以某种方式为所有可能的输出(换句话说insert math magic here)产生理想的神经元权重状态。

(旁注1:我专门将多层感知器视为一种神经网络。)

(注2:对于第一个项目符号“可能的解决方案”,具有每个特定的神经网络并对其进行迭代,直到我们收到“是”的响应是不够的。我知道可以很容易地做到这一点,但这很简单编程而不是机器学习。我想知道是否有可能使用一个神经网络将信息提供给并接收适当的响应。)

Answers:


15

仅回答您的标题,是的。神经网络可以给出非布尔值的答案。例如,神经网络已被用来预测股票市场的价值,这是一个数字答案,因此不仅仅是“是/否”。神经网络也用于手写识别,其中输出可以是整个字符范围之一-整个字母,数字和标点符号。

为了更加关注您的示例-识别动物-我想这是可能的。它主要是手写识别示例的扩展;您可以识别形状的特征并将其与“理想”形状进行比较,以查看匹配的形状。这些问题是技术性的,而不是理论性的。通过识别软件运行时,笔迹通常会向下映射到一组直线和曲线-简洁而漂亮。动物的脸部很难识别,因此您需要图像处理逻辑来提取诸如眼睛,鼻子,嘴巴,颅骨轮廓等特征。但是,您仅询问是否可能,而不是方法,所以答案是肯定的。

最好的选择可能是看看诸如自适应共振理论之类的东西。一般原则是将感觉输入(在这种情况下,是有关各种面部特征的相对大小,形状和间距的度量)与定义该类事物的“原型”或模板进行比较。如果感觉输入和记住的模板之间的差异低于某个阈值(由“警戒参数”定义),则假定观察到的对象是该模板代表的组的成员;如果找不到匹配项,则系统将其声明为以前看不见的类型。这种网络的好处是,当它认识到对象是一匹马时,它可以了解有关识别马的更多信息,从而可以分辨出例如

编辑:

(出于全面披露的目的:我仍在自己研究这个项目,所以我的知识仍然不完整,可能在某些地方还有些不足。)

这如何与一个输出节点的反向传播设置权重相联系而破坏了另一个先前训练过的节点的权重?

根据我到目前为止所读的内容,ART范例略有不同。它分为两部分-一部分学习输入,而另一部分学习输出。这意味着,当遇到不匹配的输入集时,未提交的神经元将被激活并进行调整以匹配输入,以便该神经元下次将触发匹配。该层中的神经元仅用于识别。一旦该层找到匹配项,输入将传递到下面的层,该层是计算响应的层。对于您的情况,这一层可能非常简单。我正在查看的系统正在学习驾驶。这实际上是两种类型的学习;一种是学习在各种情况下驾驶,另一种是学习识别情况。例如,

学习新输入而不破坏以前学习的行为的想法被称为稳定性/可塑性困境。网络需要足够稳定以保持学习的行为,但必须具有足够的可塑性,以便在情况变化时可以学习新事物。这正是ART网络要解决的问题。


感谢您的精彩回答!那么,这如何与一个输出节点的反向传播设置权重相联系而破坏了另一个先前训练过的节点的权重呢?还是我在想这个错误的方式?
asteri

@Jeff我已经添加了一些答案。恐怕它没有特别详细-我仍在自己学习。不过,您的问题仍然与稳定性/可塑性难题有关,因为您希望能够训练网络来识别新事物,而又不会忘记如何识别已经知道的事物,而自适应共振理论正是旨在解决该问题,因此可能值得研究。
anaximander

3

@anaximander的答案很好,我想我会对您的问题的这一部分发表评论:

似乎是由于错误的反向传播训练算法所致,当您训练一个出口节点(即“这是一条狗”)并且神经元的权重发生变化时,您先前训练的另一个出口节点的理想状态受过训练的人(即“这是一只鸟”)将开始偏离,反之亦然。因此,训练网络以识别一个类别将破坏对另一类别所做的任何训练,从而将我们限制为简单的“是”或“否”设计。

好吧,我认为您的假设在这里是错误的。如果我理解正确,则您有一个NN,要尝试分类的每个类别都有一个输出。理想情况下,您希望它们几乎独立运行,以免“狗”和“鸟”分类同时发生。因此,实际上,在训练过程中,将发生的事情是,当您使用“狗”结果训练NN时,反向传播将尝试确保“鸟”和其他输出神经元不会产生假阳性。因此,从理论上讲,它会很好地工作,与您的评论相反。强化“鸟”的负面结果是正确的。

但是,您的问题将是此方法的可伸缩性。当您向网络添加更多类别时,培训将至少以线性(但可能更糟)的方式变得更加复杂。因此,许多人使用一种方法来训练每个类别的单个NN。这使事情变得足够简单并且相对可扩展。然后由您决定如何将它们组合在一起。您可以简单地遍历所有NN并查看哪些产生正输出,可以创建中级启发式NN来尝试为您缩小动物的种类,或者您甚至可以拥有一个将单个NN组合为神经元的巨型NN。 。本质上,我想说的是,您对问题的结构有先验知识-各个分类很可能彼此不同;

编辑:要回答标题问题,当然,NN可以提供比是/否答案更多的答案。在“标准”模型中,每个输出神经元通常会触发“是” /“否”(尽管您可能会改变这种行为,但是可以改变),表示一点信息;但是就像在您的计算机上一样,可以将位组合在一起以提供一定范围的离散值,这些离散值可以按照您希望的任何方式进行解释。非二进制输出的一个相当直观的示例是“ 自组织映射”,它通常具有2D输出。


感谢您的回答。我知道我可以拥有任意数量的输出节点,但是我担心由于错误算法的反向传播(将所有权重调整到所需的结果)的本质,学习一种分类将无法学习另一种分类。
asteri

1

简短而又不太严格的答案:是的,每个NN都可以提供比不仅仅是yes或提供更多的信息no。这是由于阈值。如果权重高于某个阈值,则答案是分类类别之一;如果权重低,则答案是第二分类类别。基本上:

    0..threshold 
    threshold..1

Neuron的输出在[0..1]区间(或[-1,1]取决于它),并且您不想获得答案是输出是低于阈值还是高于阈值,而是输出(输出可以轻松地转换为0..1间隔,这意味着%)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.