tensorflow使用使用L2 regularization正则化修正正则化修正overfitting过拟过拟
合方式合方式
主要介绍了tensorflow使用L2 regularization正则化修正overfitting过拟合方式,具有很好的参考价值,希望对大
家有所帮助。一起跟随小编过来看看吧
L2正则化原理:正则化原理:
过拟合的原理:在loss下降,进行拟合的过程中(斜线),不同的batch数据样本造成红色曲线的波动大,图中低点也就是过
拟合,得到的红线点低于真实的黑线,也就是泛化更差。
可见,要想减小过拟合,减小这个波动,减少w的数值就能办到。
L2正则化训练的原理:在Loss中加入(乘以系数λ的)参数w的平方和,这样训练过程中就会抑制w的值,w的(绝对)值小,
模型复杂度低,曲线平滑,过拟合程度低(奥卡姆剃刀),参考公式如下图:
(正则化是不阻碍你去拟合曲线的,并不是所有参数都会被无脑抑制,实际上这是一个动态过程,是loss(cross_entropy)
和L2 loss博弈的一个过程。训练过程会去拟合一个合理的w,正则化又会去抑制w的变化,两项相抵消,无关的wi越变越小,
但是比零强一点(就是这一点,比没有要强,这也是L2的trade-off),有用的wi会被保留,处于一个“中庸”的范围,在拟合的
基础上更好的泛化。过多的道理和演算就不再赘述。)
那为什么L1不能办到呢?主要是L1有副作用,不太适合这个场景。
L1把L2公式中wi的平方换成wi的绝对值,根据数学特性,这种方式会导致wi不均衡的被减小,有些wi很大,有些wi很小,得到
稀疏解,属于特征提取。为什么L1的w衰减比L2的不均衡,这个很直觉的,同样都是让loss低,让w1从0.1降为0,和w2从1.0
降为0.9,对优化器和loss来说,是一样的。但是带上平方以后,前者是0.01-0=0.01,后者是1-0.81=0.19,这时候明显是减少
w2更划算。下图最能说明问题,横纵轴是w1、w2等高线是loss的值,左图的交点w1=0,w2=max(w2),典型的稀疏解,丢
弃了w1,而右图则是在w1和w2之间取得平衡。这就意味着,本来能得到一条曲线,现在w1丢了,得到一条直线,降低过拟合
的同时,拟合能力(表达能力)也下降了。