向量与矩阵的范数(比较1-范数、2-范数、无穷范数、p-范数、L0范数 和 L1范数等)

阅读文献时,经常看到各种范数,机器学习中的稀疏模型等,也有各种范数,其名称往往容易混淆,例如:L1范数也常称为“1-范数”,但又和真正的1-范数又有很大区别。下面将依次介绍各种范数。1、向量的范数向量的1-范数:;各个元素的绝对值之和;向量的2-范数:;每个元素的平方和再开平方根;向量的无穷范数:p-范数:,其中正整数p≥1,并且有例:…

大家好,又见面了,我是你们的朋友全栈君。

向量与矩阵的范数(比较1-范数、2-范数、无穷范数、p-范数、L0范数 和 L1范数等)

   阅读文献时,经常看到各种范数,机器学习中的稀疏模型等,也有各种范数,其名称往往容易混淆,例如:L1范数也常称为“1-范数”,但又和真正的1-范数又有很大区别。下面将依次介绍各种范数。

1、向量的范数

  向量的1-范数: {\left\| X \right\|_1} = \sum\limits_{i = 1}^n {\left| {​{x_i}} \right|} ; 各个元素的绝对值之和;

  向量的2-范数:{\left\| X \right\|_2} = {\left( {\sum\limits_{i = 1}^n {​{x_i}^2} } \right)^{\frac{1}{2}}} = \sqrt {\sum\limits_{i = 1}^n {​{x_i}^2} };每个元素的平方和再开平方根;

  向量的无穷范数:{\left\| X \right\|_\infty } = \mathop {\max }\limits_{1 \le i \le n} \left| {​{x_i}} \right|

  p-范数:{\left\| X \right\|_p} = {\left( {\sum\limits_{i = 1}^n {​{​{\left| {​{x_i}} \right|}^p}} } \right)^{\frac{1}{p}}},其中正整数p≥1,并且有\mathop {\lim }\limits_{p \to \infty } {\left\| X \right\|_p} = \mathop {\max }\limits_{1 \le i \le n} \left| {​{x_i}} \right|

 

例:向量X=[2, 3, -5, -7] ,求向量的1-范数,2-范数和无穷范数。

向量的1-范数:各个元素的绝对值之和;{\left\| X \right\|_1}=2+3+5+7=17;

Matlab代码:X=[2, 3, -5, -7]; XLfs1=norm(X,1);

 

向量的2-范数:每个元素的平方和再开平方根;{\left\| X \right\|_2} = {\left( {​{\rm{2}} \times {\rm{2}} + {\rm{3}} \times {\rm{3}} + {\rm{5}} \times {\rm{5}} + {\rm{7}} \times {\rm{7}}} \right)^{\frac{1}{2}}} = 9.3274

Matlab代码:X=[2, 3, -5, -7]; XLfs2=norm(X,2);

 

向量的无穷范数:

(1)正无穷范数:向量的所有元素的绝对值中最大的;即X的正无穷范数为:7;

Matlab代码:X=[2, 3, -5, -7]; XLfsz=norm(X,inf);

 

(2)负无穷范数:向量的所有元素的绝对值中最小的;即X的负无穷范数为:2;

          Matlab代码:X=[2, 3, -5, -7]; XLfsf=norm(X,-inf);

 

2、矩阵的范数

设:向量X \in {R^n},矩阵A \in {R^{n \times n}},例如矩阵A为:

A=[2, 3, -5, -7;

   4, 6,  8, -4;

   6, -11, -3, 16];

(1)矩阵的1-范数(列模):{\left\| A \right\|_1} = \mathop {\max }\limits_{X \ne 0} \frac{​{​{​{\left\| {AX} \right\|}_1}}}{​{​{​{\left\| X \right\|}_1}}} = \mathop {\max }\limits_{1 \le j \le n} \sum\limits_{i = 1}^n {\left| {​{a_{ij}}} \right|};矩阵的每一列上的元素绝对值先求和,再从中取个最大的,(列和最大);即矩阵A的1-范数为:27

          Matlab代码:fs1=norm(A,1);

 

