稀疏表達:向量、矩陣與張量

轉自http://www.cvchina.info/2010/06/01/sparse-representation-vector-matrix-tensor-1/

上篇

稀疏表達是近年來SP, ML, PR, CV領域中的一大熱點,文章可謂是普天蓋地,令人目不暇給。老闆某門課程的課程需要大綱,我順道給擴展了下,就有了這個上中下三篇介紹性質的東西。遺憾的是,我在絕大多數情況下實在不算是一個勤快的人,這玩意可能充滿bug,更新也可能斷斷續續,盡請諸位看官見諒了。順道一提,ICCV09有一個相關的 tutorial

據傳博文裏公式數量和其人氣是成反比例關係的,一個公式可以驅散50%的讀者,我寫完這個(上)之後點了點公式數量,覺得大約是要無人問津了。所以,在介紹稀疏表達之前,讓我們先來展示下其在computer vision中的應用,吸引下眼球。

首先是圖像恢復(以前有人貼過Obama還記得不),由左側圖像恢復出右側結果

然後是類似的圖像inpainting

然後是圖像去模糊,左上爲輸入模糊圖像,右下爲輸出清晰圖像及估計的相機運動(其實是PSF),中間均爲迭代過程:

再然後是物體檢測(自行車),左側輸入圖像,中間爲位置概率圖,右側爲檢測結果

當然我個人還推薦Yi Ma的sparse face,這個在對抗噪聲的效果上很棒,比如下圖中左側的那張噪聲圖像(你能辨認是哪位不?這方法可以!)

且說sparse representation這個概念,早在96-97年的時候就火了一把。最著名的大約要數Nature上的某篇文章,將稀疏性加入least square的regularization,然後得到了具有方向特性圖像塊(basis)。這樣就很好的解釋了初級視皮層(V1)的工作機理,即對於線段的方向選擇特性。幾乎同一時期,著名的LASSO算法也被髮表在 J. Royal. Statist. Soc B。Lasso比較好的解決了least square (l2 norm) error + l1 norm regularization的問題。然而,這個時候絕大多數人沒有意識到(或者沒法解決)這l1 norm和稀疏性之間的聯繫。其實早在這之前,Osher等人提出的Total Variation (TV)已經包含了l1 norm的概念了,只不過TV原本是連續域上的積分形式。(啥?你不知道Osher…想想Level Set吧)

在進入現代的壓縮感知、稀疏表示這一課題前,讓我們來首先回顧下這一系列問題的核心,即線性方程組
其中矩陣,通常而言是滿秩的。向量。現在已知,求解。學過線性代數的同學可能都會說:這個不難啊,因爲, 故而這個方程組是欠定的,所以有無窮多組解啊,咱還可以算算基礎解系啥的…

但是如果我們希望其解儘可能的稀疏:比如(即中非零元個數)儘可能的小。那麼問題就會變得比較微妙了,下圖給出了問題的形象示意。

換言之給定m維空間中一組過完備的基,如何選擇最少個數的基向量,重構給定向量,其嚴格定義可以寫成

時光之輪播快到2003~2004年,Donoho & Elad做了一個很漂亮的證明,如果矩陣滿足某種條件,具體而言:

那麼上文提及的0範數優化問題具有唯一的解。這裏的是個比較詭異(請允許我使用這詞)的定義:最小的線性相關的列向量集所含的向量個數(吐槽:明白了麼,我做TA的時候就被這個問題問倒了)。本來想在這個概念上嘮叨兩句,後來發現了Elad的一個talk,清晰明瞭。

即便是唯一性得到了證明,求解這個問題仍然是NP難的。科研的車輪滾滾向前,轉眼到了2006年,傳奇性的華裔數學家Terrence Tao登場了,Tao和Donoho的弟子Candes合作證明了在RIP條件下,0範數優化問題與以下1範數優化問題具有相同的解:

其中RIP條件,即存在滿足某種條件的(與N相關)常數:

RIP條件是對於矩陣列向量正交性的一種衡量(此處咱就不細說了)。其實早在1993年Mallat就提出過Mutual Coherence對於正交性進行度量,並提出了下文還要提及的matching pursuit方法。

實際上以上的1範數優化問題是一個凸優化,故而必然有唯一解,至此sparse representation的大坑初步成型。總結一下:
1. 如果矩陣滿足,則0範數優化問題有唯一解。
2. 進一步如果矩陣滿足RIP條件,則0範數優化問題和1範數優化問題的解一致。
3. 1範數優化問題是凸優化,故其唯一解即爲0範數優化問題的唯一解。

