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

Posted

技术标签:

【中文标题】如何在多层感知器中使用 sigmoid 函数?【英文标题】:How to use a sigmoid function in multi-layer perceptron? 【发布时间】:2017-10-07 01:29:19 【问题描述】:

如果我需要对提供给神经网络的对象进行分类,并且有 4 个类可供选择,那么它如何与 sigmoid 函数一起工作?

我应该在隐藏层中有 4 个神经元,每个神经元都应该对应于每个类吗?如果第一个神经元输出最大,比如 0.8,那么它就是第一类?

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

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

请帮忙,我已经搜索了很长时间,并且我已经阅读了很多文章和书籍中的一些章节,但从未提出过,这让我发疯了。

【问题讨论】:

【参考方案1】:

单热编码

经典方法会为最后一层使用 one-hot 编码,即,如果一个项目属于四个可能的第 3 类,那么你会将它编码为向量 [0 0 1 0],所以你的输出层会有四个神经元。

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

这都是指实际的最后一层 - 隐藏层的大小几乎是任意的(并且可能比输出层大得多),并且没有规定其中特定神经元的“含义”,它是从数据中学习的。

【讨论】:

哦,原来如此明显。现在我知道如何使用它了。非常感谢你,伙计!

以上是关于如何在多层感知器中使用 sigmoid 函数?的主要内容,如果未能解决你的问题,请参考以下文章

深度学习入门多层感知机

动手学习pytorch——多层感知机

多层感知器 - 找到“分离”曲线

小白学习之pytorch框架-多层感知机(MLP)-(tensorvariable计算图ReLU()sigmoid()tanh())

多层感知机面临的问题

深度学习课程笔记神经网络基础