1. 程式人生 > >向量和矩陣的各種範數比較(1範數、2範數、無窮範數等等

向量和矩陣的各種範數比較(1範數、2範數、無窮範數等等

log 100% text UNC -s base center hrl 求導

向量和矩陣的各種範數比較(1範數、2範數、無窮範數等等

範數 norm 矩陣 向量

一、向量的範數

首先定義一個向量為:a=[-5,6,8, -10]

1.1 向量的1範數

向量的1範數即:向量的各個元素的絕對值之和,上述向量a的1範數結果就是:29,MATLAB代碼實現為:norm(a,1);

1.2 向量的2範數

向量的2範數即:向量的每個元素的平方和再開平方根,上述a的2範數結果就是:15,MATLAB代碼實現為:norm(a,2);

1.3 向量的無窮範數

1.向量的負無窮範數即:向量的所有元素的絕對值中最小的:上述向量a的負無窮範數結果就是:5,MATLAB代碼實現為:norm(a,-inf);
2…向量的正無窮範數即:向量的所有元素的絕對值中最大的:上述向量a的負無窮範數結果就是:10,MATLAB代碼實現為:norm(a,inf);

二、矩陣的範數

首先我們將介紹數學中矩陣的範數的情況,也就是無論哪個學科都統一的一種規定。。。
例如矩陣A = [ -1 2 -3;
4 -6 6]

2.1 矩陣的1範數

矩陣的1範數即:矩陣的每一列上的元素絕對值先求和,再從中取個最大的,(列和最大),上述矩陣A的1範數先得到[5,8,9],再取最大的最終結果就是:9,MATLAB代碼實現為:norm(A,1);

2.2 矩陣的2範數

矩陣的2範數即:矩陣ATAATAA^{T}A的最大特征值開平方根,上述矩陣A的2範數得到的最終結果是:10.0623,MATLAB代碼實現為:norm(A,2);

2.3 矩陣的無窮範數

矩陣的1範數即:矩陣的每一行上的元素絕對值先求和,再從中取個最大的,(行和最大),上述矩陣A的1範數先得到[6;16],再取最大的最終結果就是:16,MATLAB代碼實現為:norm(A,inf);

接下來我們要介紹機器學習的低秩,稀疏等一些地方用到的範數,一般有核範數,L0範數,L1範數(有時很多人也叫1範數,這就讓初學者很容易混淆),L21範數(有時也叫2範數),F範數。。。上述範數都是為了解決實際問題中的困難而提出的新的範數定義,不同於前面的矩陣範數。

2.4 矩陣的核範數

矩陣的核範數即:矩陣的奇異值(將矩陣svd分解)之和,這個範數可以用來低秩表示(因為最小化核範數,相當於最小化矩陣的秩——低秩),上述矩陣A最終結果就是:10.9287, MATLAB代碼實現為:sum(svd(A))

2.5 矩陣的L0範數

矩陣的L0範數即:矩陣的非0元素的個數,通常用它來表示稀疏,L0範數越小0元素越多,也就越稀疏,上述矩陣A最終結果就是:6

2.6 矩陣的L1範數

矩陣的L1範數即:矩陣中的每個元素絕對值之和,它是L0範數的最優凸近似,因此它也可以表示稀疏,上述矩陣A最終結果就是:22,MATLAB代碼實現為:sum(sum(abs(A)))

2.7 矩陣的F範數

矩陣的F範數即:矩陣的各個元素平方之和再開平方根,它通常也叫做矩陣的L2範數,它的有點在它是一個凸函數,可以求導求解,易於計算,上述矩陣A最終結果就是:10.0995,MATLAB代碼實現為:norm(A,‘fro’)

2.8 矩陣的L21範數

矩陣的L21範數即:矩陣先以每一列為單位,求每一列的F範數(也可認為是向量的2範數),然後再將得到的結果求L1範數(也可認為是向量的1範數),很容易看出它是介於L1和L2之間的一種範數,上述矩陣A最終結果就是:17.1559,MATLAB代碼實現為: norm(A(:,1),2) + norm(A(:,2),2) + norm(A(:,3),2)


本文轉載自 1024Michael 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/Michael__Corleone/article/details/75213123?utm_source=copy

技術分享圖片



MARSGGBO?原創





2018-8-5



向量和矩陣的各種範數比較(1範數、2範數、無窮範數等等