【深度學習筆記】優化演算法( Optimization Algorithm)
本文依舊是吳恩達《深度學習工程師》課程的筆記整理與拓展。
一、優化演算法的目的與挑戰
優化演算法主要是用來加快神經網路的訓練速度,使得目標函式快速收斂。
優化問題面臨的挑戰有病態解、鞍點、梯度爆炸與梯度消失……具體可見參考文獻【1】241頁到249頁。
其中深度學習不太可能陷入區域性最優,因為loss函式通常涉及多個維度(w1,w2...)
二、常見的優化演算法
1、基本演算法
-
小批量梯度下降即各種變體
-
批量梯度下降(Batch gradient descent)
-
隨機梯度下降(Stochastic gradient descent)
- 小批量梯度下降(Mini-batch gradient descent)
三者關係:
mini-batch size = m,Batch gradient descent
mni-batch size = 1,Stochastic gradient descent
三者各自的特點:
Batch gradient descent:優化目標函式一次迭代的時間太長
Stochastic gradient descent:喪失了向量化加速的優勢
Stochastic gradient descent:可以向量化,而且每次迭代不用遍歷整個資料集
如何選擇mini-batch size:
如果是小的訓練集(m<=2000),可以直接使用Batch gradient descent;對於大的訓練集,常見的size有64,128,256,512.另外注意考慮CPU/GPU memory。
涉及概念Epoch:
1 epoch即一代就是遍歷整個資料集一次。
- Momentum梯度下降法(Gradient descent with momentum)
相對於通常的梯度下降法,該優化演算法採用了dw的指數加權平均數替換原來的dw,使得w更快地指向最優解。
指數加權平均 Exponentially weighted averages
這裡補充一下指數加權平均的概念。課堂上是以倫敦連續很多天的溫度為例子,是指第t天的溫度
這裡的指數加權平均Vt大約是 天的平均溫度
2、自適應學習率演算法
- RMSprop
和Momentum演算法一樣,可以消除梯度下降中的擺動並使用更大的學習率。
- Adam
結合了Momentum和RMSprop兩種演算法,是很常用的優化演算法。
三、如何選擇合適的優化演算法
一是考慮自己對演算法的熟悉程度, 便於除錯超引數;二是Adam從總體來說是最好的選擇。詳見參考文獻【2】、【3】
四、優化策略
許多優化技術並非真正的演算法,而是一般化的模板,可以特定地產生演算法,或是併入到很多不同的演算法中。
- 正則化輸入 Normalizing inputs
正則化輸入可以使得代價函式更圓,從而加快訓練速度。
實現方法分為兩步:零均值化,歸一化方差。即減去均值除以標準差。
- 批標準化 Batch Normalization
批標準化使得每一層的隱藏單元有著標準的均值和方差(不一定分別為0和1),從而加快訓練速度。
這兩個引數是需要學習的引數。更多內容參看論文。
- 預訓練
待學習
- 學習率衰減 Learning rate decay
兩個超引數:decayrate、