深度學習(七):梯度下降

梯度下降(Gradient Descent)是深度學習中最核心的優化方法之一,它通過迭代更新模型參數,使得損失函數達到最小值,從而訓練出性能良好的神經網絡模型。

基礎原理

損失函數

在深度學習中,損失函數 L(θ) 是衡量模型預測值與真實值差距的函數,θ 表示模型參數。常見的損失函數包括:

  • 均方誤差(MSE):適用于回歸問題

    在這里插入圖片描述

  • 交叉熵損失(Cross-Entropy Loss):適用于分類問題

    在這里插入圖片描述

損失函數是梯度下降的優化目標,梯度下降通過計算損失函數對參數的偏導數,引導參數向最優值更新。

梯度與偏導數

梯度是多變量函數在某一點處的方向導數向量,它指向函數上升最快的方向。在深度學習中:

在這里插入圖片描述

梯度下降通過沿梯度的反方向更新參數,使損失函數下降:

在這里插入圖片描述

其中 η 是學習率(learning rate),控制每次更新的步長。

學習率的重要性

學習率 η 是梯度下降的核心超參數:

  • 過大:可能導致訓練不收斂,甚至發散
  • 過小:收斂速度慢,可能陷入局部最優

常用的策略包括:

  • 學習率衰減(Learning Rate Decay):隨訓練輪數減小學習率
  • 自適應學習率方法:如 Adam、RMSProp 等,自動調整每個參數的學習率

梯度下降算法及其變體

批量梯度下降(Batch Gradient Descent)

原理:每次迭代使用整個訓練集計算梯度更新參數。

在這里插入圖片描述

優點

  • 收斂穩定,方向正確
  • 適合凸優化問題

缺點

  • 數據量大時計算量大,內存消耗高
  • 對非凸優化容易陷入局部最優

隨機梯度下降(Stochastic Gradient Descent, SGD)

原理:每次迭代僅使用一個樣本計算梯度。

在這里插入圖片描述

優點

  • 計算效率高,可處理大規模數據
  • 可跳出局部最優,具有一定隨機性

缺點

  • 梯度波動大,收斂不穩定
  • 需要設置較小的學習率以保證收斂

小批量梯度下降(Mini-batch Gradient Descent)

原理:每次迭代使用一小批數據計算梯度。

在這里插入圖片描述

其中 B 為批大小(Batch Size)。

優點

  • 綜合了批量和隨機梯度下降的優點
  • 可利用 GPU 并行計算,提高訓練效率
  • 梯度波動適中,有利于跳出局部最優

缺點

  • 批大小選擇敏感,過小梯度噪聲大,過大收斂慢

動量法(Momentum)

動量法在更新參數時引入慣性項,緩解 SGD 的震蕩:

在這里插入圖片描述

  • γ 是動量因子(通常取 0.9)
  • 優點:加速收斂,尤其在陡峭斜坡方向
  • 類比物理:參數像有慣性的粒子在損失函數曲面上滾動

自適應學習率方法

AdaGrad

  • 思路:根據參數歷史梯度調整學習率,小梯度方向加大步長,大梯度方向減小步長

  • 更新公式:

    在這里插入圖片描述

其中 Gt 為歷史梯度平方和矩陣,?\epsilon? 防止除零

缺點:學習率單調下降,可能過早停止

RMSProp

  • 改進 AdaGrad,使用指數加權平均避免學習率過早減小

  • 更新公式:

    在這里插入圖片描述

Adam

  • 結合動量法和 RMSProp

  • 利用一階矩估計和二階矩估計動態調整學習率

  • 更新公式:

    在這里插入圖片描述

Adam 是目前深度學習中最常用的優化器之一,適合大多數場景。

梯度下降的挑戰與解決方案

梯度消失與爆炸

在深層神經網絡中,反向傳播可能導致梯度過小(消失)或過大(爆炸),影響收斂。原因包括:

  • 梯度消失:如 sigmoid 激活函數在飽和區域導數接近 0。
  • 梯度爆炸:梯度在深層網絡中累積放大。

局部極小值與鞍點

深度學習的損失函數通常是非凸的,存在局部極小值和鞍點。隨機梯度下降的噪聲有助于跳出局部極小值,而動量法和自適應優化器可加速逃離鞍點。

計算效率

深度學習模型涉及大量參數和數據,梯度計算成本高。解決方案包括:

  • 分布式訓練:如數據并行和模型并行。
  • 混合精度訓練:利用半精度浮點數(如 FP16)加速計算。
  • 高效硬件:如 GPU、TPU 加速矩陣運算。

學習率選擇與調參

學習率的選擇對收斂至關重要。過大可能導致發散,過小則收斂緩慢。解決方案包括:

  • 學習率搜索:如網格搜索或隨機搜索。
  • 自動調參工具:如 Optuna 或 Ray Tune。
  • 自適應優化器:如 Adam 減少手動調參需求。

