日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

李宏毅机器学习课程3~~~梯度下降法

發布時間:2023/12/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 李宏毅机器学习课程3~~~梯度下降法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

梯度下降法描述


梯度下降法是為了找到最優的目標函數,尋找的過程就是沿著損失函數下降的方向來確定參數變化的方向。參數更新的過程就是一個不斷迭代的過程,每次更新參數學到的函數都會使得誤差損失越來越小,也就是說學習到的參數函數越來越逼近最優函數。

參數的更新是按照損失函數的等高線的方向進行的。

梯度下降是一階導數,梯度下降是用平面來逼近局部。
牛頓法是二階導數,牛頓法是用曲面逼近局部。


梯度下降法調整學習速率


可視化:參數更新的變化與損失的變化情況。藍色線表示的是學習率太小,導致損失下降太慢。綠色線表示的是學習速率變大,損失很快就變小,但是后面有卡住了,損失不在變化。黃色線表示的是學習速率太大,直接導致損失爆炸。紅色的線是理想的學習速率。

一般情況,在剛開始的時候,可以設置比較大的學習速率,這樣可以快速接近最優的函數。經過幾epochs后,我們會接近最優的函數,這時可以降低學習速率,來確定最終的參數。

不同的參數不同的學習速率。


梯度下降法Adagrad調整學習速率


調節學習率方法一,Adagrad

Adagrade的具體實現過程,學習率的變化與之前微分平方和的均方根有關。Adagrad 可以給不同參數給予不同的學習速率Learning Rate.根據計算公式可以看出,學習速率與前面所有梯度都有關系,是一個梯度平方和的均方根。

Adagrade矛盾的地方是分子是較大的梯度會有較大的step,而分母是較大的梯度反而會有較小的step。這個合理的解釋是每次梯度變化的反差。(現在的梯度與過去梯度之間的反差,見下圖)

Adagrade的第二種合理解釋

一個參數的一階微分,比較合理的步伐應該是與梯度成正比的。因為這樣的步伐才能快速的接近最優點位置,如圖中的極值點。初始點x0與極值點的距離為|2ax0+b|/|2a|,所以最佳的步伐就是|2ax0+b|/|2a|,這個步伐與在x0的一階微分值(|2ax+b|)成正比。

多個參數的一階微分。從圖中可以看出,對于參數w1來說,a點的微分值大于b點的微分值,所以a點的步伐選擇應該大于b點的步伐選擇。同樣參數w2,也是c點的微分值大于d點的微分值,所以c點的步伐值的選擇應該比d點的步伐值要大。

但是我們比較a點和c點的步伐值的選擇。綜合比較發現c點的微分值大于a點的微分值,但實際上是a點離最優點的位置比c點離最優點的位置要大。

所以對于多參數的情況,僅僅根據微分值的大小來確定最終的學習速率(步伐)是不合理的。

對于一個參數的一階微分,我們發現最優步伐是|2ax0+b|/|2a|,分母實際上二階微分,所以最優的步伐選擇應該是 |First derivative|/|Second derivative|

同樣對于多個參數的情況,也需要考慮二階微分,最優的步伐選擇應該是 |First derivative|/|Second derivative|。a點的一階微分較小,a點的二階微分也較小。c點一階微分較大,二階微分也較大。

Adagrade可以類比于這種形式|First derivative|/|Second derivative|。那為什么Adagrade不直接算二階微分,而分母使用的是一次微分呢?這是因為算二次微分會增加計算量,效果不一定比Adagrade現在的效果好。Adagrad在沒有增加計算量的情形下,直接使用一階微分的均方和根,有時候效果比|First derivative|/|Second derivative|不差。


調節學習率方法二,RMSProp。

RMSProp也可以給予不同參數給予不同的學習速率 Learning Rate,即不同參數方向有不同的學習速率。 此外,針對同一方向,可以動態調整學習速率,比如說,在某個區域較為平坦,則需要較小的Learning Rate, 在另外一個區域突然很陡峭,則需要大的學習速率。
根據計算公式可以看出,學習速率與前面所有梯度都有關系,只是給出了新的梯度和舊的梯度給予不同的權重,當相信新的梯度時,給予新的梯度更大的權重,當相信舊的梯度給予舊的梯度更大的權重。

