范数(Norm)

理解AI的数学基石之一,范数。

Posted by Winchell.Wang on June 25, 2024

何为范数

首先,虽然中文的字总有自己特定意涵,但作为外来词的中文翻译,揣测中文翻译背后的深意有可能走火入魔,歪曲理解。毕竟不是每个人都有译者的心境,以及翻译本身也具备相当大的偶然性,没有必要对译名过度解读。范数作为一个数学概念,我们需要将这个名字仅仅作为一个代码,深入到数学本身中,忘却它的代码是一个汉语词。

框定在AI技术中,范数是一个具体的数字反映了一个数据集(一维到任何维度)的尺寸。这个尺寸就类似于电视尺寸的概念。我们一般不会说屏幕是几十厘米乘以几十厘米,而是多少吋。这个多少吋来形容电视屏幕的二维大小就是可以理解为是用了范数的概念来描述电视多大。将概念迁移到数据集上,范数可以描述任何维数的数据集的“尺寸大小”,并且对数据集作倍放或倍缩,范数也同样以相同系数被缩放。再次以电视为例,我们清晰的知道70吋大彩电是55吋电视的1.27(70/55)倍大。同样的,70吋的电视的长宽都同样是55吋电视的1.27倍长。如果我们想以55吋的电视(设为电视A)为基础仿造70吋的电视(设为电视B)。那么新的电视(来自于55吋电视模板,并设为电视C)只需要尺寸为70吋,我们就可以很自信的说这个新的电视(电视C)就是和70吋的电视(电视B)一模一样。

以上就是范数在AI中应用的生活化解释。单一来自于一个数据集的范数只能提供一种模糊的对这个数据集尺寸的概念,无法实际应用。但是,将结构相同的两个数据集范数放在一起比较,我们就可以知道两个数据集的相似程度。如果两个数据集是一模一样的,那么他们范数的比值就会是1,否则是0-1之间的任何值。这就可以成为一种衡量来自AI预测结果与真实值差距,以及不同数据集之间差异的标准。

计算范数

范数的通用公式为:

\[||x||_p=(\sum^n_{i=1}{|x_i|^p})^{1/p}\]

解释为:

将数据集中所有的数(元素)都单独抽出来取绝对值作p次方运算后,全部加和,然后开p次根。

范数是一个标量,且不小于零。

一阶范数

一阶范数(L1)即p为1。字面意思为数据集中所有元素的绝对值之和。L1范数对异常值相对不敏感,因此对低质量数据可以尝试使用该范数。

其数学表达为:

\[||x||_1=\sum^n_{i=1}{|x_i|}\]

二阶范数

二阶范数(L2)即p为2。字面意思为数据集中所有元素平方和开平方根。

L2范数在几何层面上可以反映向量的长度,但这只是范数在二阶的特殊情况。特殊情况为数据集仅有一行数据的一维数据集(即二维的话是[x,y],三维是[x,y,z],四维是[x,y,z,t],等等),反映了二维,三维等等维度上的向量长度。其数学表达如下:

\[||x||_2=\sqrt{\sum^n_{i=1}{x_i^2}}\]

但是如果数据集是类似于如下:

\[\begin{bmatrix} 1,2,3,4,5\\ 6,7,8,9,1 \end{bmatrix}\]

它的二阶范数就失去了几何意义(以我的浅薄知识理解是这样的),并且这样的二维数据集的二阶范数有了新的名字,Frobenius范数。其数学表达为:

\[||x||_2=\sqrt{\sum^{m}_{j=1}\sum^n_{i=1}{x_{j,i}^2}}\]

然而这样肤浅的表达式变化并未改变其计算的本质,即将数据集内所有元素单独取绝对值并执行p次方然后求和并开p次根。

损失函数

此时假设我们有一个真实数据集,并同时有一个来自于AI预测的数据集。两者结构完全相同,那如何知道预测的质量如何呢?将两个数据集作差,将会得到一个新的数据集。如果预测结果十分完美,那么新的数据集将会是处处为0的,而偏差越大,新数据集中就会有越多的元素其数值偏离0越远。对作差得到的数据集求其范数,我们可以轻松想到,其范数如果为0,那么AI做出了完美预测。如果范数为远大于0的值,则AI还需要继续学习。如果其学习后的范数小于上一轮学习,则说明AI的学习是有进步的。

简单的扩展思维,不难得出,在写AI代码时的L1 Loss,L2 Loss等都所意为何了。其本质都是对预测值与真实值的差值的数据集求了指定阶的范数,来评估其在训练过程中是否有进步。

小结

  1. 范数是一种描述数据集特点的方式,尤其是比较多个数据集的相似度。

  2. 范数是不小于零的任意数字。

  3. 1阶和2阶的范数有特殊意义,但不影响范数的本质。

  4. L1范数,L2范数以及Frobenius范数是AI中常用的计算。