梯度下降在深度學習中的應用

梯度下降廣泛應用于深度學習的各個領域,包括但不限于:

  • 計算機視覺
    • 卷積神經網絡(CNN):如 ResNet、EfficientNet 用于圖像分類、目標檢測。
    • 視覺 Transformer:如 ViT 用于圖像分割、圖像生成。
  • 自然語言處理
    • 循環神經網絡(RNN):如 LSTM 用于序列建模。
    • Transformer 模型:如 BERT、GPT 用于機器翻譯、文本生成。
  • 強化學習
    • 深度 Q 網絡(DQN):優化策略函數。
    • 策略梯度方法:如 PPO 用于機器人控制。
  • 生成模型
    • 生成對抗網絡(GAN):優化生成器和判別器。
    • 變分自編碼器(VAE):優化編碼器和解碼器。
  • 推薦系統:如深度因子分解機(DeepFM)優化用戶偏好預測。

總結

梯度下降作為深度學習的核心優化算法,以其簡單性和高效性成為模型訓練的基石。從批量梯度下降到 Adam 等自適應優化器,梯度下降的變體和優化策略不斷演進,顯著提高了收斂速度和穩定性。然而,面對日益復雜的模型和任務,梯度下降仍需應對梯度消失/爆炸、計算效率和泛化能力等挑戰。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/97713.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/97713.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/97713.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

常見巖性分類與油氣勘探意義筆記

常見巖性分類與油氣勘探意義筆記 相關科普視頻可查看【說說巖石的分類-嗶哩嗶哩】 一、巖石基本分類體系 根據成因,自然界巖石可分為三大類,其中沉積巖與油氣勘探關系最為密切: 1. 火成巖(巖漿巖) 由巖漿冷卻凝固…

【Kubernetes】Tomcat 啟用 Prometheus 監控指標

之前出過一篇文章關于 “自定義監控指標實現業務 HPA 伸縮” ,其中使用了 webapp 應用的指標數據(JVM),接下來,這篇文章將介紹如何在通過 Tomcat 部署的 webapp 中啟用 Metrics 指標,一起來看看吧&#xf…

JVM 三色標記算法詳解!

目錄1. 什么是三色標記算法?三種顏色及其含義:2. 基礎三色標記算法流程 (非并發)3. 并發場景下的挑戰:一致性問題3.1. 漏標 (Missing Live Object) - 最嚴重的問題3.2. 錯標 (Floating Garbage) - 不那么嚴重的問題4. 屏障機制 (Barrier) - 解…

優化神經網絡模型以提升R2值至0.99的全面方案

優化神經網絡模型以提升R值至0.99的全面方案 1. 問題分析與背景 在深度學習項目中,提升模型的R(決定系數)值至0.99是一個具有挑戰性的目標,特別是在處理復雜的時間序列數據時。我們的現有模型結合了LSTM層、自注意力機制和MLP處理…

pgNow:一款免費的PostgreSQL監控與性能診斷工具

pgNow 是一款免費的桌面工具,可以為 PostgreSQL 數據庫提供快速集中的監控與性能診斷。 pgNow 不依賴代理,無需任何配置,可以幫助開發者或數據庫管理員(DBA)直觀地查看數據庫的統計信息和關鍵性能指標。 功能特性 跨平…

深入理解棧與隊列——從原理理解到實戰應用

目錄 一、引言 二、棧(Stack) 2.1 棧的基本概念 2.2 棧的使用 2.3 棧的模擬實現 2.4 棧的實戰應用 2.4.1 括號匹配 2.4.2 逆波蘭表達式求值 2.4.3 出棧入棧次序匹配 2.4.4 最小棧 三、隊列(Queue) 3.1 隊列的基本概念 …

用html5寫王者榮耀之王者墳墓的游戲2deepseek版

我將為您創建一個王者榮耀英雄墳墓游戲的提詞器HTML頁面。這個工具將幫助游戲主播或玩家在游戲中快速查看英雄技能、連招順序等信息。設計思路 創建英雄選擇界面實現提詞器顯示區域,可自定義文本內容添加字體大小、滾動速度控制設計符合王者榮耀風格的UI下面是…

輕閱讀:一鍵解決瀏覽器無法預覽Office文檔的實用方案

在日常辦公中,通過瀏覽器直接打開Word、Excel或PPT等文檔時,常遇到“需下載后用本地軟件打開”的困擾,不僅流程繁瑣,還面臨格式兼容、設備存儲不足等問題。輕閱讀(QingYueDu)作為一款輕量級文件在線預覽工具…

鴻蒙開發實戰項目(六十七):常見組件和容器低代碼開發示例(ArkTS)