解決局部極值,鞍點的問題,Momentum

慣性的計算可以發現慣性與之前所有的梯度是有關的。通俗的理解為對梯度的平均,使得縱向的擺動變小了,橫向的運動更快了。可加快梯度下降。

Adam: RMSProp 和 Momentum的結合體。

RMSProp + Momentum


梯度下降法Stochastic Gradient Descent調整學習速率


隨機梯度下降法每次只考慮一個樣本,可以重復取一個樣本,也可以按次序取一個樣本。而梯度下降法考慮的是整體所有的樣本。

隨機梯度下降法的學習速率更新了20次(每次只看一個樣本),而梯度下降法的速率只更新了一次(每次看所有的20個樣本)。所以隨機梯度下降法的速率更新速度比較快。


Feature Scaling


不同尺度的特征值,會導致每種特征對損失函數的影響不同。通常情況下,較大尺度的特征對損失函數的影響較大,而那些尺度較小的其他特征對損失函數的影響較小。這就會使得那些尺度較小的特征失去意義。

特征尺度歸一化的原理,最終導致每種特征都是0均值,方差為1的特征。

正則化輸入,可加速訓練。二維示例圖非常有參考價值,可總結借鑒該圖。為何歸一化,可加速訓練,見可參看圖。
不做歸一化,則需要選擇較小的學習速率,較小的步長。而歸一化后的數據,則可選擇較大的步長,這樣學習速率就比較快了。


Gradient Descent Theory


當x接近x0時,泰勒展開可以縮簡為如上形式,后面的高階可以忽略不計。

同理,多參數泰勒展開也可以有類似縮簡。

當紅圈足夠小時,損失函數可以縮簡為如上形式。

當紅圈足夠小,也就是半徑足夠小,也就是學習速率足夠小時,可以很容易得到theata與u,v反向,足夠長到半徑尺度時,才能使得損失函數最小。那么最后給出的學習速率是與梯度成正比的。

上式成立的前提是學習速率足夠小,當選擇的學習速率不恰當時,就會出現損失函數來回波動,并不是一直變小。


梯度下降法的局限性


梯度下降法是找損失函數的局部極值點,也就是梯度為零的點。有時候,梯度為零的點并不總是局部極值點,還有可能是鞍點。實際上,我們往往會選擇梯度比較小的點,來停止我們的參數更新,這時認為我們找到了局部極值點。如上圖所示,梯度比較小的點,有可能是高原平穩點。


Deep Learning會陷入局部最優解的問題

本部分內容轉自:https://www.zhihu.com/question/38549801

對于deep learning,我們是在一個非常高維的世界里做梯度下降。這時的 local minimum 很難形成,因為局部最小值要求函數在所有維度上都是局部最小。更實際得情況是,函數會落到一個saddle-point上,如下圖

在saddle-point上會有一大片很平坦的平原,讓梯度幾乎為0,導致無法繼續下降。反倒是local/global minimum的問題,大家發現其實不同的local minimum其實差不多(反正都是over-fitting training data),一般難找到local minimum,找到的一般是saddle point.
對于saddle point, 可以使用momentum技術。


多層神經網絡,大部分局部極小值都在底部 ,已經非常接近全局最小值,可參考上圖。訓練到底的全局最小值往往意味著過擬合 ,找到全局最小也許反而是件壞事。

?(Pascanu,Dauphin, Ganguli,Bengio,arXiv May 2014): On the saddle point problem for non-convex optimization
?(Dauphin,Pascanu,Gulcehre,Cho,Ganguli,Bengio,NIPS’2014):
identifying and attacking the saddle point problem in high-dimensional non-convex optimization
《Qualitatively characterizing neural network optimization problems》這篇也簡單的論證了sgd中local minimum并不是大問題


參考文獻


http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html

總結

以上是生活随笔為你收集整理的李宏毅机器学习课程3~~~梯度下降法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。