熱線電話:13121318867

登錄
首頁精彩閱讀機器學習中使用的神經網絡
機器學習中使用的神經網絡
2017-03-14
收藏

機器學習中使用的神經網絡

這一小節介紹隨機梯度下降法(stochastic gradient descent)在神經網絡中的使用,這里首先回顧了第三講中介紹的線性神經網絡的誤差曲面(error surface),如下圖所示。線性神經網絡對應的誤差曲面的縱截面如碗裝,橫截面則如一組同心的橢圓。梯度下降法的作用就是不斷調整參數,使得模型的誤差由“碗沿”降到“碗底”,參數由橢圓外部移動到橢圓的中心附近。當然,這里說的是只有兩個參數的情況,參數更多的情況則更復雜。

下圖給出了梯度方向對梯度改變大小的影響。

下圖說明了學習步長(learning rate)對損失函數改變的影響。過大的學習速率會導致損失函數越來越大,模型距離最優解(或次優解)越來越遠。

上面是模型在所有的訓練數據上做完梯度下降法之后再對參數進行修正的,這叫做批量梯度下降法(batch gradient descent)。而隨機梯度下降法則是每一次計算某一個訓練數據上的梯度或者某一組訓練數據(訓練數據集的一個很小的子集)的梯度,然后更新參數。在每一個訓練數據上計算梯度然后更新參數的稱之為在線學習(online learning),在一小組訓練數據上計算梯度然后更新參數的稱之為小批量梯度下降法(mini-batch gradient descent),后者的效果可能比前者好一些。

下圖是對使用mini-batch gradient descent的幾點建議。

A bag of tricks for mini-batch gradient descent

這一小節介紹使用小批量梯度下降法(mini-batch gradient descent)的一些技巧。下圖是初始化權值參數的技巧。

下圖介紹的是shifting the inputs,其是指給輸入的每一個分量加上一個常數值,使不得輸入的平均值為0。(這里的意思應該是給輸入的每一個分量加上一個常數,不同分量的常數可能不同,使得訓練數據集的所有輸入加在一起是個零向量。當然,這是我自己的理解,可能有出入。)下圖給出了一個二維的線性神經網絡,且給出了兩組訓練數據及其相應向量參數對應的直線??梢钥吹缴厦娴哪莾蓷l直線夾角很小,二者結合在一起就會得到一個很狹長的橢圓的error surface,這樣的是我們不喜歡的error surface,不利于快速找到最優解或次優解。下面我們給輸入的每一個分量都加上一個-100,然后得到的error surface就有一個比較接近圓的形狀,這樣的是我們想要的,便于快速的找到最優解或次優解。另外這里還提到了對隱匿層神經單元的調整,比較了雙曲正切函數(hyperbolic tangent function)和邏輯函數(logistic function),但是這里沒聽明白具體怎么使用。

下圖介紹的是scaling the inputs,該情況針對的是輸入向量的分量取值相差懸殊時,通過給分量乘上一個系數來使得error surface更接近圓形,從而便于快速找到最優解或次優解。

一個更thorough的方法是去除輸入向量不同分量之間的相關性(decorrelate the input components),相關的方法很多,這里給出了主成分分析法(PCA, Principal Components Analysis)。在Andrew Ng的課程中詳細介紹過PCA,詳細內容請閱讀Machine Learning第八周筆記:K-means和降維 
。對于線性模型,PCA實現了降維,從而將橢圓形的error surface轉換成了圓形的。

下圖列出了在多層神經網絡中經常遇到的兩個問題。一個是,當我們以很大的學習步長(learning rate)開始訓練網絡時,隱匿單元的權重往往會取到很大的正數或很小的負數,而此時這些權重對應的梯度又很小,給我們造成一種模型好像取得了一個局部最小值。另一個是,在分類網絡中,我們經常使用平方誤差或者交叉熵誤差,一個好的策略是讓每一個輸出單元的輸出情況和實際上的輸出比例相當(實際上輸出1的比例是多少,那么輸出單元的輸出情況一個就是這樣)。神經網絡很快就會發現這一策略,但需要很長的時間才能一點點的優化網絡,看起來就好像模型處于一個局部最小值附近。

下圖提示我們不要太快得減小學習步長(learning rate)。

下面給出四種加快mini-batch learning的方法,前三種我們會在下面一一介紹,最后一種本課程不涉及,感興趣的話請自行搜索。這些方法具有很強的技巧性,需要我們在應用中不斷摸索。

The momentum method

