稀疏表示學習

老司機的詩和遠方發表於2020-04-06

1.提出問題:什麼是稀疏表示
假設我們用一個M*N的矩陣表示資料集X,每一行代表一個樣本,每一列代表樣本的一個屬性,一般而言,該矩陣是稠密的,即大多數元素不為0。
稀疏表示的含義是,尋找一個係數矩陣A(K*N)以及一個字典矩陣B(M*K),使得B*A儘可能的還原X,且A儘可能的稀疏。A便是X的稀疏表示。
書上原文為(將一個大矩陣變成兩個小矩陣,而達到壓縮

為普通稠密表達的樣本找到合適的字典,將樣本轉化為合適的稀疏表達形式,從而使學習任務得以簡化,模型複雜度得以降低,通常稱為‘字典學習’(dictionary learning),亦稱‘稀疏編碼’(sparse coding)”塊內容

表達為優化問題的話,字典學習的最簡單形式為:
字典學習表示式
其中xi為第i個樣本,B為字典矩陣,aphai為xi的稀疏表示,lambda為大於0引數。
上式中第一個累加項說明了字典學習的第一個目標是字典矩陣與稀疏表示的線性組合儘可能的還原樣本;第二個累加項說明了alphai應該儘可能的稀疏。之所以用L1正規化是因為L1正規化正則化更容易獲得稀疏解。具體原因參看該書11.4章或移步機器學習中的範數規則化之(一)L0、L1與L2範數。字典學習便是學習出滿足上述最優化問題的字典B以及樣本的稀疏表示A(A{alpha1,alpha2,…,alphai})。L1正則化常用於稀疏,可以獲得稀疏解。如下圖表示,L1正則化交點在軸上,所得的解一般只是在某個軸上有實數,另外的軸為0,從而最終得到稀疏解。


2.字典學習求解 (學習字典、稀疏表示)
求解上述最優化問題的總體策略是,對字典B以及樣本稀疏表示alphai交替迭代優化。即先初始化字典B,

1.固定字典B對alphai進行優化。2.固定A對字典B進行優化。重複上述兩步,求得最終B以及X的稀疏表示A。
其中第一步可採用與LASSO正則化相似的方法(如Proximal Gradient Desent法)進行求解,第二步可採用KSVD方法進行求解。具體步驟參看該書11.5章節內容

參考:

http://blog.csdn.net/sam92/article/details/50731607

http://blog.csdn.net/zouxy09/article/details/24971995/

相關文章