zoukankan      html  css  js  c++  java
  • 改善深层神经网络(一)深度学习的实用层面

    1、L 层神经网络正则化:

    (1)L2 正则化:

    (2)为什么正则化可以避免过拟合?

     当 lambda 足够大时,最小化 J 时,就会使得权重矩阵 w 趋近于0,神经网络简化为高偏差状态:

     lambda 较大,w 较小,由 z = w * a + b,z 也较小,以 tanh 函数为例:

    当 z 在较小的阶段,函数 g(z) 趋近于线性. 如果每一层都趋近线性,该网络为线性网络,不会产生过拟合的情况.

    (3)dropout正则化(随机失活):

     神经网络的每一个节点都含有 p 的概率失活,如下图:

     

    简化连线,得到一个节点更少,规模更小的网络:

    实现代码如下:

    对于第3层进行随机失活,keep_prob = 0.8(保留某个隐藏单元的概率,即消除一个隐藏单元的概率为0.2),不同层的keep_prob可以不同.

    d3 = np.random.rand(a3.shape[0], a3.shape[1]) < keep_prob

    a3 = np.multiply(a3, d3)  #过滤掉失活的节点

    a3 = a3 / keep_prob  #弥补过滤掉的20%,使得 a3 的期望值不变

    (4)其它正则化方法:

    ① 扩大数据集;

    ② 提早结束迭代:

     

    (5)正则化输入:

    ① 零均值化:

    μ = 1 / m * ∑x(i)

    x = x - μ

    ② 方差归一化:

    σ² = 1 / m * ∑(x(i)

    x = x / σ²

    ③ 为什么要正则化输入?

    非正则化的输入可能导致代价函数的图像偏于细长,如 x1 的取值1-1000,而 x2 的取值仅有0-1. 正则化输入后,代价函数看起来更对称.

    下图可以看到非正则化的梯度下降较为曲折,而正则化的梯度下降较快. 

    2、Vanishing / Exploding gradients(梯度消散与梯度爆炸):

    (1)举例描述:

    假设:g(z) = z; b[l] = 0.

    y = w[L]w[L-1]w[L-2] ... w[2]w[1]x

    (2)解决方案:权重初始化

    由 z = w1x1 + w2x2 + ... + wnxn

    随着 n 的增大,期望的 w[l] 越小,由此设置 Var(w[l]) = 1/n 或者 2/n(效果更好),即:

    w[l] = np.random.randn(shape) * np.sqrt(2/n[l-1])

    3、梯度检验:

    (1)梯度的数值逼近:

    双边误差公式更准确,可以用来判断 g(θ) 是否实现了函数 f 的偏导.

    (2)神经网络的梯度检验:

    ① 将 W[1],b[1],...,W[L],b[L] 从矩阵转为一个向量 θ;

    ② 将 dW[1],db[1],...,dW[L],db[L] 从矩阵转为一个向量 dθ;

    ③ J = J(θ1, θ2, ..., θi, ...)

    for each i :

      dθapprox[i] = (J(θ1, θ2, ..., θ+ ε, ...) - J(θ1, θ2, ..., θ- ε, ...)) / (2 * ε)

      check dθapprox[i] ≈ dθ[i] by calculate || dθapprox[i] - dθ[i] ||2  / (|| dθapprox[i] ||2 + || dθ[i] ||2)  < 10^-7(或其他误差阈值)

    (3)梯度检验注意点:

    ① 检测完关闭梯度检验;

    ② 检查是否完成了正则化;

    ③ 不适用于dropout;

    ④ 检查是否进行了随机初始化.

  • 相关阅读:
    CodeForces Gym 100500A A. Poetry Challenge DFS
    CDOJ 486 Good Morning 傻逼题
    CDOJ 483 Data Structure Problem DFS
    CDOJ 482 Charitable Exchange bfs
    CDOJ 481 Apparent Magnitude 水题
    Codeforces Gym 100637G G. #TheDress 暴力
    Gym 100637F F. The Pool for Lucky Ones 暴力
    Codeforces Gym 100637B B. Lunch 找规律
    Codeforces Gym 100637A A. Nano alarm-clocks 前缀和
    TC SRM 663 div2 B AABB 逆推
  • 原文地址:https://www.cnblogs.com/orangecyh/p/11810840.html
Copyright © 2011-2022 走看看