(2)矩阵的2-范数(谱模):{\left\| A \right\|_2} = \mathop {\max }\limits_{X \ne 0} \frac{​{​{​{\left\| {AX} \right\|}_2}}}{​{​{​{\left\| X \right\|}_2}}} = \sqrt {​{\lambda _{\max }}({A^T}A)} = \sqrt {\mathop {\max }\limits_{1 \le i \le n} \left| {​{\lambda _i}} \right|},其中   {\lambda _i}{A^T}A的特征值;矩阵向量与矩阵的范数(比较1-范数、2-范数、无穷范数、p-范数、L0范数 和 L1范数等)的最大特征值开平方根。

          Matlab代码:fs2=norm(A,2);

 

(3)矩阵的无穷范数(行模):{\left\| A \right\|_\infty } = \mathop {\max }\limits_{X \ne 0} \frac{​{​{​{\left\| {AX} \right\|}_\infty }}}{​{​{​{\left\| X \right\|}_\infty }}} = \mathop {\max }\limits_{1 \le {\rm{i}} \le n} \sum\limits_{j = 1}^n {\left| {​{a_{ij}}} \right|};矩阵的每一行上的元素绝对值先求和,再从中取个最大的,(行和最大)

         Matlab代码:fswq=norm(A,inf);

 

  下面要介绍关于机器学习中稀疏表示等一些地方用到的范数,一般有核范数,L0范数,L1范数(有时很多人也叫1范数,这就让初学者很容易混淆),L21范数(有时也叫2范数),F范数等,这些范数都是为了解决实际问题中的困难而提出的新的范数定义,不同于前面矩阵的范数。

关于核范数,L0范数,L1范数等解释见博客:

http://www.cnblogs.com/MengYan-LongYou/p/4050862.html

https://blog.csdn.net/u013066730/article/details/51145889

http://blog.sina.com.cn/s/blog_7103b28a0102w73g.html

 

(4)矩阵的核范数:矩阵的奇异值(将矩阵svd分解)之和,这个范数可以用来低秩表示(因为最小化核范数,相当于最小化矩阵的秩——低秩);

         Matlab代码:JZhfs=sum(svd(A));

 

(5)矩阵的L0范数:矩阵的非0元素的个数,通常用它来表示稀疏,L0范数越小0元素越多,也就越稀疏。

 

(6)矩阵的L1范数:矩阵中的每个元素绝对值之和,它是L0范数的最优凸近似,因此它也可以近似表示稀疏;

         Matlab代码:JZL1fs=sum(sum(abs(A)));

 

(7)矩阵的F范数:矩阵的各个元素平方之和再开平方根,它通常也叫做矩阵的L2范数,它的有点在它是一个凸函数,可以求导求解,易于计算;

         Matlab代码:JZFfs=norm(A,’fro’);

 

(8)矩阵的L21范数:矩阵先以每一列为单位,求每一列的F范数(也可认为是向量的2范数),然后再将得到的结果求L1范数(也可认为是向量的1范数),很容易看出它是介于L1和L2之间的一种范数

          Matlab代码:JZL21fs=norm(A(:,1),2) + norm(A(:,2),2) + norm(A(:,3),2)++ norm(A(:,4),2);

 

Matlab代码

clear all;clc;

%% 求向量的范数
X=[2, 3, -5, -7];   %初始化向量X
XLfs1=norm(X,1);    %向量的1-范数
XLfs2=norm(X,2);    %向量的2-范数
XLfsz=norm(X,inf);  %向量的正无穷范数
XLfsf=norm(X,-inf); %向量的负无穷范数

%% 求矩阵的范数
A=[2, 3, -5, -7;
   4, 6,  8, -4;
   6, -11, -3, 16];     %初始化矩阵A

JZfs1=norm(A,1);        %矩阵的1-范数
JZfs2=norm(A,2);        %矩阵的2-范数
JZfswq=norm(A,inf);     %矩阵的无穷范数
JZhfs=sum(svd(A));      %矩阵的核范数
JZL1fs=sum(sum(abs(A)));% 矩阵的L1范数
JZFfs=norm(A,'fro');    %矩阵的F范数
JZL21fs=norm(A(:,1),2) + norm(A(:,2),2) + norm(A(:,3),2)++ norm(A(:,4),2);% 矩阵的L21范数

 

