導航:首頁 > 知識科普 > 一階和二階梯度優化方法怎麼求

一階和二階梯度優化方法怎麼求

發布時間:2022-09-22 03:16:47

㈠ 梯度下降法是什麼

梯度下降法(英語:Gradient descent)是一個一階最優化演算法,通常也稱為最陡下降法。

要使用梯度下降法找到一個函數的局部極小值,必須向函數上當前點對應梯度(或者是近似梯度)的反方向的規定步長距離點進行迭代搜索。如果相反地向梯度正方向迭代進行搜索,則會接近函數的局部極大值點;這個過程則被稱為梯度上升法。

梯度下降一般歸功於柯西,他在 1847 年首次提出它。Hadamard在 1907 年獨立提出了類似的方法。Haskell Curry在 1944 年首先研究了它對非線性優化問題的收斂性,隨著該方法在接下來的幾十年中得到越來越多的研究和使用,通常也稱為最速下降。

梯度下降適用於任意維數的空間,甚至是無限維的空間。在後一種情況下,搜索空間通常是一個函數空間,並且計算要最小化的函數的Fréchet 導數以確定下降方向。

梯度下降適用於任意數量的維度(至少是有限數量)可以看作是柯西-施瓦茨不等式的結果。那篇文章證明了任意維度的兩個向量的內(點)積的大小在它們共線時最大化。在梯度下降的情況下,當自變數調整的向量與偏導數的梯度向量成正比時。

修改

為了打破梯度下降的鋸齒形模式,動量或重球方法使用動量項,類似於重球在被最小化的函數值的表面上滑動,或牛頓動力學中的質量運動在保守力場中通過粘性介質。具有動量的梯度下降記住每次迭代時的解更新,並將下一次更新確定為梯度和前一次更新的線性組合。

對於無約束二次極小化,重球法的理論收斂速度界與最優共軛梯度法的理論收斂速度界漸近相同。

該技術用於隨機梯度下降,並作為用於訓練人工神經網路的反向傳播演算法的擴展。

㈡ 一個多元函數的次梯度怎樣求

次梯度法是求解凸函數最優化(凸優化)問題的一種迭代法。 次梯度法能夠用於不可微的目標函數。當目標函數可微時,對於無約束問題次梯度法與梯度下降法具有同樣的搜索方向。雖然在實際的應用中,次梯度法比內點法和牛頓法慢得多,但是次梯度法可以直接應用於更廣泛的問題,次梯度法只需要很少的存儲需求。然而,通過將次梯度法與分解技術結合,有時能夠開發出問題的簡單分配演算法

次梯度方法有許多可採用的步長。以下為5種能夠保證收斂性的步長規則:

1、恆定步長,

㈢ 優化方法總結

神經網路模型中有多種優化演算法,優化演算法的作用用來優化更新參數。
對於優化演算法而言,主要的框架如下。
參數: 目標函數: 學習率 。
對於每個epoch t:
step1: 計算當前梯度
step2: 計算動量。
     一階動量:
     二階動量:
step3: 計算當前時刻下降梯度
step4: 更新參數
對於不同的優化演算法而言,區別主要在於第一步和第二步。對於梯度的計算,一階動量的計算,和二階動量的計算存在差別。
三、四步的計算更新,各個演算法之間都是相同的。

最常見的SGD
直接沒有step2,沒有引入動量。

在實際的實現中,可能會對學習率 進行改變,會使用衰減學習率。
SGD的缺點是 1 收斂速度慢,2 有可能會困在局部最優解。

也就是SGD+ Momentum。這里引入了一階動量。
從直觀理解就是加入了一個慣性,在坡度比較陡的地方,會有較大的慣性,這是下降的多。坡度平緩的地方,慣性較小,下降的會比較慢。
修改SGD中的一階動量為

等式右邊有兩部分,加號左邊的部分為之前積累的下降方向,加號右邊為當前的梯度。兩者的權重用參數來控制。
越大,說明下降的方向越依賴於以往的慣性。可以減少方向的突變。

NAG是:Nesterov Accelerated Gradient
這里是針對SGD會陷在局部最優附近的缺點進行改進。
在前面針對收斂慢改,引進一階動量後,這里著眼於step1里的梯度計算。通常 會設的比較大,這就說明下降方向主要由歷史方向積累決定,那麼在step1里,不看當前的梯度,而是看下一步時刻的梯度。直觀理解為多看一步,計算下一步的梯度。
用下一個點的梯度下降方向,與歷史累積動量結合,計算step2里的一階動量。
計算公式如下

