Datawhale X 李宏毅蘋果書AI夏令營 Task2打卡

youth518發表於2024-08-31

3.3 自適應學習率

當梯度大小不再下降時,並不代表梯度本身已經變得很小接近於0了,有可能是梯度在波谷之間來回震盪。

原始的梯度下降在很簡單的誤差表面上都不一定能夠達到臨界點,因此引入自適應學習率。

3.3.1 AdaGrad

傳統的梯度下降更新引數 \(\theta_t^i\) 的過程是

\[\theta_{t+1}^i \leftarrow \theta_t^i-\eta g_t^i \]

現在需要引入一個引數定製化的學習率

\[\theta_{t+1}^i \leftarrow \theta_t^i-\frac{\eta}{\sigma_t^i} g_t^i \]

對於不同引數其 \(\sigma\) 不同,\(\sigma_t^i\) 的下標表示與迭代相關,上邊表示與引數 \(i\) 相關
引數相關的一個常見型別時算 梯度的均方根 即:

\[\sigma_t^i=\sqrt{\frac{1}{t+1}\sum_{k=0}^t(g_k^i)^2} \]

當某次迭代時梯度較大,則計算得到的 \(\sigma_t^i\) 也較大,得到的學習率就比較小,反之同理。

3.3.2 RMSProp

RMSProp 與 AdaGrad 的方法類似,不同點在於,AdaGrad 方法中認為每一個梯度具有同樣的重要性所以他們的權重都為1,但是在 RMSProp 中引入了一個超引數可以調整梯度的重要性

\[\theta_{t+1}^i\leftarrow \theta_t^i-\frac{\eta}{\sigma_t^i}g_t^i \ \ \sigma_t^i = \sqrt{\alpha(\sigma_t^i)^2+(1-\alpha)(g_t^i)^2} \]

3.3.3 Adam

Adam 時最常用的最佳化策略或者最佳化器,可以看作時在 RMSProp 的基礎上加上了動量,使用動量作為引數來更新方向,並且能夠自適應的調整學習率。

3.4 學習率排程

只使用自適應學習率並不能很好的訓練,因為在快到臨界點時,周圍的梯度比較小,此時的學習率較大移動的步伐也會很大,容易造成震盪和梯度突然暴增的問題。
透過引入學習率排程 可以緩解這個問題,之前自適應學習率中 \(\eta\) 是一個固定的值,而在學習率排程中 \(\eta\) 是和時間相關的。
一種最常見的學習率排程策略就是 學習率衰減 也稱為學習率退火。

\[\theta_{t+1}^i\leftarrow \theta_t^i-\frac{\eta_t}{\sigma_t^i}g_t^i \]

還有另外一種經典的學習率排程的方式預熱。使用預熱的意義在於,學習率最佳化的過程需要用到 \(\sigma\), 而 \(\sigma\) 是一個統計意義上的結果,因此在訓練的初期 \(\sigma\) 的值是不精準的。所以我們此時希望用較小的學習率,來抑制引數的變化,先收集一些梯度的資訊後再開始正式的更新引數。

3.5 總結

在瞭解了自適應學習率,學習率排程的最佳化方式後,我們目前的更新方式如下:

\[\theta_{t+1}^i\leftarrow \theta_t^i-\frac{\eta_t}{\sigma_t^i}m_t^i \]

這種最佳化反式和 Adam 類似,透過使用不同的方式來計算 \(\sigma_t^i\) 和 動量\(m_t^i\),我們可以得到不同的最佳化器

雖然 \(m_t^i\)\(\sigma_t^i\) 都考慮到了過去的所有梯度,但是兩者應用梯度的方式是不一樣的,動量是直接對梯度求向量和,而均方根則是不考慮方向只考慮梯度的大小,所以並不矛盾。

3.6 分類

3.6.1 分類與迴歸的關係

根據類本身是否有關聯性,我們需要考慮神否引入獨熱向量來表示類。每個獨熱向量可以看作空間中一個特定的維度,和其他維度沒有直接關係。因此用獨熱向量計算距離的話,類之間兩兩的距離是相同的。

3.6.2 帶有softmax的分類

當類別是獨熱向量時,裡面的值只有0和1,所以我們需要對神經網路計算得到的結果進行歸一化,才能和標籤計算相似度,因此我們在分類任務中引入 softmax 函式。

\[y_i^{`}=\frac{\exp(y_i)}{\sum_j\exp(y_j)} \]

當類別數量在三個及以上時我們使用 softmax 函式,當類別數量為兩個時我們直接使用 sigmoid 函式,其實對於類別數為2時,sigmoid 函式和 softmax 函式的計算是等價的。

3.6.3 分類損失

常見的分類任務中的損失函式有均方誤差交叉熵,均方誤差的形式為:

\[e=\sum(y_i-y_i^`)^2 \]

交叉熵損失的形式為:

\[e=-\sum_iy_ilny_i^` \]

在分類任務中,交叉熵損失一般來說比均方誤差的最佳化效果更好,因為當某個標籤非常小時,經過softmax函式後其得到的值非常接近於0,此時在交叉熵損失下得到的損失會非常大比較貼合實際,而對於均方誤差來說這一項為損失提供的大小隻有1。

相關文章