稀疏表示分類為什麼用1範數不用而番薯

時間 2022-08-31 02:15:06

1樓:楠楠的天斯

協同表示由稀疏表示變化變化出來的,而這就是後面約束條件的範數不同而已,稀疏表示後面的約束條件是1範數,而協同表示是2範數。

為什麼稀疏係數的2範數越小越接近乙個人臉

2樓:匿名使用者

應該是具有防止過擬合作用吧。

參考下文:

二、l2範數

除了l1範數,還有一種更受寵幸的規則化範數是l2範數: ||w||2。它也不遜於l1範數,它有兩個美稱,在回歸裡面,有人把有它的回歸叫「嶺回歸」(ridge regression),有人也叫它「權值衰減weight decay」。

這用的很多吧,因為它的強大功效是改善機器學習裡面乙個非常重要的問題:過擬合。至於過擬合是什麼,上面也解釋了,就是模型訓練時候的誤差很小,但在測試的時候誤差很大,也就是我們的模型複雜到可以擬合到我們的所有訓練樣本了,但在實際**新的樣本的時候,糟糕的一塌糊塗。

通俗的講就是應試能力很強,實際應用能力很差。擅長背誦知識,卻不懂得靈活利用知識。例如下圖所示(來自ng的course):

上面的圖是線性回歸,下面的圖是logistic回歸,也可以說是分類的情況。從左到右分別是欠擬合(underfitting,也稱high-bias)、合適的擬合和過擬合(overfitting,也稱high variance)三種情況。可以看到,如果模型複雜(可以擬合任意的複雜函式),它可以讓我們的模型擬合所有的資料點,也就是基本上沒有誤差。

對於回歸來說,就是我們的函式曲線通過了所有的資料點,如上圖右。對分類來說,就是我們的函式曲線要把所有的資料點都分類正確,如下圖右。這兩種情況很明顯過擬合了。

ok,那現在到我們非常關鍵的問題了,為什麼l2範數可以防止過擬合?回答這個問題之前,我們得先看看l2範數是個什麼東西。

l2範數是指向量各元素的平方和然後求平方根。我們讓l2範數的規則項||w||2最小,可以使得w的每個元素都很小,都接近於0,但與l1範數不同,它不會讓它等於0,而是接近於0,這裡是有很大的區別的哦。而越小的引數說明模型越簡單,越簡單的模型則越不容易產生過擬合現象。

為什麼越小的引數說明模型越簡單?我也不懂,我的理解是:限制了引數很小,實際上就限制了多項式某些分量的影響很小(看上面線性回歸的模型的那個擬合的圖),這樣就相當於減少引數個數。

其實我也不太懂,希望大家可以指點下。

這裡也一句話總結下:通過l2範數,我們可以實現了對模型空間的限制,從而在一定程度上避免了過擬合。

l2範數的好處是什麼呢?這裡也扯上兩點:

1)學習理論的角度:

從學習理論的角度來說,l2範數可以防止過擬合,提公升模型的泛化能力。

2)優化計算的角度:

從優化或者數值計算的角度來說,l2範數有助於處理 condition number不好的情況下矩陣求逆很困難的問題。哎,等等,這condition number是啥?我先google一下哈。

這裡我們也故作高雅的來聊聊優化問題。優化有兩大難題,一是:區域性最小值,二是:

ill-condition病態問題。前者俺就不說了,大家都懂吧,我們要找的是全域性最小值,如果區域性最小值太多,那我們的優化演算法就很容易陷入區域性最小而不能自拔,這很明顯不是觀眾願意看到的劇情。那下面我們來聊聊ill-condition。

ill-condition對應的是well-condition。那他們分別代表什麼?假設我們有個方程組ax=b,我們需要求解x。

如果a或者b稍微的改變,會使得x的解發生很大的改變,那麼這個方程組系統就是ill-condition的,反之就是well-condition的。我們具體舉個例子吧:

咱們先看左邊的那個。第一行假設是我們的ax=b,第二行我們稍微改變下b,得到的x和沒改變前的差別很大,看到吧。第三行我們稍微改變下係數矩陣a,可以看到結果的變化也很大。

換句話來說,這個系統的解對係數矩陣a或者b太敏感了。又因為一般我們的係數矩陣a和b是從實驗資料裡面估計得到的,所以它是存在誤差的,如果我們的系統對這個誤差是可以容忍的就還好,但系統對這個誤差太敏感了,以至於我們的解的誤差更大,那這個解就太不靠譜了。所以這個方程組系統就是ill-conditioned病態的,不正常的,不穩定的,有問題的,哈哈。

這清楚了吧。右邊那個就叫well-condition的系統了。

