1. 程式人生 > >機器學習中的正則化

機器學習中的正則化

道理 lazy 算法 htbox 而且 有趣的 文章 很難 直接

作者:陶輕松
鏈接:https://www.zhihu.com/question/20924039/answer/131421690
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

我盡量用通俗一點的話來解答一下樓主的問題,

r(d)可以理解為有d的參數進行約束,或者 D 向量有d個維度。
咱們將樓主的給的凸優化結構細化一點,別搞得那麽抽象,不好解釋;

技術分享 , 其中,
咱們可以令: f(技術分享) = 技術分享.

ok,這個先介紹到這裏,至於f(x)為什麽用多項式的方式去模擬?相信也是很多人的疑問,很簡單,大家看看高等數學當中的泰勒展開式就行了,任何函數都可以用多項式的方式去趨近,技術分享log x,lnx,技術分享

等等都可以去趨近,而不同的函數曲線其實就是這些基礎函數的組合,理所當然也可以用多項式去趨近,好了,這個就先解釋到這裏了。

接下來咱們看一下擬合的基礎概念。
首先,用一個例子來理解什麽是過擬合,假設我們要根據特征分類{男人X,女人O}。
請看下面三幅圖,x1、x2、x3;
技術分享

這三幅圖很容易理解:
1、 圖x1明顯分類的有點欠缺,有很多的“男人”被分類成了“女人”。
2、 圖x2雖然有兩個點分類錯誤,但是能夠理解,畢竟現實世界有噪音幹擾,比如有些人男人留長發、化妝、人妖等等。
3、 圖x3分類全部是正確的,但是看著這副圖片,明顯覺得過了,連人妖都區分的出來,可想而知,學習的時候需要更多的參數項,甚至將生殖器官的形狀、喉結的大小、有沒有胡須特征等都作為特征取用了,總而言之f(x)多項式的N特別的大,因為需要提供的特征多,或者提供的測試用例中我們使用到的特征非常多(一般而言,機器學習的過程中,很多特征是可以被丟棄掉的)。

好了,總結一下三幅圖:
x1我們稱之為【欠擬合】
x2我們稱之為【分類正擬合】,隨便取的名字,反正就是容錯情況下剛好的意思。
x3我們稱之為【過擬合】,這種情況是我們不希望出現的狀況,為什麽呢?很簡單,它的分類只是適合於自己這個測試用例,對需要分類的真實樣本而言,實用性可想而知的低。

恩,知道了過擬合是怎麽回事之後,我們來看一下如何去規避這種風險。先不管什麽書上說的、老師講的、經驗之說之類的文言文。咱們就站在第一次去接觸這種分類模型的角度去看待這個問題,發散一下思維,我們應該如何去防止過擬合?
顯而易見,我們應該從【過擬合】出現的特征去判別,才能規避吧?
顯而易見,我們應該、而且只能去看【過擬合】的f(x)形式吧?
顯而易見

,我們從【過擬合】的圖形可以看出f(x)的涉及到的特征項一定很多吧,即技術分享等等很多吧?
顯而易見,N很大的時候,技術分享是等數量增長的吧?
顯而易見,w系數都是學習來的吧?

So,現在知道這些信息之後,如何去防止過擬合,我們首先想到的就是控制N的數量吧,即讓N最小化吧,而讓N最小化,其實就是讓W向量中項的個數最小化吧?
其中,W=(技術分享)

PS: 可能有人會問,為什麽是考慮W,而不是考慮X?很簡單,你不知道下一個樣本想x輸入的是什麽,所以你怎麽知道如何去考慮x呢?相對而言,在下一次輸入技術分享,即第k個樣本之前,我們已經根據技術分享次測試樣本的輸入,計算(學習)出了W.就是這麽個道理,很簡單。


ok,any way.回到上面的思維導圖的位置,我們再來思考,如何求解“讓W向量中項的個數最小化”這個問題,學過數學的人是不是看到這個問題有點感覺?對,沒錯,這就是0範數的概念!什麽是範數,我在這裏只是給出個0-2範數定義,不做深究,以後有時間在給大家寫點文章去分析範數的有趣玩法;
0範數,向量中非零元素的個數。
1範數,為絕對值之和。
2範數,就是通常意義上的模。

