Pytorch_第七篇_深度學(xué)習(xí) (DeepLearning) 基礎(chǔ) [3]---梯度下降

深度學(xué)習(xí) (DeepLearning) 基礎(chǔ) [3]---梯度下降法


Introduce

在上一篇“深度學(xué)習(xí) (DeepLearning) 基礎(chǔ) [2]---神經(jīng)網(wǎng)絡(luò)常用的損失函數(shù)”中我們介紹了神經(jīng)網(wǎng)絡(luò)常用的損失函數(shù)。本文將繼續(xù)學(xué)習(xí)深度學(xué)習(xí)的基礎(chǔ)知識(shí)盔几,主要涉及基于梯度下降的一類優(yōu)化算法晴弃。首先介紹梯度下降法的主要思想,其次介紹批量梯度下降逊拍、隨機(jī)梯度下降以及小批量梯度下降(mini-batch)的主要區(qū)別上鞠。

以下均為個(gè)人學(xué)習(xí)筆記,若有錯(cuò)誤望指出芯丧。


梯度下降法

主要思想:沿著梯度反方向更新相關(guān)參數(shù)芍阎,使得代價(jià)函數(shù)逐步逼近最小值。

思路歷程

假設(shè)給我們一個(gè)損失函數(shù)缨恒,我們?cè)趺蠢锰荻认陆捣ㄕ业胶瘮?shù)的最小值呢(換一種說法谴咸,即如何找到使得函數(shù)最小的參數(shù)x)?首先肿轨,我們應(yīng)該先清楚函數(shù)的最小值一般位于哪里寿冕。按我的理解應(yīng)該是在導(dǎo)數(shù)為0的極值點(diǎn),然而極值點(diǎn)又不一定都是最小值點(diǎn)椒袍,可能是局部極小值點(diǎn)驼唱。那么,既然知道了最小值點(diǎn)在某個(gè)極值點(diǎn)(梯度為0)驹暑,那么我們使得損失函數(shù)怎么逼近這個(gè)極值點(diǎn)呢玫恳?

現(xiàn)在我們反過來思考上述梯度下降法的主要思想。首先优俘,要理解這個(gè)主要思想京办,我們需要理解梯度方向是什么。梯度方向指的是曲面當(dāng)前點(diǎn)方向?qū)?shù)最大值的方向(指向函數(shù)值增大的方向)帆焕。假設(shè)我們現(xiàn)在處在函數(shù)上x=xt這個(gè)點(diǎn)(梯度不為0惭婿,不是極值點(diǎn)),因此現(xiàn)在我們需要確定增加x還是減少x能幫忙我們逼近函數(shù)的最小值叶雹。前面說過梯度方向指向函數(shù)值增大的方向财饥,因此我們只要往梯度的反方向更新x,就能找到極小值點(diǎn)折晦。(可能還是有點(diǎn)迷钥星,下面結(jié)合例子具體看梯度下降的執(zhí)行過程來理解其主要思想

note: 由于凸函沒有局部極小值,因此梯度下降法可以有效找到全局最小值满着,對(duì)于非凸函數(shù)谦炒,梯度下降法可能陷入局部極小值贯莺。)

舉個(gè)梨子
假設(shè)有一個(gè)損失函數(shù)如下(當(dāng)x=0的時(shí)候取得最小值,我們稱x=0為最優(yōu)解):

y = x^2
我們需要利用梯度下降法更新參數(shù)x的值使得損失函數(shù)y達(dá)到最小值宁改。首先我們隨機(jī)初始化參數(shù)x缕探,假設(shè)我們初始化參數(shù)x的值為xt,如下圖所示:

梯度梨子

現(xiàn)在問題轉(zhuǎn)化為我們?cè)趺锤聟?shù)x的值(當(dāng)前為xt)使得其越來越靠近使得函數(shù)達(dá)到最小值的最優(yōu)參數(shù)x还蹲。直觀上看我們需要減小x的值撕蔼,才能使得其越來越靠近最優(yōu)參數(shù)。

現(xiàn)在我們求取y對(duì)參數(shù)x的導(dǎo)(當(dāng)有多個(gè)參數(shù)時(shí)秽誊,為偏導(dǎo)),如下:

y' = 2x

由于xt>0琳骡,因此當(dāng)我們代入xt到y(tǒng)'锅论,我們可以發(fā)現(xiàn)在點(diǎn)xt處導(dǎo)數(shù)(梯度)為正值,所指方向?yàn)閳D中所示的梯度方向楣号。很明顯最易,我們不能隨著梯度指示的方向更新參數(shù)x,而應(yīng)該往梯度方向的負(fù)方向更新炫狱。如上圖所示藻懒,很明顯,應(yīng)該減小x的值才能慢慢靠近最優(yōu)解视译。因此嬉荆,不難給出參數(shù)x的更新公式(即梯度下降的參數(shù)一般更新公式)如下(α為學(xué)習(xí)率):

