各種向量範數和矩陣範數的比較

一、向量範數

首先定義一個向量爲: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範數即:矩陣ATA的最大特徵值開平方根,上述矩陣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代碼實現爲:normA, ‘fro’

 

2.8 矩陣的L2,1範數

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

 

總結就是,矩陣的L0,L1,F範數都和向量的0,1,2範數相對應,而和矩陣的1,2範數有區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章