- 深入淺出圖神經(jīng)網(wǎng)絡(luò):GNN原理解析
- 劉忠雨 李彥霖 周洋
- 1194字
- 2020-01-21 15:41:01
2.1.4 梯度下降算法
1.梯度下降算法的原理
機器學習中很多問題的求解本質(zhì)上都是求解優(yōu)化相關(guān)的問題,找到合適的參數(shù)以期最小化損失函數(shù)值。求解類似的優(yōu)化問題,有很多成熟的方法可以參考,梯度下降就是一種經(jīng)典的方法。它利用梯度信息,通過不斷迭代調(diào)整參數(shù)來尋找合適的解。
對于一個多元函數(shù)f(x),梯度定義為對其中每個自變量的偏導數(shù)構(gòu)成的向量,用f'(x)表示,如式(2.6)所示:

考查f(x+Δx)在x處的泰勒展開,如式(2.7)所示:

要想使得f(x+Δx)<f(x),忽略高階項,就需要f'(x)TΔx<0,也就是說,滿足這個條件就可以使得函數(shù)值減小,進一步地,f'(x)TΔx=||f'(x)T||·||Δx||·cosθ,取Δx=–αf'(x),可保證更新后的x可以使得函數(shù)值減小,這里α是一個超參數(shù),用于調(diào)整每次更新的步長,稱為學習率。
機器學習中優(yōu)化的目標是最小化損失函數(shù),通過梯度下降的方法進行求解的過程分為以下幾步,算法過程如代碼清單2-1所示。首先,通過隨機初始化為需要求解的參數(shù)賦初值,作為優(yōu)化的起點;接下來,使用模型對所有樣本進行預測,計算總體的損失值;然后利用損失值對模型參數(shù)進行求導,得到相應的梯度;最后基于梯度調(diào)整參數(shù),得到迭代之后的參數(shù)。重復上述過程,直到達到停止條件。
作一個形象的比喻,梯度下降算法就像是一個人下山,他在山頂,想要達到山腳,但是山上的濃霧很大,他分不清下山的路,必須利用自己周圍的信息去找到下山的路徑,這時候就可以使用梯度下降算法。具體來說就是,以他當前所處的位置為基準,找到這個位置最陡峭的方向,然后朝著這個方向往山下走,每走一段路就重復上述步驟,最后就能成功到達山腳了。
梯度下降算法

2.隨機梯度下降算法
前面介紹的梯度下降算法需要首先計算所有數(shù)據(jù)上的損失值,然后再進行梯度下降,這種方式在數(shù)據(jù)規(guī)模比較大時是比較低效的。主要體現(xiàn)在3個方面,一是數(shù)據(jù)規(guī)模大時,模型計算所有樣本的時間增加;二是隨著數(shù)據(jù)維度的增加,梯度計算的復雜度也會增加;三是雖然可以基于所有樣本得到準確的梯度值,但是僅需進行一次參數(shù)更新,我們稱這樣的梯度下降算法為批梯度下降(Batch Gradient Descent)。
如果不使用全量的樣本來計算梯度,而使用單一樣本來近似估計梯度,就能極大地減少計算量,提高計算效率,但是這種方法是否能保證一定收斂呢?可以證明,這種算法的收斂性是可以保證的,這種方法稱為隨機梯度下降(Stochastic Gradient Descent,SGD)。
具體來說就是,每次從訓練集中隨機選擇一個樣本,計算其對應的損失和梯度,進行參數(shù)更新,反復迭代。這種方式在數(shù)據(jù)規(guī)模比較大時可以減小計算復雜度,從概率意義上來說單個樣本的梯度是對整個數(shù)據(jù)梯度的無偏估計,但是它存在著一定的不確定性,因此收斂速率相比批梯度下降得更慢。
改進的方法是每次使用多個樣本來估計梯度,這樣可以減小不確定性,提高收斂速率。這種方法稱為小批量隨機梯度下降(mini-batch SGD),其中每次迭代選取的樣本數(shù)量稱為批大小(batch size),算法步驟如下所示。
小批量隨機梯度下降

- 智能制造系統(tǒng)中的建模與仿真:系統(tǒng)工程與仿真的融合
- 人工智能開發(fā)語言:Python
- Arduino開發(fā)實戰(zhàn)指南:機器人卷
- 一本書讀懂ChatGPT、AIGC和元宇宙
- AI時代,學什么,怎么學
- Chatbot從0到1(第2版):對話式交互實踐指南
- 巧用ChatGPT快速提高職場晉升力
- AI客戶服務與管理(慕課版)
- 機器學習實踐指南:案例應用解析
- 人工智能技術(shù)基礎(chǔ)
- DeepSeek與Manus實操指南(套裝共四冊)
- TensorFlow機器學習
- 智能優(yōu)化技術(shù):適應度地形理論及組合優(yōu)化問題的應用
- 機器人愛好者 (第6輯)
- 金融智能:AI如何為銀行、保險、證券業(yè)賦能