【机器学习】有关范数

学支持向量机的时候,看不懂原理推导,然后发现自己不会范数,所以就来学习了。这就是递归式学习吗,i了i了。

$l_p-$范数的定义

$\parallel x\parallel$ 表示向量范数,$\parallel X\parallel$ 表示矩阵范数。以下内容中重点记录向量范数。

一般将任意向量 x 的 $l_p$ 范数定义为:

$l_0 -$范数

表示向量 x 中非 0 元素的个数。

在一些机器学习模型中,比如压缩感知,都需要最小化向量的 $l_0-$范数。然而由于 $l_0-$范数的求解是一个 NP 问题,直接求解非常困难,因此一般情况下会将 $l_0-$范数最小化问题改为 $l_1-$范数最小化问题。

$l_1 -$范数

数值上等于向量中所有元素绝对值之和。一个 $l_1 -$范数优化问题为

这个问题相比较于 $l_0 -$范数更容易求解,借助现有凸优化算法(线性规划或非线性规划),就能够找到可行解。鉴于此,依赖于 $l_1 -$范数优化问题的机器学习模型,如压缩感知就能够进行求解了。

$l_2 -$范数

在数值上等于向量元素的平方和也就是模。

$l_1 -$范数:正则项与稀疏解

这里提到了过拟合的问题。之前在数学知识的那一篇里只是简单的提到了这个概念,范数能够让我更好的理解它。

为了避免过拟合问题,一种可行方法是在损失函数中加入正则项,比如 $l_1 -$范数表示的正则项,只要能使得 $l_1 -$范数的数值尽可能小,就能让我们期望的解变成一个稀疏解,也就是让很多的权重系数 $w$ 变成 0。

如果我们想要解决的优化问题是 $f(x)$ 最小化,那么,在加上 $l_1 -$范数正则项后,优化目标就变成:

稀疏解为什么可以避免过拟合

来看一个例子。如下所示图中是交给机器学习的几个数据(汉字)

正常的情况下,应该将前五个带提手旁的字归为一类。但是由于机器太聪明了,所给的训练数据也比较少,所以在过拟合的情况中,机器会得到以下结果:[把,打,扒,捕,拉]​ 这样的分类。

为了防止这种情况的出现,我们选择让机器变得笨一点,不要记住那么多的笔划,而是只记住一些简单的偏旁。

此时,可以将机器的解变为:[扌,0,0,0,0]

总的来说,就是减少解向量的长度,让向量的每一个元素都是真正有用的。

Author: iwannaeat
Link: https://iwannaeat.github.io/2020/11/05/【机器学习】有关范数/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.