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

正则化(Regularization)

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

Why regularization can reduces overfitting?

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

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

Dropout Regularization

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

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

Other regularization methods

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

.
.

归一化(Normalization)

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

  • 零均值
  • 归一化方差

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

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

.

Neural Network 的权重初始化

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

Xavier初始化:(tanhW[l]=np.random.randn(shape)np.sqrt(1n[l1])W^{[l]} = np.random.randn(shape) * np.sqrt(\frac{1} {n^{[l-1]}})
如果是ReLU function的话,通常改为 np.sqrt(2n[l1])np.sqrt(\frac{2} {n^{[l-1]}})

梯度检验的注意事项

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