【吴恩达深度学习】—梯度爆炸/消失、权重初始化和梯度检验

32.jpg

1.梯度消失/梯度爆炸

训练神经网络,尤其是深度神经所面临的一个问题就是梯度消失或梯度爆炸(Vanishing/Exploding gradients),也就是你训练神经网络的时候,导数或坡度有时会变得非常大,或者非常小,甚至于以指数方式变小,这加大了训练的难度。
举个例子,假设我们有如下神经网络层:

image.png

网络层数 = L,每层包含2个激活单元,每一层的权重矩阵W都相同,且W^{l} = \left[ \begin{matrix} 1.5 &0 \\ 0 &1.5 \\ \end{matrix} \right],且假设bias都为0为了简单起见,激活函数我们不用sigmoid/ReLu,而使用传统的线性激活函数g(z) = z ,则假设函数可以写成:y = W^{[L]}W^{[L-1]}W^{[L-2]}...W^{[3]}W^{[2]}W^{[1]}x = \left[ \begin{matrix} 1.5 &0 \\ 0 &1.5 \\ \end{matrix} \right]^Lx
假设x1 = x2 = 1,则经过神经网络模型得出的预测值y = 1.5^L,如果对于一个深度神经网络来说如果L足够大,即网络足够深,可以看见其预测值y将呈现指数级增长,增长的比率是1.5^L,同理,如果权重矩阵是W^{l} = \left[ \begin{matrix} 0.5 &0 \\ 0 &0.5 \\ \end{matrix} \right],则将是指数下降。最近 Microsoft 对 152 层神经网络的研究取得了很大进展,在这样一个深度神经网络中,如果激活函数或梯度函数以与L相关的指数增长或递减,它们的值将会变得极大或极小,从而导致训练难度上升,尤其是梯度指数小于L时,梯度下降算法的步长会非常非常小,梯度下降算法将花费很长时间来学习。这便是梯度消失和梯度爆炸的含义。

2.神经网络的权重初始化

上节课,我们学习了深度神经网络如何产生梯度消失和梯度爆炸问题,最终针对该问题,我们想出了一个不完整的解决方案,虽然不能彻底解决问题,却很有用,有助于我们为神经网络更谨慎地选择随机初始化参数,为了更好地理解它,我们先举一个神经单元初始化地例子,然后再演变到整个深度网络

7.png
7.png
该单个神经元有4个输入特征x1到x4,经过a = g(z)处理,最终得到预测值y,暂时忽略偏差b,在计算z的时候,我们有方程: 为了预防z的值过大或过小,我们最优化的方式是取
Var表示求方差的意思,权重的方差 = 1/n,即权重分布符合~。
标准的权重初始化公式在Python中可以表示如下:
其中,就是喂给第l层神经单元的数量,即l-1层神经元数量。上面的公式通常适用于tanh激活函数,如果激活函数用的是ReLu,则更适合。具体证明和推导可以参考相关论文。

希望你现在对梯度消失或爆炸问题以及如何为权重初始化合理值已经有了一个直观认识,希望你设置的权重矩阵既不会增长过快,也不会太快下降到 0,从而训练出一个权重或梯度不会增长或消失过快的深度网络。我们在训练深度网络时,这也是一个加快训练速度的技巧。

3.梯度的数值逼近

在实施 backprop(反向传播)时,有一个测试叫做梯度检验,它的作用是确保反向传播正确实施。因为有时候,反向传播求梯度时会有些问题,譬如在代码经行矩阵计算中可能会有bug。为了逐渐实现梯度检验,我们需要先了解梯度的数值逼近,下面看一个例子:
假设函数f(\theta) = \theta^3我们要在θ = 1的地方对其实行梯度逼近,逼近的策略其实可以从两个方向,\theta-\epsilon和\theta+\epsilon。这里取ε = 0.01,如下图我们可以得到两个小三角形:

8.png
8.png
我们用小三角形的高度/宽度之比可以分别模拟在θ = 1处的梯度(导数),所谓梯度逼近,就是求在θ = 1附近,梯度最接近其真实值的坐标。根据导数的定义和数学证明,我们发现,用大三角型的高度/宽度更接近函数在θ = 1的导数,导数值 = 3θ = 3*1 = 3
9.png
9.png
此时 最接近其真实导数值3。这个表达式计算出的导数误差叫双边误差,而用小三角形计算的或者则称为单边误差,可以证明双边误差计算出的误差最小,同时也符号导数公式的定义

4.反向传播的梯度检验

梯度检验的目的就在于检测反向传播计算过程中的bug,检验 backprop 的实施是否正确。

假设神经网络中有下列参数:W^{[1]}和b^{[1]},W^{[2]}和b^{[2]}...W^{[l]}和b^{[l]},为了执行梯度检验,需要把所有的W矩阵转化为参数向量θ,针对参数向量θ中的每个组成元素,其梯度d\theta[i] = \frac{\vartheta J(\theta_1,\theta_2...)}{\vartheta \theta_i},我们用双边误差来计算其逼近梯度,逼近梯度的表达式如下:

d\theta_{approx}[i] = \frac{ J(\theta_1,\theta_2...\theta_i+\epsilon,...) - J(\theta_1,\theta_2...\theta_i-\epsilon,...) }{2\epsilon}

然后,我们用下面的式子计算梯度间的误差程度:

\frac {||d\theta_{approx}-d\theta||_2} {||d\theta_{approx}||_2 + ||d\theta||_2}

譬如此时我用\epsilon = 10^{-7}来计算,通过计算得到次方程式的值<=10^{-7},则梯度下降是正常的,如果得到的值10^{-5}或者更大如10^{-3},则需要检测所有的θ项,看看是否存在一个i值,使得d\theta_{approx}[i]和d\theta[i]差距过大。

注意事项:

  • 首先,不要在训练中使用梯度检验,它只用于调试
  • 第二点,如果算法的梯度检验失败,要检查所有项,检查每一项,并试着找出 bug
  • 第三点,在实施梯度检验时,如果使用正则化,请注意正则项
  • 梯度检验不能与 dropout 同时使用,因为每次迭代过程中, dropout 会随机消除隐藏层单元的不同子集,难以计算 dropout 在梯度下降上的代价函数J
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容