到底什么是范数?什么是0范数、1范数、2范数?区别又是什么?

article/2025/10/29 3:08:30

    其实我的专业不是数学专业,只不过在阅读paper时,我们会经常看到0范数或者1范数这些范数问题。本文就来分析看看到时什么是范数?什么是0范数、1范数、2范数?它们的区别又是什么?为了方便某些着急的people,先直观的列举:

  • 0 范数:向量中非零元素的个数。
  • 1 范数: 向量中各个元素绝对值之和。
  • 2 范数: 向量中各个元素平方和的 1/2 次方,L2 范数又称 Euclidean 范数或者 Frobenius 范数。
  • p 范数:为 x 向量(或矩阵)各个元素绝对值 p 次方和的 1/p 次方。

1.l_{p}范数

     首先直观的先抛出定义:一般将向量x的范数l_{p}的定义为,

                                                                         (1)

如果令p=2,则为l_{2}范数。同时我们知道若已知向量为x=\left [ 1,2,5 \right ],则其欧氏范数为,

                                         \left \| x \right \|_{2}=\sqrt{\left ( 1 \right )^{2}+\left ( 2 \right )^{2}+\left ( 5 \right )^{2}}=5.4772

欧式范式就是l_{2}范数,它用于表示向量(或矩阵)的大小(算术平方和)。

