1. 程式人生 > >神奇的拉普拉斯平滑(Laplacian Smoothing)及其在正則化上的應用~

神奇的拉普拉斯平滑(Laplacian Smoothing)及其在正則化上的應用~

之前的部落格介紹過自己對於正則化的理解,經過這段時間的進一步接觸,尤其是看了一些關於這一方面的paper,做了一些簡短的實驗,發現正則化真是一個很給力的建模方法。近期,看到了Laplacian Smoothing,相信很多童鞋遇到過這兩個單詞,但是,論文中關於這點的介紹往往都很“隨意”,甚至出現了很多雷同,這裡談談我對“拉普拉斯平滑”的一些理解。

首先,說說為什麼要“平滑”,換句話說,平滑究竟有什麼用。

平滑的目的也是正則化的目的之一,它是針對引數w而言,本質上就是要使得w的變化不要那麼劇烈,有如下數學模型(假設最小化J):


左側是一個典型的線性迴歸模型,(xi,yi)就是實際的觀測值,w就是估計的引數,右側就是一個正則化項。可以直觀的感受到,正則化項實際上起到了限制引數w的“變化程度或變化幅值

”的作用,具體來說,它可以令w的任何一個分量相比較於剩餘分量變化程度保持一致,不至於出現變化特別明顯的分量。直接的作用就是防止模型“過擬合”,提高了模型的泛化效能。關於這一點,具體請見http://blog.csdn.net/wsj998689aa/article/details/39547771

其次,知道了平滑,就開始說說拉普拉斯平滑到底是怎麼一回事。這裡分為兩點介紹,先介紹定義,再介紹如何應用

定義:假設f是定義在d維子空間中的一個實函式,該子空間上的拉普拉斯運算元和拉普拉斯代價函式分別為:



數學上的定義一般是讓人看不懂的,大家都喜歡聽例子,我們現在想象一副影象,這幅影象如果含有噪聲,或者色彩變化劇烈,就說明其不夠平滑,那個運算元就好比一個“小刷子”,不僅可以刷去“小黑點(噪聲的一種)“,也可以模糊影象。而下面的代價函式就好比用這個”小刷子“去刷一整副影象,使得整幅影象變得平滑了。

然後,當d=2(影象就是2維的)的時候,並且積分號變成和號的時候(連續變為離散),就是拉普拉斯平滑在影象上的應用。

這種”小刷子“有很多種,下面就是一個比較經典的:


這種運算元就是第二個公式的離散近似(具體名稱:修正的Neuman),起到的作用就是二階差分。一階差分就是相鄰元素xi,xi+1相減得到的值yi,二階差分就是yi - yi+1,可以在紙上推推這個矩陣乘以一個向量。值得一提的是,二階差分其實就起到了平滑(模糊)影象的作用,想通了有木有?

最後,聊聊拉普拉斯平滑在正則化上的應用,這個時候,它的名字往往就叫做”拉普拉斯懲罰“。懲罰的是誰?顯然是引數w了!

說說背景,機器學習中,大部分演算法直接將影象(假設為M*N)按行或者列拉成向量,這樣肯定會損失結構化資訊,結構化資訊是啥?很好理解,一個畫素本來和它周圍8個畫素都有關係,你直接給拉成向量了,那麼這種關係就直接被你給毀掉了,這就叫空間結構資訊。這種資訊屬於先驗資訊,NFL定理說的很清楚:能夠儘可能利用先驗資訊的學習演算法才是好演算法。看來,空間結構資訊的破壞,會降低演算法的”品味“。別擔心,拉普拉斯懲罰幫助你找回品味。

扯多了,回到正題,一幅影象拉成向量x(M*N維),如果我們要通過拉普拉斯懲罰,補償x上失去的結構資訊。很簡單,如下式:


那個乘法是Kronecke積,相當於將乘號右邊的每個元素替換成為左邊矩陣數乘對應元素,如果A是一個 m x n 的矩陣,而B是一個 p x q 的矩陣,克羅內克積則是一個 mp x nq 的矩陣。

上述公式實際上起到的效果是,求一個矩陣中每個元素的水平方向和垂直方向的二階差分之和,這個矩陣在這裡可以被看錯引數w的矩陣形式(按列reshape)。

進一步,如果我們對一個線性迴歸模型加上拉普拉斯懲罰,模型就會變為如下形式:


拉普拉斯懲罰使得模型更加平滑,比簡單的2範數(嶺迴歸)要好,因為它考慮了空間結構資訊。常被用於PCA,LDA,LPP,NPE等子空間學習演算法的改造上面,一般會使演算法效能得到提升。

給出一篇參考文獻,裡面介紹的比較深刻,喜歡看英文的朋友可以仔細的看看《Learning a Spatially Smooth Subspace for Face Recognition》這篇文章。

後記:關於拉普拉斯懲罰這一塊,感覺這篇部落格說的太”跨越“了,我會在下一篇部落格中進一步闡述。