一、dropout
keras.layers.Dropout()
二、正则化
简单来说,正则化是一种为了减小测试误差的行为(有时候会增加训练误差)。我们在构造机器学习模型时,最终目的是让模型在面对新数据的时候,可以有很好的表现。当你用比较复杂的模型比如神经网络,去拟合数据时,很容易出现过拟合现象(训练集表现很好,测试集表现较差),这会导致模型的泛化能力下降,这时候,我们就需要使用正则化,降低模型的复杂度。
L1 & L2范数:
在图中可以有比较直观的感受是,过拟合时,分类边界的起伏会更大,也就是在部分点斜率更大,而正常拟合时,分类边界更加平缓。这也是为什么在目标函数中加入“惩罚项”可以达到正则化的效果,“惩罚项”可以使每个参数趋向更小,在求导时斜率也会更小,等于变相的让模型更加简单了,更加简单的模型当然更加不容易过拟合。
三、正则化相关问题
1.L2正则化可以降低过拟合的原因?
λ过大时,要使得代价函数J小,就会导致W过小(趋近于0),从而导致部分神经元几乎不参与权值更新,降低神经网络模型的复杂度。
2.为什么参数越小代表模型越简单?
模型越复杂,越尝试对所有样本进行拟合(包括异常点),这导致在较小的区间中产生较大的波动,这体现在这个区间的导数比较大。只有较大的参数才可能产生较大的导数,所以参数越小代表模型越简单。
3.L1实现参数的稀疏,有什么好处?
稀疏的参数在一定程度上实现了特征选择,将无用的特征权重置为0。
4.L1和L2范数为什么可以避免过拟合?
下图中的平方误差项为未加入正则化项时的目标函数。目标函数的等高线和L1,L2范数函数第一次相交时得到最优解。
L1范数:符合拉普拉斯分布,不完全可微。最优值出现在坐标轴上,因此产生稀疏权重矩阵,防止过拟合。
L2范数:符合高斯分布,完全可微。在最小化正则项时,参数不断趋向于0,最后获得很小的参数,降低了模型的复杂度,避免了过拟合。
四、参数选择原则
1.过拟合:添加更多层,更大的层,更多训练次数
2.抑制过拟合:更多训练数据,dropout,正则化,图像增强
3.再次调节超参数:学习速率,隐藏层单元数,训练次数