首页 > 代码库 > 神经网络深度学习 学习小记

神经网络深度学习 学习小记

一、sigmod function出现的必要性:

  为什么不直接用stage function?在feedback时,假如说我们现在用的是stage function,直接用楼梯式的跳跃函数,我们每次做很小的参数改动时。如果说这个之前这个参数使函数值落在0-1 改变的那一块区域,即便我们做的change很小,但是很有可能直接导致函数最后的0改为1 ,假如这只是输入层改变为1 ,但是这个1 的改变会影响后续太多的网络结构,也就是说stage function会使网络波动过大。而sigmod函数的平滑性会很好地改变这一情况。

二、既然神经元最后可以表示为0 1 ,那么为什么神经网络的表示不能用类似于二进制的神经元直接代替?16个结果用4个神经元不就可以表示了么?

  我们可以这么想,假如我们用的是TensorFlow里那个mnist(是这么拼吧),一个数字手写图片集合。现在我们用3层神经网络来训练,那么我们可以这么想,我们第二层用四个神经元来做隐藏层,这四个隐藏层是表示什么呢?那0 来做一个例子,把一个图片从中间用两条互相垂直的线分为四个部分,我们可以用训练集找出手写0在这四个部分的分布,在其应该有的像素(对应到输入层的每个单元)上加很大的权重,这样对于0 我们就可以得到一个输入图片在0上的得分,大于0.5我们就可以将其判断为0。但是注意,如果我们用四个神经元(2**4 = 16 > 10 )来表示结果可行么?我们知道一个二进制数字,必须联合起来才能正确地表示一个数字,但是这里的情况,每个output对应的得分都是相互独立的。他们没有办法使其联合起来。10个output 只能用10个神经原来表示,而不采用十进制。

神经网络深度学习 学习小记