L1、L2正则化

一、L1正则化

1、L1正则化

  需注意,L1 正则化除了和L2正则化一样可以约束数量级外,L1正则化还能起到使参数更加稀疏的作用,稀疏化的结果使优化后的参数一部分为0,另一部分为非零实值。非零实值的那部分参数可起到选择重要参数或特征维度的作用,同时可起到去除噪声的效果。此外,L1正则化和L2正则化可以联合使用:

  这种形式也被称为“Elastic网络正则化”。

 

L1相比于L2,有所不同:

  • L1减少的是一个常量,L2减少的是权重的固定比例
  • 孰快孰慢取决于权重本身的大小,权重刚大时可能L2快,较小时L1快
  • L1使权重稀疏,L2使权重平滑,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0

实践中L2正则化通常优于L1正则化。

2、为什么要生成稀疏矩阵?

     上面提到L1正则化有助于生成一个稀疏权值矩阵,进而可以用于特征选择。为什么要生成一个稀疏矩阵?

  稀疏矩阵指的是很多元素为0,只有少数元素是非零值的矩阵,即得到的线性回归模型的大部分系数都是0. 通常机器学习中特征数量很多,例如文本处理时,如果将一个词组(term)作为一个特征,那么特征数量会达到上万个(bigram)。在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,或者贡献微小(因为它们前面的系数是0或者是很小的值,即使去掉对模型也没有什么影响),此时我们就可以只关注系数是非零值的特征。这就是稀疏模型与特征选择的关系。

3、L1正则化和特征选择

假设有如下带L1正则化的损失函数: 

 

4.L1针对不可导的正则项如何解决?

【Lasso回归使用L1正则,这个问题可以看做是求解Lasso回归的L1】

  Lasso回归使得一些系数变小,甚至还是一些绝对值较小的系数直接变为0,因此特别适用于参数数目缩减与参数的选择,因而用来估计稀疏参数的线性模型。但是Lasso回归有一个很大的问题,导致我们需要把它单独拎出来讲,就是它的损失函数不是连续可导的,由于L1范数用的是绝对值之和,导致损失函数有不可导的点。也就是说,我们的最小二乘法,梯度下降法,牛顿法与拟牛顿法对它统统失效了。那我们怎么才能求有这个L1范数的损失函数极小值呢?
    两种全新的求极值解法坐标轴下降法(coordinate descent)和最小角回归法( Least Angle Regression, LARS)该隆重出场了。

(1)坐标轴下降法

  坐标轴下降法顾名思义,是沿着坐标轴的方向去下降,这和梯度下降不同。梯度下降是沿着梯度的负方向下降。不过梯度下降和坐标轴下降的共性就都是迭代法,通过启发式的方式一步步迭代求解函数的最小值。

  于是我们的优化目标就是在θ的n个坐标轴上(或者说向量的方向上)对损失函数做迭代的下降,当所有的坐标轴上的θi(i = 1,2,...n)都达到收敛时,我们的损失函数最小,此时的θ即为我们要求的结果。

  

以上就是坐标轴下降法的求极值过程,可以和梯度下降做一个比较:

  • a) 坐标轴下降法在每次迭代中在当前点处沿一个坐标方向进行一维搜索 ,固定其他的坐标方向,找到一个函数的局部极小值。而梯度下降总是沿着梯度的负方向求函数的局部最小值。
  • b) 坐标轴下降优化方法是一种非梯度优化算法。在整个过程中依次循环使用不同的坐标方向进行迭代,一个周期的一维搜索迭代过程相当于一个梯度下降的迭代。
  • c) 梯度下降是利用目标函数的导数来确定搜索方向的,该梯度方向可能不与任何坐标轴平行。而坐标轴下降法法是利用当前坐标方向进行搜索,不需要求目标函数的导数,只按照某一坐标方向进行搜索最小值。
  • d) 两者都是迭代方法,且每一轮迭代,都需要O(mn)的计算量(m为样本数,n为系数向量的维度)

(2)最小角回归法

   最小角回归法对前向梯度算法和前向选择算法做了折中,保留了前向梯度算法一定程度的精确性,同时简化了前向梯度算法一步步迭代的过程。具体算法是这样的:   、

  当θ只有2维时,例子如上图,和Y最接近的是X1,首先在X1上面走一段距离,一直到残差在X1和X2的角平分线上,此时沿着角平分线走,直到残差最够小时停止,此时对应的系数β即为最终结果。此处θ计算设计较多矩阵运算,这里不讨论。

  最小角回归法是一个适用于高维数据的回归算法,其主要的优点有:

  • 特别适合于特征维度n 远高于样本数m的情况。
  • 算法的最坏计算复杂度和最小二乘法类似,但是其计算速度几乎和前向选择算法一样
  • 可以产生分段线性结果的完整路径,这在模型的交叉验证中极为有用

  主要的缺点是:由于LARS的迭代方向是根据目标的残差而定,所以该算法对样本的噪声极为敏感。


转自链接:https://www.jianshu.com/p/2f60e672d4f0

L1正则化的数学推导:

大部分的正则化方法是在经验损失的基础上增加一个结构化损失,用来限制模型的学习能力,提升模型的泛化能力。L1正则化方法即在经验损失的基础上增加参数的一范数作为结构损失。数学表达如下:

我们都知道在模型损失中加入L1正则化可以获得参数的稀疏解,接下来,我们从几何和数学两个角度进行以下解释,不过重点还是在数学推导上。