参考资料

[1] https://blog.csdn.net/Michael__Corleone/article/details/75213123

[2] https://wenku.baidu.com/view/dc9e6e3753d380eb6294dd88d0d233d4b04e3f48.html

[3] http://www.cnblogs.com/MengYan-LongYou/p/4050862.html

[4] https://blog.csdn.net/u013066730/article/details/51145889

[5] http://blog.sina.com.cn/s/blog_7103b28a0102w73g.html

 


如果觉得内容还不错的话,欢迎点赞、转发、收藏,还可以关注微信公众号、CSDN博客、知乎。
 

1. 微信公众号:

向量与矩阵的范数(比较1-范数、2-范数、无穷范数、p-范数、L0范数 和 L1范数等)

2. CSDN博客:https://xiongyiming.blog.csdn.net/

3. 知乎:https://www.zhihu.com/people/xiongyiming

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125367.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 语义分割如何做标注_语义分割转实例分割

    语义分割如何做标注_语义分割转实例分割在进行Segmentation训练之前需要准备训练集和验证集,本文将要来介绍如何使用LabelMe进行标记。LabelMe是个可以绘制多边形、矩形、圆形、直线、点的一套标记工具,可用于分类、目标检测、语义分割、实例分割任务上的数据标注。1.label安装与数据标注首先安装LabelMe,我使用Anaconda进行安装。打开AnacondaPrompt执行以下指令:pipinstalllabelme接着输入labelme会出现以下UI介面,点选OpenDir选择要标记的图片资料

    2022年8月23日
    8
  • 离散系统的变换域

    离散系统的变换域

    2022年1月4日
    71
  • 数据库连接池怎么实现_java数据库连接池原理

    数据库连接池怎么实现_java数据库连接池原理数据库连接池1.数据库连接池是干什么的假如我们有个应用程序需要每隔10秒查询一次数据库,我们可以用以下方式方法1:每次查询的时候都新建一个数据库连接,查询结束关闭数据库连接。由于数据库连接的建立是一个非常耗费资源的过程,所以这种每次都新建连接的方式非常浪费资源,不可取。方法2:在最开始的新建一个数据库连接,后续过程中一直使用这个数据库连接进行查询,直到最后关

    2022年9月13日
    0
  • java编译过程_Java编译运行过程

    java编译过程_Java编译运行过程Java编译运行过程在上一篇文章中,我们了解了第一个Java入门程序,以及如何编译和运行第一个Java程序。本文主要了解以下编译和运行Java程序时会发生什么。此外,我们还会分析一些常见的问题。1Java程序编译过程在编译时,Java文件由Java编译器(它不与底层操作系统交互)将Java代码转换为字节码(.class)。2Java程序运行过程在Java程序运行中,会执行以下步骤:类加载器(C…

    2022年4月30日
    38
  • 盘点|12款服务器监控工具「建议收藏」

    盘点|12款服务器监控工具「建议收藏」服务器监控工具功能相当强大,无论何时何地,我们都可以了解到服务器的功能以及性能。服务器监控工具的使用,可以让我们清楚的知道用户可以打开我们的网站,且确保网速不慢。只有这样做,才能留住宝贵的用户,以免因为系统停运的原因,导致用户丢失。基于此,我为大家收集了12款超实用的服务器监控工具。1、zabbixzabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。abbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问

    2022年6月12日
    80
  • 前端面试题angular_Vue前端面试题

    前端面试题angular_Vue前端面试题Angular1,ng-if跟ng-show/hide的区别有哪些?第一点区别是,ng-if在后面表达式为true的时候才创建这个dom节点,ng-show是初始时就创建了,用display:block和display:none来控制显示和不显示。第二点区别是,ng-if会(隐式地)产生新作用域,ng-switch、ng-include等会动态创建一块界面的…

    2022年10月10日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号