如果我需要对神经网络中给定的对象进行分类,并且有4个类别可供选择,那么Sigmoid函数是如何工作的呢?
我应该在隐藏层中设置4个神经元,每个神经元对应一个类别吗?比如,如果第一个神经元的输出最大,比如0.8,那么它就是第一类?
还是应该在输出层设置一个神经元,它将隐藏层的输出作为输入,传递给激活函数,然后根据输出进行分类,如下所示:
if (output < 0.25) return class1;...if (output <= 1) return class4;
请帮助我,我已经搜索了很长时间,读了很多文章和书中的一些章节,但从未提到过这个问题,这让我快要崩溃了。
回答:
独热编码
经典方法会在最后一层使用独热编码,即,如果一个项目属于四个可能类别中的第三类,那么你会将其编码为向量[0 0 1 0],因此你的输出层将有四个神经元。
在训练时,你可能需要 normalizing 输出,使其总和为1 – 即,如果它能返回[1 2 1 0],那么你会将其视为[0.5 1 0.5 0]。
这一切都指的是实际的最终层 – 隐藏层的大小几乎是任意的(并且可能远大于你的输出层),并且其中特定神经元的“含义”不是预先设定的,而是从数据中学习的。