還是再囉嗦一下吧,對於乙個ill-condition的系統,我的輸入稍微改變下,輸出就發生很大的改變,這不好啊,這表明我們的系統不能實用啊。你想想看,例如對於乙個回歸問題y=f(x),我們是用訓練樣本x去訓練模型f,使得y盡量輸出我們期待的值,例如0。那假如我們遇到乙個樣本x』,這個樣本和訓練樣本x差別很小,面對他,系統本應該輸出和上面的y差不多的值的,例如0.

00001,最後卻給我輸出了乙個0.9999,這很明顯不對呀。就好像,你很熟悉的乙個人臉上長了個青春痘,你就不認識他了,那你大腦就太差勁了,哈哈。

所以如果乙個系統是ill-conditioned病態的,我們就會對它的結果產生懷疑。那到底要相信它多少呢?我們得找個標準來衡量吧,因為有些系統的病沒那麼重,它的結果還是可以相信的,不能一刀切吧。

終於回來了,上面的condition number就是拿來衡量ill-condition系統的可信度的。condition number衡量的是輸入發生微小變化的時候,輸出會發生多大的變化。也就是系統對微小變化的敏感度。

condition number值小的就是well-conditioned的,大的就是ill-conditioned的。

如果方陣a是非奇異的,那麼a的conditionnumber定義為:

也就是矩陣a的norm乘以它的逆的norm。所以具體的值是多少,就要看你選擇的norm是什麼了。如果方陣a是奇異的,那麼a的condition number就是正無窮大了。

實際上,每乙個可逆方陣都存在乙個condition number。但如果要計算它,我們需要先知道這個方陣的norm(範數)和machine epsilon(機器的精度)。為什麼要範數?

範數就相當於衡量乙個矩陣的大小,我們知道矩陣是沒有大小的,當上面不是要衡量乙個矩陣a或者向量b變化的時候,我們的解x變化的大小嗎?所以肯定得要有乙個東西來度量矩陣和向量的大小吧?對了,他就是範數,表示矩陣大小或者向量長度。

ok,經過比較簡單的證明,對於ax=b,我們可以得到以下的結論:

也就是我們的解x的相對變化和a或者b的相對變化是有像上面那樣的關係的,其中k(a)的值就相當於倍率,看到了嗎?相當於x變化的界。

對condition number來個一句話總結:conditionnumber是乙個矩陣(或者它所描述的線性系統)的穩定性或者敏感度的度量,如果乙個矩陣的condition number在1附近,那麼它就是well-conditioned的,如果遠大於1,那麼它就是ill-conditioned的,如果乙個系統是ill-conditioned的,它的輸出結果就不要太相信了。

好了,對這麼乙個東西,已經說了好多了。對了,我們為什麼聊到這個的了?回到第一句話:

從優化或者數值計算的角度來說,l2範數有助於處理 condition number不好的情況下矩陣求逆很困難的問題。因為目標函式如果是二次的,對於線性回歸來說,那實際上是有解析解的,求導並令導數等於零即可得到最優解為:

然而,如果當我們的樣本x的數目比每個樣本的維度還要小的時候,矩陣xtx將會不是滿秩的,也就是xtx會變得不可逆,所以w*就沒辦法直接計算出來了。或者更確切地說,將會有無窮多個解(因為我們方程組的個數小於未知數的個數)。也就是說,我們的資料不足以確定乙個解,如果我們從所有可行解裡隨機選乙個的話,很可能並不是真正好的解,總而言之,我們過擬合了。

但如果加上l2規則項,就變成了下面這種情況,就可以直接求逆了:

這裡面,專業點的描述是:要得到這個解,我們通常並不直接求矩陣的逆,而是通過解線性方程組的方式(例如高斯消元法)來計算。考慮沒有規則項的時候,也就是λ=0的情況,如果矩陣xtx的 condition number 很大的話,解線性方程組就會在數值上相當不穩定,而這個規則項的引入則可以改善condition number。

另外,如果使用迭代優化的演算法,condition number 太大仍然會導致問題:它會拖慢迭代的收斂速度,而規則項從優化的角度來看,實際上是將目標函式變成λ-strongly convex(λ強凸)的了。哎喲喲,這裡又出現個λ強凸,啥叫λ強凸呢?

當f滿足:

時,我們稱f為λ-stronglyconvex函式,其中引數λ>0。當λ=0時退回到普通convex 函式的定義。

在直觀的說明強凸之前,我們先看看普通的凸是怎樣的。假設我們讓f在x的地方做一階泰勒近似(一階泰勒忘了嗎?f(x)=f(a)+f『(a)(x-a)+o(||x-a||).):

