在 FANN 中进行“不相交”分类(输出互斥,即真实概率总和为 1)的正确方法是什么,因为它似乎没有 softmax 输出的选项?
我的理解是,使用 sigmoid 输出,就像做“标签”一样,我不会得到分类问题的正确结果。
在 FANN 中进行“不相交”分类(输出互斥,即真实概率总和为 1)的正确方法是什么,因为它似乎没有 softmax 输出的选项?
我的理解是,使用 sigmoid 输出,就像做“标签”一样,我不会得到分类问题的正确结果。
FANN 只支持tanh
和linear
错误函数。正如您所说,这意味着神经网络输出的概率之和不会为 1。实现输出没有简单的解决方案softmax
,因为这将意味着改变成本函数,从而改变反向传播例程中使用的误差函数。由于 FANN 是开源的,你可以看看自己实现它。Cross Validated 上的一个问题似乎给出了您必须实施的方程式。
虽然不是您正在寻找的数学上优雅的解决方案,但在解决softmax
成本函数的实现之前,我会尝试使用一些更粗略的方法 - 因为其中一种方法可能足以满足您的目的。例如,您可以使用tanh
错误函数,然后将所有输出重新归一化,使其总和为 1。或者,如果您实际上只对最可能的分类感兴趣,您可以只获取得分最高的输出。
FANN 背后的人 Steffen Nissen 在这里展示了一个示例,他尝试根据字母频率对文本的书写语言进行分类。我认为他使用了tanh
错误函数(默认)并且只选择了得分最高的课程,但他表示它运行良好。