L0、L1、L2、核範數以及RPCA方法的應用

機器學習方法之範數規則

範數規則 實則就是將模型的一些先驗知識融入到模型的學習中,強行地讓學習到的模型具有某些特徵,如低秩、稀疏等等,因此可用於防止過擬合現象的出現。

從貝葉斯的角度來看,範數規則項實則對應模型的先驗概率;另外,也可看成是結構風險最小化策略的實現,即在經驗風險上加一個正則化項或者是懲罰項。

一般來說,監督學習即是最小化下面的目標函數:

監督學習的一般目標方程
其中,第一項衡量模型(分類/迴歸)對第i個樣本的預測值 f(xi;ω)f(x_i;\omega) 和真實的值 yiy_i 之間的誤差,最小化誤差(第一項)從而保證我們的模型是在擬合訓練樣本;第二項則是對參數 ω\omega 的約束,防止過擬合。

L0範數和L1範數

L0範數是指向量中非0元素的個數,將L0範數作爲正則項實則是希望向量中的非0元素個數減少,即變得更爲稀疏。但是,L0範數由於在0處不可微,難以優化求解(NP-Hard問題),因此常被L1範數代替。

L1範數是指向量中各個元素的絕對值之和,是L0範數的最優凸近似,更容易優化求解,如下圖所示:
L0範數與L1範數的求解

L2範數

L2範數是取向量元素的平方和後再開方,也稱"weight decay",可以起到預防過擬合的作用(權值衰減,網絡更簡單)。此外,也有助於處理 condition number 較大情況下的矩陣求逆問題。
(這裏對於第二點好處就不展開論述了,詳見機器學習中的範數規則化之(一)L0、L1與L2範數),但是作爲總結簡單說下。首先凸優化中主要有兩大較爲棘手問題——局部最小值和 ill-condition 病態問題。ill-condition對應的是well-condition。那他們分別代表什麼?假設我們有個方程組AX=b,我們需要求解X。如果A或者b稍微的改變,會使得X的解發生很大的改變,那麼這個方程組系統就是ill-condition的,對系統輸入的微小變化也很敏感,反之就是well-condition的。condition number衡量的是輸入發生微小變化的時候,輸出會發生多大的變化。也就是系統對微小變化的敏感度。condition number值小的就是well-conditioned的,大的就是ill-conditioned的。)

下面說下L1和L2的差別,爲什麼一個讓絕對值最小,一個讓平方最小,會有那麼大的差別呢?

下降規則
L1就是按絕對值函數的“坡”下降的,而L2是按二次函數的“坡”下降。所以實際上在0附近,L1的下降速度比L2的下降速度要快。所以會非常快得降到0。
L1和L2範數的下降速度
模型空間的限制
L1和L2範數的模型空間
可以看到,L1和每個座標軸相交的地方都有“角”出現,除了角之外很多邊的輪廓也是有很大的概率成爲第一次相交的地方,這都會產生稀疏性。而對於L2-ball,第一次相交的地方出現在具有稀疏性的位置的概率就非常小了,因此不能產生稀疏性。
L1會趨於產生少量的特徵,而其他特徵都是0,但是L2會選擇更多特徵,這些特徵都會接近0。

核範數

在介紹核範數之前首先說下矩陣的秩,其物理意義主要是用於衡量矩陣行列之間的相關性。如果矩陣的各行或各列都是線性無關的,則矩陣式滿秩的;如果矩陣各行之間的相關性很強,那麼該矩陣實則可以投影到更低維的線性子空間中,表示成一個低秩的矩陣。

然而,對矩陣求秩rank()是非凸的,難以優化求解,因此就需要尋求它的凸近似,即爲核範數ω||\omega||_*

首先給出數學公式,摘自淺說範數規範化(二)—— 核範數
核範數數學推導1
核範數數學推導2
可以看出核範數實則表示奇異值/特徵值的和,rank()表示的是非零奇異值的個數,因此可以理解爲L1與L0範數之間的關係。

核範數的應用之一:魯棒PCA(RPCA) 
RPCA的基本思想是將原矩陣分解爲兩個矩陣相加,一個是低秩矩陣(原矩陣含有一定的結構信息,因此各行/各列是線性相關的),另一個是稀疏的(原矩陣中含有噪聲,噪聲是稀疏的),因此目標函數可以寫成:
RPCA目標函數
與經典PCA相同的是,RPCA本質上也是尋找數據在低維空間上的最佳投影問題。對於低秩數據觀測矩陣X,假如X受到隨機(稀疏)噪聲的影響,則X的低秩性就會破壞,使X變成滿秩的。所以我們就需要將X分解成包含其真實結構的低秩矩陣和稀疏噪聲矩陣之和。找到了低秩矩陣,實際上就找到了數據的本質低維空間。
與經典PCA問題不同的是,因爲PCA假設我們的數據的噪聲是高斯的,對於大的噪聲或者嚴重的離羣點,PCA會被它影響,導致無法正常工作。而RPCA則不存在這個假設。它只是假設它的噪聲是稀疏的,而不管噪聲的強弱如何。

爲便於優化求解,通常將原問題鬆弛到凸優化問題:
鬆弛後的RPCA問題
語音方面應用 
有一類語音增強方法是基於RPCA模型的語音增強方法,認爲帶噪語音信號可以分解爲低秩的噪聲和稀疏的語音信號(語音信號往往只在若干個頻點表現活躍),但是實驗結果表明獲得的係數矩陣中殘留較多的噪聲,低秩矩陣中也含有較多的語音信息,並不能實現很好的分離效果。因爲語音時頻譜矩陣除了具有稀疏性以外,也具有一定的低秩特性。

此外,在參考文獻[3]中作者是將帶噪語音分爲低秩 L,稀疏 S和噪聲 N三部分,其中低秩部分代表結構化噪聲(結構化噪聲部分通常具有比語音信號更加明顯的重複和冗餘結構),稀疏部分代表語音,而噪聲則代表是非結構化噪聲,這部分的分解運算可由GoDec算法實現。然而,由於單純的稀疏低秩分解得到的低秩部分更關注信號在時頻域的重複性而不側重於研究這些重複信號所具有的具體特徵,爲此文獻[3]提出對L用非負矩陣分解以學習到結構化噪聲字典,具體如下:
稀疏低秩模型下的自學習增強算法

其他改進算法我也沒有多看,便不多說了。


參考博文:
原文1:https://blog.csdn.net/zouxy09/article/details/24972869
原文2:http://sakigami-yang.me/2017/09/09/norm-regularization-02/
[3] : 稀疏低秩模型下的單通道自學習語音增強算法

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