如何在没有 softmax 输出的情况下进行不相交分类?

How to do disjoint classification without softmax output?

在 FANN 中进行 'disjoint' 分类(输出互斥,即真实概率总和为 1)的正确方法是什么,因为它似乎没有 softmax 输出选项?

我的理解是,使用 sigmoid 输出,就像做 'labeling' 一样,我不会得到分类问题的正确结果。

FANN 仅支持 tanhlinear 误差函数。正如您所说,这意味着神经网络输出的概率总和不会为 1。实现 softmax 输出没有简单的解决方案,因为这将意味着改变成本函数,从而改变使用的误差函数在反向传播程序中。由于 FANN 是开源的,你可以看看自己实现这个。关于 Cross Validated 的问题似乎给出了你必须 implement.

的方程式

虽然这不是您正在寻找的数学上优雅的解决方案,但在解决 softmax 成本函数的实现之前,我会尝试尝试一些更粗略的方法 - 因为其中一个可能足以满足您的目的。例如,您可以使用 tanh 误差函数,然后将所有输出重新归一化以求和为 1。或者,如果您实际上只对最可能的 class 化感兴趣,您可以采取得分最高的输出。

FANN 的幕后黑手 Steffen Nissen 举了一个例子 here,他试图 class 根据字母频率确定文本使用的语言。我认为他使用了 tanh 错误函数(默认)并且只取了得分最高的 class,但他表示它运行良好。