chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

梯度下降算法及其變種:批量梯度下降,小批量梯度下降和隨機(jī)梯度下降

nlfO_thejiangme ? 來(lái)源:未知 ? 作者:李倩 ? 2018-05-03 15:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最優(yōu)化是指由變量x構(gòu)成的目標(biāo)函數(shù)f(x)進(jìn)行最小化或最大化的過(guò)程。在機(jī)器學(xué)習(xí)深度學(xué)習(xí)術(shù)語(yǔ)中,通常指最小化損失函數(shù)J(w),其中模型參數(shù)w∈R^d。最小化最優(yōu)化算法具有以下的目標(biāo):

- 如果目標(biāo)函數(shù)是凸的,那么任何的局部最小值都是全局最小值。

- 通常情況下,在大多數(shù)深度學(xué)習(xí)問(wèn)題中,目標(biāo)函數(shù)是非凸的,那就只能找到目標(biāo)函數(shù)鄰域內(nèi)的最低值。

圖1: 向著最小化邁進(jìn)

目前主要有三種最優(yōu)化算法:

- 對(duì)單點(diǎn)問(wèn)題,最優(yōu)化算法不用進(jìn)行迭代和簡(jiǎn)單求解。

- 對(duì)于邏輯回歸中經(jīng)常用到梯度下降法,這類(lèi)最優(yōu)化算法本質(zhì)上是迭代,不管參數(shù)初始化好壞都能收斂到可接受的解。

- 對(duì)于一系列具有非凸損失函數(shù)的問(wèn)題中,如神經(jīng)網(wǎng)絡(luò)。為保證收斂速度與低錯(cuò)誤率,最優(yōu)化算法中的參數(shù)初始化中起著至關(guān)重要的作用。

梯度下降是機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中最常用的優(yōu)化算法。它屬于一階優(yōu)化算法,參數(shù)更新時(shí)只考慮一階導(dǎo)數(shù)。在每次迭代中,梯度表示最陡的上升方向,于是我們朝著目標(biāo)函數(shù)梯度的反方向更新參數(shù),并通過(guò)學(xué)習(xí)速率α來(lái)調(diào)整每次迭代中達(dá)到局部最小值的步長(zhǎng)。因此,目標(biāo)函數(shù)會(huì)沿著下坡的方向,直到達(dá)到局部最小值。

在本文中,我們將介紹梯度下降算法及其變種:批量梯度下降,小批量梯度下降和隨機(jī)梯度下降。

我們先看看梯度下降是如何在邏輯回歸中發(fā)揮作用的,然后再討論其它變種算法。簡(jiǎn)單起見(jiàn),我們假設(shè)邏輯回歸模型只有兩個(gè)參數(shù):權(quán)重w和偏差b。

1.將初始化權(quán)重w和偏差b設(shè)為任意隨機(jī)數(shù)。

2.為學(xué)習(xí)率α選擇一個(gè)合適的值,學(xué)習(xí)速率決定了每次迭代的步長(zhǎng)。

- 如果α非常小,則需要很長(zhǎng)時(shí)間才能收斂并且計(jì)算量很大。

- 如果α較大,則可能無(wú)法收斂甚至超出最小值。

- 通過(guò)我們會(huì)使用以下值作為學(xué)習(xí)速度 : 0.001, 0.003, 0.01, 0.03, 0.1, 0.3.

圖2: 不同學(xué)習(xí)速度下的梯度下降

因此,通過(guò)觀察比較不同的α值對(duì)應(yīng)的損失函數(shù)變化,我們選擇第一次未達(dá)到收斂的α值的前一個(gè)作為最終的α值,這樣我們就可以有一個(gè)快速且收斂的學(xué)習(xí)算法。

3.如果數(shù)據(jù)尺度不一,那就要對(duì)數(shù)據(jù)進(jìn)行尺度縮放。如果我們不縮放數(shù)據(jù),那么等高線(xiàn)(輪廓)會(huì)變得越來(lái)越窄,意味著它需要更長(zhǎng)的時(shí)間來(lái)達(dá)到收斂(見(jiàn)圖3)。

圖3. 梯度下降: 數(shù)據(jù)歸一化后的等高線(xiàn)與未進(jìn)行歸一化的對(duì)比

使數(shù)據(jù)分布滿(mǎn)足μ= 0和σ= 1。以下是數(shù)據(jù)縮放的公式:

4.在每次迭代中,用損失函數(shù)J的偏導(dǎo)數(shù)來(lái)表示每個(gè)參數(shù)(梯度)