几乎所有解释L1正则化的文章中都会出现这张图,图中等值线是L的等值线,黑色方形是正则项的图形L1。在图中,当L等值线与
图形L1首次相交的地方就是最优解。上图中L与L1在L1的一个顶点处相交,这个顶点就是最优解。注意到这个顶点的值是(w1,w2)=(0,w)。可以直观想象,因为L1正则项的图形L1是棱形,有很多突出的角(二维情况下四个,多维情况下更多),L等值线与这些角接触的机率会远大于与L1其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择。

 

 

二、L2正则化

1、L2正则化

  在深度学习中,用的比较多的正则化技术是L2正则化,其形式是在原先的损失函数后边再加多一项:


  那加上L2正则项的损失函数就可以表示为:         

  其中θ就是网络层的待学习的参数,λ则控制正则项的大小,较大的取值将较大程度约束模型复杂度,反之亦然。

   L2约束通常对稀疏的有尖峰的权重向量施加大的惩罚,而偏好均匀的参数。这样的效果是鼓励神经单元利用上层的所有输入,而不是部分输入。所以L2正则项加入之后,权重的绝对值大小就会整体倾向于减少,尤其不会出现特别大的值(比如噪声),即网络偏向于学习比较小的权重。所以L2正则化在深度学习中还有个名字叫做“权重衰减”(weight decay),也有一种理解这种衰减是对权值的一种惩罚,所以有些书里把L2正则化的这一项叫做惩罚项(penalty).

  我们通过一个例子形象理解一下L2正则化的作用,考虑一个只有两个参数w1和w2的模型,其损失函数曲面如下图所示。从a可以看出,最小值所在是一条线,整个曲面看起来就像是一个山脊。那么这样的山脊曲面就会对应无数个参数组合,单纯使用梯度下降法难以得到确定解。但是这样的目标函数若加上一项

  则曲面就会变成b图的曲面,最小值所在的位置就会从一条山岭变成一个山谷了,此时我们搜索该目标函数的最小值就比先前容易了,所以L2正则化在机器学习中也叫做“岭回归”(ridge regression)。

2、为什么L2正则化不具有稀疏性?

假设有如下带L2正则化的损失函数:

 

3、为什么L2正则化可以获得值很小的参数?

 dropout正则化

  • 用于解决过拟合问题
  • Dropout存在两个版本:直接(不常用)和反转。(这里只对Inverted Dropout进行说明)
  • dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。(注意是暂时)

上图为Dropout的可视化表示,左边是应用Dropout之前的网络,右边是应用了Dropout的同一个网络。

dropout 如何工作

我们知道,典型的神经网络其训练流程是将输入通过网络进行正向传导,然后将误差进行反向传播。Dropout就是针对这一过程之中,随机地删除隐藏层的部分单元,进行上述过程。
综合而言,上述过程可以分步骤为:

  • 随机删除网络中的一些隐藏神经元,保持输入输出神经元不变
  • 将输入通过修改后的网络进行前向传播,然后将误差通过修改后的网络进行反向传播
  • 对于另外一批的训练样本,重复上述操作

在训练阶段期间对激活值进行缩放,而测试阶段保持不变
下面是对一层神经网络的实施dropout代码实现:

d = np.random.rand(3, 2) < keep_drop
a = np.multiply(a, d)
a /= keep_drop //对激活值进行缩放,为了不影响下一层网络的最后的预期输出值,加上这个步骤来修正损失的值

dropout为何有效

  • 由于每次用输入网络的样本进行权值更新时,隐含节点都是以一定概率随机出现,因此不能保证每2个隐含节点每次都同时出现,这样权值的更新不再依赖于有固定关系隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况,减少神经元之间复杂的共适应性。
  • 由于每一次都会随机地删除节点,下一个节点的输出不再那么依靠上一个节点,也就是说它在分配权重时,不会给上一层的某一结点非配过多的权重,起到了和L2正则化压缩权重差不多的作用。
  • 可以将dropout看作是模型平均的一种,平均一个大量不同的网络。不同的网络在不同的情况下过拟合,虽然不同的网络可能会产生不同程度的过拟合,但是将其公用一个损失函数,相当于对其同时进行了优化,取了平均,因此可以较为有效地防止过拟合的发生。对于每次输入到网络中的样本(可能是一个样本,也可能是一个batch的样本),其对应的网络结构都是不同的,但所有的这些不同的网络结构又同时共享隐含节点的权值,这种平均的架构被发现通常是十分有用的来减少过拟合方法。

dropout使用技巧

  • 在可能出现过拟合的网络层使用dropout
  • dropout也可以被用作一种添加噪声的方法,直接对input进行操作。输入层设为更接近1的数,使得输入变化不会太大

dropout缺点

  • 明确定义的损失函数每一次迭代都会下降,而dropout每一次都会随机删除节点,也就是说每一次训练的网络都是不同的,损失函数不再被明确地定义,在某种程度上很难计算,我们失去了调试工具。

当前Dropout的使用情况

当前Dropout被大量利用于全连接网络,而且一般人为设置为0.5或者0.3,而在卷积隐藏层由于卷积自身的稀疏化以及稀疏化的ReLu函数的大量使用等原因,Dropout策略在卷积隐藏层中使用较少。
总体而言,Dropout是一个超参,需要根据具体的网路,具体的应用领域进行尝试。


原文链接:https://www.jianshu.com/p/257d3da535ab

原文:https://www.cnblogs.com/nxf-rabbit75/p/9954394.html

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值