回覆列表
  • 1 # 使用者7688326562465

    首先,講到矩陣的秩,幾乎必然要引入矩陣的SVD分解:X=USV",U,V正交陣,S是對角陣。如果是完全SVD分解的話,那S對角線上非零元的個數就是這個矩陣的秩了(這些對角線元素叫做奇異值),還有些零元,這些零元對秩沒有貢獻。有了這個前提,我們就可以用各種姿勢來看秩了:1.把矩陣當做樣本集合,每一行(或每一列,這個無所謂)是一個樣本,那麼矩陣的秩就是這些樣本所張成的線性子空間維數。如果矩陣秩遠小於樣本維數(即矩陣列數),那麼這些樣本相當於只生活在外圍空間中的一個低維子空間,這樣就能實施降維操作。舉個例子,同一個人在不同光照下采得的正臉影象,假設每一張都是192x168的,且採集了50張,那構成的資料矩陣就為50行192x168列的,但是如果你做SVD分解就會發現,大概只有前10個奇異值比較大,其他的奇異值都接近零,因此實際上可以將接近零的奇異值所對應的那些維度丟掉,只保留前10個奇異值對應的子空間,從而將資料降維到10維的子空間了。2.把矩陣當做一個對映,既然是對映,那就得考慮它作用在向量x上的效果Ax。注意Ax相當於A的列的某個線性組合,如果矩陣是低秩的,這意味著這些列所張成的空間是外圍空間的一個低維子空間,這個空間由Ax表達(其中x任意)。換句話說,這個矩陣把R^n空間對映到R^m空間,但是其對映的像只在R^m空間的一個低維子空間內生活。從SVD理解的話,Ax=USV"x,因此有三個變換:第一是V"x,相當於在原始的R^n空間旋轉了一下座標軸,這樣只是座標的變化,不改變向量本身(例如長度不變);第二是S(V"x),這相當於沿著各個座標軸做拉伸,並且如果S的對角線上某些元素為零,那麼這些元素所對應的那些座標軸就相當於直接丟掉了;最後再U(SV"x),還是一個座標軸旋轉。總的來看,Ax就相當於把一個向量x沿著某些特定的方向做不同程度的拉伸(附帶上一些不關乎本質的旋轉),甚至丟棄,那些沒被丟棄的方向個數就是秩了。這樣就有很多很直接的應用。例如考慮第一個意義。給定一堆資料,這些資料可能本身只是在一個低維子空間內生活(即可以用一個低秩矩陣表示),但是由於噪聲存在,我們拿到這些資料時它們看起來像是外圍空間中的點,沒有任何可以降維的跡象(即矩陣是滿秩的)。設我們拿到的資料是X,那麼根據這個設定,X應該能分解為一個低秩矩陣L和一個噪聲矩陣E的疊加,即X=L+E。現在問題是如何恢復出L,因為一旦找到L,就相當於去除了噪聲,同時降低了資料的複雜度(即維度)。怎麼恢復?可以透過求解min rank(L)+\|E\|_F^2, subject to X=L+E來恢復出L和E。秩就顯式地被用在這個問題裡了。當然,這個問題往往只是引子,無數論文在寫出類似問題後不到三行就會把rank(L)換成\|L\|_*,這個就是另外一些故事了。。。按我的經驗,跟秩有關的問題以及幾何意義,只需要仔細分析矩陣的SVD分解就能解決。但很可惜,大學裡的線性代數更喜歡去介紹SVD的兄弟——特徵值分解,而這個兄弟又往往只偏好對稱陣,不像SVD這樣所有實矩陣都可以分析,導致處理一般矩陣的秩時沒有一個趁手的工具。

  • 中秋節和大豐收的關聯?
  • 你的蜜月之旅選擇了哪裡?有什麼讓你難忘的旅行瞬間?