美文网首页
第10节 简化正则化 (Regularization for

第10节 简化正则化 (Regularization for

作者: 努力奋斗的durian | 来源:发表于2018-08-02 22:26 被阅读118次

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

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

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

    具体内容如下:

    1.Playground 练习

    组合过度?

    请先完成本练习,然后再观看相应视频或阅读相应文档。本练习有助于您了解特征组合的过度使用。

    任务 1:

    按原样运行具有所有指定向量积特征的模型。模型与数据拟合的方式是否有任何意外? 问题是什么?
    特征x_{1}^{2} ,x_{2}^{2},x_{1},x_{2},x_{1}x_{2},学习速率设置为0.01
    输出
    测试损失 0.096
    训练损失 0.039

    总结:

    出乎意料的是,该模型的决策边界看起来有些不可思议。尤其是,左上方的某个区域朝着蓝色的方向演变,虽然数据中对其没有明显的支持。

    请注意从 INPUT 到 OUTPUT 的 5 条线的相对厚度,这些线表示 5 个特征的相对权重。从 X1 和 X2 发出的线比从自特征组合发出的线厚得多。因此,与常规(未组合)的特征相比,特征组合对模型的贡献要小得多。

    任务 2:

    尝试移除各种向量积特征以提高性能(虽然影响甚微)。为什么移除特征可以提高性能?

    特征x_{1}^{2} ,x_{2}^{2},x_{1},x_{2}学习速率设置为0.01
    输出
    测试损失 0.103
    训练损失 0.043

    特征x_{1}^{2} ,x_{1},x_{2}学习速率设置为0.01
    输出
    测试损失 0.091
    训练损失 0.050

    特征 x_{1},x_{2}学习速率设置为0.01
    输出
    测试损失 0.080
    训练损失 0.050

    总结:

    移除所有特征组合可获得更稳定的模型(左上角不再有过拟合的曲线边界),并可使测试损失收敛。

    经过 1000 次迭代之后,测试损失的值应该略低于使用特征组合时的相应值(虽然您的结果可能会因数据集而略有不同)。

    本练习中的数据基本上是线性数据加噪点。 如果我们使用的模型太复杂(如组合过多),该模型便有机会与训练数据中的噪点拟合,但这样往往会降低该模型在测试数据方面的性能。

    2.L₂ 正则化

    请查看以下泛化曲线,该曲线显示的是训练集和验证集相对于训练迭代次数的损失。


    图 1. 训练集和验证集损失

    图 1 显示的是某个模型的训练损失逐渐减少,但验证损失最终增加。换言之,该泛化曲线显示该模型与训练集中的数据过拟合。根据奥卡姆剃刀定律,或许我们可以通过降低复杂模型的复杂度来防止过拟合,这种原则称为正则化

    也就是说,并非只是以最小化损失(经验风险最小化)为目标:

    而是以最小化损失和复杂度为目标,这称为结构风险最小化

    现在,我们的训练优化算法是一个由两项内容组成的函数:一个是损失项,用于衡量模型与数据的拟合度,另一个是正则化项,用于衡量模型复杂度。

    机器学习速成课程重点介绍了两种衡量模型复杂度的常见方式(这两种方式有些相关):

    • 将模型复杂度作为模型中所有特征的权重的函数。
    • 将模型复杂度作为具有非零权重的特征总数的函数。(后面的一个单元介绍了这种方法。)

    如果模型复杂度是权重的函数,则特征权重的绝对值越高,对模型复杂度的贡献就越大。

    我们可以使用 L_{2} 正则化公式来量化复杂度,该公式将正则化项定义为所有特征权重的平方和:

    在这个公式中,接近于 0 的权重对模型复杂度几乎没有影响,而离群值权重则可能会产生巨大的影响。

    例如,某个线性模型具有以下权重:

    L_{2} 正则化项为 26.915:

    但是 w_{3}(上述加粗内容)的平方值为 25,几乎贡献了全部的复杂度。所有 5 个其他权重的平方和对 L_{2} 正则化项的贡献仅为 1.915。

    关键字词
    1. 正则化 (regularization)
      对模型复杂度的惩罚。正则化有助于防止出现过拟合,包含以下类型:
    1. 结构风险最小化 (SRM, structural risk minimization)

    一种算法,用于平衡以下两个目标:

    • 期望构建最具预测性的模型(例如损失最低)。
    • 期望使模型尽可能简单(例如强大的正则化)。

    例如,旨在将基于训练集的损失和正则化降至最低的模型函数就是一种结构风险最小化算法。与经验风险最小化相对。

    1. 过拟合 (overfitting)

    创建的模型与训练数据过于匹配,以致于模型无法根据新数据做出正确的预测。

    1. L2 正则化 (L₂ regularization)

    一种正则化,根据权重的平方和来惩罚权重。L2 正则化有助于使离群值(具有较大正值或较小负值)权重接近于 0,但又不正好为 0。(与 L1 正则化相对。)在线性模型中,L2 正则化始终可以改进泛化。

    3.Lambda

    模型开发者通过以下方式来调整正则化项的整体影响:用正则化项的值乘以名为 lambda(又称为正则化率)的标量。也就是说,模型开发者会执行以下运算:


    执行 L2 正则化对模型具有以下影响

    • 使权重值接近于 0(但并非正好为 0)
    • 使权重的平均值接近于 0,且呈正态(钟形曲线或高斯曲线)分布。

    增加 lambda 值将增强正则化效果。 例如,lambda 值较高的权重直方图可能会如图 2 所示。

    图 2. 权重直方图

    降低 lambda 的值往往会得出比较平缓的直方图,如图 3 所示。

    图 3. 较低的 lambda 值得出的权重直方图

    在选择 lambda 值时,目标是在简单化和训练数据拟合之间达到适当的平衡:

    • 如果您的 lambda 值过高,则模型会非常简单,但是您将面临数据欠拟合的风险。您的模型将无法从训练数据中获得足够的信息来做出有用的预测。

    • 如果您的 lambda 值过低,则模型会比较复杂,并且您将面临数据过拟合的风险。您的模型将因获得过多训练数据特点方面的信息而无法泛化到新数据。

    注意:将 lambda 设为 0 可彻底取消正则化。 在这种情况下,训练的唯一目的将是最小化损失,而这样做会使过拟合的风险达到最高。

    理想的 lambda 值生成的模型可以很好地泛化到以前未见过的新数据。 遗憾的是,理想的 lambda 值取决于数据,因此您需要手动或自动进行一些调整。


    L2 正则化和学习速率拓展

    学习速率和 lambda 之间存在密切关联。强 L2 正则化值往往会使特征权重更接近于 0。较低的学习速率(使用早停法)通常会产生相同的效果,因为与 0 的距离并不是很远。 因此,同时调整学习速率和 lambda 可能会产生令人混淆的效果。

    早停法指的是在模块完全收敛之前就结束训练。在实际操作中,我们经常在以在线(连续)方式进行训练时采取一些隐式早停法。也就是说,一些新趋势的数据尚不足以收敛。

    如上所述,更改正则化参数产生的效果可能会与更改学习速率或迭代次数产生的效果相混淆。一种有用的做法(在训练一批固定的数据时)是执行足够多次迭代,这样早停法便不会起作用。


    关键字词

    1. 早停法 (early stopping)

    一种正则化方法,涉及在训练损失仍可以继续减少之前结束模型训练。使用早停法时,您会在基于验证数据集的损失开始增加(也就是泛化效果变差)时结束模型训练。

    1. 正则化率 (regularization rate)
      一种标量值,以 lambda 表示,用于指定正则化函数的相对重要性。从下面简化的损失公式中可以看出正则化率的影响:

    提高正则化率可以减少过拟合,但可能会使模型的准确率降低。

    1. lambda

    正则化率的同义词。

    (多含义术语,我们在此关注的是该术语在正则化中的定义。)

    4.Playground 练习

    检查 L2 正则化
    本练习包含一个杂乱的小型训练数据集。在这种情况下,过拟合问题比较令人担忧。幸运的是,正则化可能会有所帮助。

    本练习包含 3 个相关的任务。为了简化这 3 个任务之间的比较,请在单独的标签中运行每个任务。

    任务 1:

    运行该模型至少 500 次。请注意以下几点:

    • 测试损失。
    • 测试损失与训练损失之间的差值。
    • 特征和特征组合的已知权重。 (从 FEATURES 到 OUTPUT 的每条线的相对厚度表示相应特征或特征组合的已知权重。 您可以将鼠标悬停在各行来查看确切的权重值。)

    特征x_{1},x_{2},x_{1}^{2} ,x_{2}^{2},x_{1}x_{2},sin(x_{1}),sin(x_{2})学习速率设置为0.03

    输出
    测试损失 0.286
    训练损失 0.130
    |测试损失-训练损失|=0.156
    x_{1}权重为0.5 ,x_{2}权重为1.6,x_{1}^{2} 权重为-0.15,x_{2}^{2}权重为0.080,x_{1}x_{2}权重为-0.4,sin(x_{1})权重为-0.61,sin(x_{2})权重为-1.4

    任务 2:

    (建议在单独的标签页中执行该任务。)将正则化率从 0 增加至 0.3。然后,运行该模型至少 500 次,并找出下列问题的答案:

    • 任务 2 中的测试损失与任务 1 中的测试损失有何不同?
    • 任务 2 中的测试损失与训练损失之间的差值与任务 1 中的对应值有何不同?
    • 任务 2 中的每个特征和特征组合的已知权重与任务 1 中的对应值有何不同?
    • 通过结果可以看出模型复杂度有何特点?

    特征x_{1},x_{2},x_{1}^{2} ,x_{2}^{2},x_{1}x_{2},sin(x_{1}),sin(x_{2})学习速率设置为0.03,正则化率0.03

    输出
    测试损失 0.130
    训练损失 0.172
    |测试损失-训练损失|=0.042
    x_{1}权重为0.27 ,x_{2}权重为0.27,x_{1}^{2} 权重为-0.012,x_{2}^{2}权重为-0.025,x_{1}x_{2}权重为-0.0028,sin(x_{1})权重为-0.063,sin(x_{2})权重为-0.00053

    任务 3:

    尝试不同的正则化率,努力找出最优值。

    特征x_{1},x_{2},x_{1}^{2} ,x_{2}^{2},x_{1}x_{2},sin(x_{1}),sin(x_{2})学习速率设置为0.03,正则化率0.003

    输出
    测试损失 0.267
    训练损失 0.132
    |测试损失-训练损失|=0.135
    x_{1}权重为0.45 ,x_{2}权重为1.4,x_{1}^{2} 权重为-0.13,x_{2}^{2}权重为0.063,x_{1}x_{2}权重为-0.35,sin(x_{1})权重为-0.56,sin(x_{2})权重为-1.2

    特征x_{1},x_{2},x_{1}^{2} ,x_{2}^{2},x_{1}x_{2},sin(x_{1}),sin(x_{2})学习速率设置为0.03,正则化率0.01

    输出
    测试损失 0.569
    训练损失 0.401
    |测试损失-训练损失|=0.168
    x_{1}权重为0.80 ,x_{2}权重为0.73,x_{1}^{2} 权重为-0.2,x_{2}^{2}权重为0.59,x_{1}x_{2}权重为-0.74,sin(x_{1})权重为-0.60,sin(x_{2})权重为0.0031

    特征x_{1},x_{2},x_{1}^{2} ,x_{2}^{2},x_{1}x_{2},sin(x_{1}),sin(x_{2})学习速率设置为0.03,正则化率0.1

    输出
    测试损失 0.123
    训练损失 0.163
    |测试损失-训练损失|=0.04
    x_{1}权重为0.30 ,x_{2}权重为0.38,x_{1}^{2} 权重为-0.024,x_{2}^{2}权重为-0.024,x_{1}x_{2}权重为-0.039,sin(x_{1})权重为-0.16,sin(x_{2})权重为-0.056

    特征x_{1},x_{2},x_{1}^{2} ,x_{2}^{2},x_{1}x_{2},sin(x_{1}),sin(x_{2})学习速率设置为0.03,正则化率0.3

    输出
    测试损失 0.130
    训练损失 0.172
    |测试损失-训练损失|=0.042
    x_{1}权重为0.27 ,x_{2}权重为0.27,x_{1}^{2} 权重为-0.012,x_{2}^{2}权重为-0.025,x_{1}x_{2}权重为-0.0028,sin(x_{1})权重为-0.063,sin(x_{2})权重为-0.00053

    总结:

    将正则化率从 0 增至 0.3 会产生以下影响:

    • 测试损失明显减少。

    注意:虽然测试损失明显减少,训练损失实际上却有所增加。这属于正常现象,因为您向损失函数添加了另一项来降低复杂度。最终,最重要的是测试损失,因为它是真正用于衡量模型能否针对新数据做出良好预测的标准。

    • 测试损失与训练损失之间的差值明显减少。
    • 特征和某些特征组合的权重的绝对值较低,这表示模型复杂度有所降低。

    由于数据集具有随机性,因此无法预测哪个正则化率能得出最准确的结果。 对我们来说,正则化率为 0.3 或 1 时,一般测试损失降至最低。

    5.检查您的理解情况

    题目一:L2 正则化

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

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

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

    A、L2 正则化会使大多数信息缺乏的权重正好为 0.0。
    B、CL2 正则化会使很多信息缺乏的权重接近于(但并非正好是)0.0。
    C、L2 正则化可能会导致对于某些信息缺乏的特征,模型会学到适中的权重。

    答案是BC,具体解析如下:

    A、L2 正则化会使大多数信息缺乏的权重正好为 0.0。
    L2 正则化不会倾向于使权重正好为 0.0。L2 正则化降低较大权重的程度高于降低较小权重的程度。随着权重越来越接近于 0.0,L2 将权重“推”向 0.0 的力度越来越弱。

    B、CL2 正则化会使很多信息缺乏的权重接近于(但并非正好是)0.0。
    正确。L2 正则化会使权重接近于 0.0,但并非正好为 0.0。

    C、L2 正则化可能会导致对于某些信息缺乏的特征,模型会学到适中的权重。
    出乎意料的是,当某个信息缺乏的特征正好与标签相关时,便可能会出现这种情况。在这种情况下,模型会将本应给予信息丰富的特征的部分“积分”错误地给予此类信息缺乏的特征。

    题目二:L2 正则化和相关特征

    假设某个线性模型具有两个密切相关的特征;也就是说,这两个特征几乎是彼此的副本,但其中一个特征包含少量的随机噪点。如果我们使用 L2 正则化训练该模型,这两个特征的权重将出现什么情况?
    A、这两个特征将拥有几乎相同的适中权重。
    B、其中一个特征的权重较大,另一个特征的权重几乎为 0.0。
    C、其中一个特征的权重较大,另一个特征的权重正好为 0.0。

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

    A、这两个特征将拥有几乎相同的适中权重。
    L2 正则化会使特征的权重几乎相同,大约为模型中只有两个特征之一时权重的一半。

    B、其中一个特征的权重较大,另一个特征的权重几乎为 0.0。
    L2 正则化降低较大权重的程度高于降低较小权重的程度。因此,即使某个权重降低的速度比另一个快,L2 正则化也往往会使较大权重降低的速度快于较小的权重。

    C、其中一个特征的权重较大,另一个特征的权重正好为 0.0。
    L2 正则化几乎不会使权重正好为 0.0。相比之下, L1 正则化(稍后会介绍)则会使权重正好为 0.0。

    相关文章

      网友评论

          本文标题:第10节 简化正则化 (Regularization for

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