如何在多层感知器中使用 sigmoid 函数?

How to use a sigmoid function in multi-layer perceptron?

如果我需要 classify 提供给神经网络的对象,并且有 4 个 classes 可以选择,它如何与 sigmoid 函数一起使用?

我应该在隐藏层中有 4 个神经元,每个神经元应该对应每个 class?就像如果第一个神经元给出最大的输出,比如说 0.8,那么它就是第一个 class?

或者我应该在输出层有一个神经元,它将隐藏层的输出作为输入,将它们传递给激活函数,然后 class 验证输出,如:

if (output < 0.25) return class1;
...
if (output <= 1) return class4;

求助,我已经找了很久了,看了很多文章和书中的一些章节,但一直没有提出来,这让我很抓狂。

单热编码

classic 方法会对最后一层使用单热编码,即,如果某个项目属于四种可能中的第三种 class,那么您将对其进行编码作为向量 [0 0 1 0],所以你的输出层将有四个神经元。

对于训练,您可能希望对输出进行归一化,使其总和为 1 - 即,如果它设法达到 return [1 2 1 0],那么您会将其视为 [0.5 1 0.5 0].

这都是指实际的最后一层 - 隐藏层的大小几乎是任意的(并且可能比输出层大得多),并且其中的特定神经元的 "meaning" 是'规定的,是从数据中学来的。