神奇的拉普拉斯平滑(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》這篇文章。
后記:關於拉普拉斯懲罰這一塊,感覺這篇博客說的太”跨越“了,我會在下一篇博客中進一步闡述。