梯度下降可以優化損失函式的值,使其盡量小,即可找到最好(在資料集上擬合效果最好)的模型引數。
現在假設模型\(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 ...