一 正则化概念
所谓正则化,其实就是在神经网络计算损失值的过程中,在损失后面再加一项。这样损失值所代表的输出值与标准结果间的误差就会受到干扰,导致学习参数w和b无法按照目标方向来调整,实现模型无法与样本完全拟合的结果,从而到达防止过拟合的效果。
理解原理之后,现在就来介绍如何添加这个干扰项。干扰项一定要有这样的特性:
当欠拟合时,希望它对模型误差的影响越小越好,以便让模型快速拟合实际。
如果是过拟合时,希望它对模型误差的影响越大越好,以便让模型不要产生过拟合的情况。
由此引入了两个范式L1和L2:
L1:所有学习参数w的绝对值的和,乘以λ/n。
L2:所有学习参数w的平方,除以训练集的样本大小n。
如果放到损失函数公式里,会将其变形一下:
L1:
L2:
最终的C为等式左边的结果,C0代表真实的loss值,C0后面的那一项就代表正则化了,λ为一个可以调节的参数,用来控制正则化对C0的影响。
对于L2,将其乘以 1/2是为了反向传播时对其求导正好可以将数据规整。
二 TensorFlow中的正则化
L1的正则化函数:
tf.reduce_sum(tf.abs(w))
L2的正则化函数:
tf.nn.l2_loss(t,name=None)
三 参考