前面的優化演算法主要著眼於一階動量的設計,從AdaGrad開始,將引入二階動量。參數的二階動量在這里表示為當前維度上,歷史積累的全部的梯度的平方和。
將step3里的公式修改一下順序,那前面的部分可以看成學習率。這里的分母是二階動量。這里的學習率(包含二階動量)會隨著二階動量的積累而逐漸變化,這就是『自適應學習』。

宏觀來分析,這里參數更新時,希望從少更新的維度多學習,經常更新的參數那裡少學習一點。對於頻繁更新的的參數,二階動量迅速積累,會使的學習率降低,那麼在同一次更新中,模型會學到比較少的內容。而不頻繁更新的參數,學習率會比較大,每次更新時學到的東西比較多。
Ada演算法的缺點也很明顯,二階動量是歷史梯度的積累,是個單調遞增的值,當分母越來越大時,整個的學習率會趨於0,會提前停止學習。

為了改進AdaGrad中的二階動量會不斷增加的缺點,這里提出了一個時間窗口。計算二階動量的時候只計算這個時間窗口內的動量。避免了二階動量的持續積累。
二階動量的計算公式如下

SGD-M 引入了一階動量,AdaG 引入了二階動量。
二者結合就是Adam,同時考慮一階動量和二階動量。
二者的計算公式如下:

回頭看最初的優化框架,已經分別在一階動量和二階動量做了研究。還剩下當前的梯度可以進行嘗試。參考前面的NAG,Nadam就是Adam+Nesterov。
在Adam的基礎上保持其他計算公式不變,更改當前梯度的計算公式為

從前面的介紹可以看出,Adam系列的演算法表面上更優秀,針對原本的SGD的缺點做了各種改變。但是對於Adam演算法,目前也存在著缺點。
其中一個很嚴重的問題是Adam演算法有可能不收斂。因為二階動量取決於一段時間內的梯度的積累。這段時間內的數據如果有異常,會導致這個二階動量極不穩定。在學習的後期,學習率有可能不斷震盪,導致整個模型無法收斂。
同時因為動量的引入,在學習的後期,存在可能使一步過大,錯過最優解。
綜上所述,雖然Adam看著很完美,但在實際應用中還是存在著缺點。所以到底是各種優化器要如何選擇,還是要取決於具體的情況和個人的調參經驗。

後續會逐漸更新個人的調參經驗。

[1] 一個框架看懂優化演算法之異同 SGD/AdaGrad/Adam
[2] Adam的兩宗罪
[3] 如何理解隨機梯度下降(Stochastic gradient descent,SGD)?

㈣ 想知道優化演算法是什麼

優化演算法是通過改善計算方式來最小化或最大化損失函數E(x)。模型內部有些參數是用來計算測試集中目標值Y的真實值和預測值的偏差程度的,基於這些參數就形成了損失函數E(x),比如說,權重(W)和偏差(b)就是這樣的內部參數,一般用於計算輸出值,在訓練神經網路模型時起到主要作用。

優化演算法分的分類

一階優化演算法是使用各參數的梯度值來最小化或最大化損失函數E(x),最常用的一階優化演算法是梯度下降。函數梯度導數dy/dx的多變數表達式,用來表示y相對於x的瞬時變化率。

二階優化演算法是使用了二階導數也叫做Hessian方法來最小化或最大化損失函數,由於二階導數的計算成本很高,所以這種方法並沒有廣泛使用。

㈤ 梯度下降法原理和步驟

一、梯度法思想
梯度法思想的三要素:出發點、下降方向、下降步長。
機器學習中常用的權重更新表達式為
:,這里的λ就是學習率,本文從這個式子出發來把機器學習中的各種「梯度」下降法闡釋清楚。
機器學習目標函數,一般都是凸函數,什麼叫凸函數?限於篇幅,我們不做很深的展開,在這兒我們做一個形象的比喻,凸函數求解問題,可以把目標損失函數想像成一口鍋,來找到這個鍋的鍋底。非常直觀的想法就是,我們沿著初始某個點的函數的梯度方嚮往下走(即梯度下降)。在這兒,我們再作個形象的類比,如果把這個走法類比為力,那麼完整的三要素就是步長(走多少)、方向、出發點,這樣形象的比喻,讓我們對梯度問題的解決豁然開朗,出發點很重要,是初始化時重點要考慮的,而方向、步長就是關鍵。事實上不同梯度的不同就在於這兩點的不同!
梯度方向是

