在使用Matlab的神经网络工具箱时。
创建网络后,当我尝试使用它来对两个类别进行分类时,我得到了一种相似度值。
sim(net,featureVector)
的输出返回一个矩阵Out
,它是[2x1]
的,每行包含一个介于[0, 1]
之间的值
我知道Sigmoid函数返回一个介于[0, 1]
之间的值,但问题是这样的:
如果一个样本与类别A有n%
的相似度,那么它不应该与类别B有(100-n)%
的相似度吗?
这是我从几个样本中得到的输出 => [其中HIT
和FAIL
是两个类别。]
从第二张图片来看,神经网络似乎独立于两个类别返回某种相似度值,显然不遵循上述规则。
看起来它对每个类别使用某种最小距离公式,并独立返回结果。
我的具体问题是:
1. sim(net,featureVector)
方法到底返回什么?
2. 我的想法对吗?
3. 如果是,它使用什么最小距离算法?
4. 请指出一些我可以进一步学习的链接。
回答:
sim
是simulate的缩写,不是similarity。你得到的是网络net
的输出节点的值。这两个值是独立的属于每个类别的得分。如果你想要更像“概率”的东西,你需要对其进行归一化,方法是简单地将这个向量除以其自身的总和。因此,将[a b]
更改为[a/(a+b) b/(a+b)]
,这样得到的值总和将为1
(如所需)。
如果是,它使用什么最小距离算法?
神经网络并不是基于任何形式的“到类别的最小距离”。它是一个更为复杂的对象,源自回归模型,而非简单的距离度量(虽然显然可以从神经网络的权重中明确指出某种“到类别的距离”,但其方程将非常长,尤其是对高维数据如图像而言)。