正则化(Regularization)、归一化(Normalization)、权重初始化等

正则化(Regularization)

解决深度学习中的over-fitting(high variance)问题,有两个solutions,其中之一就是regularization,另外就是more data。
正则化(Regularization)、归一化(Normalization)、权重初始化等_第1张图片
正则化就是在原cost function 中加入正则项

Why regularization can reduces overfitting?

直观上理解就是如果正则化系数 λ \lambda λ设置的足够大,那矩阵 W W W就会很小,就会导致隐藏单元的影响被削弱,相当于网络被简化了。然后 Z Z Z也会变小,用tanh function来看, z z z很小的时候接近线性区。

因为一个简单网络是不容易造成overfitting的,所以综上正则化有利于预防过拟合。

Dropout Regularization

dropout 需要设置keep-prob阈值,遍历每个单元,然后通过keep-prob有选择地保留删除 neural network units。达到简化网络的作用。

最常用的就是 Inverted dropout(反转随机激活):通过除以keep-prop,可以确保 a a a的期望值不变,no matter what keep-prop is。
dropout regularization 通常用于CV领域

Other regularization methods

数据扩增:图片放大,旋转,剪切等。得到的数据包含的信息随不能增加太多,但付出的代价几乎没有。
Easy stopping:提早停止训练神经网络。
根据训练误差或 J J J的优化函数,对比验证集误差,可以选择迭代过程停止的位置。
正则化(Regularization)、归一化(Normalization)、权重初始化等_第2张图片

.
.

归一化(Normalization)

归一化实现数据转化需要两个步骤:

  • 零均值
  • 归一化方差

μ = 1 m ∑ i = 1 m x ( i ) μ = \frac{1} {m} \sum_{i=1}^{m} x^{(i)} μ=m1i=1mx(i), σ 2 = 1 m ∑ i = 1 m ( x ( i ) ) 2 \sigma^{2} = \frac{1} {m} \sum_{i=1}^{m} (x^{(i)})^{2} σ2=m1i=1m(x(i))2,
μ μ μ σ 2 σ^2 σ2都必须由训练集来得出

归一化目的:提升神经网络的训练速度

.

Neural Network 的权重初始化

神经网络的权重初始化(Weight initialization for Deep Network)是为了改善梯度消失和梯度爆炸(Vanishing/Exploding gradients)

Xavier初始化:(tanh W [ l ] = n p . r a n d o m . r a n d n ( s h a p e ) ∗ n p . s q r t ( 1 n [ l − 1 ] ) W^{[l]} = np.random.randn(shape) * np.sqrt(\frac{1} {n^{[l-1]}}) W[l]=np.random.randn(shape)np.sqrt(n[l1]1)
如果是ReLU function的话,通常改为 n p . s q r t ( 2 n [ l − 1 ] ) np.sqrt(\frac{2} {n^{[l-1]}}) np.sqrt(n[l1]2)

梯度检验的注意事项

  • 不要在训练中使用梯度检验,只是用来调试
  • 如果算法梯度检验失败,要检查所有项,并试着找出bug
  • 在实施梯度检验时,如果使用正则项,记住一定要包含正则项
  • 梯度检验不能和dropout同时使用
  • 随机初始化过程中运行梯度检验然后再训练网络,若随机初始化值比较小,反复训练网络之后,再进行梯度检验

你可能感兴趣的:(深度学习)