美文网首页
第13-1节 稀疏性正则化 (Regularization f

第13-1节 稀疏性正则化 (Regularization f

作者: 努力奋斗的durian | 来源:发表于2018-08-04 09:53 被阅读129次

    文章转载自Google,最近更新:2018-08-4

    Google上线了一个“机器学习速成课程”,英文简称MLCC。这个课程节奏紧凑、内容实用。课程基本可以全程中文(包括视频),免费,并且有相关的练习.

    如果可以翻墙的小伙伴,可以看看,链接如下:机器学习速成课程

    具体内容如下:
    稀疏矢量通常包含许多维度。创建特征组合会导致包含更多维度。由于使用此类高维度特征矢量,因此模型可能会非常庞大,并且需要大量的 RAM。

    在高维度稀疏矢量中,最好尽可能使权重正好降至 0。正好为 0 的权重基本上会使相应特征从模型中移除。 将特征设为 0 可节省 RAM 空间,且可以减少模型中的噪点。

    以一个涵盖全球地区(不仅仅只是涵盖加利福尼亚州)的住房数据集为例。如果按分(每度为 60 分)对全球纬度进行分桶,则在一次稀疏编码过程中会产生大约 1 万个维度;如果按分对全球经度进行分桶,则在一次稀疏编码过程中会产生大约 2 万个维度。这两种特征的特征组合会产生大约 2 亿个维度。这 2 亿个维度中的很多维度代表非常有限的居住区域(例如海洋里),很难使用这些数据进行有效泛化。 若为这些不需要的维度支付 RAM 存储费用就太不明智了。 因此,最好是使无意义维度的权重正好降至 0,这样我们就可以避免在推理时支付这些模型系数的存储费用。

    我们或许可以添加适当选择的正则化项,将这种想法变成在训练期间解决的优化问题。

    L2 正则化能完成此任务吗?遗憾的是,不能。 L2 正则化可以使权重变小,但是并不能使它们正好为 0.0。

    另一种方法是尝试创建一个正则化项,减少模型中的非零系数值的计数。只有在模型能够与数据拟合时增加此计数才有意义。 遗憾的是,虽然这种基于计数的方法看起来很有吸引力,但它会将我们的凸优化问题变为非凸优化问题,即 NP 困难。 (如果您仔细观察,便会发现它与背包问题关联。) 因此,L0 正则化这种想法在实践中并不是一种有效的方法。

    不过,L1 正则化这种正则化项的作用类似 L0,但它具有凸优化的优势,可有效进行计算。因此,我们可以使用 L1 正则化使模型中很多信息缺乏的系数正好为 0,从而在推理时节省 RAM。

    L1 和 L2 正则化。

    L2 和 L1 采用不同的方式降低权重:

    • L2 会降低权重的平方。
    • L1 会降低 |权重|。

    因此,L2 和 L1 具有不同的导数:

    • L2 的导数为 2 * 权重。
    • L1 的导数为 k(一个常数,其值与权重无关)。

    您可以将 L2 的导数的作用理解为每次移除权重的 x%。如 Zeno 所知,对于任意数字,即使按每次减去 x% 的幅度执行数十亿次减法计算,最后得出的值也绝不会正好为 0。(Zeno 不太熟悉浮点精度限制,它可能会使结果正好为 0。)总而言之,L2 通常不会使权重变为 0。

    您可以将 L1 的导数的作用理解为每次从权重中减去一个常数。不过,由于减去的是绝对值,L1 在 0 处具有不连续性,这会导致与 0 相交的减法结果变为 0。例如,如果减法使权重从 +0.1 变为 -0.2,L1 便会将权重设为 0。就这样,L1 使权重变为 0 了。

    L1 正则化 - 减少所有权重的绝对值 - 证明对宽度模型非常有效。

    请注意,该说明适用于一维模型。

    点击下面的“播放”按钮 (play_arrow),比较 L1 和 L2 正则化对权重网络的影响。

    2.Playground 练习

    正则化练习

    本练习包含一个有些混乱的小型训练数据集。在这种情况下,过拟合问题比较令人担忧。 正则化可能会有所帮助,但采用哪种形式的正则化呢?

    本练习包含 5 个相关的任务。为了简化这 5 个任务之间的比较,请在单独的标签中运行每个任务。 请注意,连接 FEATURES 和 OUTPUT 的线的厚度表示每个特征的相对权重。


    问题:

    1) 从 L2 正则化转换到 L1 正则化对测试损失与训练损失之间的差值有何影响?
    2) 从 L2 正则化转换到 L1 正则化对已知权重有何影响?
    • L2正则化,学习速率0.01,正则化率0
      输出
      测试损失 0.247
      训练损失 0.075
      |测试损失-训练损失|=0.172
      已知权重x_{1}权重为-0.93,x_{2}权重为-0.84,x_{1}^{2}权重为0.0075,x_{2}^{2}权重为0.0042,x_{1}x_{2}权重为1.0
    • L1正则化,学习速率0.01,正则化率0
      输出
      测试损失 0.246
      训练损失 0.075
      |测试损失-训练损失|=0.17
      已知权重x_{1}权重为-0.93,x_{2}权重为-0.83,x_{1}^{2}权重为0.0073,x_{2}^{2}权重为0.0041,x_{1}x_{2}权重为1.0

    总结:

    • 从 L2 正则化转换到 L1 正则化之后,测试损失与训练损失之间的差值明显减少。
    • 从 L2 正则化转换到 L1 正则化之后,所有已知权重都有所减少。
    3) 增加 L1 正则化率 (lambda) 对已知权重有何影响?
    • L1正则化,学习速率0.01,正则化率0.1
      输出
      测试损失 0.166
      训练损失 0.122
      |测试损失-训练损失|=0.044
      已知权重x_{1}权重为-0.063,x_{2}权重为-0.063,x_{1}^{2}权重为0.0,x_{2}^{2}权重为0.0,x_{1}x_{2}权重为0.21

    • L1正则化,学习速率0.01,正则化率3
      输出
      测试损失 0.290
      训练损失 0.268
      |测试损失-训练损失|=0.022
      已知权重x_{1}权重为0.0,x_{2}权重为0.0,x_{1}^{2}权重为0.0,x_{2}^{2}权重为0.0,x_{1}x_{2}权重为0.042

    总结:增加 L1 正则化率一般会减小已知权重;不过,如果正则化率过高,该模型便不能收敛,损失也会很高。

    2.检查您的理解情况

    题目1:L1 正则化

    假设某个线性模型具有 100 个输入特征:

    • 其中 10 个特征信息丰富。
    • 另外 90 个特征信息比较缺乏。

    假设所有特征的值均介于 -1 和 1 之间。以下哪些陈述属实?

    A、L1 正则化可能会使信息丰富的特征的权重正好为 0.0。
    B、L1 正则化会使大多数信息缺乏的权重正好为 0.0。
    C、L1 正则化会使很多信息缺乏的权重接近于(但并非正好是)0.0。

    答案是;AB,具体解析如下:

    A解析:请注意,L1 正则化可能会使以下类型的特征的权重正好为 0:

    • 信息缺乏的特征。
    • 不同程度的信息丰富的特征。
    • 与其他类似的信息丰富特征密切相关的信息丰富特征。

    B解析:ambda 充分的 L1 正则化往往会使信息缺乏的权重正好为 0.0。这样,这些信息缺乏的特征便会远离模型。

    C解析:一般来说,lambda 充分的 L1 正则化往往会使信息缺乏的特征的权重正好为 0.0。 与 L2 正则化不同,无论权重距 0.0 有多远,L1 正则化都很难使权重降低但不为 0.0。

    题目2:L1 和 L2 正则化

    假设某个线性模型具有 100 个输入特征,这些特征的值均介于 -1 到 1 之间:
    其中 10 个特征信息丰富。
    另外 90 个特征信息比较缺乏。
    哪种类型的正则化会产生较小的模型?

    A、L1 正则化。
    B、L2 正则化。

    答案是;A,具体解析如下:

    A解析:L1 正则化往往会减少特征的数量。也就是说,L1 正则化常常会减小模型的大小。
    B解析:L2 正则化很少会减少特征的数量。 也就是说,L2 正则化很少会减小模型的大小。

    相关文章

      网友评论

          本文标题:第13-1节 稀疏性正则化 (Regularization f

          本文链接:https://www.haomeiwen.com/subject/xfmpvftx.html