場景假設
梯度下降法的基本思想可以模擬為乙個下山的過程。
假設這樣乙個場景:乙個人被困在山上,需要從山上下來(找到山的最低點)。但此時山上的濃霧很大,導致可視度很低;因此,下山的路徑就無法確定,必須利用自己周圍的資訊一步一步地找到下山的路。這個時候,便可利用梯度下降演算法來幫助自己下山。怎麼做呢,首先以他當前的所處的位置為基準,尋找這個位置最陡峭的地方,然後朝著下降方向走一步,然後又繼續以當前位置為基準,再找最陡峭的地方,再走直到最後到達最低處;同理上山也是如此,只是這時候就變成梯度上公升演算法了
泰勒展開式的目的是擬合,將上圖的曲線擬合成直線,雖然存在誤差,但只要不影響實際情況,我們就可以直接在這條直線下進行討論(更高維度也是如此)
於是我們有直線方程
f(x)-f(x₀)≈(x-x₀)•f'(x₀)
ps:場景中說的是下山,但那是在空間座標系下討論,這裡為了方便,只在平面座標系下做討論,但是不管維度是多少,原理是一樣的。
梯度:函式在給定點上公升最快的方向,其本質就是導數(斜率)
首先,我們有乙個可微分(可微<=>可導)的函式。這個函式就代表著一座山。我們的目標就是找到這個函式的最小值(此時導數為0),也就是山底。根據之前的場景假設,最快的下山的方式就是找到當前位置最陡峭的方向,然後沿著此方向向下走(梯度的反方向),就能讓函式值下降的最快!因為梯度的方向就是函式之變化最快的方向
所以,我們重複利用這個方法,反覆求取梯度,最後就能到達區域性的最小值,這就類似於我們下山的過程。而求取梯度就確定了最陡峭的方向,也就是場景中測量方向的手段。
令θ=[x] θ₀=[x0]
解釋:因為這裡討論的是一維(直線需要在二維下進行討論,不然沒有意義),所以 內只有乙個變數;如果是三維那麼 裡就應該有三個變數[a,b,c],以此類推,最終我們把這個集合賦值給θ,方便日後討論。
此時我們有
f(θ)-f(θ₀)≈(θ-θ₀)•▽f(θ₀)
因為這是乙個可微分方程,所以(θ-θ₀)是乙個微小向量,我們知道標量*單位向量=向量,所以
(θ-θ₀)=ŋν(其中 ŋ是標量,ν是單位向量)
注意:(θ-θ₀)不能太大,否則線性近似就不夠準確
重點,區域性下降的目的是希望每次θ更新 ->f(θ)↓,重複這個過程,直到▽f(θ₀)=0。所以:
f(θ)-f(θ₀) ≈ (θ-θ₀)•▽f(θ₀) = ŋν•▽f(θ₀) < 0
因為ŋ是標量,且一般設定為正數,所以可以忽略,則不等式變成:
ν•▽f(θ₀) < 0 其中ν是需要我們求解的
那麼,這個不等式在表達什麼
我們知道▽f(θ₀)是當前位置的梯度方向,
也就是說當ν的方向是梯度的反方向時,
不等式能最大程度的小,也就保證了ν的方向是區域性下降最快的方向
將這個公式跟開頭的公式對比,事情到這裡就結束了,我們終於獲得了梯度下降的公式,有沒有發現公式推導出來後,f(θ)-f(θ₀)不見了,因為只要滿足梯度下降公式,f(θ)就會一直下降(前提:(θ-θ₀)不太大),而我們只需要在影象上觀察f(θ)的值就好了
梯度下降公式在神經網路中用於對(w,b)的更新,是的,你只需要將θ替換成 w 或 b ,▽j(θ) 替換成 損失函式對 w 或 b 的偏導數,其中 α 是 學習率(人為設定),最後你就可以獲得區域性最優模型了。
梯度下降演算法 梯度下降演算法為何叫梯度下降?
首先,我們知道乙個演算法的名字可以很好地去解釋乙個演算法,那麼梯度下降演算法是什麼呢?很明顯的,就是用梯度這個工具來解決問題的一種演算法。解決什麼問題呢?如何在乙個函式曲面的某一點,找到乙個函式值變化最大的方向。比如 我們站在山上的某一點,我們想要以最快的速度上山,但是我們的步子大小是一定的,那麼最...
梯度下降演算法公式推導
梯度下降法的基本思想可以模擬為乙個下山的過程。假設這樣乙個場景 乙個人被困在山上,需要從山上下來 找到山的最低點 但此時山上的濃霧很大,導致可視度很低 因此,下山的路徑就無法確定,必須利用自己周圍的資訊一步一步地找到下山的路。這個時候,便可利用梯度下降演算法來幫助自己下山。怎麼做呢,首先以他當前的所...
梯度下降演算法
機器學習在這幾年得到快速發展,乙個很重要的原因是 large dataset 大規模資料 這節課就來介紹用機器學習演算法處理大規模資料的問題。關於資料的重要性,有一句話是這麼說的 it s not who has the bestalgorithmthat wins.it s who has the...