PS,貌似有人又會問,上面不是說求解“讓W向量中項的個數最小化”嗎?怎麽與0範數的定義有點不一樣,一句話,向量中0元素,對應的x樣本中的項我們是不需要考慮的,可以砍掉。因為技術分享沒有啥意義,說明技術分享項沒有任何權重。so,一個意思啦。


ok,現在來回答樓主的問題,r(d) = “讓W向量中項的個數最小化” = 技術分享

所以為了防止過擬合,咱們除了需要前面的相加項最小,即樓主公式當中的
技術分享 = 技術分享 最小,我們還需要讓r(d)=技術分享最小,所以,為了同時滿足兩項都最小化,咱們可以求解讓技術分享和r(d)之和最小,這樣不就同時滿足兩者了嗎?如果r(d) 過大,技術分享再小也沒用;相反r(d)再小,技術分享太大也失去了問題的意義。
說到這裏我覺得樓主的問題我已經回答了,那就是為什麽需要有個r(d)項,為什麽r(d)能夠防止過擬合原因了。

根據《男人幫》電影大結局的劇情:本來故事已經完成了,為了讓大家不至於厭惡課本的正規理論,我們在加上一集內容,用以表達我對機器學習出書者的尊重;

書本中,或者很多機器學習的資料中,為了讓全球的機器學習人員有個通用的術語,同時讓大家便於死記硬本,給我上一段黑體字的部分的內容加上了一坨定義,例如:
我們管技術分享叫做經驗風險,管上面我們思維導圖的過程叫做正則化,所以順其自然的管r(d)叫做正則化項,然後管技術分享+r(d) 叫做結構風險,所以順其自然的正則化就是我們將結構風險最小化的過程,它們是等價的。
By the way,各位計算機界的叔叔、阿姨、伯伯、嬸嬸,經過不懈的努力,發現了這個公式很多有意思的地方,它們發現0範數比較惡心,很難求,求解的難度是個NP完全問題。然後很多腦袋瓜子聰明的叔叔、阿姨、伯伯、嬸嬸就想啊,0範數難求,咱們就求1範數唄,然後就研究出了下面的等式:
技術分享

一定的條件我就不解釋了,這裏有一堆算法,例如主成分KPCA等等,例子我就不在舉了,還是原話,以後我會盡量多寫點這些算法生動點的推到過程,很簡單,註重過程,不要死記硬背書本上的結果就好。
上面概括而言就是一句話總結:1範數和0範數可以實現稀疏,1因具有比L0更好的優化求解特性而被廣泛應用。然後L2範數,是下面這麽理解的,我就直接查別人給的解釋好了,反正簡單,就不自己動腦子解釋了:
L2範數是指向量各元素的平方和然後求平方根。我們讓L2範數的正則項||W||2最小,可以使得W的每個元素都很小,都接近於0,但與L1範數不同,它不會讓它等於0,而是接近於0,這裏是有很大的區別的哦;所以大家比起1範數,更鐘愛2範數。
所以我們就看到書籍中,一來就是,r(d)=技術分享技術分享 或者r(d)=技術分享技術分享 這種結構了,然後在機器學習當中還能看到下面的結構:
min{ 技術分享 } ,技術分享>=0
都是這麽來的啦,萬變不離其中。


講一點自己機器學習過程的體驗,大家都覺得機器學習入門難,絕大部分人反應知其然不知其所以然,這個原因很多時候在於中國教育工作者的教學、科研氛圍,尤其是中文書籍出書者自己都不去搞懂原理,一個勁的為了利益而出書、翻譯書,純粹利益驅動。再加之機器學習起源於國外,很多經典的、有趣的歷史沒有被人翻譯、或者歸類整理,直接被舍棄掉了。個人感覺這是中國教育的缺失導致的。希望更多的人真的愛好計算機,愛好機器學習以及算法這些知識。喜歡就是喜歡。希望國內機器學習的愛好者慢慢的齊心合力去多多引薦這些高級計算機知識的基礎。教育也不是由於利益而跟風,AI熱出版社就翻譯AI,機器學習熱就翻譯機器學習,知識層面不斷架空,必然導致大家學習熱情的不斷衰減!願共勉之。

機器學習中的正則化