到底什么是范数?什么是0范数、1范数、2范数?区别又是什么?
其实我的专业不是数学专业,只不过在阅读paper时,我们会经常看到0范数或者1范数这些范数问题。本文就来分析看看到时什么是范数?什么是0范数、1范数、2范数?它们的区别又是什么?为了方便某些着急的people,先直观的列举:
- 0 范数:向量中非零元素的个数。
- 1 范数: 向量中各个元素绝对值之和。
- 2 范数: 向量中各个元素平方和的 1/2 次方,L2 范数又称 Euclidean 范数或者 Frobenius 范数。
- p 范数:为 x 向量(或矩阵)各个元素绝对值 p 次方和的 1/p 次方。
1.范数
首先直观的先抛出定义:一般将向量的范数的定义为,
(1)
如果令p=2,则为范数。同时我们知道若已知向量为,则其欧氏范数为,
欧式范式就是范数,它用于表示向量(或矩阵)的大小(算术平方和)。
2.范数
令公式(1)中的p=0,则得到范数的数学表达式,
范数表示向量中非0元素的个数。在很多范例模型中都会遇到范数,比如压缩感知中,我们遇到凸优化问题的求解,就会遇到这个典型的问题(虽然实际中大多转化为求解范数,下面会讲到什么是范数)。正是因为,所以我们想要直接求解它是十分困难的,这个优化模型在数学上被认为是一个NP-hard问题(什么是NP-hard问题,请看这里https://blog.csdn.net/weixin_42368982/article/details/108187284)。这里我们只需要知道,求解一个NP-hard问题是很复杂、也不可能找到解的,所以我们十分需要转化。
3.范数
范数的数学定义同范数相似,令p=1,即。我们可以直观的从范数的原始定义公式(1)中找打范数的物理意义,范数等于向量中所有元素绝对值之和。从范数的优化公式中我们会发现,求解范数相比求解范数简单太多,我们可以借助现有凸优化算法(线性规划或是非线性规划),找到我们想要的可行解。
鉴于范数的实用性如此之大,现在我们来细细讨论范数。而我们的范数有两个很值得讨论的点:正则项与稀疏解。在正式进入讨论前,我们先看看什么是过拟合问题?
3.1过拟合问题
拟合问题是我们在机器学习过程中一定会面临的问题。那么什么样的问题是拟合问题呢?
机器学习利用模型对数据进行拟合,机器要对未曾在训练集合出现的样本进行正确预测,这是机器学习的真正目的。而拟合问题又包含欠拟合问题和过拟合问题。机器学习的数据集包含训练集和测试集。欠拟合和过拟合的性能的区别在于过拟合对于训练集的学习能力更强,而在测试集上的性能较差,而欠拟合在训练集和测试集上表现的性能都较差。
形象的说,若已知两类数据集分别为【请,清,静,婧】;【是,额,时,更】,现在机器来判断“菁”是属于那一类。在过拟合的情况下,机器会把“菁”判断为不是第一类,所以它是第二类。但实际上“菁”存在第一类中都有的“青”,所以实际上应该判断为第一类。过拟合就把这个训练集单个样本自身的特点都捕捉到,并分为一类。,这就是过拟合问题。这样范数的正则项的作用就体现出来了,往下看吧!
3.2范数:正则项与稀疏解
3.2.1正则项
范数会让你的模型变傻一点,相比于记住事物本身,此时机器更倾向于从数据中找到一些简单的模式。例如上面距离的数据集:【请,清,静,婧】;【是,额,时,更】。
变傻前的机器:【请,清,静,婧】
变傻后的机器:【青,0,0,0】。相比于原来,它记住了简单的特征,这就是 范数正则项的作用。
为什么正则化可以防止过拟合问题?
拟合过程中通常都倾向于让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什么影响,即抗扰动能力强。
正则化会使模型偏好于更小的权值。更小的权值意味着更低的模型复杂度;添加 正则化相当于为模型添加了某种先验条件,这个先验条件限制了参数的分布,从而降低了模型的复杂度。
模型的复杂度降低,意味着模型对于噪声与异常点的抗干扰性的能力增强,从而提高模型的泛化能力。直观来说,就是对训练数据的拟合刚刚好,不会过分拟合训练数据(就向上面判断字符“菁”的问题一样)。
3.2.2稀疏解
了解了范数的正则项的作用后,稀疏解的问题又出来了。这里解决两个问题:(1)为什么增加范数能够保证稀疏?(2)为什么范数找到一个稀疏解呢?
(1)为什么增加范数能够保证稀疏?
由范数的物理意义我们知道,范数表示向量(或矩阵)所有元素的绝对值之和。现在就随机选取两个向量和,其中向量和向量的范数分别如下,
,。明显向量不是稀疏向量,且仅仅是看范数的数值大小,我们可能很难比较向量的稀疏程度,因此实际需求中我们还需要结合损失函数。所以说增加范数能够更大几率的保证稀疏。
(2)为什么范数找到一个稀疏解呢?
回到前面的问题,在平面直角坐标系上,假设一次函数经过(2,5)这一点。所以,参数的解有无数组 (在蓝线上的点都是解)。
这里先假设向量的范数是一个常数,将其图形化在xy坐标轴上为一个正方形 (红色线;范数表示元素的绝对值之和,若绝对值之和为常数,则相加之和为一常数),不过在这些边上只有很少的点是稀疏的,即与坐标轴相交的4个顶点。 这样这些同心正方形们可以和解相交,最终找到我们满足稀疏性要求的解,同时这个交点使得范数取得最小值。
到底什么是范数?什么是0范数、1范数、2范数?区别又是什么?相关推荐
- Anaconda Prompt到底是什么? 和系统自带cmd命令提示窗区别又是什么?
导航 结论 cmd prompt anaconda prompt 如何用anaconda prompt 运行 .py文件 第一步:打开anaconda prompt 第二步:在conda环境中打开.p ...
- 机器学习中的范数规则化之(二)核范数与规则项参数选择
机器学习中的范数规则化之(二)核范数与规则项参数选择 zouxy09@qq.com http://blog.csdn.net/zouxy09 上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮 ...
- 机器学习中的范数规则化之(二)核范数与规则项参数选择以及RPCA
机器学习中的范数规则化之(二)核范数与规则项参数选择 三.核范数 核范数||W||*是指矩阵奇异值的和,英文称呼叫Nuclear Norm.这个相对于上面火热的L1和L2来说,可能大家就会陌生点.那它 ...
- 什么是范数(norm)?以及L1,L2范数的简单介绍
什么是范数? 范数,是具有"距离"概念的函数.我们知道距离的定义是一个宽泛的概念,只要满足非负.自反.三角不等式就可以称之为距离.范数是一种强化了的距离概念,它在定义上比距离多了一 ...
- 到底什么是 localhost、127.0.0.1、0.0.0.0 和 本机IP ?(参考多篇文章的学习笔记)
到底什么是 localhost.127.0.0.1.0.0.0.0 和 本机IP ? 平时配置项目环境及运行项目的过程中,会接触到 localhost.127.0.0.1.0.0.0.0 和 本机IP ...
- 长度一百万的数组,get(0)和get(999999)性能有区别吗?
数组和链表,应该算是最基本的数据结构了吧. 最近在帮公司招人,这个问题我几乎是必问的,然而还是有很多同学答不上来呀,不禁让人唏嘘感慨,基础知识大家还是要多补补哦! 长度一百万的数组,get(0)和ge ...
- http1.0 http1.1 http2 之间的区别
一.HTTP基础 1.1 HTTP定义 HTTP协议(HyperTextTransferProtocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议. 1.2 HTTP发展史 ...
- python3.0与2.x之间的区别
python3.0与2.x之间的区别: 1.性能 Py3.0运行pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可以取得很好 ...
- SAP License:Ecc6.0和R/3 有什么区别?
1.Ecc6.0和R/3 有什么区别?区别?Ecc6.0增加了哪些新的功能? 这些功能是否比原来加强. 还是用起来更方便了, 或者更容易了? ECC6.0 MM模块增强功能描述 1.跨系统的货物转储: ...
最新文章
- 怎样操作vue.js使用3DES加密
- MySQL工作中的实际用_数据库在工作中的应用,以及什么是MySQL?
- mysql workbench导入sql_MySQL Workbench 导入sql脚本-Go语言中文社区
- Could not load driverClass “com.mysql.jdbc.Driver“
- CCF NOI100002 取数游戏
- Firefox浏览器购物比价插件:惠惠购物助手
- wps页眉偶数页不同怎么设置_WPS文字应技巧—如何使奇数和偶数页的页眉页脚不同...
- 面试 11、知识拓展
- 阅读代码时,用excel做笔记。
- SO SOIC TSOP TSSOP 封装
- 你感受过VR视频故事线吗?适用于哪些方面?
- golang 如何快速清空数组
- 博客项目——登录功能实现
- [转载]蓝沙快克PXE网克图文教程
- 苹果电脑全系换上自研芯片,除了不能打电话,比iPhone 12亮眼多了
- 4-20MA转0-5KHz,5V脉冲转换器
- 杰理芯片之程序跑飞,重启,不能运行
- [PHP]如何用PHP实现还原短网址的真实地址的功能
- 4412开发板学习之Linux驱动开发(八):GPIO读操作与按键轮询实现
- 用Python演奏《国际歌》
热门文章
- TI单芯片毫米波雷达代码走读(二十五)—— 角度维(3D)处理流程
- warning: #231-D: declaration is not visible outside of function
- 【OpenGL基础】|| OpenGL渲染过程介绍
- android触摸屏idc,android4.0 触摸屏配置
- 微型计算机常见接口设备,微型计算机的外部设备和内部设备各有哪些?
- Connection接口
- 陌生单词-专业英语代码编码符号2
- CNN的Python实现——第四章:卷积神经网络的结构
- 结对项目——二柱子再更新版
- docker下运行分布式代码报nccl错误:connect returned Connection timed out,成功解决