《Deep Learning》学习3——L2、L1正则化

前端之家收集整理的这篇文章主要介绍了《Deep Learning》学习3——L2、L1正则化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1. 容量、过拟合、欠拟合(为什么需要正则化?)

机器学习两个重要过程分别是训练和预测,在训练过程中,学习的目标是降低训练误差,然而,降低训练误差只是为了达到目标采取的手段,真正的目标是预测,是预测误差,也称泛化误差很小。泛化的含义是在先前未观测到的输入上表现良好的能力。
训练后可能达到的效果有三种:
A. 训练误差大,泛化误差也大
B. 训练误差小,泛化误差大
C. 训练误差小,泛化误差也小
第一种是欠拟合、第二种是过拟合,第三种才是我们希望的状态。
模型的容量是指模型拟合各种函数的能力。训练得到的模型容量是表示容量,而预测表征的容量才是有效容量。两个容量都偏小是欠拟合状态,算法迭代不够,学习不到位;训练误差小,而泛化误差大是过拟合状态,迭代过头了,或者数据集太小,参数拟合太细节化了。
解决欠拟合需要增加参数或者增加迭代次数解决过拟合需要弱化一些次要参数或者丰富训练数据集。
个人总结了解决过拟合的方法有:增加数据集数量、对训练数据做数据增强、参数惩罚、dropout,这一系列方法都能降低泛化误差。修改学习算法,降低泛化误差而非训练误差的过程称为正则化。

2. L2参数正则化

参数范数惩罚是在目标函数添加一个惩罚项,组成新的目标函数进行优化。为什么这样做能起到正则化的作用呢?推导如下:
L2参数正则化添加的惩罚项 是w的二阶范数平方乘惩罚系数

未加惩罚项前的目标函数 ,假设 为最优目标函数,此时,在 处针对w做 的二阶泰勒展示,可得:

梯度为

这里需要注意的是, 表示所有的参数,包括权重w和偏执b,但是只对权重做正则化,因为每一个偏执是单一变量,不对其做正则化也不会导致太大方差,做了反而可能出现欠拟合。

加入新的目标函数

梯度为

假设 为最优参数,在最优参数位置梯度为0,因此

转换后

H是目标函数在 处的Hessian矩阵,H为实对称矩阵,因此,H可以分解成 ,且Q为标准正交基,因此,且,

根据特征分解的性质, 是特征值组成的对角矩阵(diag(λ1,λ2,…)),而I是单位矩阵,因此:

对于特征值以及其对应的特征向量,该维权重

因此,权重衰减是按照H的特征向量方向,按照的比例缩放。特征分解中已经提到特征值越大,说明该维特征对模型的影响越明显,越主要,而越大,越接近于1,该维权重保存越完整,越小,该维特征越次要,越接近于0,权重衰减越厉害。
因此,L2的目标是对能显著减小目标函数方向上的权重保留完整,在无助于目标减小的方向上权重衰减明显。

3. L1正则化

如上L2权重衰减的理论依据很充分,但是L2几乎保留了所有的参数,而L1正则化能让权重稀疏化。L1正则化是在目标函数上加w的L1范数组成新的目标函数。新的目标函数

其中
对新的目标函数进行泰勒二次近似,可得

对 梯度为
在最小目标函数

由于权重大于等于0,因此



也就是设定了一个界限,小于这个界限的权重全部衰减为0,大于这个界限的权重取高出界限的部分为新的权重。为Hessian矩阵的对i行i列,也就是目标函数对求二阶导。
权重矩阵的稀疏性由α控制,α越大,被衰减为0的权重越多,矩阵稀疏性越强,α越小,保留下来的权重越多。

无论是L2还是L1,其中的α都是模型的超参数,超参数是非训练得到的,因此,它可以自定义,也可以通过某种规则制定或调解,但调节过程在训练之外。

原文链接:https://www.f2er.com/regex/358064.html

猜你在找的正则表达式相关文章