機器學習_學習筆記系列(67):非負矩陣分解(Non-negative Matrix Factorization)

--

前幾回我們介紹兩個Decomposition的方法,像是

Eigen Decomposition

Singular Vector Decomposition

而今天我們要來介紹新的拆解的方法 — Non-negative Matrix Factorization (NMF)

Non-negative Matrix Factorization

關於NMF的理念,其實也是非常值觀,假設我們有一組資料集X,我們希望

把X拆解成H和W兩個矩陣,其中

其中K就是我們latent features的數量。

但是在這邊得特別注意NMF,我不能總是找到H和W讓X=WH,用最極端的例子試想,如果K=1的話,幾乎不可能讓其相等。

Algorithms

對於要求解H和W最主流的方式就是利用Lee and Seung的multiplicative update rule,這篇Paper的名稱就叫做

Algorithms for Non-negative Matrix Factorization

另位這兩位作者也都是跨領域的天才,都是從Physics跳到CS,而且也都去過bell lab和MIT,現在一位在Cornell Tech一位在Princeton。

回歸正題對於NMF的演算法,其實和我們之前提到的方法非常像,都是先固定W更新H,再固定H更新W,然後一直執行這樣的步驟直到收斂為止

所以在第一步,我們會先用random number初始化我們的參數H,然後計算W=X/H。

接下來就是進入我們的迴圈

收先更新H

接著再更新W

接下來就是重複這樣的步驟直到

收斂為止

Example

接下來我們來看實際例子,原圖

NMF(K=30)

Python Sample Code:

Github:

Reference:

[1] Daniel D. Lee & H. Sebastian Seung (2001). Algorithms for Non-negative Matrix Factorization. Advances in Neural Information Processing Systems 13: Proceedings of the 2000 Conference. MIT Press. pp. 556–562.

--

--

劉智皓 (Chih-Hao Liu)
劉智皓 (Chih-Hao Liu)

Written by 劉智皓 (Chih-Hao Liu)

豬屎屋AI RD,熱愛AI研究、LLM/SD模型、RAG應用、CUDA/HIP加速運算、訓練推論加速,同時也是5G技術愛好者,研讀過3GPP/ETSI/O-RAN Spec和O-RAN/ONAP/OAI開源軟體。

No responses yet