• 正则化方法小结


    来自:https://mp.weixin.qq.com/s/CDMBQPgzcrjbZ_sX01q2hQ

    在算法中使用正则化的目的是防止模型出现过拟合。

    提到正则化,想到L1范数和L2范数。在这之前,先看LP范数是什么。

    LP范数

    范数简单理解为向量空间中的距离,距离定义很抽象,只要满足非负、自反、三角不等式就可以称之为距离。

    LP范数不是一个范数,而是一组范数,定义为:

    p的范围[1, +∞]。p在(0,1)范围内定义的并不是范数,因为违反了三角不等式。

    根据p的变化,范数也有着不同的变化,借用一个经典的有关p范数的变化图如下:

    上图表示了p在(0,+∞)变化时,单位球(unit ball)的变化情况。

    p范数下定义的单位球都是凸集,但是当0<p<1时,该定义下的单位球不是凸集(0<p<1不是范数)。

    剩下当p = 0时,即L0范数啥玩意?

    L0范数表示向量中非0元素的个数,公式表示如下:

    我们可以通过最小化L0范数,来寻找最少最优的稀疏特征项。但不幸的是,L0范数的最优化问题是一个NP-hard问题(L0范数是非凸的)。因此,在实际应用中我们经常对L0进行凸松弛,理论上有证明,L1范数是L0范数的最优凸近似,因此通常使用L1范数来代替优化L0范数。

    L1范数

    L1范数就是当p = 1时,数学形式:

    通过上式得出,L1范数就是向量各元素的绝对值之和,也被称为是“稀疏规则算子”(Lassoregularization)。

    那么问题来了,为什么稀疏化?

    最直接的两个:

    1. 特征选择
    2. 可解释性

    L2范数

    L2范数就是欧几里得距离,公式:

    L2范数有很多名称,有人把它的回归叫“岭回归”(Ridge Regression),也有人叫它“权值衰减”(Weight Decay)。以L2范数作为正则项可以得到稠密解,即每个特征对应的参数w都很小,接近于0但是不为0;此外,L2范数作为正则化项,可以防止模型为了迎合训练集而过于复杂造成过拟合的情况,从而提高模型的泛化能力。

    L1范数与L2范数的区别

    如图,蓝色圆圈表示问题可能的解范围,橘色圆圈表示正则项可能的解范围。而整个目标函数(原问题+正则项)有解当且仅当两个解范围相切。从图看出,由于L2范数解范围是圆,所以相切的点有很大可能不在坐标轴上,而由于L1范数是菱形(顶点是凸出来的),其相切的点更可能在坐标轴上,而坐标轴上的点有一个特点,其只有一个坐标分量不为0,其他坐标分量为0,即稀疏的。所以有如下结论,L1范数可以导致稀疏解,L2范数导致稠密解。

    从贝叶斯先验的角度看,当训练一个模型时,仅依靠当前的训练数据集是不够的,为了实现更好的泛化能力,往往需要加入先验项,而加入正则项相当于加入了一种先验。

    1. L1范数相当于加入了一个Laplacean先验。
    2. L2范数相当于加入了一个Gaussian先验。

    更详细的L1范数和L2范数区别,点击《L1和L2正则化解释》

  • 相关阅读:
    【WEB前端开发最佳实践系列】高可读的HTML
    【Web前端开发最佳实践系列】标准的HTML代码
    Web服务器配置Gzip压缩提升网站性能
    【Web前端开发最佳实践系列】前端代码推荐和建议
    【前端系列】移动前端开发之viewport的深入理解
    【Spring Boot && Spring Cloud系列】那些Spring Boot中踩过的坑
    【Spring Boot && Spring Cloud系列】Spring Boot的启动器Starter
    【Spring Boot&&Spring Cloud系列】提高数据库访问性能
    【Spring Boot&& Spring Cloud系列】单点登录SSO之OAuth2官方开发文档翻译
    【Spring Boot&& Spring Cloud系列】单点登录SSO概述
  • 原文地址:https://www.cnblogs.com/keye/p/10220206.html
Copyright © 2020-2023  润新知