本文詳細代碼需訂閱下面專欄獲取(訂閱后私信郵箱+項目名): https://blog.csdn.net/m0_68036862/category_12333038.html 目錄 介紹 環境搭建 代碼結構解讀 創建低代碼工程 低代碼設計界面布局 實現數據動態渲染 手動創建低代碼頁面 介紹 本篇Codelab是基于ArkTS語言的…

MySQL學習筆記04-DML-數據的增刪改

新增數據--insert樣例代碼-- DML : 數據操作語言 -- DML : 插入數據 - insert -- 1. 為 emp 表的 username, password, name, gender, phone 字段插入值 insert into emp (username,password,name,gender,phone) values(fei,123456,張飛,1,13888888888);-- 2. 為 emp 表的 所有…

拼多多返利app的服務網格(Service Mesh)實踐:Istio在導購系統中的應用

拼多多返利app的服務網格(Service Mesh)實踐:Istio在導購系統中的應用 大家好,我是阿可,微賺淘客系統及省賺客APP創始人,是個冬天不穿秋褲,天冷也要風度的程序猿! 在拼多多返利app的…

【RabbitMQ】高級特性:持久性·發送方確認·重試機制·TTL·死信隊列·延遲隊列·事務·消息分發

RabbitMQ的高級特性還包括我的上篇博客 【RabbitMQ】-----詳解RabbitMQ高級特性之消息確認機制-CSDN博客 目錄 RabbitMQ高級特性之持久性 持久性 交換機持久化 隊列持久化消息持久化 RabbitMQ高級特性之發送方確認機制 發送方確認 添加配置 常量類 聲明隊列和交換機…

鴻蒙Next ArkWeb網頁多媒體開發實戰:從基礎到高級應用

解鎖鴻蒙ArkWeb的強大多媒體能力,讓網頁視頻音頻體驗媲美原生應用在日常應用開發中,我們經常需要在應用中嵌入網頁并展示其中的多媒體內容。鴻蒙HarmonyOS Next的ArkWeb組件提供了強大的網頁渲染能力,尤其對網頁中的多媒體元素有出色的支持。…

06. Linux進程概念 1

Linux進程概念 馮諾依曼體系 馮諾依曼體系結構(Von Neumann Architecture)是現代計算機設計的奠基石,由數學家約翰馮諾依曼于1945年提出。這一架構徹底改變了早期計算機“硬件即程序”的設計方式,使得計算機可以靈活地運行不同程序…

HTTP標頭全解析:保護你的Web應用!

在網絡攻擊頻發的時代,你的Web應用是否像一座沒有城墻的城堡,任由XSS、點擊劫持和中間人攻擊入侵?HTTP標頭,這些看似不起眼的響應頭,其實是Web安全的隱形守護者。想象一個電商網站,用戶數據被竊取&#xff…

rt-linux下__slab_alloc里的另外一處可能睡眠的邏輯

一、背景 在之前的博客 tasklet上下文內存分配觸發might_alloc檢查及同步回收調用鏈 里,我們講了一處內存分配時會引起睡眠的調用鏈(這個引起睡眠的這個調用鏈它是在普通linux里也是存在的)。這篇博客里,我們講一處內存分配路徑下…

基于STM32F103C8T6的智能環境監測系統:DHT11溫濕度檢測與OLED顯示實現

引言 你是否曾想實時握身邊環境的溫濕度變化?無論是居家種植需要精準調控環境,還是實驗室存放敏感材料需監控條件,亦或是智能座艙場景下的環境感知,智能環境監測系統正成為連接物理世界與數字管理的重要橋梁。而在眾多嵌入式開發…

動態規劃在子數組/子串問題

目錄 一、最大子數組和(LeetCode 53) 二、環形子數組的最大和(LeetCode 918) 三、乘積最大子數組(LeetCode 152) 四、乘積為正數的最長子數組長度(LeetCode 1567) 五、等差數列…

微信小程序開發筆記(01_小程序基礎與配置文件)

ZZHow(ZZHow1024) 參考課程: 【尚硅谷微信小程序開發教程】 [https://www.bilibili.com/video/BV1LF4m1E7kB] 009_文件和目錄結構介紹新建頁面與調試基礎庫 一個完整的小程序項目分為兩個部分:主體文件、頁面文件 主體文件又稱全局文件,能夠作用于整…

NLP Subword 之 BPE(Byte Pair Encoding) 算法原理

本文將介紹以下內容: 1. BPE 算法核心原理2. BPE 算法流程3. BPE 算法源碼實現DemoBPE最早是一種數據壓縮算法,由Sennrich等人于2015年引入到NLP領域并很快得到推廣。該算法簡單有效,因而目前它是最流行的方法。GPT-2和RoBERTa使用的Subword算…