當前位置:網站首頁>梯度下降法介紹-黑馬程序員機器學習講義
梯度下降法介紹-黑馬程序員機器學習講義
2022-06-24 04:35:40【黑馬程序員官方】
學習目標
- 知道全梯度下降算法的原理
- 知道隨機梯度下降算法的原理
- 知道隨機平均梯度下降算法的原理
- 知道小批量梯度下降算法的原理
上一節中給大家介紹了最基本的梯度下降法實現流程,常見的梯度下降算法有:
- 全梯度下降算法(Full gradient descent),
- 隨機梯度下降算法(Stochastic gradient descent),
- 小批量梯度下降算法(Mini-batch gradient descent),
- 隨機平均梯度下降算法(Stochastic average gradient descent)
它們都是為了正確地調節權重向量,通過為每個權重計算一個梯度,從而更新權值,使目標函數盡可能最小化。其差別在於樣本的使用方式不同。
1 全梯度下降算法(FG)
計算訓練集所有樣本誤差,對其求和再取平均值作為目標函數。
權重向量沿其梯度相反的方向移動,從而使當前目標函數减少得最多。
因為在執行每次更新時,我們需要在整個數據集上計算所有的梯度,所以批梯度下降法的速度會很慢,同時,批梯度下降法無法處理超出內存容量限制的數據集。
批梯度下降法同樣也不能在線更新模型,即在運行的過程中,不能增加新的樣本。
其是在整個訓練數據集上計算損失函數關於參數θ的梯度:
2 隨機梯度下降算法(SG)
由於FG每迭代更新一次權重都需要計算所有樣本誤差,而實際問題中經常有上億的訓練樣本,故效率偏低,且容易陷入局部最優解,因此提出了隨機梯度下降算法。
其每輪計算的目標函數不再是全體樣本誤差,而僅是單個樣本誤差,即每次只代入計算一個樣本目標函數的梯度來更新權重,再取下一個樣本重複此過程,直到損失函數值停止下降或損失函數值小於某個可以容忍的閾值。
此過程簡單,高效,通常可以較好地避免更新迭代收斂到局部最優解。其迭代形式為
其中,x(i)錶示一條訓練樣本的特征值,y(i)錶示一條訓練樣本的標簽值
但是由於,SG每次只使用一個樣本迭代,若遇上噪聲則容易陷入局部最優解。
3 小批量梯度下降算法(mini-batch)
小批量梯度下降算法是FG和SG的折中方案,在一定程度上兼顧了以上兩種方法的優點。
每次從訓練樣本集上隨機抽取一個小樣本集,在抽出來的小樣本集上采用FG迭代更新權重。
被抽出的小樣本集所含樣本點的個數稱為batch_size,通常設置為2的幂次方,更有利於GPU加速處理。
特別的,若batch_size=1,則變成了SG;若batch_size=n,則變成了FG.其迭代形式為
4 隨機平均梯度下降算法(SAG)
在SG方法中,雖然避開了運算成本大的問題,但對於大數據訓練而言,SG效果常不盡如人意,因為每一輪梯度更新都完全與上一輪的數據和梯度無關。
隨機平均梯度算法克服了這個問題,在內存中為每一個樣本都維護一個舊的梯度,隨機選擇第i個樣本來更新此樣本的梯度,其他樣本的梯度保持不變,然後求得所有梯度的平均值,進而更新了參數。
如此,每一輪更新僅需計算一個樣本的梯度,計算成本等同於SG,但收斂速度快得多。
5 小結
- 全梯度下降算法(FG)【知道】
- 在進行計算的時候,計算所有樣本的誤差平均值,作為我的目標函數
- 隨機梯度下降算法(SG)【知道】
- 每次只選擇一個樣本進行考核
- 小批量梯度下降算法(mini-batch)【知道】
- 選擇一部分樣本進行考核
- 隨機平均梯度下降算法(SAG)【知道】
- 會給每個樣本都維持一個平均值,後期計算的時候,參考這個平均值
版權聲明
本文為[黑馬程序員官方]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/175/202206232359536397.html
邊欄推薦
猜你喜歡
隨機推薦
- 你真的理解LDO的輸出電容嗎!?
- 二維激光SLAM( 使用Laser Scan Matcher )
- MySQL使用ReplicationConnection導致的連接失效分析與解决
- Go寫文件的權限 WriteFile(filename, data, 0644)?
- 在線文本過濾小於指定長度工具
- quartus調用&設計D觸發器——仿真&時序波驗證
- 【深入理解TcaplusDB技術】TcaplusDB構造數據
- 等保備案是什麼意思?應該去哪裏辦理備案?
- 建議自查!MySQL驅動Bug引發的事務不回滾問題,也許你正面臨該風險!
- 百萬獎金等你來拿,首届中國元宇宙創新應用大賽聯合創業黑馬火熱招募中!
- 力扣解法匯總513-找樹左下角的值
- 快速排序的簡單理解
- 139. 單詞拆分
- Web篇_01 了解web開發
- ADB 按鍵名、按鍵代碼數字、按鍵說明對照錶
- leetcode:面試題 08.13. 堆箱子【自頂而下的dfs + memory or 自底而上的排序 + dp】
- 解答02:Smith圓為什麼能“上感下容 左串右並”?
- MySQL的 安裝、配置、卸載
- 【ESP8266-01s】獲取天氣,城市,北京時間
- Redis 集群
- 【華中科技大學】考研初試複試資料分享
- 傑理之串口設置好以後打印亂碼,內部晶振沒有校准【篇】
- 【NOI2014】15.起床困難綜合症【二進制】
- 函數的定義和函數的參數
- JDBC 在性能測試中的應用
- 35歲危機?內卷成程序員代名詞了…
- SQL聯合查詢(內聯、左聯、右聯、全聯)的語法
- Outlook開機自啟+關閉時最小化
- 北大、加州伯克利大學等聯合| Domain-Adaptive Text Classification with Structured Knowledge from Unlabeled Data(基於未標記數據的結構化知識的領域自適應文本分類)
- 為什麼你的數據圖譜分析圖上只顯示一個值?
- sql server常用sql
- MySQL事務隔離
- STM32-------外部中斷
- 2022年信息安全工程師考試知識點:訪問控制
- 高仿書旗小說 Flutter 版,學起來
- 工作中一些常用的工具函數
- docker 部署redis
- 如何利用數倉創建時序錶
- version `ZLIB_1.2.9‘ not found (required by /lib64/libpng16.so.16)
- 【Flutter】如何使用Flutter包和插件