x_{t+1} = x_t - α * y'(x_t)

我們來驗(yàn)證上述更新公式

  • 當(dāng)x=xt(xt>0)(位于y軸右邊)酷含,則在x處的導(dǎo)數(shù)也大于0鄙早,由更新公式,下一時(shí)刻的x會(huì)減少(如上圖所示x=xt減少會(huì)越來越靠近最優(yōu)解x=0)椅亚。
  • 當(dāng)x=-xt(xt>0)(位于y軸左邊)限番,則在x處的導(dǎo)數(shù)也小于0,代入更新公式呀舔,我們發(fā)現(xiàn)下一時(shí)刻x會(huì)增加(如上圖所示x=-xt增加會(huì)越來越靠近最優(yōu)解x=0)弥虐。因此推導(dǎo)出的梯度下降參數(shù)更新公式符合我們的目標(biāo)。
  • 因此不斷對(duì)參數(shù)x對(duì)上述更新媚赖,最終x的值會(huì)慢慢靠近最優(yōu)解x=0.

上述便是梯度下降法的原理了霜瘪,只不過舉的例子比較簡(jiǎn)單,多參數(shù)(如神經(jīng)網(wǎng)絡(luò)中的參數(shù)w和b)的可以類似推理省古。

一個(gè)注意點(diǎn):假設(shè)我們現(xiàn)在處在x=xt這個(gè)點(diǎn)粥庄,若學(xué)習(xí)率α設(shè)置過大,雖然收斂速度可能會(huì)加快(每次跨步大)豺妓,但是xt也可能會(huì)過度更新惜互,即(一次性減得太多)可能會(huì)越過最優(yōu)解(跑到最優(yōu)解的左邊)布讹,再一次更新的話也可能會(huì)再次越過最優(yōu)解(一次性加得太多,跑到最優(yōu)解的右邊)训堆,emmm描验,就這樣反復(fù)橫跳,始終達(dá)不到最優(yōu)解坑鱼。另外膘流,學(xué)習(xí)率設(shè)置太小的話,x雖然更可能達(dá)到最優(yōu)解鲁沥,但是算法收斂太慢(x的每一個(gè)跨步太短)呼股。對(duì)于學(xué)習(xí)率的選擇,可以按0.001画恰、0.01彭谁、0.1、1.0這樣子來篩選允扇。


現(xiàn)在依次介紹三種類型的梯度下降法缠局,批量梯度下降、隨機(jī)梯度下降以及小批量梯度下降考润。以下介紹均以Logistic回歸模型的損失函數(shù)(凸函數(shù))為例狭园,如下
z = w1x1+w2x2+b

y_p = sigmoid(z)

Loss(y_p,y_t) = -{1\over n}\sum_{i=1}^n (y_tlog(y_p)+(1-y_t)log(1-y_p))
其中input = (x1,x2)為輸入的訓(xùn)練樣本。我們的目標(biāo)是在訓(xùn)練樣本集(假設(shè)有N個(gè)訓(xùn)練樣本)上尋找最優(yōu)參數(shù)w1糊治、w2以及b使得損失函數(shù)在訓(xùn)練樣本上達(dá)到最小的損失唱矛。(神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程過程就是輸入訓(xùn)練樣本,計(jì)算損失俊戳,損失函數(shù)反向?qū)Υ聟?shù)求梯度揖赴,其次按照梯度下降法的參數(shù)更新公式朝著梯度反方向更新所有參數(shù),如此往復(fù)抑胎,直到找到使得損失最小的最優(yōu)參數(shù)或者達(dá)到最大迭代次數(shù))(注意到損失函數(shù)上還有一個(gè)常量n我們沒有解釋燥滑,其實(shí)我覺得以下三個(gè)基于梯度下降的優(yōu)化算法主要區(qū)別就是在n的取值上)


批量梯度下降(n=N的情況)

對(duì)于上述問題,批量梯度下降的做法是什么樣的呢阿逃?其每次將整個(gè)訓(xùn)練樣本集都輸入神經(jīng)網(wǎng)絡(luò)模型铭拧,然后對(duì)每個(gè)訓(xùn)練樣本都求得一個(gè)損失,對(duì)N個(gè)損失加權(quán)求和取平均恃锉,然后對(duì)待更新參數(shù)求導(dǎo)數(shù)搀菩,其次按照梯度下降法的參數(shù)更新公式朝著梯度反方向更新所有參數(shù)。通俗來講就是每次更新參數(shù)都用到了所有訓(xùn)練樣本(等價(jià)于上述損失公式中的n=N)破托。每一輪參數(shù)更新中肪跋,每個(gè)訓(xùn)練樣本對(duì)參數(shù)更新都有貢獻(xiàn)(每一個(gè)樣本都給了參數(shù)更新一定的指導(dǎo)信息),因此理論上每一輪參數(shù)更新提供的信息是很豐富的土砂,參數(shù)更新的幅度也是比較大的州既,使得參數(shù)更新能在少數(shù)幾輪迭代中就達(dá)到收斂(對(duì)于凸優(yōu)化問題能達(dá)到全局最優(yōu))谜洽。然而,對(duì)于大數(shù)據(jù)時(shí)代吴叶,訓(xùn)練樣本可能有很多很多阐虚,每輪都是用那么多的樣本進(jìn)行參數(shù)更新的指導(dǎo)的話,更新一次(一次epoch)會(huì)非常非常久蚌卤,這是這種方法的主要缺點(diǎn)实束。


