前言:
由於在sparse coding模型中求系統代價函式偏導數時需要用到矩陣的範數求導,這在其它模型中應該也很常見,比如說對乙個矩陣內的元素值進行懲罰,使其值不能過大,則可以使用f範數(下面將介紹)約束,查閱了下矩陣範數求導的相關資料,本節就簡單介紹下。
首先,網路上有大把的人把2範數和f=2時的範數混為一談,或者說把矩陣p範數和誘導p範數混淆了(也有可能是因為各個版本書所定義的不同吧)。下面我還是以矩陣中權威教材the matrix cookbook和matlab內嵌函式所用的定義來解釋。話說the matrix cookbook是一本非常不錯的參考書,查詢矩陣相關的公式就像查字典一樣,很方便。
矩陣的誘導2範數我們常說的2範數,其定義如下:
而矩陣的f=2時的範數,卻在實際優化領域經常用到的範數,也稱為frobenius範數,其定義為:
由此可見,在前面博文deep learning:二十六(sparse coding簡單理解)中,ng教授給出關於sparse coding的代價公式如下:
並且ng教授稱公式中比如第一項是l2範數,按照我現在這種定義其實這種**是錯的,嚴格的說應該是frobenius範數(不過也有可能是他自己的定義不同吧,反正最終能解決問題就行)。畢竟,在matlab中如果按照ng關於l2範數定義來求的話,其結果就錯了。
為了證明上面的觀點,下面在matlab下做乙個簡單的實驗,實驗code如下:
%%使用原始定義求,即a中各元素平方和,然後開根號執行後其輸出結果為:a = magic(3
);b = a.^2
;c =sum(b(:));
d =sqrt(c)
%%直接使用matlab中2規範函式求
e = norm(a,2
)%% 使用矩陣a'
*a最大特徵值開根號的方法求
f = a'
*a;g =eig(f);
h =max(g);
i =sqrt(h)
%% 使用frobenius範數公式來求(其中f=2
)j = sqrt(trace(a*a'
))%%使用matlab自帶的frobenius公式來求
k = norm(a,'
fro')
d =16.8819
e =15.0000
i =15.0000
j =16.8819
k =16.8819
從上面結果可以看出,矩陣的2範數定義所求出的結果和matlab中2範數所求出的結果都是一樣的,都為15。而按照frobenius範數公式的定義, matlab中求frobenius的函式,以及frobenius最初始的定義這3種方法來求,其結果也是一樣,為16.8819。這個實驗和上面的介紹是一致的。
下面就來看看sparse coding代價函式第一項中如果要對矩陣a和s求導,該怎麼求呢?很明顯這是乙個矩陣frobenius求導問題,且求a導數時假設s和x都是常量,求s的時類似,參考了網上論壇上的教材後就可以得到相應的答案。其中對矩陣s求導可以參考下面乙個例題:
而對矩陣a求導可以參考:
frobenius範數 第九課 矩陣的範數
在所有的數學思想中,歸納和演繹永遠都是站在舞台中最光鮮的位置。我們上一節介紹了向量 的範數之後,這一節就來介紹矩陣的範數。我們可以看成向量是特殊的矩陣,矩陣是推廣了的 向量。矩陣滿足線性空間的8條性質,所以我們可以說矩陣是線性空間。同樣的我們可以驗證向量也 滿足線性空間的要求,這是矩陣和向量的共性。...
矩陣的 Frobenius 範數及其求偏導法則
矩陣的 frobenius 範數及其求偏導法則 2015年06月06日 22 53 58 閱讀數 14391 1.複雜矩陣問題求導方法 可以從小到大,從scalar到vector再到matrix 4.矩陣求導計算法則 求導公式 撇號為轉置 y a x dy dx a y x a dy dx a y ...
矩陣的 Frobenius 範數及其求偏導法則
原文 矩陣的跡求導法則 1.複雜矩陣問題求導方法 可以從小到大,從scalar到vector再到matrix 4.矩陣求導計算法則 求導公式 撇號為轉置 y a x dy dx a y x a dy dx a y a x b dy dx a b y a x b dy dx b a 乘積的導數 d f...