当我们在谈深度学习时,到底在谈论什么(三)--转
原文:http://suanfazu.com/t/topic/13744
正則化
相信對機器學習有一定了解的朋友對正則化(Regularization)這個概念都不會陌生。可以這么說,機器學習中被討論最廣泛也可以說是最重要的一個問題,就是防止?過擬合(Overfitting)?。
為什么這么說呢?因為通過增加模型復雜性來在訓練數據上達到完美的擬合實在太過容易。如果僅希望在訓練數據上得到輸入預期的輸出,那么我們僅僅需要記住所有的訓練數據就可以了。而對于機器學習,我們真正的關心的問題,是在那些沒有見過的數據上,模型的表現如何,也就是模型的泛化能力。
至于正則化的方法,很多時候被大家簡化理解為了“在目標函數上增加關于參數的或范數”的簡單表達,但對于為何需要增加范數約束,以及增加以后所產生的效果不甚明了。
我們這里通過一個最簡單的Logistic regression的例子來看看增加范數約束的必要性。對于Logistic regression問題,通過給定的個數據,其中,我們希望尋求到一個足夠好的,使得盡可能接近,其中就是我們前文神經網絡常用的Sigmoid函數。我們可以將Sigmoid函數的輸出解釋為某個輸出為1的概率,那么按照最大似然原則,需要求解如下優化問題:
假設我們求得某個,能夠成功讓所有的正樣本,而負樣本輸出,已經意味著我們可以通過該分類器完美對數據進行區分。但如果仔細查看我們的最優化問題可以發現,如果我們將替換成,則可以進一步降低目標函數值,我們可以通過不斷放大來進一步降低目標函數值。事實上,與所表達的是同一個分類器超平面(hyperplane),可以通過限制使其收斂到唯一解。
上面的例子是數學上一類Inverse problem2的特例。這其中最簡單的當屬線性方程組求解的問題。當我們已知其生成過程,其中為獨立同分布(i.i.d)的高斯隨機噪聲時,可以證明,采用范數進行優化,是在最大似然意義下的理論最優解:
類似上述能夠給出具體數學描述的生成過程,及其Inverse problem最優求解方法的問題還有很多。最近哥倫比亞大學John Wright教授在字典學習問題的突破(參見Complete Dictionary Recovery over the Sphere)的結果非常漂亮,堪稱是這一類Inverse problem和正則化應用的典范。
談回深度學習,我們可以看到目前應用最廣泛的兩類正則化的方法,一類是通過給網絡參數增加的范數(并且往往p=2):
另一類是采用由Hinton et. al所提出的Dropout方法進行正則化(參見Dropout: A Simple Way to Prevent Neural Networks from Overfitting)。并且這兩類方法經常同時在訓練神經網絡時被采用。
范數正則化
這兩種正則化方法在深度學習的應用,與其說是理論家的貢獻,不如說是實踐者的勝利。雖然通過添加范數的形式在傳統凸優化中有大量可被證明正確性的應用,并且將這個想法使用于神經網絡極為自然,但對于超過一層隱藏層的神經網絡,范數所帶來的優勢還很難被嚴格證明。這里我提供幾個非完全嚴格的“直觀”解釋:
- 在原目標函數的基礎上增加,將原函數進行了一定程度的平滑化,這個可以從其梯度函數有所體現。
- 對于一類存在大量駐點(Stationary point,即梯度為0的點),增加范數意味著將原本導數為零的區域,加入了先驗知識進行區分(幾何上,意味著原本一個平臺的區域向0點方向傾斜),這樣可以幫助優化算法至少收斂到一個局部最優解,而不是停留在一個鞍點上。
- 通過限制參數在0點附近,加快收斂,降低優化難度。回憶一下,對于一類常見激活函數,如Sigmoid,滿足:單調有界。根據單調有界定理,對于任意小的,我們可以取得足夠大的,使得。換句話說,對于該變量,我們可以找到一個足夠大的區域使得其導數接近于0,這意味著通過梯度方法改進該變量會變得極其緩慢(回憶后向傳播算法的更新),甚至受浮點精度等影響其收斂。那么,采用范數控制變量的大小在0附近,可以避免上述情況,從而在很大程度上可以讓優化算法加快收斂。
Dropout正則化
Dropout是另一類目前被廣泛使用的正則化方法,其基本思路非常簡單:在訓練階段,對于每個mini-batch隨機抹去一定比例的神經元進行前向及后向傳播更新。這種方法在Hinton et. al的論文中所給出的解釋為:
This prevents units from co-adapting too much.
This should make each hidden unit more robust and drive it towards creating useful features on its own without relying on other hidden units to correct its mistakes.
但由于深層神經網絡的一大優勢其實就在于對于特征的層級化表達,并且深層單元可以對淺層單元進行組合與復用。所以上述解釋雖然乍聽之下合理,但真實的可靠性存疑。上述論文中提到了另個解釋,可能更為合理:通過控制每個單元的開關,我們潛在使用了個不同的網絡(為采用Dropout的神經元數量),這樣的模型相當于將個不同的共享變量的網絡在預測時進行幾何平均,從而達到平滑的效果。
對于一類更特定的模型,Dropout有在理論上有進一步的論證。如果我們限制所研究的為廣義線性模型(Generalized linear models),并且Dropout只在輸入變量上進行,那么通過對廣義線性模型通過泰勒展開進行二次近似,可以得到
其中為參數的Fisher information矩陣:
那么,對于輸入進行Dropout,實際上就相當于首先將輸入采用進行歸一化得到,然后采用傳統范數對參數進行正則化,從而建立起了采用Dropout與范數進行正則化的聯系。具體的推導可以參見:Dropout Training as Adaptive Regularization。
轉載于:https://www.cnblogs.com/davidwang456/articles/5607071.html
總結
以上是生活随笔為你收集整理的当我们在谈深度学习时,到底在谈论什么(三)--转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 当我们在谈深度学习时,到底在谈论什么(二
- 下一篇: java.lang.Long canno