深度学习相关概念:梯度下降
深度學習相關概念:梯度下降法、動量法與自適應梯度
- 1. 梯度下降概念
- 2. 梯度下降的目的
- 3. 梯度下降的原理
- 4. 梯度計算
- 5. 梯度下降算法的類別及計算效率
- 5.1 批量梯度下降(BGD)
- 5.2 隨機梯度下降(SGD)
- 5.3 小批量梯度下降(MBGD)
1. 梯度下降概念
??在深度學習中,你一定聽說過“梯度下降”,在絕大部分的神經網絡模型里有直接或者間接地使用了梯度下降的算法。深度學習的核心:就是把數據喂給一個人工設計的模型,然后讓模型自動的“學習”,通過反向傳播進而優化模型自身的各種參數,最終使得在某一組參數下該模型能夠最佳的匹配該學習任務。那么如果想要這個模型達到我們想要的效果,這個“學習”的過程就是深度學習算法的關鍵。梯度下降法就是實現該“學習”過程的一種最常見的方式,尤其是在深度學習(神經網絡)模型中,BP反向傳播方法的核心就是對每層的權重參數不斷使用梯度下降來進行優化。雖然不同的梯度下降算法在具體的實現細節上會稍有不同,但是主要的思想是大致一樣的。
2. 梯度下降的目的
??在之前我們介紹過交叉熵函數,交叉熵函數就是損失函數的一種,損失函數用來衡量模型的精確度。一般來說,損失函數的值越小,我們訓練的模型的精確度就越高。如果要提高模型的精確度,就需要盡可能降低損失函數的值。而降低損失函數的值,我們一般采用梯度下降這個方法。所以,梯度下降的目的,就是最小化損失函數。
3. 梯度下降的原理
梯度下降就是尋找損失函數的最低點。那么如何尋找損失函數的最低點呢?在這里,我們使用了微積分里導數,通過求出函數導數的值,從而找到函數下降的方向或者是最低點(極值點)。
計算梯度后如何找到最低點?如下圖路線所示
4. 梯度計算
梯度的計算分為數值法和解析法:
5. 梯度下降算法的類別及計算效率
5.1 批量梯度下降(BGD)
在梯度下降的每一步中,我們都用到了所有的訓練樣本,我們需要進行求和運算,在梯度下降中,在計算微積分時,每一個樣本都需要計算,會導致運算速度比較慢。
5.2 隨機梯度下降(SGD)
隨機梯度下降法和批量梯度下降法是兩個極端,批量梯度下降每次采用所有數據下降,隨機梯度下降每次用一個樣本來梯度下降。
- 訓練速度:隨機梯度下降法由于每次僅僅采用一個樣本來迭代,訓練速度很快。
- 精準度:隨機梯度下降法每次訓練僅僅用一個樣本決定梯度的方向,可能得到局部最小值,精準度不高。
- 收斂速度:由于隨機梯度下降法一次迭代一個樣本,導致迭代方向變化很大,不能很快的收斂到局部最優解。
5.3 小批量梯度下降(MBGD)
小批量梯度下降每次迭代使用一個以上但又不是全部的樣本。小批量梯度下降是集中了隨機梯度下降(SGD)和批量梯度下降(BGD)的優點:使用多個樣本相比SGD提高了梯度估計的精準度,小批量的估計。缺點:同SGD一樣,每次梯度的方向不確定加粗樣式,可能陷入局部最優。通常在使用MBGD之前先將數據隨機打亂,然后劃分Mini-batch,所以MBGD有時也稱SGD。Mini-batch 大小的選擇通常使用2的冪數,可以獲得更少的運行時間。
但是梯度下降3種算法都有缺點,都可能會陷入局部最優或者計算量大。應該如何改進?
目前人們已經提出動量法和自適應梯度來解決本文中的問題。詳情見我的下一篇博客——深度學習相關概念:動量法與自適應梯度
總結
以上是生活随笔為你收集整理的深度学习相关概念:梯度下降的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国研发磁悬浮高铁新技术 再次实现自我超
- 下一篇: java文件快速扫描仪_Java使用扫描