更新方程如下:

- 特地說(shuō)明一下,此處我們假設(shè)不存在偏差。 如果當(dāng)前值w對(duì)應(yīng)的梯度方向?yàn)檎@意味著當(dāng)前點(diǎn)處在最優(yōu)值w*的右側(cè),則需要朝著負(fù)方向更新,從而接近最優(yōu)值w*。然而如果現(xiàn)在梯度是負(fù)值,那么更新方向?qū)⑹钦?,將增加w的當(dāng)前值以收斂到w*的最優(yōu)值(參見(jiàn)圖4):

圖4: 梯度下降,示例說(shuō)明梯度下降算法如何用損失函數(shù)的一階導(dǎo)數(shù)實(shí)現(xiàn)下降并達(dá)到最小值。

- 繼續(xù)這個(gè)過(guò)程,直至損失函數(shù)收斂。也就是說(shuō),直到誤差曲線(xiàn)變得平坦不變。

- 此外,每次迭代中,朝著變化最大的方向進(jìn)行,每一步都與等高線(xiàn)垂直。

上面就是梯度下降法的一般過(guò)程,我們需要確定目標(biāo)函數(shù)、優(yōu)化方法,并通過(guò)梯度來(lái)引導(dǎo)系統(tǒng)搜尋到最優(yōu)值。

現(xiàn)在我們來(lái)討論梯度下降算法的三個(gè)變種,它們之間的主要區(qū)別在于每個(gè)學(xué)習(xí)步驟中計(jì)算梯度時(shí)使用的數(shù)據(jù)量,是對(duì)每個(gè)參數(shù)更新(學(xué)習(xí)步驟)時(shí)的梯度準(zhǔn)確性與時(shí)間復(fù)雜度的折衷考慮。

批量梯度下降

批量梯度下降是指在對(duì)參數(shù)執(zhí)行更新時(shí),在每次迭代中使用所有的樣本。

for i in range(num_epochs):

grad = compute_gradient(data, params)

params = params — learning_rate * grad

主要的優(yōu)點(diǎn):

- 訓(xùn)練期間,我們可以使用固定的學(xué)習(xí)率,而不用考慮學(xué)習(xí)率衰減的問(wèn)題。

- 它具有朝向最小值的直線(xiàn)軌跡,并且如果損失函數(shù)是凸的,則保證理論上收斂到全局最小值,如果損失函數(shù)不是凸的,則收斂到局部最小值。

- 梯度是無(wú)偏估計(jì)的。樣本越多,標(biāo)準(zhǔn)誤差就越低。

主要的缺點(diǎn):

- 盡管我們可以用向量的方式計(jì)算,但是可能仍然會(huì)很慢地遍歷所有樣本,特別是數(shù)據(jù)集很大的時(shí)候算法的耗時(shí)將成為嚴(yán)重的問(wèn)題。

- 學(xué)習(xí)的每一步都要遍歷所有樣本,這里面一些樣本可能是多余的,并且對(duì)更新沒(méi)有多大貢獻(xiàn)。

小批量梯度下降

為了克服上述方法的缺點(diǎn),人們提出了小批量梯度下降。在更新每一參數(shù)時(shí),不用遍歷所有的樣本,而只使用一部分樣本來(lái)進(jìn)行更新。 因此,每次只用小批量的b個(gè)樣本進(jìn)行更新學(xué)習(xí),其主要過(guò)程如下:

- 打亂訓(xùn)練數(shù)據(jù)集以避免樣本預(yù)先存在順序結(jié)構(gòu)。

- 根據(jù)批量的規(guī)模將訓(xùn)練數(shù)據(jù)集分為b個(gè)小批量。如果訓(xùn)練集大小不能被批量大小整除,則將剩余的部分單獨(dú)作為一個(gè)小批量。

for i in range(num_epochs):

np.random.shuffle(data)

for batch in radom_minibatches(data, batch_size=32):

grad = compute_gradient(batch, params)

params = params — learning_rate * grad

批量的大小我們可以調(diào)整,通常被選為2的冪次方,例如32,64,128,256,512等。其背后的原因是一些像GPU這樣的硬件也是以2的冪次方的批量大小來(lái)獲得更好的運(yùn)行時(shí)間。

主要的優(yōu)點(diǎn):

- 比起批量梯度下降,速度更快,因?yàn)樗儆昧撕芏鄻颖尽?/p>