直觀來講,convex 性質是指函式曲線位於該點處的切線,也就是線性近似之上,而 strongly convex 則進一步要求位於該處的乙個二次函式上方,也就是說要求函式不要太「平坦」而是可以保證有一定的「向上彎曲」的趨勢。專業點說,就是convex 可以保證函式在任意一點都處於它的一階泰勒函式之上,而strongly convex可以保證函式在任意一點都存在乙個非常漂亮的二次下界quadratic lower bound。當然這是乙個很強的假設,但是同時也是非常重要的假設。

可能還不好理解,那我們畫個圖來形象的理解下。

大家一看到上面這個圖就全明白了吧。不用我囉嗦了吧。還是囉嗦一下吧。

我們取我們的最優解w*的地方。如果我們的函式f(w),見左圖,也就是紅色那個函式,都會位於藍色虛線的那根二次函式之上,這樣就算wt和w*離的比較近的時候,f(wt)和f(w*)的值差別還是挺大的,也就是會保證在我們的最優解w*附近的時候,還存在較大的梯度值,這樣我們才可以在比較少的迭代次數內達到w*。但對於右圖,紅色的函式f(w)只約束在乙個線性的藍色虛線之上,假設是如右圖的很不幸的情況(非常平坦),那在wt還離我們的最優點w*很遠的時候,我們的近似梯度(f(wt)-f(w*))/(wt-w*)就已經非常小了,在wt處的近似梯度?

f/?w就更小了,這樣通過梯度下降wt+1=wt-α*(?f/?

w),我們得到的結果就是w的變化非常緩慢,像蝸牛一樣,非常緩慢的向我們的最優點w*爬動,那在有限的迭代時間內,它離我們的最優點還是很遠。

所以僅僅靠convex 性質並不能保證在梯度下降和有限的迭代次數的情況下得到的點w會是乙個比較好的全域性最小點w*的近似點(插個話,有地方說,實際上讓迭代在接近最優的地方停止,也是一種規則化或者提高泛化效能的方法)。正如上面分析的那樣,如果f(w)在全域性最小點w*周圍是非常平坦的情況的話,我們有可能會找到乙個很遠的點。但如果我們有「強凸」的話,就能對情況做一些控制,我們就可以得到乙個更好的近似解。

至於有多好嘛,這裡面有乙個bound,這個 bound 的好壞也要取決於strongly convex性質中的常數α的大小。看到這裡,不知道大家學聰明了沒有。如果要獲得strongly convex怎麼做?

最簡單的就是往裡面加入一項(α/2)*||w||2。

呃,講個strongly convex花了那麼多的篇幅。實際上,在梯度下降中,目標函式收斂速率的上界實際上是和矩陣xtx的 condition number有關,xtx的 condition number 越小,上界就越小,也就是收斂速度會越快。

這乙個優化說了那麼多的東西。還是來個一句話總結吧:l2範數不但可以防止過擬合,還可以讓我們的優化求解變得穩定和快速。

好了,這裡兌現上面的承諾,來直觀的聊聊l1和l2的差別,為什麼乙個讓絕對值最小,乙個讓平方最小,會有那麼大的差別呢?我看到的有兩種幾何上直觀的解析:

有理數為什麼用q表示,有理數為什麼用Q表示

angela韓雪倩 原因 有理數是由一個整數與一個非零整數的比,又稱作分數,也就是兩個數相除的商。而商的英文是quotient,所以用q來代表有理數集。有理數集可以用大寫黑正體符號q代表,但q並不表示有理數。有理數集與有理數是兩個不同的概念,有理數集是元素為全體有理數的 集合 而有理數則為有理數集中...

為什麼用應力表示材料的力學效能指標,而不用極限載荷

只有在存在具體的結構時才可以用極限載荷的指標,材料在沒有確定具體的結構時存在許多可能,其極限載荷無法計算,所以材料的力學效能指標只能用應力來表示。材料可以做成不同的結構,不同的結構其承載能力也各不相同,因此無法給出確定的載荷。材料只能給出單位面積 這樣一個相對具體 上的載荷,而這就是應力。物體由於外...

什麼時候用分類討論 為什麼用,什麼時候用分類討論

您好!分類討論 分類討論是解決一個比較複雜或者帶有不確定性的問題的方法,這時需要把問題劃分為幾種可能性,然後針對每一種出現的可能性給出不同的解答。比如,一個常見的問題 一張桌子砍掉一個角後還有幾個角?這個問題的答案可以很多,因為問題描述的不清楚。要解決這個問題,我們先要假設一下,這個桌子是圓形的還是...