,步長設為常數Δ,這時就會發現,如果用在梯度較大的時候,離最優解比較遠,W的更新比較快;然而到了梯度較小的時候,也就是較靠近最優解的時候,W的更新竟然也保持著跟原來一樣的速率,這樣會導致W很容易更新過度反而遠離了最優解,進而出現在最優解附近來回震盪。所以,既然在遠離最優解的時候梯度大,在靠近最優解的時候梯度小,我們讓步長隨著這個律動,於是我我們就用λ|W|來代替Δ,最後得到了我們熟悉的式子:

所以說這時的λ是隨著坡度的陡緩而變化的,別看它是個常數。
二、全量梯度下降法(Batch gradient descent)
全量梯度下降法每次學習都使用整個訓練集,因此每次更新都會朝著正確的方向進行,最後能夠保證收斂於極值點,凸函數收斂於全局極值點,非凸函數可能會收斂於局部極值點,缺陷就是學習時間太長,消耗大量內存。
第二、隨機梯度下降法(Stochastic Gradient Descent)
SGD一輪迭代只用一條隨機選取的數據,盡管SGD的迭代次數比BGD大很多,但一次學習時間非常快。
SGD的缺點在於每次更新可能並不會按照正確的方向進行,參數更新具有高方差,從而導致損失函數劇烈波動。不過,如果目標函數有盆地區域,SGD會使優化的方向從當前的局部極小值點跳到另一個更好的局部極小值點,這樣對於非凸函數,可能最終收斂於一個較好的局部極值點,甚至全局極值點。
缺點是,出現損失函數波動,並且無法判斷是否收斂。

㈥ 幾種常用最優化方法

學習和工作中遇到的大多問題都可以建模成一種最優化模型進行求解,比如我們現在學習的機器學習演算法,大部分的機器學習演算法的本質都是建立優化模型,通過最優化方法對目標函數(或損失函數)進行優化,從而訓練出最好的模型。常見的優化方法(optimization)有梯度下降法、牛頓法和擬牛頓法、共軛梯度法等等。

1. 梯度下降法(Gradient Descent)

梯度下降法是最早最簡單,也是最為常用的最優化方法。梯度下降法實現簡單,當目標函數是凸函數時,梯度下降法的解是全局解。一般情況下,其解不保證是全局最優解,梯度下降法的速度也未必是最快的。 梯度下降法的優化思想是用當前位置負梯度方向作為搜索方向,因為該方向為當前位置的最快下降方向,所以也被稱為是」最速下降法「。最速下降法越接近目標值,步長越小,前進越慢。

梯度下降 法的缺點:

(1)靠近極小值時收斂速度減慢;

(2)直線搜索時可能會產生一些問題;

(3)可能會「之字形」地下降。

在機器學習中,基於基本的梯度下降法發展了兩種梯度下降方法,分別為隨機梯度下降法和批量梯度下降法。

比如對一個線性回歸(Linear Logistics)模型,假設下面的h(x)是要擬合的函數,J( )為損失函數, 是參數,要迭代求解的值,求解出來了那最終要擬合的函數h( )就出來了。其中m是訓練集的樣本個數,n是特徵的個數。

1)批量梯度下降法(Batch Gradient Descent,BGD)

(1)將J( )對 求偏導,得到每個theta對應的的梯度:

(2)由於是要最小化風險函數,所以按每個參數 的梯度負方向,來更新每個 :

        (3)從上面公式可以注意到,它得到的是一個全局最優解,但是每迭代一步,都要用到訓練集所有的數據,如果m很大,那麼可想而知這種方法的迭代速度會相當的慢。所以,這就引入了另外一種方法——隨機梯度下降。

對於批量梯度下降法,樣本個數m,x為n維向量,一次迭代需要把m個樣本全部帶入計算,迭代一次計算量為m*n2。

2)隨機梯度下降(Stochastic Gradient Descent,SGD)

        (1)上面的風險函數可以寫成如下這種形式,損失函數對應的是訓練集中每個樣本的粒度,而上面批量梯度下降對應的是所有的訓練樣本:

(2)每個樣本的損失函數,對 求偏導得到對應梯度,來更新 :

(3)隨機梯度下降是通過每個樣本來迭代更新一次,如果樣本量很大的情況(例如幾十萬),那麼可能只用其中幾萬條或者幾千條的樣本,就已經將

迭代到最優解了,對比上面的批量梯度下降,迭代一次需要用到十幾萬訓練樣本,一次迭代不可能最優,如果迭代10次的話就需要遍歷訓練樣本10次。但是,SGD伴隨的一個問題是噪音較BGD要多,使得SGD並不是每次迭代都向著整體最優化方向。

