L1-008 求整数段和

题解 CF1559E

  返回  

一文看明白为何L1-norm能保证稀疏性

2021/8/21 10:50:52 浏览:

本文翻译自:https://blog.mlreview.com/l1-norm-regularization-and-sparsity-explained-for-dummies-5b0e4be3938a

好吧,我想我就是很愚蠢。 在理解一个抽象/数学概念时,我必须把它转化到一张图像中,我必须在脑海中看到并触摸它。 我需要几何、物体、想法背后的直觉,以及现实生活中生动的比喻。

有时当我发现人们不会这样思考或者至少不会这样解释事情时,而是指着方程式和论文对我说没有简单的解释,我就很生气。 通常在我仔细考虑之后,我可以找到对这些想法简单而直观解释。 就在昨天,当我试图理解应用于机器学习中的L1 范数正则化为什么能保证稀疏性时,就有这样的一个经历。 因此,我想写这样一个博客来直观的阐述其背后的原理。

在小数据集上执行机器学习任务时,经常会遇到过拟合的问题,模型准确地记住了所有训练数据,包括噪声和不相关的特征。 这样的模型通常在新的测试集上或以前从未见过的真实数据上表现不佳。 由于模型过于认真地对待训练数据,它没有从中学到任何有意义的模式,而只是记住了它所看到的一切。

现在,解决此问题的一种解决方案称为正则化。 这个想法是将 L1 范数应用于机器学习问题的解向量(在深度学习的情况下,它是神经网络权重。),并试图使其尽可能小。 因此,如果您的初始目标是找到最佳向量 x 以及最小化损失函数 f(x),那么您的新任务应该将 x 的 L1 范数纳入公式,找到最小值 (f(x) + L1-norm(x))。 他们经常跟你讲的是:加入 L1 范数后往往可以得到稀疏解。 稀疏意味着解向量 x 的大部分分量(权重)为零,只有少数是非零的。 而稀疏的解决方案可以避免过度拟合。

就是这样,这就是他们在大多数文章、教科书、材料中的解释方式。 不加解释地提出一个想法就像在我的脑后推一把长矛。

不知道你们是怎么想的,但使用 L1 范数来确保稀疏性从而避免过度拟合的原因对我来说并不是那么的显而易见。 我花了一些时间才弄清楚原因。 基本上,我有这些问题:

  1. 为什么小的 L1 范数会给出稀疏解?
  2. 为什么稀疏解决方案可以避免过拟合?
  3. 正则化的真正作用是什么?

我最初的困惑来自这样一个事实,即我只看 L1 范数(忽略损失函数),只考虑 L1 范数很小意味着什么。 然而,我真正应该做的是将损失函数和 L1 范数惩罚作为一个整体来考虑。

让我从头开始解释,过拟合问题。 我想用一个具体的例子。 假设你购买了一个机器人,并想通过查看以下示例来教他对汉字进行分类:

图片

前5个汉字属于第一类,后5个汉字属于第二类。 而这 10 个汉字是你目前拥有的唯一训练数据。

图片

然而,这个分类任务来说对机器人来说太简单了。 它有足够大的内存来记住 5 个汉字。 在看到所有 10 个汉字后,机器人学会了一种对它们进行分类的方法:它准确地记住了前 5 个汉字。 只要汉字不是这 5 个中的一个,机器人就会将该汉字归入第二类。

当然,这种方法在 10 个训练汉字上效果很好,因为机器人可以达到 100% 的准确率。 但是,您提供了一个新汉字:

图片

这个汉字本应该属于第一类。 但是因为它从未出现在训练数据中,所以机器人之前没有见过它。 根据其算法,机器人会将这个汉字归入第二类,但很显然这是错误的。

图片

我们人类应该很明显看到这里的模式。 所有属于第一类的汉字都有一个共同的偏旁(提手旁)。 但机器人未能完成这个任务,因为它太聪明了(聪明翻倍聪明误),而且训练数据太小。
这就是过拟合的问题。 但是什么是正则化,为什么稀疏可以避免过拟合?

现在假设你对你的机器人生气了。你用锤子敲打机器人的头部,一边敲击,一边从他的头上甩下它的一些记忆芯片。你基本上已经让机器人变得更笨了。现在,机器人不能记住 5 个汉字,而只能记住一个字符部分。

您让机器人通过查看所有 10 个汉字再次进行训练,并仍然强迫他达到相同的准确度。因为这次他不能记住所有 5 个汉字,所以他得寻找更简单的模式。现在他发现了所有A类汉字的共同点!

这正是 L1 范数正则化所做的。它撞击您的机器人(模型)以使其“变笨”。因此,它必须从数据中寻找更简单的模式,而不是简单地记住东西。以机器人为例,当他能记住5个汉字时,他的“大脑”有一个大小为 5 的向量:[把、打、扒、捕、拉]。现在经过正则化后,他的4个内存槽无法使用。因此新学习到的向量是:[扌, 0, 0, 0, 0],很明显,这是一个稀疏向量。

更正式地说,当您使用较少的训练数据求解大向量 x 时。 x 的解可能有很多。

图片

这里 A 是一个包含所有训练数据的矩阵。 x 是您正在寻找的解向量。 b 是标签向量。
当数据不够多并且你的模型参数很大时,你的矩阵 A 将不够“高”,你的 x 很长。 所以上面的等式看起来像这样:

图片

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号