深度学习:深度神经网络实现技巧

归一化

特征缩放很像,在之前的机器学习课程中我们也用过很多次了。主要作用就是将特征值的取值范围都变换成一个以原点为圆心的高维球体,求出每个样本的均值向量 μ \mu μ与标准差向量 σ \sigma σ,即
μ = 1 m ∑ i = 1 m x ( i ) σ 2 = 1 m ∑ i = 1 m ( x ( i ) − μ ) 2 \mu=\frac{1}{m}\sum_{i=1}^mx^{(i)}\\ \sigma^2=\frac{1}{m}\sum_{i=1}^m(x^{(i)}-\mu)^2 μ=m1i=1mx(i)σ2=m1i=1m(x(i)μ)2
之后,令 x : = x − μ σ x:=\frac{x-\mu}{\sigma} x:=σxμ就完成归一化了。

权值初始化

在深度神经网络中,有时会出现梯度爆炸/消失问题,这是因为在很深的网络中,从一段传播到另一端时会累乘许多个权值,即使权值矩阵都只比单位矩阵大一点或者小一点,在累乘出来以后依旧会指数增长变成一个很大或很小的值,对于梯度来说同理,这就是梯度爆炸/消失问题。

合理的初始化能够较有效地缓解这种问题,我们可以看到传播过程中有正向传播
A [ l ] = σ ( Z [ l ] ) = σ ( W [ l ] A [ l − 1 ] + b [ l ] ) A^{[l]}=\sigma(Z^{[l]}) =\sigma(W^{[l]}A^{[l-1]}+b^{[l]}) A[l]=σ(Z[l])=σ(W[l]A[l1]+b[l])
可以看到,向该层传递的节点数(即上一层节点数 n [ l − 1 ] n^{[l-1]} n[l1])越多,得到的 Z [ l ] Z^{[l]} Z[l]值就越可能偏大,反之则越可能偏小,所以我们将权值初始化为均值为0,方差为 C n [ l − 1 ] \frac{C}{n^{[l-1]}} n[l1]C的正态分布,以此让计算值的大小尽可能适中,其中常数 C C C在使用ReLU函数作为激励函数时一般取2,使用逻辑函数或者 tanh ⁡ \tanh tanh函数时一般取1。

梯度检验

机器学习中是一回事,不过新增了一个衡量标准,对于反向传播计算出的梯度向量 d θ d\theta dθ和用导数定义近似计算出的梯度向量 d θ approx d\theta_\text{approx} dθapprox,我们计算
∣ ∣ d θ approx − d θ ∣ ∣ 2 ∣ ∣ d θ approx ∣ ∣ 2 + ∣ ∣ d θ ∣ ∣ 2 \frac{||d\theta_\text{approx}-d\theta||_2}{||d\theta_\text{approx}||_2+||d\theta||_2} dθapprox2+dθ2dθapproxdθ2其中 ∣ ∣ x ⃗ ∣ ∣ 2 ||\vec{x}||_2 x 2为欧几里得度量。

ε = 1 0 − 7 \varepsilon=10^{-7} ε=107时,若上面的值小于 1 0 − 7 10^{-7} 107,则认为我们的计算正确。若该值数量级在 1 0 − 5 10^{-5} 105,需要仔细检查。若在 1 0 − 3 10^{-3} 103,则可以认为算法写挂了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值