神经网络笔记 | 5 – 监视与随机初始化

梯度检查

这个算法是用来检测庞大的神经网络运算中究竟是否会出现错误

先复习一下导数的一些基础知识,下图展示了导数近似的定义

说白了代价函数某点的导数,可以通过近似来逼近

这样我们就可以给ε赋值,从而减轻计算机的计算压力,比较经典的取值是0.0001

对于参数是向量的情况,我们可以将上述过程重复数次,比如下面这样

这样我们就可以得到代价函数的近似导数

当然这个导数不常用来直接当成导数,一般还是拿来检测反向所计算出来的数值,用以判别是否出现BUG这样的情况。因为这种算法异常缓慢(相比较与反向传播来说),一般来说用较少的样本来确认代码没有问题,之禾再关掉梯度检测,直接用反向传播处理所有的样本。

总结起来如下

随机初始化

我们知道,对于梯度下降算法,一个必要的条件是给予一个初始值,对于神经网络算法也是一样的

但是,不能把所有的参数全部设成0,其实也不应该设成全部一样的

如果这么干会出现这样一个问题:

所有的单一层的参数,导数等等,都将会一样,梯度下降法将无法该变这种状况

所以,可以使用random函数来进行随机初始化,从而使神经网络正常运行

发表评论