介紹
基于梯度下降訓(xùn)練神經(jīng)網(wǎng)絡(luò)時,我們將冒網(wǎng)絡(luò)落入局部極小值的風(fēng)險,網(wǎng)絡(luò)在誤差平面上停止的位置并非整個平面的最低點。這是因為誤差平面不是內(nèi)凸的,平面可能包含眾多不同于全局最小值的局部極小值。此外,盡管在訓(xùn)練數(shù)據(jù)上,網(wǎng)絡(luò)可能到達全局最小值,并收斂于所需點,我們無法保證網(wǎng)絡(luò)所學(xué)的概括性有多好。這意味著它們傾向于過擬合訓(xùn)練數(shù)據(jù)。
有一些手段有助于緩解這些問題,不過并沒有絕對地預(yù)防這些問題產(chǎn)生的方法。這是因為網(wǎng)絡(luò)的誤差平面一般很難穿越,而神經(jīng)網(wǎng)絡(luò)整體而言很難解釋。
隨機梯度下降與mini-batch隨機梯度下降
這些算法改編了標(biāo)準(zhǔn)梯度下降算法,在算法的每次迭代中使用訓(xùn)練數(shù)據(jù)的一個子集。SGD在每權(quán)重更新上使用一個樣本,mini-batch SGD使用預(yù)定義數(shù)目的樣本(通常遠(yuǎn)小于訓(xùn)練樣本的總數(shù))。這大大加速了訓(xùn)練,因為我們在每次迭代中沒有使用整個數(shù)據(jù)集,它需要的計算量少得多。同時,它也有望導(dǎo)向更好的表現(xiàn),因為網(wǎng)絡(luò)在訓(xùn)練中斷斷續(xù)續(xù)的移動應(yīng)該能讓它更好地避開局部極小值,而使用一小部分?jǐn)?shù)據(jù)集當(dāng)有助于預(yù)防過擬合。
正則化
正則化基本上是一個懲罰模型復(fù)雜度的機制,它是通過在損失函數(shù)中加入一個表示模型復(fù)雜度的項做到這一點的。在神經(jīng)網(wǎng)絡(luò)的例子中,它懲罰較大的權(quán)重,較大的權(quán)重可能意味著神經(jīng)網(wǎng)絡(luò)過擬合了訓(xùn)練數(shù)據(jù)。
最左:欠擬合;最右:過擬合
若網(wǎng)絡(luò)的原損失函數(shù)記為L(y, t),正則化常數(shù)記為λ,則應(yīng)用了L2正則化后,損失函數(shù)改寫為如下形式:
正則化在損失函數(shù)中加入了網(wǎng)絡(luò)的每個權(quán)重的平方和,以懲罰給任何一個連接分配了過多權(quán)重的模型,希望能降低過擬合程度。
動量
簡單來說,動量在當(dāng)前權(quán)重更新上加上一小部分前次權(quán)重更新。這有助于預(yù)防模型陷入局部極小值,因為即使當(dāng)前梯度為0,之前梯度絕大多數(shù)情況下不為0,這樣模型就不那么容易陷入極小值。另外,使用動量也使誤差平面上的移動總體上更為平滑,而且移動得更快。
基于這一簡單的動量概念,我們可以重寫權(quán)重更新等式至如下形式(α為動量因子):
還有其他一些更高級的動量形式,比如Nesterov方法。
學(xué)習(xí)率退火
我們可以不在整個訓(xùn)練過程中使用同一學(xué)習(xí)率,而是隨著時間的進展降低學(xué)習(xí)率,也就是退火。
最常見的退火規(guī)劃基于1/t關(guān)系,如下圖所示,其中T和μ0為給定的超參數(shù),μ為當(dāng)前學(xué)習(xí)率:
這經(jīng)常被稱為“搜索并收斂”(search-then-converge)退火規(guī)劃,因為直到t達到T之前,網(wǎng)絡(luò)都處于“搜索”階段,學(xué)習(xí)率沒有下降很多,在此之后,學(xué)習(xí)率減慢,網(wǎng)絡(luò)進入“收斂”階段。這和探索(exploitation)與利用(exploration)間的平衡多多少少有些關(guān)系。剛開始我們優(yōu)先探索搜索空間,擴展我們關(guān)于空間的整體知識,隨著時間的推進,我們過渡到利用搜索空間中我們已經(jīng)找到的良好區(qū)域,收縮至特定的極小值。
結(jié)語
這些改進標(biāo)準(zhǔn)梯度下降算法的方法都需要在模型中加入超參數(shù),因而會增加調(diào)整網(wǎng)絡(luò)所需的時間。最近提出的一些新算法,比如Adam、Adagrad、Adadelta,傾向于在每個參數(shù)的基礎(chǔ)上進行優(yōu)化,而不是基于全局優(yōu)化,因此它們可以基于單獨情況精細(xì)地調(diào)整學(xué)習(xí)率。在實踐中,它們往往更快、更好。下圖同時演示了之前提到的梯度下降變體的工作過程。注意看,和簡單的動量或SGD相比,更復(fù)雜的變體收斂得更快。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4781瀏覽量
101215 -
動量
+關(guān)注
關(guān)注
0文章
6瀏覽量
7948 -
正則化
+關(guān)注
關(guān)注
0文章
17瀏覽量
8154
原文標(biāo)題:如何改進梯度下降算法
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
SGD的隨機項在其選擇最終的全局極小值點的關(guān)鍵性作用
如何對一波形所有極大(?。?b class='flag-5'>值點用三次樣條插值函數(shù)擬...
關(guān)于檢測的離散信號求極值問題
分享一個自己寫的機器學(xué)習(xí)線性回歸梯度下降算法
機器學(xué)習(xí)新手必學(xué)的三種優(yōu)化算法(牛頓法、梯度下降法、最速下降法)
改進的BP網(wǎng)絡(luò)算法在圖像識別中的應(yīng)用
![改進的BP網(wǎng)絡(luò)算法在圖像識別中的應(yīng)用](https://file.elecfans.com/web2/M00/49/49/pYYBAGKhtEOAYaSuAAAShwR3X3k588.jpg)
機器學(xué)習(xí):隨機梯度下降和批量梯度下降算法介紹
![機器學(xué)習(xí):隨機<b class='flag-5'>梯度</b><b class='flag-5'>下降</b>和批量<b class='flag-5'>梯度</b><b class='flag-5'>下降</b>算法介紹](https://file1.elecfans.com//web2/M00/A6/F8/wKgZomUMQYuAHpK5AAFKoyUxcrg756.png)
梯度下降算法及其變種:批量梯度下降,小批量梯度下降和隨機梯度下降
講解隨機梯度下降、類別數(shù)據(jù)編碼、Vowpal Wabbit機器學(xué)習(xí)庫
簡單的梯度下降算法,你真的懂了嗎?
如何使用區(qū)域相似度實現(xiàn)局部擬合活動輪廓模型
基于雙曲網(wǎng)絡(luò)空間嵌入與極小值聚類的社區(qū)劃分算法
![基于雙曲網(wǎng)絡(luò)空間嵌入與<b class='flag-5'>極小值</b>聚類的社區(qū)劃分算法](https://file.elecfans.com/web1/M00/E8/CE/pIYBAGBldQqAJa9tAAJQKMnRsY8671.png)
評論