機器學習Lesson 8 — 奇異值分解的計算及陷阱(下篇)

--

奇異值分解(Singular Value Decomposition, SVD)是構成主成分分析(Principal Component Analysis, PCA)的重要運算,這種透過將高維的資料降成低維的資料,在人工智慧的世界裡已經廣泛利用。其他類似的技術像是UMAP等等,詳細可以參考旗標出版的「Kaggle競賽攻頂秘笈 — 揭開Grandmaster的特徵工程心法,掌握制勝的關鍵技術」。

上次我們已經知道Eigenvector方向選擇,會影響SVD的結果,今天要介紹一個簡單的方法,可以協助大家選擇Eigenvector的方向。

一、SVD計算回顧

上次,我們一開始計算SVD時候失敗了:

Photo by CHUTTERSNAP on Unsplash

接著,我們調整了其中一個Eigenvector的方向,問題也就解決:

二、Economy Sized SVD

解決Eigenvector方向之前,我們先來看一下SVD的一個特性,現在大家仔細觀察重組運算中,藍色這些元素對整個運算的貢獻是什麼:

答案是…完全沒貢獻!

既然完全沒貢獻,那就不要理它,因此我們其實可以簡化SVD之後的矩陣:

這樣的作法,不但可以完美重建矩陣A,而且儲存矩陣元素的總個數變少了。我們稱此為Economy Sized SVD。

三、Eigenvector的方向選擇

通常我們希望Eigenvector可以包含原始矩陣A的一些特性(Bro et al., 2008),如果讀者認同這樣的想法,那麼應該可以接受「若將原始矩陣內的每一行(列)視為一個向量,Eigenvector的方向,應該要與這些行(列)向量類似」,用數學來表示,即為「每一個Eigenvector跟原始矩陣的行(列)向量內積的總和,應該要越大越好」。

所以,我們可以嘗試找一個方向,可以最大化「每一個Eigenvector跟原始矩陣的行(列)向量內積的總和」。現在,使用Economy Sized SVD試試看吧:我們將U矩陣的每一個Eigenvector,跟A矩陣的每一個行向量,作內積並且平方,再加上內積後的正負號,最後加總

計算U的第一個Eigenvector應該選什麼方向:

計算U的第二個Eigenvector應該選什麼方向:

接下來輪到V矩陣!我們將V矩陣的每一個Eigenvector,跟A矩陣的每一個列向量,作內積並且平方,再加上內積後的正負號,最後加總。

計算V的第一個Eigenvector應該選什麼方向:

計算V的第二個Eigenvector應該選什麼方向:

上述紅色的部分是最終我們選擇的Eigenvector,會發現V的第二個Eigenvector還是沒辦法用這個方法判斷的。因此這個方法並不是萬能,但至少可以幫我們解決大部分的問題。

重點整理

1、我們可以使用Economy Sized SVD來節省矩陣元素的儲存數量。

2、最大化Eigenvector跟原始矩陣蒐集的行(列)向量內積之總和,有機會幫我們判斷出Eigenvector的方向。

參考資料

1、Brunton S. and Kutz J. N. (2019). Data-Driven Science and Engineering: Machine Learning, Dynamic Systems, and Control. 1st ed. Cambridge: Cambridge University Press.

2、Bro R., Acar E., and Kolda T. G. (2008). Resolving the sign ambiguity in the singular value decomposition. Journal of Chemometrics, 22(2), pp. 135–140.

關於作者

Chia-Hao Li received the M.S. degree in computer science from Durham University, United Kingdom. He engages in computer algorithm, machine learning, and hardware/software codesign. He was former senior engineer in Mediatek, Taiwan. His currently research topic is the application of machine learning techniques for fault detection in the high-performance computing systems.

--

--

施威銘研究室
施威銘研究室

Written by 施威銘研究室

致力開發AI領域的圖書、創客、教具,希望培養更多的AI人才。整合各種人才,投入創客產品的開發,推廣「實作學習」,希望實踐學以致用的理想。

No responses yet