- 隨機(jī)選擇樣本有助于避免對(duì)學(xué)習(xí)沒(méi)有多大貢獻(xiàn)冗余樣本或非常相似的樣本的干擾。

- 當(dāng)批量的大小小于訓(xùn)練集大小時(shí),會(huì)增加學(xué)習(xí)過(guò)程中的噪聲,有助于改善泛化誤差。

- 盡管用更多的樣本可以獲得更低的估計(jì)標(biāo)準(zhǔn)誤差,但所帶來(lái)的計(jì)算負(fù)擔(dān)卻小于線(xiàn)性增長(zhǎng)

主要缺點(diǎn):

- 在每次迭代中,學(xué)習(xí)步驟可能會(huì)由于噪聲而來(lái)回移動(dòng)。 因此它會(huì)在最小值區(qū)域周?chē)▌?dòng),但不收斂。

- 由于噪聲的原因,學(xué)習(xí)步驟會(huì)有更多的振蕩(見(jiàn)圖4),并且隨著我們?cè)絹?lái)越接近最小值,需要增加學(xué)習(xí)衰減來(lái)降低學(xué)習(xí)速率。

圖5: 梯度下降:批量與小批量的損失函數(shù)對(duì)比

對(duì)于大規(guī)模的訓(xùn)練數(shù)據(jù)集,我們通常不需要超過(guò)2-10次就能遍歷所有的訓(xùn)練樣本。 注意:當(dāng)批量大小b等于訓(xùn)練樣本數(shù)m時(shí)候,這種方法就相當(dāng)于批量梯度下降。

隨機(jī)梯度下降

隨機(jī)梯度下降(SGD)只對(duì)樣本(xi,yi)執(zhí)行參數(shù)更新,而不是遍歷所有樣本。因此,學(xué)習(xí)發(fā)生在每個(gè)樣本上,其具體過(guò)程如下:

- 打亂訓(xùn)練數(shù)據(jù)集以避免樣本預(yù)先存在順序

- 將訓(xùn)練數(shù)據(jù)集劃分為m個(gè)樣本。

for i in range(num_epochs):

np.random.shuffle(data)

for example in data:

grad = compute_gradient(example, params)

params = params — learning_rate * grad

它與小批量版本擁有很多相似的優(yōu)點(diǎn)和缺點(diǎn)。以下是特定于SGD的特性:

- 與小批量方法相比,它為學(xué)習(xí)過(guò)程增加了更多的噪聲,有助于改善泛化誤差。但同時(shí)也增加了運(yùn)行時(shí)間。

- 我們不能用向量的形式來(lái)處理1個(gè)樣本,導(dǎo)致速度非常慢。 此外,由于每個(gè)學(xué)習(xí)步驟我們僅使用1個(gè)樣本,所以方差會(huì)變大。

下圖顯示了梯度下降的變種方法以及它們朝向最小值的方向走勢(shì),如圖所示,與小批量版本相比,SGD的方向噪聲很大:

圖6: 梯度下降變種方法朝向最小值的軌跡

難點(diǎn)

以下是關(guān)于梯度下降算法及其變種遇到的一些常見(jiàn)問(wèn)題:

- 梯度下降屬于一階優(yōu)化算法,這意味著它不考慮損失函數(shù)的二階導(dǎo)數(shù)。 但是,函數(shù)的曲率會(huì)影響每個(gè)學(xué)習(xí)步長(zhǎng)的大小。梯度描述了曲線(xiàn)的陡度,二階導(dǎo)數(shù)則測(cè)量曲線(xiàn)的曲率。因此,如果:

1.二階導(dǎo)數(shù)= 0→曲率是線(xiàn)性的。 因此,步長(zhǎng)=學(xué)習(xí)率α。

2.二階導(dǎo)數(shù)> 0→曲率向上。 因此,步長(zhǎng)<學(xué)習(xí)率α可能會(huì)導(dǎo)致發(fā)散。

3.二階導(dǎo)數(shù)<0→曲率向下。 因此,步長(zhǎng)>學(xué)習(xí)率α。

因此,對(duì)梯度看起來(lái)有希望的方向可能不會(huì)如此,并可能導(dǎo)致學(xué)習(xí)過(guò)程減慢甚至發(fā)散。

- 如果Hessian矩陣不夠好,比如最大曲率的方向要比最小曲率的方向曲率大得多。 這將導(dǎo)致?lián)p失函數(shù)在某些方向上非常敏感,而在其他方向不敏感。 因此,有些看起來(lái)有利于梯度的方向可能不會(huì)導(dǎo)致?lián)p失函數(shù)發(fā)生很大變化(請(qǐng)參見(jiàn)圖7)。

