首页 > 其他 > 详细

梯度检验 Gradient check

时间:2019-12-08 14:41:25      阅读:100      评论:0      收藏:0      [点我收藏+]

在深度学习里面,我们算完了梯度可以对其进行检验求导是否正确

1、参数拼接

在深度网络里面有很多参数,$w^{1}$, $b^{1}$, $w^{2}$, $b^{2}$.... $w^{l}$, $b^{l}$,把他们拼接成一个向量$\theta$。其中l代表第几个隐藏层。

因此J($w^{1}$, $b^{1}$,..., $w^{l}$, $b^{l}$) = J($\theta$)

把$dw^{1}$, $db^{1}$, ..., $dw^{l}$,  $db^{l}$ 同样用一个大的向量表示 d$\theta$

 

J($\theta$)= J($\theta$1, $\theta$2, $\theta$3, $\theta$4, ...)

2、那么如何验证 d$\theta$ 是否是 J的梯度呢?

for each i:

  d$\theta_{approx}^{i}$=$\frac{J(\theta1, \theta2, ..., \theta[i]+\varepsilon,... ) - J(\theta1, \theta2, ... \theta[i]-\varepsilon) }{2\varepsilon}$

     $\approx d\theta[i]=\frac{\partial J}{\partial \theta}$

 

检验$\frac{\left \| d\theta_{approx} -d\theta\right \|_{2}}{\left \| d\theta_{approx} \right \|_{2} + \left\|d\theta \right \|_{2}}$

令$\varepsilon=10^{-7}$,如果上式约等于$10^{-7}$ 则梯度的误差很小, 如果小于$10^{-5}$次方则可能有问题。

 

3、检查的点

  • 如果根据第2个检查到计算的梯度是有问题的,如果db相差比较大,但是$dw$相差不大,则问题很可能出现在db。因此需要检查下db的计算方法。对于$dw$反之亦然
  • 先关闭dropout,再打开dropout
  • 先让w,b迭代几轮至比较小的数值

梯度检验 Gradient check

原文:https://www.cnblogs.com/ylxn/p/12005047.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!