为什么matlab神经网络分类返回十进制值

时间:2014-02-24 10:45:50

标签: matlab matrix neural-network classification nntool

我有一个输入数据集(矩阵25x1575),它被归一化为0到1之间的值。 我也有一个二进制格式的输出矩阵(9x1575),如0 0 0 0 0 0 0 0 1,1 0 0 1 1 1 0 0 1 ...

我在matlab nntool中导入了这两个文件,并根据需要自动创建了一个包含25个输入节点和9个输出节点的网络。

在我使用前馈backProp训练此网络后,我在其训练数据中测试了模型,并且每个输出节点返回十进制值,如(-0.1978 0.45913 0.12748 0.25072 0.45199 0.59368 0.38359 0.31435 1.0604)。

为什么它不返回离散值,如1 0 0 1 1 1 0 0 1? 有什么东西我必须在nntool中设置才能获得这样的值吗?

1 个答案:

答案 0 :(得分:2)

根据神经元的性质,输出可以是任何东西。最流行的神经元是线性的,sigmoidal curve(范围[0,1])和Hyperbolic Tangent(范围[-1,1])。第一个可以输出任何值。后两个c近似步长函数(即二进制行为),但由最终用户(你)来定义该翻译的截止值。

您没有说明您使用的神经元,但您应该更多地了解神经网络的实施方式以及它们的工作原理。您可以从this video开始,然后阅读C Gershenson的Artificial Neural Networks for Beginners

UPDATE 你说你使用tanh-sigmoid神经​​元,并想知道你怎么得不到非常接近-1或1的值。

tanh神经元的输出是其所有输入之和的双曲正切。 -1和1之间的每个值都是可能的。什么决定了输出的“陡度”(换句话说:中间值的比例)是前面神经元的输出值及其权重。这取决于它们的先前神经元的输出和它们的权重等等。在给定特定输入的情况下,由学习算法来找到最小化预定义评分函数的权重集。在典型设置中,评分函数是将神经网络输出与一组期望结果进行比较并返回单个数字的函数,该数字表示实际输出和期望输出的差异。

在使用NN之前,你必须做一些功课。至少你必须决定你的目标是什么,你如何解释NN输出以及如何测量NN性能以及如何更新权重。