新聞中心
當(dāng)今世界,深度學(xué)習(xí)應(yīng)用已經(jīng)滲透到了我們生活的方方面面,深度學(xué)習(xí)技術(shù)背后的核心問(wèn)題是最優(yōu)化(Optimization)。最優(yōu)化是應(yīng)用數(shù)學(xué)的一個(gè)分支,它是研究在給定約束之下如何尋求某些因素(的量),以使某一(或某些)指標(biāo)達(dá)到最優(yōu)的一些學(xué)科的總稱。

梯度下降法(Gradient descent,又稱最速下降法/Steepest descent),是無(wú)約束最優(yōu)化領(lǐng)域中歷史最悠久、最簡(jiǎn)單的算法,單獨(dú)就這種算法來(lái)看,屬于早就“過(guò)時(shí)”了的一種算法。但是,它的理念是其他某些算法的組成部分,或者說(shuō)在其他某些算法中,也有梯度下降法的“影子”。例如,各種深度學(xué)習(xí)庫(kù)都會(huì)使用SGD(Stochastic Gradient Descent,隨機(jī)梯度下降)或變種作為其優(yōu)化算法。
今天我們就再來(lái)回顧一下梯度下降法的基礎(chǔ)知識(shí)。
1. 名字釋義
在很多機(jī)器學(xué)習(xí)算法中,我們通常會(huì)通過(guò)多輪的迭代計(jì)算,最小化一個(gè)損失函數(shù)(loss function)的值,這個(gè)損失函數(shù),對(duì)應(yīng)到最優(yōu)化里就是所謂的“目標(biāo)函數(shù)”。
在尋找最優(yōu)解的過(guò)程中,梯度下降法只使用目標(biāo)函數(shù)的一階導(dǎo)數(shù)信息——從“梯度”這個(gè)名字也可見(jiàn)一斑。并且它的本意是取目標(biāo)函數(shù)值“最快下降”的方向作為搜索方向,這也是“最速下降”這個(gè)名字的來(lái)源。
于是自然而然地,我們就想知道一個(gè)問(wèn)題的答案:沿什么方向,目標(biāo)函數(shù) f(x) 的值下降最快呢?
2. 函數(shù)值下降最快的方向是什么
先說(shuō)結(jié)論:沿負(fù)梯度方向
函數(shù)值下降最快。此處,我們用 d 表示方向(direction),用 g 表示梯度(gradient)。
下面就來(lái)推導(dǎo)一下。
將目標(biāo)函數(shù) f(x) 在點(diǎn)處泰勒展開(kāi)(在最優(yōu)化領(lǐng)域,這是一個(gè)常用的手段):
高階無(wú)窮小 o(α)可忽略,由于我們定義了步長(zhǎng)α>0(在ML領(lǐng)域,步長(zhǎng)就是平常所說(shuō)的learning rate),
因此,當(dāng)時(shí)即函數(shù)值是下降的。
此時(shí)就是一個(gè)下降方向。
但是具體等于什么的時(shí)候,可使目標(biāo)函數(shù)值下降最快呢?
數(shù)學(xué)上,有一個(gè)非常著名的不等式:Cauchy-Schwartz不等式(柯西-許瓦茲不等式)①,它是一個(gè)在很多場(chǎng)合都用得上的不等式:
當(dāng)且僅當(dāng):
時(shí)等號(hào)成立。
由Cauchy-Schwartz不等式可知:
當(dāng)且僅當(dāng)時(shí),等號(hào)成立,最大(>0)。
所以,時(shí)最小(<0),f(x) 下降量最大。
所以,是最快速下降方向。
3. 缺點(diǎn)
它真的如它的名字所描述的,是“最快速”的嗎?從很多經(jīng)典的最優(yōu)化書(shū)籍你會(huì)了解到:并不是。
事實(shí)上,它只在局部范圍內(nèi)具有“最速”性質(zhì);對(duì)整體求最優(yōu)解的過(guò)程而言,它讓目標(biāo)函數(shù)值下降非常緩慢。
4. 感受一下它是如何“慢”的
先來(lái)看一幅圖②
這幅圖表示的是對(duì)一個(gè)目標(biāo)函數(shù)尋找最優(yōu)解的過(guò)程,圖中鋸齒狀的路線就是尋優(yōu)路線在二維平面上的投影。從這幅圖我們可以看到,鋸齒一開(kāi)始比較大(跨越的距離比較大),后來(lái)越來(lái)越??;這就像一個(gè)人走路邁的步子,一開(kāi)始大,后來(lái)步子越邁越小。
這個(gè)函數(shù)的表達(dá)式是這樣的:
它叫做Rosenbrock function(羅森布羅克函數(shù))③,是個(gè)非凸函數(shù),在最優(yōu)化領(lǐng)域,它可以用作一個(gè)最優(yōu)化算法的performance test函數(shù)。這個(gè)函數(shù)還有一個(gè)更好記也更滑稽的名字:banana function(香蕉函數(shù))。
我們來(lái)看一看它在三維空間中的圖形:
它的全局最優(yōu)點(diǎn)位于一個(gè)長(zhǎng)長(zhǎng)的、狹窄的、拋物線形狀的、扁平的“山谷”中。
找到“山谷”并不難,難的是收斂到全局最優(yōu)解(在 (1,1) 處)。
正所謂:
| 世界上最遙遠(yuǎn)的距離,不是你離我千山萬(wàn)水,而是你就在我眼前,我卻要跨越千萬(wàn)步,才能找到你。 |
我們?cè)賮?lái)看下面這個(gè)目標(biāo)函數(shù)的尋優(yōu)過(guò)程④:
和前面的Rosenbrock function一樣,它的尋優(yōu)過(guò)程也是“鋸齒狀”的。
它在三維空間中的圖形是這樣的:
總而言之就是:當(dāng)目標(biāo)函數(shù)的等值線接近于圓(球)時(shí),下降較快;等值線類似于扁長(zhǎng)的橢球時(shí),一開(kāi)始快,后來(lái)很慢。
5. 為什么“慢”?
從上面花花綠綠的圖,我們看到了尋找最優(yōu)解的過(guò)程有多么“艱辛”,但不能光看熱鬧,還要分析一下原因。
在最優(yōu)化算法中,精確的line search滿足一個(gè)一階必要條件,即:梯度與方向的點(diǎn)積為零
(當(dāng)前點(diǎn)在方向上移動(dòng)到的那一點(diǎn)處的梯度,與當(dāng)前點(diǎn)的搜索方向的點(diǎn)積為零)。
由此得知:
即:
故由梯度下降法的得:
即:相鄰兩次的搜索方向是相互直交的(投影到二維平面上,就是鋸齒形狀了)。
如果你非要問(wèn),為什么就表明這兩個(gè)向量是相互直交的?那是因?yàn)?,由兩向量夾角的公式:
可知兩向量夾角為90度,因此它們直交。
6. 優(yōu)點(diǎn)
這個(gè)被我們說(shuō)得一無(wú)是處的方法真的就那么糟糕嗎?
其實(shí)它還是有優(yōu)點(diǎn)的:程序簡(jiǎn)單,計(jì)算量?。徊⑶覍?duì)初始點(diǎn)沒(méi)有特別的要求;此外,許多算法的初始/再開(kāi)始方向都是最速下降方向(即負(fù)梯度方向)。
7. 收斂性及收斂速度
梯度下降法具有整體收斂性——對(duì)初始點(diǎn)沒(méi)有特殊要求。
采用精確的line search的梯度下降法的收斂速度:線性。
引用:
- https://en.wikipedia.org/wiki/Cauchy%E2%80%93Schwarz_inequality
- https://en.wikipedia.org/wiki/Gradient_descent
- https://en.wikipedia.org/wiki/Rosenbrock_function
- https://en.wikipedia.org/wiki/Gradient_descent
【本文是專欄機(jī)構(gòu)360技術(shù)的原創(chuàng)文章,微信公眾號(hào)“360技術(shù)( id: qihoo_tech)”】
戳這里,看該作者更多好文
網(wǎng)頁(yè)標(biāo)題:淺談梯度下降法/Gradientdescent
轉(zhuǎn)載來(lái)于:http://m.5511xx.com/article/dhsigch.html


咨詢
建站咨詢