進一步可以考慮含噪聲情況,即

可以得到相似的結果,有興趣的同學可以查閱相關文獻。理論坑只有大牛能挖,但一般人也能挖挖這個優化算法啊,於是SP、ML、CV鄰域裏都有做這個優化算法的,這個出招可就真是五花八門了。據我所知,大致可以分爲三大流派:
1. 直接優化

一般的方法是greedy algorithm,代表有Matching Pursuit, Orthogonal Matching Pursuit
2. 優化

還記得上面提到的LASSO麼,這就是它的模型。
3. 如果已知拉格朗日乘子,優化無約束凸優化問題

解這個的方法現在基本上soft thresholding的方法一統天下,常見的有coordinate descent, Bregman Iteration (又是Osher)等
4. 如果未知拉格朗日乘子,優化

這類方法又叫Homotopy,可以認爲是3的擴展。核心出發點是objective function是的分段線性函數。

除此之外,還有利用p範數逐次逼近0範數的方法等等,此處不再贅述。順道說一句,稀疏表示在不同的領域連名稱都不同,搞信號的管這個叫basis pursuit,搞統計的叫l1 regularization….然後,讓我們把話題拉回到Nature的那篇文章:如果我們不知道矩陣,只知道一堆向量。我們應當如何構造,使得在這一字典(矩陣)下的表示最稀疏?類比以上過程,這個問題被稱爲Dictionary Learning,可以寫成以下優化問題:

這個東西可就相對麻煩了,最關鍵的是這個優化不是凸的(優化變量相乘)。所以一般的想法是block descent:首先固定,優化(相當於多個獨立的1範數優化問題);其次將計算出的固定,優化,這就是一個(可能帶約束)的least square問題。如此反覆,直到算法收斂到某個(局部)極小值。實際上解這個問題的方法目前有三種:efficient sparse coding algorithm NIPS 06; K-SVD tsp 06; Online dictionary learning for sparse coding, ICML 09 & JMLR 10。前兩種都是batch的方法,後一種是online的,據個人測試最後一種的方法比前兩者要快很多很多….下面這個是我利用ICML09的方法從1200張彩色圖像中訓練出一組過完備基,具有比較好的方向特性。

最後,還記得本文開頭的那些demo麼?INRIA做了一個sparse representation的matlab工具包SPAMS,雖然不開源,但其效率(大部分時候)是現有公開工具包之冠(底層用了intel的MKL),利用這個工具包,幾行簡單的matlab代碼就可以幾乎實現以上提及的所有demo了….大家有興趣的話,歡迎嘗試^_^

下期預告:藉着collaborative filter的東風,Candes在08年又挖出了matrix completion的新坑。於是,當向量的1範數推廣到矩陣的跡範數(trace norm)之後…..


中篇

在開始正文之前,咱首先得說明一下,這篇東西偏向於理論,各位看官可以自行跳過某些部分。這方面的工作奠基人同樣也是compressive sensing的大牛之一E.J Candes(Donoho的得意門生),以及Candes的學生Ben Recht,前者剛從caltech被挖到stanford,後者目前剛到wisconsin做AP。Candes大牛,stanford統計系出生,師從Donoho。Candes原來的主要工作集中在小波分析上(實際上C牛非常多產),比如著名的curvelets以及ridgelets,04年左右開始和Tao合作從事compressive sensing的理論工作,這裏有他的簡要介紹

繼續嘮叨,上回說到藉着collaborative filtering的東風,矩陣的稀疏表示受到了廣泛的關注。說到矩陣的稀疏性,大部分看官可能有所誤解。這個矩陣稀疏表示嚴格而言可以分爲兩種:
1. 矩陣元素的稀疏性,即矩陣非0元個數相對較少。參照向量的範數,同樣可以定義矩陣的0範數,並將其鬆弛到矩陣的1範數的優化問題。
2. 矩陣奇異值的稀疏性,即矩陣奇異值中非0元的個數(即矩陣的秩)相對較少。仿照向量情況下0範數與1範數的關係,同樣可以將其鬆弛的到跡範數(trace norm)的優化問題。