這一小節詳細介紹動量方法(the momentum method),其應用很廣泛,在full-batch learning和mini-batch learning中都可以使用。下面給出了動量方法的intuition和計算公式。


Using momentum speeds up gradient descent learning because

Directions of consistent change get amplified.

Directions of fluctuations get damped.

Allows using much larger learning rates.


Momentum accumulates consistent components of the gradient and attenuates the fluctuating ones. It also allows us to use bigger learning rate because the learning is now more stable.

標準的動量方法(由Nesterov在1983年提出)是在當前位置計算梯度,然后在累積的更新梯度方向上做一個大的跳躍。下面給出了一種更好地動量方法(由IIya Sutskever在2012年提出),其先在先前累積的梯度方向上做一個大的跳躍,再計算新的梯度并修正錯誤。

下面對兩種方法做了比較,圖中藍色箭頭是做兩次標準動量方法得到的;而圖中棕色箭頭是改進動量方法先做的一次大跳躍得到的,紅色箭頭是修正,綠色箭頭是進行一次改進動量方法得到的??梢钥吹?,改進的比標準的要快很多。

Adaptive learning rates for each connection

這一小節介紹the separate, adaptive learning rate for each connection(針對網絡中每個連接的自適應學習步長)。其思想是在神經網絡的每一個連接處都應該有該連接自己的自適應學習步長,并在我們調整該連接對應的參數時調整自己的學習步長:如果權值參數修正梯度,那就應該減小步長;反之,應該增大步長。

下圖給出了intuition。我的理解是在多層神經網絡中,不同層的梯度通常相差懸殊,最開始的幾層對應的梯度可能比最后幾層權值對應的梯度小幾個數量級。另外一方面,網絡中每一單元又受其扇入單元的影響,為了修正一個同樣的錯誤,各個單元的“學習步長”應該是不同的。

一個可行的方法是有一個全局的學習步長,然后對每一個權值參數有一個local gain,用gij表示。初始時gij均取值為1,后每次迭代根據權值梯度的變化情況作出調整,具體調整公式如下圖所示。

下圖列出了幾種提高自適應學習步長性能的幾個技巧。

Rmsprop: Divide the gradient by a running average of its recent magnitude

這一小節介紹rmsprop算法。在網上找到一個python模塊——climin,一個做優化的機器學習包,里面包含了很多優化算法。

首先介紹rprop算法。前面我們說過,不同權值參數的梯度的數量級可能相差很大,因此很難找到一個全局的學習步長。這時,我們想到了在full-batch learning中僅靠權值梯度的符號來選擇學習步長。rprop算法正是采用這樣的思想:對于網絡中的每一個權值參數,當其對應的前面兩個梯度符號相同時,則增大該權值參數對應的學習步長;反之,則減小對應的學習步長。并且,rprop算法將每一個權值對應的學習步長限制在百萬分之一到50之間。

下圖解釋了prop算法為什么不能應用于mini-batch learning中。因為prop算法違背了隨機梯度下降的原理:假設有一個在線學習系統,初始的學習步長較小,在其上應用prop算法。這里有十組訓練數據,前九組都使得梯度符號與之前的梯度符號相同,那么學習步長就會增加九次;而第十次得來的梯度符號與之前的相反,那么學習步長就會減小一次。這樣一個過程下來,學習步長會增長很多,如果系統的訓練數據集非常之大,那學習步長可能頻繁的來回波動,這樣肯定是不利于學習的。

設想是否存在這樣一種算法,其既能保持rprop算法的健壯性,又能應用在mini-batch learning上呢,rmsprop算法應運而生。rmsprop算法不再孤立地更新學習步長,而是聯系之前的每一次梯度變化情況,具體如下。rmsprop算法給每一個權值一個變量MeanSquare(w,t)用來記錄第t次更新步長時前t次的梯度平方的平均值,具體計算方法如下圖所示(注意,其中的系數0.9和0.1只是個例子,具體取值還要看具體情況)。然后再用第t次的梯度除上MeanSquare(w,t)??????????????√得到學習步長的更新比例,根據此比例去得到新的學習步長。按我的理解,如果當前得到的梯度為負,那學習步長就會減小一點點;如果當前得到的梯度為正,那學習步長就會增大一點點。這里的MeanSquare(w,t)??????????????√是名稱中RMS的由來。數據分析師培訓

下圖列出了關于rmsprop算法的一些研究,想了解詳情的話請自行搜索。

最后一張圖是對神經網絡學習方法的一個小總結。

這幾個算法都比較燒腦啊,全是憑大腦推理思考,回頭要好好做實驗。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