06.21 神經網絡的關鍵——優化器你怎麼用?兩個常規操作

點擊上方“關注”,All in AI中國

1.引言

神經網絡的關鍵——優化器你怎麼用?兩個常規操作

大部分超參數都可以用來優化神經網絡的性能。但並不是所有超參數都能"擔此重任"。優化神經網絡性能需要選擇合適的優化器。而本文將為你帶來兩個最常用的優化器。

2.梯度下降優化器

梯度下降可能是最流行、最廣泛的優化器。它是一種簡單有效的神經網絡優化方法。所有優化器的目標都是使成本函數達到最小值的情況下同時達到全局最小值。如果你想構建一個三維的成本函數,它將類似於下圖所示。

神經網絡的關鍵——優化器你怎麼用?兩個常規操作

神經網絡的關鍵——優化器你怎麼用?兩個常規操作

每一次我們找到梯度,更新權值和偏差值時,我們就更接近最優值。在我們開始訓練神經網絡之前,我們的成本會很高,就好比上圖所示的A點。通過神經網絡的每一次迭代訓練,成本會逐步降低,並接近上圖中B點所表示的全局最小值。下圖將提供一個更直觀的解答,幫助我們訓練以達到全局最小值。

神經網絡的關鍵——優化器你怎麼用?兩個常規操作

我們的成本函數並不總是像上圖像所描述的那樣"平滑"。很多時候,這些成本函數是非凸的。非凸函數帶來的問題是,你有可能會陷入局部最小值,而不會收斂到全局最小值。如下圖所示。

神經網絡的關鍵——優化器你怎麼用?兩個常規操作

從上面的圖像中可以看到,圖中有兩個最小值,其中只有一個是全局最小值。我們的神經網絡很有可能會錯過全局最小值,而收斂到局部最小值。限制網絡收斂的方法有:改變學習率或使用動量等。

3.學習率

神經網絡的關鍵——優化器你怎麼用?兩個常規操作

學習率是梯度下降中不可缺少的部分,也是其他優化器的重要因素。讓我們用一個類比來更好地解釋學習率。假設成本函數是一個坑,你從坑頂開始,你的目標是到達坑的底部。你可以把學習率看作你要到達底部採取的步驟。如果你選擇一個很大的值作為學習率,你就必須對權值和偏差值進行較大的改變。也就是說,你會直接"跳到"底部。

還有一種可能性,你將超越全局最小值(即底部),最終進入坑的另一邊。很明顯,有了過高的學習率,你就無法收斂到全局最小值,而是在全局最小值附近"徘徊"。如果你選擇一個較小值作為學習率,你的算法會需要更長的時間收斂。也就是說你會"小步慢跑"到底部。另外,如果成本函數是非凸的,那麼你的算法可能會陷入局部最小值。學習率的選擇沒有訣竅,你得根據實驗和直覺進行選擇。

4.動量梯度下降

通常情況下,動量梯度下降算法比標準梯度下降算法收斂速度更快。在標準梯度下降算法中,你需要在某個方向上採取較大的步,而在另一個方向上採取較小的步,這無疑會減緩算法的速度。

在下面所示的圖像中,你可以看到標準梯度下降在y方向上採取更大的步,在x方向上採取更小的步。這時候,你或許會想如果我們的算法能夠減少在y方向上所採取的步,並將步的方向集中在x方向,我們的算法就會很快收斂。

而這也正是動量梯度下降算法的優勢之處。它限制了一個方向的振盪,這樣我們的算法就能更快地收斂。而且,由於y方向上步的數量有限,我們可以設置較高的學習率。

神經網絡的關鍵——優化器你怎麼用?兩個常規操作

5.RMSprop優化器

RMSprop優化器的原理類似於動量梯度下降算法。RMSprop優化器限制了垂直方向上的振盪,使我們的算法可以在水平方向上採取更大的步,進行更快地收斂。RMSprop優化器和梯度下降優化器的區別主要在於它們的計算方法。下面是關於RMSprop優化器和動量梯度下降算法的方程(動量的值用beta表示,通常設置為0.9)。

神經網絡的關鍵——優化器你怎麼用?兩個常規操作

神經網絡的關鍵——優化器你怎麼用?兩個常規操作

有時候v_dw的值可能會非常接近0,我們的權值可能會"爆炸"。為了防止梯度上升,我們在分母中加入了一個參數"ε"。

6.結語

優化器是神經網絡的關鍵部分,瞭解它們的原理將有助於你的工作。

神經網絡的關鍵——優化器你怎麼用?兩個常規操作


分享到:


相關文章: