鹹魚如我也要寫一寫奇異值分解的相關知識

2021-08-13 21:39:39 字數 1306 閱讀 5499

今天晚上好奇心作祟,看了一波奇異值分解,憑著我十分辣雞的線代知識看得非常頭大,還好網上有許多姿勢水平很高的資料,靠著這些資料總算大概的了解了奇異值分解的推導過程和相關作用。

前提知識:

奇異值分解涉及到的乙個很重要的知識點就是特徵值分解,然後特徵值分解又涉及到正交矩陣,這些知識點**性代數的本質特徵向量一章中多有描述。遺忘或缺漏的同學可以去看看。

奇異值分解的應用和感性認識:

這裡的教學過程有些反常,為什麼不先講推導再講應用?答案就在小標題中,先培養乙個感性認識。就像計網自頂向下的教學比由下而上的教學更容易講清楚重點,我覺得先在應用層對奇異值分解有乙個很恰當的認知也會方便我們的學習。我覺得這篇問答下的高票分解已經很精彩了,描述了基於奇異值分解的有失真壓縮和去噪,還有奇異值分解的幾何意義。奇異值分解的物理意義是什麼?

奇異值分解的推導:

寫得比較好的部落格:奇異值分解(svd)原理詳解及推導

這篇部落格寫得雖然好,但中間有幾步推導對於小白有些快了,我這裡稍微班門弄斧的補充一下。

首先要注意分清楚點積的一點和直接進行矩陣乘法運算時中間沒有符號一定要區分開,很容易把點積看成乘法。

下面是奇異值分解的推導部分:

對於乙個m*n的矩陣a。 我們知道 at*a是乙個n*n的對稱陣,對於乙個對稱陣我們可以進行特徵值分解,故:

at*a = umut,其中m為對角陣,u為由特徵向量組成的正交矩陣。

假設我們可以找到一組在n維空間中的正交單位向量使得通過a矩陣變換後得到的m維向量仍然正交。那麼根據假設,有:

dot(a*vi,a*vj) = 0 //dot表示點積

( a*vi)t*a*vj = 0

vit*at*a*vj = 0

vit*umut*vj = 0

其中u是特徵向量組成的正交矩陣,當我們選取vi為其中的乙個正交基時,vi

t*u 所得行矩陣只會有乙個元素不為0,其它元素都為0。同理,若vj選取為u的乙個正交基,則ut*vj所得列矩陣也只有乙個元素不為0.此時可以直接將對角陣u中所對應的特徵值提出來,只有這個特徵值真正的進行了乘法運算,同理還可以改變這一特徵值的位置。故最終有了

接下來用類似的方法可以推出奇異值的計算公式。然後對於m維的輸出空間(k<=m),如果小於顯然可以補充m-k個正交向量使得k=m。對於n維的輸入空間,我們可以補充n-k個零空間中的向量,同時取奇異值為0。這樣就得到了:

即便沒有讀者,你也要寫部落格

就 為什麼企業家應當寫文章?話題,spencer fry 寫過一篇好文。就寫作的好處,我還得追加一句,其好處非比尋常,即便你沒有讀者,你也應當寫部落格。無論你是不是企業家。我有超過 50 篇未完成的草稿。其中部分是一些和自己爭辯的想法點子。大部分草稿不會發布的,不過我還是能從中有所收穫。寫部落格已經...

假如我是一棵蔥

假如我是一棵蔥,你願意花1元錢購買我嗎?假如我是一瓶300毫公升的可樂,你願意花10元錢購買我嗎?當然不會。那麼你是否願意花100元買一件不錯的外套?花1000元買臺不錯的22寸的aoc的顯示屏?也許你會。為什麼?因為一棵蔥的價值不值1元 一瓶可樂的價值也不值10元,然而一件外套的價值卻可能不止10...

需要寫一寫了

好入沒有寫過文章了。有很多原因。乙個是原來windows live搬過來了。另乙個是自己的空間到期了,網域名稱也到期了,不想再續了,還是玩玩現成的吧,自己弄的沒有時間去打理了,長草了。在blogbus,csdn,cnblog上都把文章搬了一部分,總之整的有點亂啊。今天 又重新整理了一下,打算還是要寫...