深度学习中的正则化

Source

正则化概念:
在《Deep Learning》书中定义正则化为“对学习算法的修改——旨在减少泛化误差而不是训练误差”,《统计学习方法》中认为正则化是选择模型的一种方法。我个人比较倾向于后一种解释。在上一篇博客也提到了,模型可以看成是一个高维函数,当模型参数确定了,这个函数也就确定了。对于不同的模型参数,能得到千千万万个不同的模型,我们将这所有的可能得到的模型称之为假设空间。理想情况下,我们希望真实数据的生成过程也包括在这个假设空间中,然后我们只需要通过训练将代表该生成过程的一组模型参数找出来即可。然而,真实数据的生成过程几乎肯定在假设空间之外,我们做的事无非是从已有的假设空间中通过训练找到一个泛化能力优秀的拟合模型(即尽量匹配真实数据生成过程)。正则化可以帮助我们从假设空间中找到这样一个模型:训练误差较低,而且模型复杂度也较小。所以正则化是一种选择模型的方法。   
正则化的作用是选择经验风险与模型复杂度同时较小的模型。几种常见的正则化策略

1. 参数范数惩罚
L2参数正则化:会对未正则化的最优的权重w在对应的方向上进行缩放,从而在能够显著减小目标函数方向上的参数会保留的相对完好,在无助于目标函数减小的方向上的参数会在训练中逐渐衰减掉。

L1参数正则化:相比L2正则化,L1正则化会产生更稀疏的解。此处的稀疏性是指最优值中的一些参数为0。回顾式(7),在L2正则化中,如果w∗iwi∗不为零,那么wiwi也不为0,这表明L2正则化不会使参数变得稀疏,而L1正则化有可能通过足够大的αα实现稀疏。L2是对那些与多数特征不同的分量进行衰减,而L1则是舍弃那些低于某个标准的特征。这种稀疏性广泛用于特征选择机制,可以从可用的特征子集中选择出有意义的特征,化简机器学习问题。

2、Dropout 正则化
在训练的过程中随机失活网络中的神经单元,可以防止过拟合现象的发生,但是在测试过程中则不需要执行Dropout。
Dropout在每一层的失活率可以是不同的,一般在 权重参数很多的层数设置的失活率比较高,而在权重参数很少的层数失活率很低,甚至不使用Dropout。
在使用Dropout的时候,网络的损失函数J实际上是不确定的,因为网络中会随机失活神经单元,网络结构是不确定的。
但是我们怎样在训练的过程中得到,代价函数J的下降曲线呢?一般都是在先除去dropout或者把keep.prop设置为1(表示不进行神经元的失活操作),然后进行训练查看损失函数的曲线,确定损失函数正常下后,再dropout.

3、其他正则化方法
数据集增强:对原始的数据集进行旋转、裁剪形成新的数据集,虽然说没有全新的数据集好,但是也扩展了数据集,减少了收集新数据的成本与时间。
提前终止:同时终止了梯度下降与损失函数J的下降,防止过拟合。

输入特征数据的归一化

输入数据的正则化:
1、零均值化:u=输入数据的平均值,然后x(i)-u形成零均值化后的数据,
2、归一化方差:q=输入数据的平方和的,将数据集化成方差为1 的数据集。
在测试集的时候必须要用与训练集相同的正则化参数进行数据的处理。
在这里插入图片描述
为什么使用输入特征数据的归一化呢?对于输入数据的特征差距很大的情况下(例如X1:0-1内,X2:1-100内),很有必要进行归一化,有利于优化损失函数;
但是如果输入数据的特征很相似,可以不用归一化,但一般还是会进行的。
在这里插入图片描述