圖7: 梯度下降未能利用包含在Hessian矩陣中的曲率信息。

- 隨著每個(gè)學(xué)習(xí)步驟完成,梯度gTg的范數(shù)應(yīng)該緩慢下降,因?yàn)榍€(xiàn)越來(lái)越平緩,曲線(xiàn)的陡度也會(huì)減小。 但是,由于曲線(xiàn)的曲率使得梯度的范數(shù)在增加。盡管如此,但我們還能夠獲得非常低的錯(cuò)誤率(見(jiàn)圖8)。

圖8: 梯度范數(shù). Source

- 在小規(guī)模數(shù)據(jù)集中,局部最小值是常見(jiàn)的; 然而,在大規(guī)模數(shù)據(jù)集中,鞍點(diǎn)更為常見(jiàn)。鞍點(diǎn)是指函數(shù)在某些方向上向上彎曲而在其他方向上向下彎曲。換句話(huà)說(shuō),鞍點(diǎn)看起來(lái)像是一個(gè)方向的最小值,另一個(gè)方向的最大值(見(jiàn)圖9)。 當(dāng)Hessian矩陣的特征值至少有一個(gè)是負(fù)值而其余的特征值是正值時(shí)就會(huì)發(fā)生這種情況。

圖9: 鞍點(diǎn)

- 如前所述,選擇適當(dāng)?shù)膶W(xué)習(xí)率是困難的。 另外,對(duì)于小批量梯度下降,我們必須在訓(xùn)練過(guò)程中調(diào)整學(xué)習(xí)速率,以確保它收斂到局部最小值而不是在其周?chē)鷣?lái)回游蕩。計(jì)算學(xué)習(xí)率的衰減率也是很難的,并且這會(huì)隨著數(shù)據(jù)集不同而變化。

- 所有參數(shù)更新具有相同的學(xué)習(xí)率; 然而,我們可能更希望對(duì)一些參數(shù)執(zhí)行更大的更新,因?yàn)檫@些參數(shù)的方向?qū)?shù)比其他參數(shù)更接近朝向最小值的軌跡,那么就需要針對(duì)性的設(shè)定學(xué)習(xí)率及其變化。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:機(jī)器學(xué)習(xí)優(yōu)化算法「梯度下降」及其變種算法