咱下面會分別聊聊這兩個問題。首先,咱的出發點是machine learning中的collaborative filtering,這個概念並不是啥新東西了,最早大約可以追朔到1992的某篇同名文章。這玩意是做啥的呢,通俗的說,每次你在淘寶上閒逛的時候,下面都會有一行推薦商品。這些個網絡服務商(淘寶,Amazon, Ebay)就在想了,如果這個推薦系統做的足夠好,那麼消費者(比如你我)的購物慾望就會得到刺激,這個銷量也就上去了。實際上,這和超市裏玲琅滿目的貨架是一個道理。

這裏就得提提Netflix Prize這件事了,話說netflix是家在線dvd租賃公司,這公司就抱了同樣的想法。不過這家公司想了個主意:該公司提供數據,出資100萬美刀,獎勵研發這個推薦系統算法的小組,並要求這些算法發表在學術會議或期刊之上。這可以算是現實版的百萬富翁了(學術和money兩不誤),於是collaborative filtering着實火了一把(比如SIGKDD上的不少文章)。最終歷時兩年,由AT&T實驗室成員組成的BellKor’s Pragmatic Chaos贏得了這100萬刀。順到一提,國內也有不少傢伙參與了這個Prize,比如排名第二的Ensemble組裏就能看到中科院某所學生的身影。

這個推薦系統咋做呢?我們先從簡單的模型開始。以netflix爲例,netflix有個影評系統,在你租完DVD以後會讓你打分(1-5分)。當然不是所有人都會認真去打,實際上只有少數傢伙會給打分(這世界上懶人何其之多)。同樣,對每個用戶而言,他也只可能給部分看過的DVD打分。假設現在有個用戶和部電影,如果把所有評分列成一張大表,可以得到矩陣。其中,每一行對應一個用戶的評分,每一列對應一部電影的用戶評價。可以想象,這個矩陣中只有少部分元素是已知的(圖1)。

從現有的用戶數據,來預測未知的用戶數據,這就是collaborative filtering了。那麼這個東西怎麼實現呢?解釋起來難,做起來容易,這個模型放在在topic model裏叫做Probabilistic latent semantic analysis (PLSA),放在代數裏叫做矩陣分解(Matrix Fatorization)或者矩陣填充(Matrix Completion),這裏就只能形象的解釋下。雖然用戶千奇百怪、電影成千上萬,但總可以歸結爲若干類型:比如有腐女向、宅男向電影之分,再比如有悲劇也有喜劇。如果把這些latent factor畫成一個空間,那麼不同的用戶羣體應當位於這個latent factor空間的不同位置,體現了不同用戶的喜好。如果可以把用戶喜好連同潛在的latent factor一同計算出來,預測也自然水到渠成了。從某種角度來看,奇異值分解過程也就是上述的剝離latent factor和用戶喜好的過程,這其中的philosophy可以參見這篇文章

咱首先要談的是矩陣奇異值的稀疏性,爲此先來回憶下奇異值分解
1. 奇異值非負,即
2. 奇異值非0元的個數即爲矩陣的秩(rank)
如果把奇異值寫成對角矩陣的形式(比如SVD分解的標準形式),其對角元爲。進一步,矩陣的跡範數(trace norm)定義爲矩陣奇異值之和,即有

現在我們可以把collaborative filtering的基本問題回顧一下,給定一張推薦數據表,已知其下標子集中的元素(也就是有評分的部分),如何恢復這個矩陣?這就是matrix completion的問題了…

乍眼一看,這基本就是mission impossible了,即使只有一個元素未知,這個矩陣也不可能唯一。但是如果我們加一些限制條件,這個問題就變得有趣起來了。Candes考慮的是這麼一個問題:

其中表示在子集上的投影(即只取子集上的對應元素)。實際上,同樣的問題可以有不同的表達形式,如果把這個優化問題稍作調整,可以得到相對容易解釋的模型:

其中Frobenius範數也就是矩陣的2範數。從這個式子來看,我們希望找到這麼一個矩陣,使得其在已有的數據上和用戶評分儘可能的一致(2範數意義下),同時具有比較低的秩(受到上限的約束)。這裏對於秩的約束,很多時候是爲了降低模型自身的複雜度(比如collaborative filtering,multiple instance learning)。當然,這裏也可以看成是一個fidelity term + regulariztion term的經典形式。

