稀疏表達:向量、矩陣與張量(中) | 增強視覺 | 計算機視覺 增強現實
個用戶和
部電影,如果把所有評分列成一張大表,可以得到矩陣
。其中,每一行對應一個用戶的評分,每一列對應一部電影的用戶評價。可以想像,這個矩陣中只有少部分元素是已知的(圖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主頁)。
PCARPCA說起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也是緊密相關。咱本來還想聊聊這些模型的優化演算法,鑒於篇幅所限,就只能留到(下)篇去了。最後,下期預告:優化方法,模型變種,張量推廣…其實最關鍵的老天保佑咱有時間寫….
推薦閱讀: