Artificial intelligence 如何将人工神经网络的输出转化为概率?

Artificial intelligence 如何将人工神经网络的输出转化为概率?,artificial-intelligence,neural-network,Artificial Intelligence,Neural Network,我不久前读过关于神经网络的书,我了解人工神经网络(特别是通过反向传播学习的多层感知器)如何将事件分类为真或假 我认为有两种方法: 1) 你得到一个输出神经元。如果它的值大于0.5,则事件可能为真,如果它的值大于第二个值,则事件可能为真,反之亦然 在这种情况下,ANN会告诉您事件可能是真的还是假的。它并没有说明这种可能性有多大 有没有一种方法可以将这个值转换成一些赔率,或者直接从ANN中获得赔率。一旦对NN进行了训练,我希望得到一个输出,如“事件有84%的概率为真”,例如,使用问题中提到的反向推进

我不久前读过关于神经网络的书,我了解人工神经网络(特别是通过反向传播学习的多层感知器)如何将事件分类为真或假

我认为有两种方法:

1) 你得到一个输出神经元。如果它的值大于0.5,则事件可能为真,如果它的值大于第二个值,则事件可能为真,反之亦然

在这种情况下,ANN会告诉您事件可能是真的还是假的。它并没有说明这种可能性有多大


有没有一种方法可以将这个值转换成一些赔率,或者直接从ANN中获得赔率。一旦对NN进行了训练,我希望得到一个输出,如“事件有84%的概率为真”

,例如,使用问题中提到的反向推进(反向推进逻辑以最小化误差函数的方式“推动”权重)与所有单个输入相关的权重(“外部”输入或NN内输入)是固定的。然后,NN可用于分类目的

学习阶段的数学(和“选项”)会变得有点复杂,当作为分类器操作时,它是相对简单和直接的。主要算法是计算每个神经元的激活值,作为该神经元的输入x权重之和。然后将该值反馈给激活函数,激活函数的目的是将其规格化并将其转换为布尔值(在典型情况下,因为某些网络的某些层没有“全有或全无”规则)。激活函数可能比您指出的更复杂,特别是它不必是线性的,但无论其形状如何(通常为S形),它都以相同的方式运行:计算激活在曲线上的位置,如果适用,在阈值之上或之下。然后,基本算法处理给定层上的所有神经元,然后再进行下一层

考虑到这一点,利用感知器的能力将其猜测(或实际上的猜测-复数)限定为一个百分比值的问题找到了一个简单的答案:你肯定可以,在我们将其转换为离散值之前,它的输出是实值的(如果需要标准化的话)(对于多个类别,为布尔值或类别ID),使用问题中描述的激活函数和阈值/比较方法

那么…如何以及从何处获取“我的百分比”?…所有这些都取决于NN实现,更重要的是,实现规定了可用于将激活值置于0-1范围内的规范化函数的类型,并且以所有百分比之和“相加”的方式to 1.在其最简单的形式中,激活函数可用于规范化值,输出层的输入权重可作为确保“相加”为1个问题的因素(前提是这些权重本身确实如此规范化)

澄清:(遵循马修的注释)
人们不需要改变神经网络本身的工作方式;唯一需要的是以某种方式“连接”输出神经元的逻辑,以访问它们计算的[实值]激活值,或者更好的方式,在布尔转换之前访问激活函数的实值输出(通常基于阈值或某些随机函数)

换句话说,神经网络和以前一样工作,它的训练和识别逻辑都没有改变,神经网络的输入保持不变,各层之间的连接也保持不变。我们只得到输出层神经元实值激活的副本,我们用它来计算百分比。perce的实际公式ntage计算取决于激活值的性质及其相关功能(其规模、相对于其他神经元输出的范围等)。
下面是几个简单的例子(取自问题的建议输出规则) 1) 如果有单个输出神经元:激活函数提供的值与该函数范围的比值应为。
2) 如果有两个(或多个)输出神经元,例如分类器:如果所有输出神经元具有相同的激活函数,则给定神经元的百分比为其激活函数值除以所有激活函数值之和。如果激活功能发生变化,则会出现具体情况,因为不同的激活功能可能表明有目的地希望给予某些神经元更多的权重,百分比应该尊重这一点。

我记得我在《神经计算理论导论》(hertz-krogh-palmer)一书中看到了一个用反向传播训练神经网络以近似结果概率的例子。我认为这个例子的关键是一个特殊的学习规则,这样你就不必将单位的输出转换为概率,而是自动将概率作为输出。
如果你有机会,试着查一下那本书


(顺便说一句,“boltzman机器”虽然不太出名,但它是专门为学习概率分布而设计的神经网络,您可能还想检查它们)

您可以在输出层节点上使用一个(它接受数据范围(-inf,inf)并输出[-1,1]中的值)。

然后,通过使用n中的1输出编码(每类一个节点),您可以将范围[-1,1]映射到[0,1],并将其用作每类值的概率(注意,这自然适用于两个以上的类)。

单个输出神经元的激活值是线性加权和,如果网络训练为输出范围为0到1,则可直接解释为近似概率。如果
linear neurons   [ number of features ]
sigmoid neurons [ 3 x number of features ]
linear neurons   [ number of classes ]