實際上矩陣的rank是一個不那麼友好的函數,rank自身是非凸、不連續的,最後的結果就是對於rank的優化問題是NP難的。類比0範數與1範數的關係,矩陣的秩(rank)相當於這個對角陣的0範數;矩陣的跡範數(trace norm)相當於這個對角矩陣的1範數。爲此,如果這個對角矩陣足夠稀疏,即矩陣的秩,那麼可參照向量的稀疏表示,利用矩陣的跡範數(trace norm)代替矩陣的秩(rank)。

同樣,由於跡範數(trace norm)是凸的,上式是一個凸優化問題,故而必有唯一的最優解。如果這種近似是可以接受的,那麼這個問題自然也就解決了。

這種近似靠譜麼?這就是Candes和Recht回答的關鍵問題。Candes從random orthogonal model出發,證明了在此假設下從某個秩爲的真實矩陣中均勻抽取個元素,且滿足(這裏不妨設,反之只需要轉置即可)

則凸優化問題的唯一最優解至少以概率逼近原始矩陣,即有

其中均爲某常數。更進一步,如果矩陣的秩足夠小,對於元素數量的要求會進一步降低。

咱來聊聊這個結果,這說明在random orthogonal model假設成立的條件下,如果相對於比較小,那麼只需要知道這個矩陣中約個元素,就可以很高的概率恢復出這個矩陣。舉例而言,如果我們有一個秩爲10的矩陣,那我們大致只需要從中隨機抽取約270萬個元素就可以(以很高概率)恢復出原始矩陣了(當然270萬貌似也是一個很大的數,但原始矩陣約含有1700萬個元素…)。實際上,這是一個相對保守的界,Recht在此基礎上還進行了一系列的理論工作。自從出現了這個之後,under mild condition,大家都把rank直接放成trace norm了…從實用的角度來說,Candes告訴我們用凸優化去近似一個NP問題,可能得到很好的解。從實驗結果來看(代碼見此),這種近似有時候效果一流,但有時候也根本不work(違背了假設條件),故而具體問題還得具體對待。

雖然早在04年NIPS上,就有人提出了類似的優化方法(MMMF),用trace norm代替rank,並且ML領域中也確實有不少類似的工作。但是,Candes的工作解決了根本的理論問題,併爲一系列的rank minimization的問題指了一條出路。這裏有一個比較有意思的地方是,MMMF是從構造最大間隔線性分類器的角度出發來考慮matrix factorization的問題,並且用的是low norm,但和matrix completion的模型本質上是差不多的,兩者關係大家可以自行推導下。

咱接着要討論的是矩陣元素的稀疏性,這個工作也和Candes有着很大的關係。咱先把上面的公式照着copy一遍:

如果咱已知矩陣的全部元素,這個東西類似很常見的PCA了:

這樣問題就變成了去噪+降維。進一步把F範數(2範數)改寫爲0範數:

爲啥是0範數呢,這是基於這麼一種假設:誤差相對於總體樣本而言總是稀疏的。於是,我們可以引入輔助變量表示誤差,並把上式稍作改寫:

這裏的用於平衡矩陣的秩和誤差的稀疏性。同樣,rank和0範數什麼的都是相當討厭的東西,於是咱鬆弛一下,就有

這就是Robust Principle Component Analysis (RPCA) 或者Principle Component Pursuit 的核心模型了。這幅圖很好的說明了RPCA和PCA的區別(轉自Yi Ma主頁)。

PCA RPCA

說起RPCA,這裏岔開兩句,這個東西原來是Yi Ma的學生John Wright發在NIPS09上的一篇文章。結果接收之後,被Candes指出了一個bug(審稿人沒看出來),於是Candes對這個問題進行了考慮,從而就有了一篇叫做《Robust Principal Component Analysis?》的文章(preprint)。Candes證明了在同matrix completion基本相同的假設下,這種近似以很高的概率恢復精確結果(詳細結果可見RPCA的論文)。特別的,此時可以簡單選擇參數。Matrix Completion(MC)和 RPCA在Yi Ma的主頁上有一個簡單的介紹,上面列舉了相關文獻與代碼的鏈接。

MC和RPCA在computer vision上有啥用呢?John Wright在NIPS的文章裏做了兩個實驗:背景建模,人臉陰影去除。大家有興趣可以查查cvpr 10的paper, 有用MC來做video denoising的,有用RPCA來做人臉對齊的…還有那篇best paper也是緊密相關。咱本來還想聊聊這些模型的優化算法,鑑於篇幅所限,就只能留到(下)篇去了。

最後,下期預告:優化方法,模型變種,張量推廣…其實最關鍵的老天保佑咱有時間寫….



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章