文章出處:【微信號(hào):thejiangmen,微信公眾號(hào):將門(mén)創(chuàng)投】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    分享一個(gè)自己寫(xiě)的機(jī)器學(xué)習(xí)線(xiàn)性回歸梯度下降算法

    單變量線(xiàn)性回歸算法,利用Batch梯度梯度下降算法迭代計(jì)算得到誤差最小的代價(jià)函數(shù)theta0,theta1。調(diào)節(jié)學(xué)習(xí)率a可以觀察擬合得到的函
    發(fā)表于 10-02 21:48

    機(jī)器學(xué)習(xí)新手必學(xué)的三種優(yōu)化算法(牛頓法、梯度下降法、最速下降法)

    法、梯度下降法、最速下降法)進(jìn)行了介紹和比較,并結(jié)合算法的數(shù)學(xué)原理和實(shí)際案例給出了優(yōu)化算法選擇的一些建議。閱讀本文的基礎(chǔ)準(zhǔn)備線(xiàn)性代數(shù)多變量微
    發(fā)表于 05-07 08:30

    如何更新權(quán)重實(shí)現(xiàn)梯度下降

    實(shí)現(xiàn)梯度下降
    發(fā)表于 07-15 10:09

    隨機(jī)并行梯度下降圖像匹配方法性能研究及優(yōu)化_李松洋

    隨機(jī)并行梯度下降圖像匹配方法性能研究及優(yōu)化_李松洋
    發(fā)表于 03-14 08:00 ?0次下載

    機(jī)器學(xué)習(xí):隨機(jī)梯度下降批量梯度下降算法介紹

    隨機(jī)梯度下降(Stochastic gradient descent) 批量梯度下降(Batch
    發(fā)表于 11-28 04:00 ?1w次閱讀
    機(jī)器學(xué)習(xí):<b class='flag-5'>隨機(jī)</b><b class='flag-5'>梯度</b><b class='flag-5'>下降</b>和<b class='flag-5'>批量</b><b class='flag-5'>梯度</b><b class='flag-5'>下降</b><b class='flag-5'>算法</b>介紹

    一文看懂常用的梯度下降算法

    編輯:祝鑫泉 一 概述 梯度下降算法( Gradient Descent Optimization )是神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練最常用的優(yōu)化算法。對(duì)于深度學(xué)習(xí)模型,基本都是采用
    發(fā)表于 12-04 18:17 ?3901次閱讀

    機(jī)器學(xué)習(xí)中梯度下降法的過(guò)程

    梯度下降法是一個(gè)用于尋找最小化成本函數(shù)的參數(shù)值的最優(yōu)化算法。當(dāng)我們無(wú)法通過(guò)分析計(jì)算(比如線(xiàn)性代數(shù)運(yùn)算)求得函數(shù)的最優(yōu)解時(shí),我們可以利用梯度下降
    發(fā)表于 04-26 16:44 ?3719次閱讀

    機(jī)器學(xué)習(xí)優(yōu)化算法梯度下降,牛頓法和擬牛頓法的優(yōu)缺點(diǎn)詳細(xì)介紹

    梯度下降法實(shí)現(xiàn)簡(jiǎn)單,當(dāng)目標(biāo)函數(shù)是凸函數(shù)時(shí),梯度下降法的解是全局解。一般情況下,其解不保證是全局最優(yōu)解,梯度
    的頭像 發(fā)表于 08-04 11:40 ?5.3w次閱讀

    簡(jiǎn)單的梯度下降算法,你真的懂了嗎?

    梯度下降算法的公式非常簡(jiǎn)單,”沿著梯度的反方向(坡度最陡)“是我們?nèi)粘=?jīng)驗(yàn)得到的,其本質(zhì)的原因到底是什么呢?為什么局部下降最快的方向就是
    發(fā)表于 09-19 00:17 ?1191次閱讀

    基于分布式編碼的同步隨機(jī)梯度下降算法

    基于數(shù)據(jù)并行化的異步隨機(jī)梯度下降(ASGD)算法由于需要在分布式計(jì)算節(jié)點(diǎn)之間頻繁交換梯度數(shù)據(jù),從而影響
    發(fā)表于 04-27 13:56 ?2次下載
    基于分布式編碼的同步<b class='flag-5'>隨機(jī)</b><b class='flag-5'>梯度</b><b class='flag-5'>下降</b><b class='flag-5'>算法</b>

    梯度下降法在機(jī)器學(xué)習(xí)中的應(yīng)用

    梯度下降法沿著梯度的反方向進(jìn)行搜索,利用了函數(shù)的一階導(dǎo)數(shù)信息。
    的頭像 發(fā)表于 05-18 09:20 ?2589次閱讀
    <b class='flag-5'>梯度</b><b class='flag-5'>下降</b>法在機(jī)器學(xué)習(xí)中的應(yīng)用

    PyTorch教程12.4之隨機(jī)梯度下降

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程12.4之隨機(jī)梯度下降.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 14:58 ?0次下載
    PyTorch教程12.4之<b class='flag-5'>隨機(jī)</b><b class='flag-5'>梯度</b><b class='flag-5'>下降</b>

    PyTorch教程12.5之小批量隨機(jī)梯度下降

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程12.5之小批量隨機(jī)梯度下降.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 15:00 ?0次下載
    PyTorch教程12.5之<b class='flag-5'>小批量</b><b class='flag-5'>隨機(jī)</b><b class='flag-5'>梯度</b><b class='flag-5'>下降</b>

    PyTorch教程-12.4。隨機(jī)梯度下降

    12.4。隨機(jī)梯度下降? Colab [火炬]在 Colab 中打開(kāi)筆記本 Colab [mxnet] Open the notebook in Colab Colab [jax
    的頭像 發(fā)表于 06-05 15:44 ?977次閱讀
    PyTorch教程-12.4。<b class='flag-5'>隨機(jī)</b><b class='flag-5'>梯度</b><b class='flag-5'>下降</b>

    PyTorch教程-12.5。小批量隨機(jī)梯度下降

    12.5。小批量隨機(jī)梯度下降? Colab [火炬]在 Colab 中打開(kāi)筆記本 Colab [mxnet] Open the notebook in Colab Cola
    的頭像 發(fā)表于 06-05 15:44 ?1293次閱讀
    PyTorch教程-12.5。<b class='flag-5'>小批量</b><b class='flag-5'>隨機(jī)</b><b class='flag-5'>梯度</b><b class='flag-5'>下降</b>