我试图准确理解如何在python中实现一个基本的神经网络,它将使用遗传算法进行无监督学习,并遇到了一个小问题,我已经能够提出的文献还没有解决。
假设我输入了2个值,将其传递给3个神经元隐藏层,并应用所有权重/偏差。在我确定它是否解雇后,我现在发送到底是什么?我是从sigmoid发送输出还是发送完全停止/开始。换句话说,我输入隐藏层2将是二进制还是非二进制?
任何人都能用我们选择其中一个的原因来解释这个吗?
答案 0 :(得分:2)
这实际上取决于您的网络设计,但没有输入必须是二进制的限制。事实上,你不会经常遇到这种情况。对于输出层,可以容易且清楚地确定输出类型,例如。如果你有类似分类器的东西将这个答案分类为垃圾邮件,那么输出('单个神经元'输出层)将是二进制的。如果你有一个神经网络来识别手写数字,那么最好有一个10神经元输出层,每个输出层给出输入图像是数字[0,9]之一的概率。
对于其他图层(隐藏和输入),输出可以是任何内容,大多数情况下它不是二进制。
修改强>:
我想我误解了你的问题,而且你可能也不是在谈论Fuzzy Neural Networks。
因此,如果您不考虑那些(在大多数情况下),当您说神经元已经触发时,您的意思是它的输出为1(二进制高),否则为0,所以是的是二进制。
我是从sigmoid发送输出还是发送完整停止/开始
sigmoid函数用于神经网络(带权重)的方式,它试图使计算输出成为二进制结果,因此基本上两个选项的含义相同。存在差异,但通常NN会尝试避免sigmoid(或相关神经元)输出一些不能近似为0或1的值的区域。移动该神经元的输入权重,使神经元给出明确的0或1。
另请注意,虽然不知道sigmoid(和tanh)并不好,但出于实际目的ReLU,Leaky ReLU或maxout是更好的选择。
建议:http://cs231n.github.io/neural-networks-1/ 您还可以找到Andrew Ng,Andrej Karpathy等有帮助的讲座(视频和笔记)。