梯度下降法和随机梯度下降法
1. 梯度
在微積分里面,對(duì)多元函數(shù)的參數(shù)求?偏導(dǎo)數(shù),把求得的各個(gè)參數(shù)的偏導(dǎo)數(shù)以向量的形式寫出來,就是梯度。比如函數(shù)f(x,y), 分別對(duì)x,y求偏導(dǎo)數(shù),求得的梯度向量就是(?f/?x,??f/?y)T,簡(jiǎn)稱grad f(x,y)或者▽f(x,y)。對(duì)于在點(diǎn)(x0,y0)的具體梯度向量就是(?f/?x0,??f/?y0)T.或者▽f(x0,y0),如果是3個(gè)參數(shù)的向量梯度,就是(?f/?x,??f/?y,?f/?z)T,以此類推。
那么這個(gè)梯度向量求出來有什么意義呢?他的意義從幾何意義上講,就是函數(shù)變化增加最快的地方。具體來說,對(duì)于函數(shù)f(x,y),在點(diǎn)(x0,y0),沿著梯度向量的方向就是(?f/?x0,??f/?y0)T的方向是f(x,y)增加最快的地方。或者說,沿著梯度向量的方向,更加容易找到函數(shù)的最大值。反過來說,沿著梯度向量相反的方向,也就是 -(?f/?x0,??f/?y0)T的方向,梯度減少最快,也就是更加容易找到函數(shù)的最小值。
2.梯度下降法
? ? ? ?什么是梯度下降法呢/
舉個(gè)例子,我們?cè)谙律降臅r(shí)候,如果山中濃霧太大,而且我們有不清楚路線,那我們可以以當(dāng)前的所處的位置為基準(zhǔn),尋找這個(gè)位置最陡峭的地方,然后朝著山的高度下降的地方走,同理,如果我們的目標(biāo)是上山,也就是爬到山頂,那么此時(shí)應(yīng)該是朝著最陡峭的方向往上走。然后每走一段距離,都反復(fù)采用同一個(gè)方法,最后就能成功的抵達(dá)山谷。
梯度下降法的過程與這個(gè)例子很相似,一個(gè)函數(shù)可微分。這個(gè)函數(shù)就代表著一座山。我們的目標(biāo)就是找到這個(gè)函數(shù)的最小值,也就是山底。根據(jù)之前的場(chǎng)景假設(shè),最快的下山的方式就是找到當(dāng)前位置最陡峭的方向,然后沿著此方向向下走,對(duì)應(yīng)到函數(shù)中,就是找到給定點(diǎn)的梯度?,然后朝著梯度相反的方向,就能讓函數(shù)值下降的最快!因?yàn)樘荻鹊姆较蚓褪呛瘮?shù)之變化最快的方向,所以,我們重復(fù)利用這個(gè)方法,反復(fù)求取梯度,最后就能到達(dá)局部的最小值,這就類似于我們下山的過程。
什么是梯度:
? ? ? ? 一個(gè)多元函數(shù)的梯度方向是該函數(shù)值增大最陡的方向。具體化到1元函數(shù)中時(shí),梯度方向首先是沿著曲線的切線的,然后取切線向上增長(zhǎng)的方向?yàn)樘荻确较?#xff0c;2元或者多元函數(shù)中,梯度向量為函數(shù)值f對(duì)每個(gè)變量的導(dǎo)數(shù),該向量的方向就是梯度的方向,當(dāng)然向量的大小也就是梯度的大小。
?
梯度下降法詳解:
? ? ? ?對(duì)于一個(gè)多元函數(shù)j(x),在x點(diǎn)處做線性逼近(求一階導(dǎo)數(shù))
? ? ? ? j(x+x0)=j(x)+Δ'(x)*?j(x0)+o(無窮小),其中?j(x0)為j(x0)的倒數(shù);
對(duì)于一個(gè)函數(shù)做了線性逼近,可以判斷在x這個(gè)點(diǎn)的增加方向和減小方向;雖然做線線逼近不能告訴我們這個(gè)函數(shù)的極值點(diǎn)在什么地方,但能告訴我們極值點(diǎn)在什么方向,因此我們可以根據(jù)這個(gè)方向(即下山的方向)選取一個(gè)較小的步長(zhǎng)(學(xué)習(xí)率)來沿著這個(gè)方向走下去,找到極值點(diǎn)。
? ? ? J是關(guān)于x的一個(gè)函數(shù),我們當(dāng)前所處的位置為x0點(diǎn),要從這個(gè)點(diǎn)走到J的最小值點(diǎn),也就是山底。首先我們先確定前進(jìn)的方向,也就是梯度的反向,然后走一段距離的步長(zhǎng),也就是α,走完這個(gè)段步長(zhǎng),就到達(dá)了x1這個(gè)點(diǎn)!
為什么要加一個(gè)負(fù)號(hào),? 梯度前加一個(gè)負(fù)號(hào),就意味著朝著梯度相反的方向前進(jìn)!我們?cè)谇拔奶岬?#xff0c;梯度的方向?qū)嶋H就是函數(shù)在此點(diǎn)上升最快的方向!而我們需要朝著下降最快的方向走,自然就是負(fù)的梯度的方向,所以此處需要加上負(fù)號(hào) 梯度下降法的難點(diǎn): (1)梯度的計(jì)算 在機(jī)器學(xué)習(xí)中目標(biāo)函數(shù)經(jīng)常是求和函數(shù)的形式,因此求和函數(shù)的求導(dǎo)很費(fèi)時(shí)(樣本數(shù)量多) (2)學(xué)習(xí)率的選擇 學(xué)習(xí)率過大,會(huì)出現(xiàn)震蕩不收斂(找不到極值點(diǎn)),過小,收斂速度較慢。幾種梯度下降法介紹
批量梯度下降法(Batch Gradient Descent)
批量梯度下降法,是梯度下降法最常用的形式,具體做法也就是在更新參數(shù)時(shí)使用所有的樣本來進(jìn)行更新,這個(gè)方法對(duì)應(yīng)于前面3.3.1的線性回歸的梯度下降算法,也就是說3.3.1的梯度下降算法就是批量梯度下降法。
?
由于我們有m個(gè)樣本,這里求梯度的時(shí)候就用了所有m個(gè)樣本的梯度數(shù)據(jù)。
隨機(jī)梯度下降法(Stochastic Gradient Descent)
隨機(jī)梯度下降法,其實(shí)和批量梯度下降法原理類似,區(qū)別在與求梯度時(shí)沒有用所有的m個(gè)樣本的數(shù)據(jù),而是僅僅選取一個(gè)樣本j來求梯度。對(duì)應(yīng)的更新公式是:
?
隨機(jī)梯度下降法,和4.1的批量梯度下降法是兩個(gè)極端,一個(gè)采用所有數(shù)據(jù)來梯度下降,一個(gè)用一個(gè)樣本來梯度下降。自然各自的優(yōu)缺點(diǎn)都非常突出。對(duì)于訓(xùn)練速度來說,隨機(jī)梯度下降法由于每次僅僅采用一個(gè)樣本來迭代,訓(xùn)練速度很快,而批量梯度下降法在樣本量很大的時(shí)候,訓(xùn)練速度不能讓人滿意。對(duì)于準(zhǔn)確度來說,隨機(jī)梯度下降法用于僅僅用一個(gè)樣本決定梯度方向,導(dǎo)致解很有可能不是最優(yōu)。對(duì)于收斂速度來說,由于隨機(jī)梯度下降法一次迭代一個(gè)樣本,導(dǎo)致迭代方向變化很大,不能很快的收斂到局部最優(yōu)解。
那么,有沒有一個(gè)中庸的辦法能夠結(jié)合兩種方法的優(yōu)點(diǎn)呢?有!這就是4.3的小批量梯度下降法。
小批量梯度下降法(Mini-batch Gradient Descent)
小批量梯度下降法是批量梯度下降法和隨機(jī)梯度下降法的折衷,也就是對(duì)于m個(gè)樣本,我們采用x個(gè)樣子來迭代,1<x<m。一般可以取x=10,當(dāng)然根據(jù)樣本的數(shù)據(jù),可以調(diào)整這個(gè)x的值。對(duì)應(yīng)的更新公式是:
下面談?wù)勲S機(jī)梯度下降法;
? ? ? ? 這種方法主要是解決梯度計(jì)算的問題,上面談到梯度計(jì)算很困難就是因?yàn)闃颖敬竽请S機(jī)梯度下降法只計(jì)算一個(gè)樣本;
簡(jiǎn)要談一談鞍點(diǎn),如圖
?
鞍點(diǎn)(saddle point)這個(gè)詞來自 z=x^2-y^2的圖形,在x軸方向向上曲,在y軸方向向下曲,像馬鞍,鞍點(diǎn)為(0,0)。
擁有兩個(gè)以上參數(shù)的函數(shù)。它的曲面在鞍點(diǎn)好像一個(gè)馬鞍,在某些方向往上曲,在其他方向往下曲。在一幅等高線圖里,一般來說,當(dāng)兩個(gè)等高線圈圈相交叉的地點(diǎn),就是鞍點(diǎn)。
由于只是初學(xué),簡(jiǎn)要了解一下什么是梯度下降法;以后在有機(jī)會(huì)再深入探討;
本文參考:
1.? 鞍點(diǎn)參考原文:https://blog.csdn.net/baidu_27643275/article/details/79250537?
2.梯度下降參考原文:https://www.cnblogs.com/pinard/p/5970503.html
轉(zhuǎn)載于:https://www.cnblogs.com/fcfc940503/p/10959775.html
總結(jié)
以上是生活随笔為你收集整理的梯度下降法和随机梯度下降法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FFMPEG 视频图像解封装解码
- 下一篇: Taro+react开发(2)--简介2