李巨集毅機器學習課程筆記 3 梯度下降精講

2022-06-05 12:21:08 字數 1877 閱讀 9886

梯度下降可以優化損失函式的值,使其盡量小,即可找到最好(在資料集上擬合效果最好)的模型引數。

現在假設模型\(f\)中只有乙個引數\(w\),則損失函式為\(l(f)=l(w)\),梯度下降演算法如下(若模型有多個引數,按相同方法更新各引數)

初始化引數

隨機選取乙個\(w^0\)(\(w^0\)並不一定是隨機選取),令\(w=w^0\)。

計算梯度

\(\frac|_\)

如果小於0,此時\(w\)增大則\(l(f)\)會減小;如果大於0,此時\(w\)減小則\(l(w)\)會減小。

如果模型有多個引數,則計算損失函式在各個引數方向上的偏導數。

更新模型引數

\(w^1=w^0-lr\frac|_\)

\(w\)的變化量取決於梯度和學習率(learning rate)的大小:梯度絕對值或學習率越大,則\(w\)變化量越大。

如果模型有多個引數,則用上一步計算出的偏導數對應更新各引數。

重複第2步和第3步

經過多次引數更新/迭代(iteration),可以使損失函式的值達到區域性最小(即區域性最優,local optimal),但不一定是全域性最優。

梯度下降過程中,固定學習率並不合理。學習率太大,可能導致loss不減小反而增大;學習率太小,loss會減小得很慢。

基本原則是隨著引數迭代更新,學習率應該越來越小,比如\(\eta^=\frac}\)。

更好的方法:每個引數有各自的學習率,比如adagrad。

adaptive gradient descent,自適應梯度下降。2023年提出,核心是每個引數(parameter)有不同的學習率

每次迭代中,學習率要除以它對應引數的之前梯度的均方根(rms) 。

即\(w^=w^t-\frac^t(g^i)^2}}g^t\),其中\(t\)是迭代次數,\(w\)是引數,\(g\)是梯度,\(\eta\)是初始學習率。

隨著引數迭代,\(t\)越來越大,\(\sqrt^t(g^i)^2}\)也越來越大,因此學習率的變化趨勢是越來越小。

一般的梯度下降方法\(w^=w^t-\eta^tg^t\)中,\(\eta^t\)是常量,梯度越大時,則引數更新的步幅越大,這是由\(g^t\)項決定的。

在adagrad中,\(\eta\)是常量,梯度\(g^t\)越大時會使得引數更新的步幅越大,但\(\sqrt^t(g^i)^2}\)越大會使得引數更新的步幅越小,這是乙個矛盾嗎?

stochastic gradient descent,隨機梯度下降,2023年提出,可以讓訓練過程更快。

普通梯度下降中需要計算所有樣本的loss,而sgd只計算乙個樣本的loss,然後進行梯度下降。

初始化一組引數後,我們找到鄰域中另乙個使損失函式值最小的一組引數並更新引數(然後不斷重複這一步驟)。

在極小的鄰域中,可以利用泰勒級數將損失函式簡化,然後求其最小值,損失函式簡化後,要使其最小即是讓其中兩個向量的內積最小,由此可以得出新的一組引數的值(具體過程略),這就是梯度下降。

學習率的作用是限制鄰域大小,學習率太大可能使鄰域太大,導致損失函式展開成泰勒級數時的誤差較大。

當然也可以將損失函式展開成2次(比如牛頓迭代法),但這並不實用,因為要計算二次微分,甚至可能要求出海森矩陣(hessian matrix)逆矩陣等等,這些在做深度學習時是不實用的。

梯度下降過程中,每次引數更新不一定都會使損失函式的值更小。

求出的只是區域性最小值(local minima)甚至是鞍點(saddle point),不一定是全域性最優解。

github(github.com):@chouxianyu

github pages(github.io):@臭鹹魚

知乎(zhihu.com):@臭鹹魚

(cnblogs.com):@臭鹹魚

b站(bilibili.com):@絕版臭鹹魚

李巨集毅機器學習課程筆記 1

機器學習 自動找函式 f input output 1.regression 輸出是乙個數值 2.classification 分類 二分類 多分類 rnn 迴圈神經網路 cnn 卷積神經網路translation 繪二次元圖4.supervised learning 監督學習labeled dat...

梯度下降 機器學習 李巨集毅

調整學習率learning rate 自適應學習率 adagrad演算法 一般梯度下降 l sum n tilde n b sum w ix i n 2 w gets w t eta tg t eta t frac adagrad w gets w t fracg t g t frac eta t ...

李巨集毅機器學習 學習筆記

function set就是model 機器學習3大步驟 1.定義模型 function 集合 2.指定模型 function 好壞的評價指標 3.通過演算法選擇到最佳的模型 function alphago下棋模型抽象為棋局向下一步的分類問題 減少擁有label的data用量的方法 1.semi ...