02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法
文章目錄
- 1. Mini-batch 梯度下降
- 2. 理解 mini-batch 梯度下降
- 3. 指數加權平均數
- 4. 理解指數加權平均數
- 5. 指數加權平均的偏差修正
- 6. 動量Momentum梯度下降法
- 7. RMSprop
- 8. Adam 優化算法
- 9. 學習率衰減
- 10. 局部最優的問題
- 作業
參考:
吳恩達視頻課
深度學習筆記
1. Mini-batch 梯度下降
在巨大的數據集上進行訓練,速度非常慢,如何提高效率?
前面我們學過向量化可以較快的處理整個訓練集的數據,如果樣本非常的大,在進行下一次梯度下降之前,你必須完成前一次的梯度下降。如果我們能先處理一部分數據,算法速度會更快。
- 把訓練集分割為小一點的子集(稱之 mini-batch)訓練
batch 梯度下降法:指的就是前面講的梯度下降法,可以同時處理整個 訓練集
mini-batch:每次處理的是單個的 mini-batch 訓練子集
2. 理解 mini-batch 梯度下降
mini-batch 梯度下降,每次迭代后 cost 不一定是下降的,因為每次迭代都在訓練不同的樣本子集,但總體趨勢應該是下降的
mini-batch 的 size 大小:
- 大小 = m,就是batch梯度下降法
- 大小 = 1,就是隨機梯度下降
3. 指數加權平均數
假設,v0=0,vt=β?vt?1+(1?β)?θtv_0 = 0, v_t = \beta*v_{t-1}+(1-\beta)*\theta_tv0?=0,vt?=β?vt?1?+(1?β)?θt?
選取不同的 β\betaβ 值,得到相應的氣溫曲線
4. 理解指數加權平均數
假如 β=0.9,t=100\beta = 0.9,t=100β=0.9,t=100,將上面的帶進去求 v100v_{100}v100?
v100=0.1θ100+0.9(0.1θ99+0.9(0.1θ98+0.9v97))0v100=0.1θ100+0.1×0.9θ99+0.1×(0.9)2θ98+0.1×(0.9)3θ97+0.1×(0.9)4θ96+…\begin{array}{l}v_{100}=0.1 \theta_{100}+0.9\left(0.1 \theta_{99}+0.9\left(0.1 \theta_{98}+0.9 v_{97}\right)\right)_{0} \\ \\ v_{100}=0.1 \theta_{100}+0.1 \times 0.9 \theta_{99}+0.1 \times(0.9)^{2} \theta_{98}+0.1 \times(0.9)^{3} \theta_{97}+0.1 \times(0.9)^{4} \theta_{96}+\ldots\end{array}v100?=0.1θ100?+0.9(0.1θ99?+0.9(0.1θ98?+0.9v97?))0?v100?=0.1θ100?+0.1×0.9θ99?+0.1×(0.9)2θ98?+0.1×(0.9)3θ97?+0.1×(0.9)4θ96?+…?
好處:代碼簡單,占用內存極少
vθ=0,vt:=β?vθ+(1?β)?θtv_\theta = 0, v_t := \beta*v_\theta+(1-\beta)*\theta_tvθ?=0,vt?:=β?vθ?+(1?β)?θt?
當然,它并不是最好、最精準的計算平均數的方法
5. 指數加權平均的偏差修正
6. 動量Momentum梯度下降法
思想:計算梯度的指數加權平均數,利用該梯度更新權重
上圖情況下,標準的梯度下降會上下波動,且要使用較小的學習率,否則會偏離更遠。
如果我們使用過去梯度的加權平均,縱向的就抵消了一些,橫向的疊加了一些,可以更平滑的快速找向最優點
vdW=βvdW+(1?β)dWvdb=βvdb+(1?β)dbv_{d W}=\beta v_{d W}+(1-\beta) d W\\ v_{d b}=\beta v_{d b}+(1-\beta) d bvdW?=βvdW?+(1?β)dWvdb?=βvdb?+(1?β)db
W:=W?α?vdWb:=b?α?vdbW:=W-\alpha* v_{d W} \\ b:=b-\alpha* v_{d b}W:=W?α?vdW?b:=b?α?vdb?
- 超參數有 α\alphaα, β=0.9\beta = 0.9β=0.9( β\betaβ 經常取 0.9)
- 如果想偏差修正,vdW,vdbv_{d W},v_{d b}vdW?,vdb? 還要除以 1?βt1-\beta^t1?βt,實際上人們不這么做,10次迭代之后,偏差就基本很小了
動量梯度下降法,并不是對所有情況都有效,它對碗狀的優化效果較好
7. RMSprop
全稱是 root mean square prop 算法,它也可以加速梯度下降
微分平方的加權平均數:
SdW=βSdW+(1?β)(dW)2Sdb=βSdb+(1?β)(db)2S_{d W}=\beta S_{d W}+(1-\beta) (d W)^{2}\\ S_{d b}=\beta S_{d b}+(1-\beta) (d b)^{2}SdW?=βSdW?+(1?β)(dW)2Sdb?=βSdb?+(1?β)(db)2
W:=W?α?dWSdW+Eb:=b?α?dbSdb+EW:=W-\alpha* \frac{d W}{\sqrt{S_{d W}}+\mathcal{E}}\\ \\ \text{ }\\ \quad b:=b-\alpha* \frac{d b}{\sqrt{S_{d b}}+\mathcal{E}}W:=W?α?SdW??+EdW??b:=b?α?Sdb??+Edb?
E=1e?8\mathcal{E} = 1e^{-8}E=1e?8 保證分母不為 0
RMSprop 跟 Momentum 有很相似的一點,可以消除梯度下降和mini-batch梯度下降中的擺動,并允許你使用一個更大的學習率,從而加快你的算法學習速度。
8. Adam 優化算法
Adam (Adaptive Moment Estimation) 優化算法基本上就是將 Momentum 和 RMSprop 結合在一起
- 初始化:vdW=0,SdW=0,vdb=0,Sdb=0v_{d W}=0, S_{d W}=0, v_{d b}=0, S_{d b}=0vdW?=0,SdW?=0,vdb?=0,Sdb?=0
- t 次迭代
Momentum:
vdW=β1vdW+(1?β1)dWv_{d W}=\beta_{1} v_{d W}+\left(1-\beta_{1}\right) d WvdW?=β1?vdW?+(1?β1?)dW
vdb=β1vdb+(1?β1)dbv_{d b}=\beta_{1} v_{d b}+\left(1-\beta_{1}\right) d bvdb?=β1?vdb?+(1?β1?)db
RMSprop:
SdW=β2SdW+(1?β2)(dW)2S_{d W}=\beta_{2} S_{d W}+\left(1-\beta_{2}\right)(d W)^{2}SdW?=β2?SdW?+(1?β2?)(dW)2
Sdb=β2Sdb+(1?β2)(db)2S_{d b}=\beta_{2} S_{d b}+\left(1-\beta_{2}\right)(d b)^{2}Sdb?=β2?Sdb?+(1?β2?)(db)2
偏差修正:
vdWcorrected?=vdW1?β1tv_{d W}^{\text {corrected }}=\frac{v_{d W}}{1-\beta_{1}^{t}}vdWcorrected??=1?β1t?vdW??
vdbcorrected?=vdb1?β1tv_{d b}^{\text {corrected }}=\frac{v_{d b}}{1-\beta_{1}^{t}}vdbcorrected??=1?β1t?vdb??
SdWcorrected?=SdW1?β2tS_{d W}^{\text {corrected }}=\frac{S_{d W}}{1-\beta_{2}^{t}}SdWcorrected??=1?β2t?SdW??
Sdbcorrected?=Sdb1?β2tS_{d b}^{\text {corrected }}=\frac{S_{d b}}{1-\beta_{2}^{t}}Sdbcorrected??=1?β2t?Sdb??
更新權重:
W:=W?α?vdWcorrected?SdWcorrected?+εW:=W- \alpha*\frac{ v_{d W}^{\text {corrected }}}{\sqrt{S_{d W}^{\text {corrected }}}+\varepsilon}W:=W?α?SdWcorrected???+εvdWcorrected???
\quad
b:=b?α?vdbcorreted?Sdbcorrected?+εb:=b- \alpha*\frac{v_{\mathrm{db}}^{\text {correted }}}{\sqrt{S_{\mathrm{db}}^{\text {corrected }}}+\varepsilon}b:=b?α?Sdbcorrected???+εvdbcorreted???
Adam算法結合了 Momentum 和 RMSprop 梯度下降法,并且是一種極其常用的學習算法
其被證明能有效適用于不同神經網絡,適用于廣泛的結構
超參數:
- 學習率 α\alphaα
- β1=0.9\beta_1 = 0.9β1?=0.9,常用
- β2=0.999\beta_2 = 0.999β2?=0.999,作者推薦
- ε=1e?8\varepsilon = 1e^{-8}ε=1e?8
9. 學習率衰減
慢慢減少 學習率 的本質在于,在學習初期,使用較大的步伐,開始收斂的時候,用小一些的學習率能讓步伐小一些
- 對不同的 mini-batch 進行訓練,一次稱之為 epoch
α=11+decayRate?epochNum?α0\alpha = \frac{1}{1+decayRate*epochNum}*\alpha_0α=1+decayRate?epochNum1??α0?
還有些其他的方法:
α=0.95epochNumα0α=kepochNumα0α=ktα0,t為mini-batch的數字\alpha = 0.95^{epochNum}\alpha_0\\ \alpha = \frac{k}{\sqrt {epochNum}}\alpha_0\\ \alpha = \frac{k}{\sqrt t}\alpha_0,t為 \text{mini-batch}的數字α=0.95epochNumα0?α=epochNum?k?α0?α=t?k?α0?,t為mini-batch的數字
還有離散下降學習率,即 不是每步都下調學習率
10. 局部最優的問題
高維度空間中,我們不太可能遇見(概率很低)如上圖所示的局部最優點,因為需要這么多的維度方向上都梯度為 0(概率很低)
所以更有可能遇到的是鞍點
基本不會遇見局部最優問題,可能遇見的是平穩段減緩了學習速度,該區域梯度接近于 0 ,要很長時間才能走出去。Momentum 或 RMSprop,Adam 能夠加快速度,讓你盡早 走出平穩段。
作業
02.改善深層神經網絡:超參數調試、正則化以及優化 W2.優化算法(作業:優化方法)
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的02.改善深层神经网络:超参数调试、正则化以及优化 W2.优化算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LintCode 434. 岛屿的个数I
- 下一篇: LeetCode MySQL 550.