介绍一些技巧,防止神经元饱和导致学习缓慢。
更好的代价函数和激活函数
前面已经介绍,我们使用corss entropy function
+sigmoid function
或者softmax active fuction
+ log-likehood
能够较好的避免学习缓慢的问题,具体请参考这里。
但请注意,这里我们只针对输出神经元在错误的值上饱和导致的学习下降,而对隐藏层的神经元毫无办法。
权重初始化
标准正太分布初始化
最常见的初始化神经元方法是使用标准正态分布随机初始化,这会带来一个问题。
设想,我们第一层神经元的 已经初始化为服从 的正态分布,且输入 为0或者1,这里假设为0的有500个,1也有五百个。
因此,我们考虑带权和:
不难得到, 服从 的正太分布。这将导致我们的 非常分散,也就是说 或者 。这对我们是非常不利的,因为这将导致 接近1或者0,神经网络将很难继续学习。
减小标准差进行初始化
因此,我们可以将 初始化为服从 的高斯分布,其中 表示有这么多个输入权重的神经元。
这样,根据上面假设的例子, 会服从 的正态分布,比之前好了很多。
为什么不处理
经验表明,如何初始化偏置影响不大。
有些人甚至将偏置初始化为0也可以。