官术网_书友最值得收藏!

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),算法步驟如下所示。

小批量隨機梯度下降

主站蜘蛛池模板: 清水县| 葵青区| 乐昌市| 启东市| 宜春市| 梓潼县| 宜春市| 莒南县| 德安县| 普兰县| 天台县| 霍城县| 旬阳县| 同德县| 景宁| 墨玉县| 柳州市| 利辛县| 乌鲁木齐市| 清远市| 增城市| 东光县| 曲阳县| 广东省| 名山县| 墨竹工卡县| 寿宁县| 古丈县| 南宫市| 六盘水市| 铜山县| 临澧县| 肇源县| 盐津县| 凤翔县| 扎鲁特旗| 常宁市| 龙山县| 义乌市| 阳信县| 格尔木市|