2.l_{0}范数

     令公式(1)中的p=0,则得到l_{0}范数的数学表达式,

     l_{0}范数表示向量x中非0元素的个数。在很多范例模型中都会遇到l_{0}范数,比如压缩感知中,我们遇到凸优化问题的求解,就会遇到这个典型的问题(虽然实际中大多转化为求解l_{1}范数,下面会讲到什么是l_{1}范数)。正是因为,所以我们想要直接求解它是十分困难的,这个优化模型在数学上被认为是一个NP-hard问题(什么是NP-hard问题,请看这里https://blog.csdn.net/weixin_42368982/article/details/108187284)。这里我们只需要知道,求解一个NP-hard问题是很复杂、也不可能找到解的,所以我们十分需要转化。

3.l_{1}范数

      l_{1}范数的数学定义同l_{0}范数相似,令p=1,即。我们可以直观的从范数的原始定义公式(1)中找打l_{1}范数的物理意义,l_{1}范数等于向量x中所有元素绝对值之和。从l_{1}范数的优化公式中我们会发现,求解l_{1}范数相比求解l_{0}范数简单太多,我们可以借助现有凸优化算法(线性规划或是非线性规划),找到我们想要的可行解。

     鉴于l_{1}范数的实用性如此之大,现在我们来细细讨论l_{1}范数。而我们的l_{1}范数有两个很值得讨论的点:正则项与稀疏解。在正式进入讨论前,我们先看看什么是过拟合问题?

3.1过拟合问题

     拟合问题是我们在机器学习过程中一定会面临的问题。那么什么样的问题是拟合问题呢?

     机器学习利用模型对数据进行拟合,机器要对未曾在训练集合出现的样本进行正确预测,这是机器学习的真正目的。而拟合问题又包含欠拟合问题和过拟合问题。机器学习的数据集包含训练集和测试集。欠拟合和过拟合的性能的区别在于过拟合对于训练集的学习能力更强,而在测试集上的性能较差,而欠拟合在训练集和测试集上表现的性能都较差。

     形象的说,若已知两类数据集分别为【请,清,静,婧】;【是,额,时,更】,现在机器来判断“菁”是属于那一类。在过拟合的情况下,机器会把“菁”判断为不是第一类,所以它是第二类。但实际上“菁”存在第一类中都有的“青”,所以实际上应该判断为第一类。过拟合就把这个训练集单个样本自身的特点都捕捉到,并分为一类。,这就是过拟合问题。这样l_{1}范数的正则项的作用就体现出来了,往下看吧!

3.2l_{1}范数:正则项与稀疏解

3.2.1正则项

      l_{1}范数会让你的模型变傻一点,相比于记住事物本身,此时机器更倾向于从数据中找到一些简单的模式。例如上面距离的数据集:【请,清,静,婧】;【是,额,时,更】。

     变傻前的机器:【请,清,静,婧】

     变傻后的机器:【青,0,0,0】。相比于原来,它记住了简单的特征,这就是 l_{1}范数正则项的作用。

为什么正则化可以防止过拟合问题?

     拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,即抗扰动能力强。

     正则化会使模型偏好于更小的权值。更小的权值意味着更低的模型复杂度;添加 正则化相当于为模型添加了某种先验条件,这个先验条件限制了参数的分布,从而降低了模型的复杂度。

     模型的复杂度降低,意味着模型对于噪声与异常点的抗干扰性的能力增强,从而提高模型的泛化能力。直观来说,就是对训练数据的拟合刚刚好,不会过分拟合训练数据(就向上面判断字符“菁”的问题一样)。

3.2.2稀疏解

   了解了l_{1}范数的正则项的作用后,稀疏解的问题又出来了。这里解决两个问题:(1)为什么增加l_{1}范数能够保证稀疏?(2)为什么l_{1}范数找到一个稀疏解呢?

(1)为什么增加l_{1}范数能够保证稀疏? 

     由l_{1}范数的物理意义我们知道,l_{1}范数表示向量(或矩阵)所有元素的绝对值之和。现在就随机选取两个向量x=\left [ 1,0.1 \right ]y=\left [ 100,0 \right ],其中向量x和向量yl_{1}范数分别如下,

\left \| x \right \|_{1}=|1|+|0.1|=1.1\left \| x \right \|_{2}=|100|+|0|=100。明显向量x不是稀疏向量,且仅仅是看l_{1}范数的数值大小,我们可能很难比较向量的稀疏程度,因此实际需求中我们还需要结合损失函数。所以说增加l_{1}范数能够更大几率的保证稀疏。

(2)为什么l_{1}范数找到一个稀疏解呢?

     回到前面的问题,Ax=b在平面直角坐标系上,假设一次函数y=ax+b经过(2,5)这一点。所以b=5-2a,参数a,b的解有无数组 (在蓝线上的点都是解)。

      这里先假设向量的l_{1}范数是一个常数c,将其图形化在xy坐标轴上为一个正方形 (红色线;l_{1}范数表示元素的绝对值之和,若绝对值之和为常数,则相加之和为一常数),不过在这些边上只有很少的点是稀疏的,即与坐标轴相交的4个顶点。 这样这些同心正方形们可以和解相交,最终找到我们满足稀疏性要求的解,同时这个交点使得l_{1}范数取得最小值。

 


http://chatgpt.dhexx.cn/article/mY6lPMuy.shtml

相关文章

向量和矩阵的各种范数比较(1范数、2范数、无穷范数等等)

一、向量的范数 首先定义一个向量(一般用列向量表示)为: 1.1 向量的1范数 向量的1范数即:向量的各个元素的绝对值之和,上述向量a的1范数结果就是:29,MATLAB代码实现为:norm(a,1&am…

未为python配置解释器_Python环境安装,解释器配置

下载安装完Pycharm后,创建一个py文件编写代码会提示No Python interpreter configured for the project,这是提示要配置解释器,可以去官网下载安装。 从官网下载https://www.python.org/downloads/windows/ 以我的电脑为例,选择64…

Python开发环境安装及配置

提示:在Python中,一切皆为对象 文章目录 前言初始PythonPyCharm开发环境主要包括以下特点:一、Python自带编辑器IDLE使用二、Anaconda集成环境安装及使用Anaconda环境创建 三、PyCharm环境安装及使用 前言 提示:这里可以添加本文…

2021最新版Python环境安装变量配置超详细教程,看了就会

Python都更新到3.10最新版本了,赶快下载更新,新功能很香。本文图文并茂教你安装和变量配置,我保证你看了就会,小白赶快学起来。先了解下新功能有哪些。 目录 一、Python 3.10 相比 3.9 的新增特性 带圆括号的上下文管理器 更清楚的…

超详细的Python安装和环境搭建教程

目录 安装简介: 第一步,下载Python 第二步,安装Python 1.勾选 And Python 3.9 PATH 选项 2.选择自定义安装(Cutormize installation) 第三步,检查Python是否正常安装成功 安装错误 1.重复安装 2.Python不是内部命令或外部命…

Python教程一:Python环境安装(Anaconda3版本)

前言 Anaconda包括Conda、Python及大部分集成的工具包。 初学者建议直接安装Anaconda3会省去很多工具包的安装过程。 优势:若新建一个项目或者使用不同于Anoconda装的基本Python版本,Anoconda就可以实现同时多个python版本的管理。 注:安…

Linux安装Python环境

本文基于如下Linux系统版本: 1、默认情况下,Linux会自带安装Python,可以运行python --version命令查看,如图: 我们看到Linux中已经自带了Python2.7.5。再次运行python命令后就可以使用python命令窗口了(C…

详解离线安装Python库

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

macOS Python安装教程

1在地址栏里输入https://www.python.org/,这是python的官网,进入python官网 (之前一直打不开页面,后来发现自己在/etc/hosts 中配置了: 0.0.0.0 account.jetbrains.com 0.0.0.0 www.jetbrains.com )…

python环境安装(一)

之前安装过很多次了,但是每次到新电脑上或者版本更新后都又要找在线教程。今天打算把流程写下来,便于以后随便在其他电脑上可以安装。 步骤一: 打开python官网,找到下载地址:https://www.python.org/downloads/下载需…

Mac m1 python软件环境安装配置

Mac m1 python软件环境安装配置 一、安装miniconda二、安装chrome浏览器三、安装git四、安装homebrew五、安装vscode选择python解释器vscode快捷键-Mac版自定义快捷键设置右键从vscode打开项目代码设置命令行输入code . 打开vscode调整窗口整体字体大小 待办 一、安装miniconda…

Mac 电脑安装 Python 环境

大家好啊,我是大田 2022.04.08,日更第 62 / 365 天。 今天来给大家分享下在 Mac 电脑上如何安装 Python 环境。 一、下载地址 https://www.python.org 二、安装步骤 1、点击 Downloads -> macOS -> Python 3.10.4 2、点击允许 3、安装Python&…

Python 环境的搭建与安装

引言 当我们编写 Python 代码时,我们得到的是一个包含 Python 代码的以.py为扩展名的文本文件。要运行代码,就需要 Python解释器 去执行.py文件。 通常我们将 Python 解释型语言,而对于 C/C 则归为编译型语言。 解释器(英语&#…

Linux 安装Python环境

1.安装编译Python时所需的环境 sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev2.从官网获取最新版本Python源码包 Python官网 这里以 Python3.9.10.tgz为例 …

python环境的安装(Windows)

步骤一安装: 打开python官网https://www.python.org/ 点击Downloads,选择Windows进入后根据自己的电脑是32位还是64位(右击此电脑属性查看)选择相应的版本下载(注意:要选择Windows installer那个为运行程序&#xf…

Python环境的安装及配置

目录 1.安装运行环境Python 2.安装开发环境PyCharm 3.环境的配置 1.安装运行环境Python 1)进入官网 浏览器搜索Python 找到官网,点击进去 2)找到下载页面 进入官网后,按顺序点击 点击之后浏览器左下角出现下载状态 下载完成…

Win11系统Python环境安装保姆级教程

1.访问网站www.python.org 2.点击Downloads--All releases进行下载 3.进入下载界面后进入Looking for a specific release按照自己的需求选择版本进行下载 4. 下载完成后选择双击运行即可 5. 安装第一步点击Customize installation选项(选择第二个Customize install…

python环境安装 (win7)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、下载python1.下载你想要的版本,我这里下载的是[3.10.0版本](https://www.python.org/downloads/release/python-3100/)2.点击安装,出现下…

python环境下安装OpenCV

1.winR打开控制台并输入cmd 2.输入 pip install opencv-python 第一次可能因为没有安装numpy会出现warning ,但是系统会自己安装numpy,安装完numpy之后,就会显示opencv-python安装成功 3.可再次输入 pip install opencv-python进行验证,如显…

Python环境安装配置tips

Add Python to Path 自动添加 python 路径到环境变量(path) 安装 python 的时候,建议勾选 Add Python ${ver} to Path 选项 勾选后,安装完 python 后,不用再去手动配置环境变量如果未勾选该选项,也不必写在…