隨機(jī)梯度下降(n=1的情況)

對(duì)于上述優(yōu)化問題,隨機(jī)梯度下降(SGD)與批量梯度下降法的主要區(qū)別就是逊彭, SGD每一輪參數(shù)更新都只用一個(gè)訓(xùn)練樣本來指導(dǎo)參數(shù)更新(n=1)咸灿。也就是說每次只計(jì)算出了某訓(xùn)練樣本的損失,并進(jìn)行反向傳播指導(dǎo)參數(shù)更新侮叮。其優(yōu)點(diǎn)是每一輪迭代的時(shí)間開銷非常低(因?yàn)橹挥玫搅艘粋€(gè)訓(xùn)練樣本)析显。然而一個(gè)訓(xùn)練樣本提供的信息可能比較局限,即其可能使得某次參數(shù)更新方向并不是朝著全局最優(yōu)的方向(如噪聲樣本提供的信息可能就是錯(cuò)誤的签赃,導(dǎo)致其往偏離全局最優(yōu)的方向更新),但是整體上是朝著全局最優(yōu)的方向的分尸。雖然隨機(jī)梯度下降可能最終只能達(dá)到全局最優(yōu)附近的某個(gè)值锦聊,但是相對(duì)于批量梯度下降來說最好的地方就是速度很快,因此基于精度和效率權(quán)衡箩绍,更常用的還是SGD孔庭。


小批量(mini-batch)梯度下降(n=num_batch)

小批量梯度下降是上述兩種方法的一個(gè)折中,即既考慮精度也考慮了收斂速度材蛛。那么折中方法是怎么做的呢圆到?首先小批量梯度需要設(shè)置一個(gè)批量的大小(假設(shè)是num_batch)卑吭,然后每次選取一個(gè)批量的訓(xùn)練樣本芽淡,計(jì)算得到num_batch個(gè)損失,求和取平均后反向傳播來指導(dǎo)參數(shù)更新(n=num_batch)豆赏。通俗來說就是每一輪的參數(shù)更新我們既不是用上整個(gè)訓(xùn)練樣本集(時(shí)間開銷大)挣菲,也不是只用一個(gè)訓(xùn)練樣本(可能提供錯(cuò)誤信息),我們是使用一個(gè)小批量的樣本(1<n<N)來指導(dǎo)參數(shù)更新掷邦。雖然可能效果沒有批量梯度下降法好白胀,速度沒有隨機(jī)梯度下降法快,但是這種方法在精度和收斂速度上是一個(gè)很好的折中抚岗。因此或杠,在深度學(xué)習(xí)中,用得比較多的一般還是小批量(mini-batch)梯度下降宣蔚。


本文參考-1

本文參考-2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末向抢,一起剝皮案震驚了整個(gè)濱河市认境,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌笋额,老刑警劉巖元暴,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異兄猩,居然都是意外死亡茉盏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門枢冤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸠姨,“玉大人,你說我怎么就攤上這事淹真⊙惹ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵核蘸,是天一觀的道長(zhǎng)巍糯。 經(jīng)常有香客問我,道長(zhǎng)客扎,這世上最難降的妖魔是什么祟峦? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮徙鱼,結(jié)果婚禮上宅楞,老公的妹妹穿的比我還像新娘。我一直安慰自己袱吆,他們只是感情好厌衙,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绞绒,像睡著了一般婶希。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蓬衡,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天饲趋,我揣著相機(jī)與錄音,去河邊找鬼撤蟆。 笑死奕塑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的家肯。 我是一名探鬼主播龄砰,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了换棚?” 一聲冷哼從身側(cè)響起式镐,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎固蚤,沒想到半個(gè)月后娘汞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夕玩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年你弦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片燎孟。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡禽作,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出揩页,到底是詐尸還是另有隱情旷偿,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布爆侣,位于F島的核電站萍程,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏兔仰。R本人自食惡果不足惜尘喝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斋陪。 院中可真熱鬧,春花似錦置吓、人聲如沸无虚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽友题。三九已至,卻和暖如春戴质,著一層夾襖步出監(jiān)牢的瞬間度宦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工告匠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留戈抄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓后专,卻偏偏與公主長(zhǎng)得像划鸽,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351