隨機梯度下降每次迭代只使用一個樣本,迭代一次計算量為n2,當樣本個數m很大的時候,隨機梯度下降迭代一次的速度要遠高於批量梯度下降方法。 兩者的關系可以這樣理解:隨機梯度下降方法以損失很小的一部分精確度和增加一定數量的迭代次數為代價,換取了總體的優化效率的提升。增加的迭代次數遠遠小於樣本的數量。

對批量梯度下降法和隨機梯度下降法的總結:

批量梯度下降---最小化所有訓練樣本的損失函數,使得最終求解的是全局的最優解,即求解的參數是使得風險函數最小,但是對於大規模樣本問題效率低下。

隨機梯度下降---最小化每條樣本的損失函數,雖然不是每次迭代得到的損失函數都向著全局最優方向, 但是大的整體的方向是向全局最優解的,最終的結果往往是在全局最優解附近,適用於大規模訓練樣本情況。

2. 牛頓法和擬牛頓法(Newton's method & Quasi-Newton Methods)

1)牛頓法(Newton's method)

牛頓法是一種在實數域和復數域上近似求解方程的方法。方法使用函數 f  ( x )的泰勒級數的前面幾項來尋找方程 f  ( x ) = 0的根。牛頓法最大的特點就在於它的收斂速度很快。

具體步驟:

首先,選擇一個接近函數 f  ( x )零點的x0,計算相應的 f  ( x 0)和切線斜率 f  '  ( x 0)(這里 f '  表示函數 f   的導數)。然後我們計算穿過點( x 0, f   ( x 0))並且斜率為 f  '( x 0)的直線和 x  軸的交點的 x 坐標,也就是求如下方程的解:

我們將新求得的點的 x  坐標命名為 x 1,通常 x 1會比 x 0更接近方程 f   ( x ) = 0的解。因此我們現在可以利用 x 1開始下一輪迭代。迭代公式可化簡為如下所示:

已經證明,如果 f   '是連續的,並且待求的零點 x 是孤立的,那麼在零點 x 周圍存在一個區域,只要初始值 x 0位於這個鄰近區域內,那麼牛頓法必定收斂。 並且,如果 f   ' ( x )不為0, 那麼牛頓法將具有平方收斂的性能. 粗略的說,這意味著每迭代一次,牛頓法結果的有效數字將增加一倍。下圖為一個牛頓法執行過程的例子。

由於牛頓法是基於當前位置的切線來確定下一次的位置,所以牛頓法又被很形象地稱為是"切線法"。

關於牛頓法和梯度下降法的效率對比:

從本質上去看,牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法就更快。如果更通俗地說的話,比如你想找一條最短的路徑走到一個盆地的最底部,梯度下降法每次只從你當前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時,不僅會考慮坡度是否夠大,還會考慮你走了一步之後,坡度是否會變得更大。所以,可以說牛頓法比梯度下降法看得更遠一點,能更快地走到最底部。(牛頓法目光更加長遠,所以少走彎路;相對而言,梯度下降法只考慮了局部的最優,沒有全局思想。)

根據wiki上的解釋,從幾何上說,牛頓法就是用一個二次曲面去擬合你當前所處位置的局部曲面,而梯度下降法是用一個平面去擬合當前的局部曲面,通常情況下,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優下降路徑。

註:紅色的牛頓法的迭代路徑,綠色的是梯度下降法的迭代路徑。

牛頓法的優缺點總結:

優點:二階收斂,收斂速度快;

缺點:牛頓法是一種迭代演算法,每一步都需要求解目標函數的Hessian矩陣的逆矩陣,計算比較復雜。

2)擬牛頓法(Quasi-Newton Methods)

擬牛頓法是求解非線性優化問題最有效的方法之一,於20世紀50年代由美國Argonne國家實驗室的物理學家W.C.Davidon所提出來。Davidon設計的這種演算法在當時看來是非線性優化領域最具創造性的發明之一。不久R. Fletcher和M. J. D. Powell證實了這種新的演算法遠比其他方法快速和可靠,使得非線性優化這門學科在一夜之間突飛猛進。

擬牛頓法的本質思想是改善牛頓法每次需要求解復雜的Hessian矩陣的逆矩陣的缺陷,它使用正定矩陣來近似Hessian矩陣的逆,從而簡化了運算的復雜度。 擬牛頓法和最速下降法一樣只要求每一步迭代時知道目標函數的梯度。通過測量梯度的變化,構造一個目標函數的模型使之足以產生超線性收斂性。這類方法大大優於最速下降法,尤其對於困難的問題。另外,因為擬牛頓法不需要二階導數的信息,所以有時比牛頓法更為有效。如今,優化軟體中包含了大量的擬牛頓演算法用來解決無約束,約束,和大規模的優化問題。

具體步驟:

擬牛頓法的基本思想如下。首先構造目標函數在當前迭代xk的二次模型:

這里Bk是一個對稱正定矩陣,於是我們取這個二次模型的最優解作為搜索方向,並且得到新的迭代點:

其中我們要求步長ak 滿足Wolfe條件。這樣的迭代與牛頓法類似,區別就在於用近似的Hesse矩陣Bk 代替真實的Hesse矩陣。所以擬牛頓法最關鍵的地方就是每一步迭代中矩陣Bk的更新。現在假設得到一個新的迭代xk+1,並得到一個新的二次模型:

我們盡可能地利用上一步的信息來選取Bk。具體地,我們要求

從而得到

這個公式被稱為割線方程。常用的擬牛頓法有DFP演算法和BFGS演算法。

原文鏈接: [Math] 常見的幾種最優化方法 - Poll的筆記 - 博客園

㈦ 什麼是梯度優化法

梯度優化法是遵循一定優化路徑逐漸尋找最優點的方法,它是單向尋優,後一階段優化是在前一階段優化的基礎上進行的。

㈧ 100維度用什麼優化演算法

神經網路中常用的優化演算法。
優化演算法的目的:
1. 跳出局部極值點或鞍點,尋找全局最小值;
2.使訓練過程更加穩定,更加容易收斂。
優化演算法:深度學習優化學習方法(一階、二階)
一階方法:隨機梯度下降(SGD)、動量(Momentum)、牛頓動量法(Nesterov動量)、AdaGrad(自適應梯度)、RMSProp(均方差傳播)、Adam、Nadam。
二階方法:牛頓法、擬牛頓法、共軛梯度法(CG)、BFGS、L-BFGS。
自適應優化演算法有哪些?(Adagrad(累積梯度平方)、RMSProp(累積梯度平方的滑動平均)、Adam(帶動量的RMSProp,即同時使用梯度的一、二階矩))。
梯度下降陷入局部最優有什麼解決辦法?可以用BGD、SGD、MBGD、momentum,RMSprop,Adam等方法來避免陷入局部最優。

㈨ 找出以下函數的一階偏導數和二階偏導數

解(1). f(x,y)=x^2-6xy+2y^2+10x+2y,一階偏導為:fx=2x-6y+10,fy=-6x+4y+2

二階偏導:fxy=-6

(3)f(x,y)=ln(x^2+y),一階偏導:fx=2x/(x^2+y),fy=1/(x^2+y)

二階偏導:fxy=-2x/(x^2+y)^2

㈩ 梯度下降法是什麼

梯度下降法(英語:Gradient descent)是一個一階最優化演算法,通常也稱為最陡下降法,但是不該與近似積分的最陡下降法(英語:Method of steepest descent)混淆。

要使用梯度下降法找到一個函數的局部極小值,必須向函數上當前點對應梯度(或者是近似梯度)的反方向的規定步長距離點進行迭代搜索。

如果相反地向梯度正方向迭代進行搜索,則會接近函數的局部極大值點;這個過程則被稱為梯度上升法。

梯度下降演算法使用當前位置的梯度迭代計算下一個點,然後對其進行縮放(按學習率)並從當前位置減去獲得的值(邁出一步)。它減去該值,因為我們想要最小化函數(最大化它會增加)。

缺點

梯度下降法的缺點包括:

1、靠近局部極小值時速度減慢。

2、直線搜索可能會產生一些問題。

3、可能會「之字型」地下降。

閱讀全文

與一階和二階梯度優化方法怎麼求相關的資料

熱點內容
故事啟發的教學方法 瀏覽:574
都有哪些種植的方法 瀏覽:549
企業分析法是選股的方法嗎 瀏覽:110
Wto分析方法內容 瀏覽:745
圖解題的方法和步驟 瀏覽:404
破壁孢子粉的鑒別方法 瀏覽:254
腘伸肌鍛煉方法 瀏覽:391
嬰兒拉肚子的鑒別方法 瀏覽:260
如何培養正氣的方法 瀏覽:564
oppo的ip地址在哪裡設置方法 瀏覽:882
思維方法特點是什麼 瀏覽:9
簡單萬用表使用方法完整視頻教程 瀏覽:863
兒童痣治療方法 瀏覽:489
研究方法調查問卷教學 瀏覽:399
fema安全分析方法 瀏覽:306
孩子快速入睡的方法 瀏覽:799
搜派風水機使用方法 瀏覽:696
豬肉價格下跌的解決方法 瀏覽:938
泉州學唱歌技巧和發聲方法 瀏覽:966
神經源性膀胱工傷治療方法 瀏覽:969