正则化(Regularization)、归一化(Normalization)、权重初始化等
正则化(Regularization)
解决深度学习中的over-fitting(high variance)问题,有两个solutions,其中之一就是regularization,另外就是more data。
正则化就是在原cost function 中加入正则项
Why regularization can reduces overfitting?
直观上理解就是如果正则化系数设置的足够大,那矩阵就会很小,就会导致隐藏单元的影响被削弱,相当于网络被简化了。然后也会变小,用tanh function来看,很小的时候接近线性区。
因为一个简单网络是不容易造成overfitting的,所以综上正则化有利于预防过拟合。
Dropout Regularization
dropout 需要设置keep-prob阈值,遍历每个单元,然后通过keep-prob有选择地保留或删除 neural network units。达到简化网络的作用。
最常用的就是 Inverted dropout(反转随机**):通过除以keep-prop,可以确保的期望值不变,no matter what keep-prop is。
dropout regularization 通常用于CV领域
Other regularization methods
数据扩增:图片放大,旋转,剪切等。得到的数据包含的信息随不能增加太多,但付出的代价几乎没有。
Easy stopping:提早停止训练神经网络。
根据训练误差或的优化函数,对比验证集误差,可以选择迭代过程停止的位置。
.
.
归一化(Normalization)
归一化实现数据转化需要两个步骤:
- 零均值
- 归一化方差
, ,
和都必须由训练集来得出
归一化目的:提升神经网络的训练速度
.
Neural Network 的权重初始化
神经网络的权重初始化(Weight initialization for Deep Network)是为了改善梯度消失和梯度爆炸(Vanishing/Exploding gradients)
Xavier初始化:(tanh)
如果是ReLU function的话,通常改为
梯度检验的注意事项
- 不要在训练中使用梯度检验,只是用来调试
- 如果算法梯度检验失败,要检查所有项,并试着找出bug
- 在实施梯度检验时,如果使用正则项,记住一定要包含正则项
- 梯度检验不能和dropout同时使用
- 随机初始化过程中运行梯度检验然后再训练网络,若随机初始化值比较小,反复训练网络之后,再进行梯度检验