題:
為什麼牛頓方法沒有在機器學習中廣泛使用?
Fei Yang
2016-12-29 07:00:02 UTC
view on stackexchange narkive permalink

這是困擾我一段時間的事情,我在網上找不到滿意的答案,所以去:

在回顧了一組關於凸優化的演講之後,牛頓的方法似乎比梯度下降算法更優越,可以找到全局最優解,因為牛頓的方法可以為其求解提供保證,它是仿射不變的,而且最重要的是它收斂的步驟要少得多。為什麼像牛頓方法這樣的二階優化算法在機器學習問題中沒有像隨機梯度下降那樣廣泛使用?

對於神經網絡,http://www.deeplearningbook.org/章節“ 8.6近似二階方法”給出了很好的概述。總結“除了目標功能的某些特徵所帶來的挑戰, 例如鞍點,牛頓方法在訓練大型神經網絡中的應用受到其所施加的巨大計算負擔的限制。”存在嘗試獲取某些方法的替代方法 牛頓方法的優勢雖然避免了計算障礙,但它們都有自己的問題。
請參閱此相關問題和評論,http://stats.stackexchange.com/questions/232305/is-that-true-new-tontons-method-quasi-newton-method-are-not-wide-widely-used-in-deep-n
請注意,除了“深度學習”之外,其他評論在機器學習中具有更廣泛的適用性。但是,儘管所有ML問題都可能是“大數據”,但並非所有ML問題都必然是“大特徵”(即,許多參數需要調整),儘管深度學習總是如此。
值得注意的是,在深度學習之外的機器學習中,L-BFGS(粗略地說是近似牛頓法)是一種相當普遍的優化算法。
牛頓的方法假設是凸性的,現代ML問題(中性網絡)不可能在凸性附近出現,儘管公認的是那裡有一個開放研究領域。因此,牛頓法的估計量可能不如線性,但在計算點附近卻很糟糕。平方增加的計算您可能會獲得很少的收益。就是說,最近在伯克利舉行的一次會議上,一位主持人繼續展示使用二階方法的進展,因此無論如何它還沒有死。
@davidparks我想大多數人會說nns有很多局部最小值(即很多凸子區域),因此二階應該比梯度下降更快地使您達到局部最小值。
@seanv507您對局部極小值是絕對正確的,但是神經網絡的解空間本身是非常不凸的。在點$ x $處的凸近似值不會使您達到最近的局部最小值,假設整個解空間是凸的,它將為您提供全局最小值。當您離開計算點時,該假設可能很快就會失效,這需要適度的步長和許多重新計算。我承認,凸近似可能允許步長大於線性步長,但可能不會太大以至於不能證明二次成本。
僅供參考,一個數據點可能會有所改變:最近的Scikit Learn漸變增強回歸樹的請求(LightGBM-esq變體)使用牛頓方法。https://github.com/scikit-learn/scikit-learn/pull/12807
另一個相關問題:https://stats.stackexchange.com/questions/394083/why-second-order-sgd-convergence-methods-are-unpopular-for-deep-learning
九 答案:
jwimberley
2016-12-29 07:19:24 UTC
view on stackexchange narkive permalink

梯度下降使用其導數知識最大化函數。牛頓法,一種尋根算法,利用其二階導數的知識來最大化函數。當二階導數已知且易於計算時(在邏輯回歸中使用Newton-Raphson算法),可以更快。但是,二階導數的解析表達式通常很複雜或難以處理,需要大量的計算。用於計算二階導數的數值方法也需要大量計算-如果需要$ N $值來計算一階導數,則對於第二階導數需要$ N ^ 2 $。

值得一提的是[Gauss-Newton](基於)的方法可能更常見。這是牛頓對非線性最小二乘的一種特殊化。
我不會將高斯-牛頓稱為牛頓對非線性最小二乘的特化。我將其稱為非線性最小二乘的牛頓的混和近似,它使用更不精確的Hessian近似,擬合方程中的殘差越大,因此,論點離最優性越遠。
@MarkL.Stone公平的觀點,我試圖不去討論技術問題:)的確,高斯-牛頓風格的方法嘗試“偽造”只有二階信息的二階。就我個人而言,我從未使用過牛頓方法進行優化,僅使用了高斯-牛頓(或LM或類似的UKF)或DFO-SQP方法(例如[BOBYQA](https://en.wikipedia.org/wiki/BOBYQA))。我會說“最優性”是一個棘手的問題……對於ML問題,與工程設計優化問題相比,“本地Hessian”的可靠性/信息性可能令人懷疑。也許非本地的DFO-SQP是“隨機牛頓”?(例如“在線”)
再次考慮,DFO-SQP方法傾向於在*參數*空間中是非局部的,而不是數據批量。[UKF](https://en.wikipedia.org/wiki/Kalman_filter#Unscented_Kalman_filter)的味道可能與“隨機牛頓”最接近,因為它在線上帶有有限的內存...但是它實際上假定了正數-確定的Hessian(即高斯近似值)。
實際上,這是一個令人誤解的原因,因為像CG這樣的二階方法不需要計算粗麻布。CG的k次迭代將僅花費kN。CG理論上僅在k = N時才匹配牛頓是正確的,但實際上您不需要那麼多迭代。
-1
-1
[這篇來自Caplan(2011)的論文](http://web.mit.edu/pcaplan/www/SecondDerivative2012.pdf)似乎解釋了一種在N個運算中代替N ^ 2計算二階導數(雅可比矩陣)的方法。
Nick Alger
2016-12-30 18:57:58 UTC
view on stackexchange narkive permalink

更多人應該在機器學習中使用牛頓方法*。我是說這是一個具有數值優化背景的人,在過去的幾年中涉足機器學習。

如果正確使用牛頓法,此處(甚至在文獻中)答案的弊端就不成問題。此外,確實很重要的缺點還可以通過不那麼明顯的機制來減緩相同或更多數量的梯度下降。

  • 在Wolfe條件下使用線搜索或使用或信任區域可防止收斂到鞍點。適當的梯度下降實現也應該這樣做。 Cam.Davidson.Pilon的答案中引用的論文指出了存在鞍點時“牛頓法”的問題,但他們主張的解決方法也是牛頓法。

  • 使用牛頓法不需要構造完整的(密集的)Hessian。您可以使用僅使用矩陣向量乘積的迭代方法(例如共軛梯度之類的Krylov方法)將Hessian的逆應用於向量。例如,請參閱CG-Steihaug信任區域方法。

  • 您可以通過求解兩個與形式已經與計算梯度的伴隨方程相同形式的高階伴隨方程,來有效地計算Hessian矩陣向量乘積(例如,神經網絡中兩個反向傳播步驟的工作培訓)。

  • 病態條件減慢了迭代線性求解器的收斂速度,但同時也使梯度下降速度變慢了,甚至變差了。使用牛頓法而不是梯度下降法將難度從非線性優化階段(可以做很多事情來改善這種情況)轉移到線性代數階段(在此階段,我們可以使用數字線性代數預處理技術的整個庫來攻擊它)。

  • 此外,計算從“許多便宜的步驟”轉變為“一些昂貴的步驟”,從而為子步驟(線性代數)級別的並行化提供了更多機會。

有關這些概念的背景信息,我推薦Nocedal和Wright撰寫的書“數值優化”

*當然,牛頓的方法不能幫助您使用L1或其他類似的壓縮感測/稀疏度提升罰函數,因為它們缺乏所需的平滑度。

我認為我們彼此之間是暴力協議,而不是其他所有人。
告訴我您對本文的看法http://link.springer.com/article/10.1007/s11081-016-9323-4?線搜索牛頓法適用於非常不凸的問題,無需調整Hessian或沿負曲率方向搜索。難怪他認為準牛頓(可能是BFGS)比牛頓更堅固。作者聲稱他使用了牛頓法的簡單版本,以便歐幾里得牛頓法和黎曼牛頓法之間的比擬比較。(下一條評論續)
這就像通過比較26歲的吸毒成癮高中輟學生的數學能力,而不是比較來自每個國家最好的學校的數學研究生的頂尖梯隊來比較英國或美國是否會培養出更好的研究數學家。沒有人對文件進行簽名,蓋章和交付,我的意思是沒有人現在要更改或撤回它。不可侵犯的。
@MarkL.Stone似乎這裡發生了對話,在我離開時被刪除了。無論如何,我認為您是對的,我們彼此同意,沒有其他人同意。我想這是根據我們與其他人的背景而得出的。如您所料,我對鏈接文件的看法不多。另一方面,我確實認為,黎曼流形*牛頓法*是一種在非常困難的問題上有很大希望的技術,在牛頓搜索方向上繪製測地線。
您能否提供偶然使用的更多技術術語的鏈接?(Wolfe條件,CG-Steihaug信賴域方法,共軛梯度,伴隨方程等)。看來您了解很多,但我聽不懂,但願我能。
您將如何應對大型培訓課程?如果您有一百萬個訓練樣本,然後僅評估當前的優化目標就需要測試一百萬個樣本。並且您需要在行搜索期間多次執行該操作。因此,當您完成1牛頓步時,隨機梯度下降將完成數百萬次更新。
@nikie牛頓法是隨機的。參見例如[這些幻燈片](http://www.di.ens.fr/~aspremon/Houches/talks/Goldfarb.pdf)進行了簡要概述。(不過,這並不是我所了解的。)
Nick和@MarkL.Stone:您實際上是在談論[此方法](http://www.cs.toronto.edu/~jmartens/docs/Deep_HessianFree.pdf)嗎?這是在深度學習中短暫流行的一種方法,尤其是對於遞歸網絡,但是自那以後我就不再受歡迎,因為它在經驗上並沒有比自適應梯度法更好。如果他們只是做錯了什麼,而您修復了所有問題並顯示出它通常優於當前的標準SGD變體Adam,您可能會產生重大影響:Adam論文在兩年內被引用了1345次。
@ProQ最好的介紹就是“數值優化” Nocedal和Wright。nikie:隨機梯度下降是可以的,但是迭代僅在統計意義上收斂,而不是高容忍度,因此它正在將蘋果與橘子進行比較。還有一些方法可以使牛頓方法隨機化。這是在地震成像中常規完成的,它具有類似的高數據問題。Dougal:這基本上就是我在說的,但是有兩個主要疏忽-他們以有限的差異而不是伴隨關係來計算Hessian動作,並且不對CG使用前置條件。
@NickAlger有趣的帖子!很高興看到這樣的反對意見。我沒有解決的一個常見抱怨是隨機梯度(和Hessian矢量近似)在一些現代ML問題上不必要使用,給二階方法帶來了問題。[Goodfellow的優化章節](http://www.deeplearningbook.org/)聲稱由於黑森州的敏感性,您需要獲取更多樣本,[Adam](https://arxiv.org/abs/1412.6980)論文也提到了前言中同樣是副手。
我真的很想看到Tensorflow(提示)中更多地支持這些方法。L-BFGS [準牛頓]僅可通過scipy優化器界面使用。但是[從經驗上講]在我嘗試過的每個問題的收斂時間和準確性上,它都擊敗了ADAM優化器(可以說是目前最好的梯度下降優化器)(即使每個步驟都比較昂貴)。
如果擬將準牛頓法設計為在微型批次上運行(而不需要整個數據集),我認為這將激發基準(和一般ML)精度的另一飛躍,類似於批處理規範和資源網所做的。
總是要問:使用其中一些機制(信任區域,更智能的矩陣矢量計算)的擬牛頓法有哪些好的開源實現?L-BFGS使用哪個?
“我推薦Nocedal和Wright撰寫的書“數值優化”。啊,具有諷刺意味的是,鑑於[Nocedal建議使用SGD](https://arxiv.org/abs/1606.04838),而不是針對大型ML的類似於傳統牛頓的方法!
@CliffAB Nocedal還是最近一篇論文的合著者,該論文的確提倡牛頓式的機器學習方法:Bollapragada,Raghu,Richard H. Byrd和Jorge Nocedal。“精確和不精確的二次抽樣牛頓方法進行優化。”IMA數值分析雜誌39.2(2019):545-578。
有趣。但是,該論文實際上並不主張採用類似SGD的方法。據我了解,目前這還只是一個懸而未決的問題。通常,SGD方法在這一點上已經非常完善,可靠且快速,而據我所知,隨機二階方法仍在研究中。對於這些問題,非隨機方法幾乎已死。
Aksakal
2017-09-06 19:50:06 UTC
view on stackexchange narkive permalink

兩個原因的組合:

    牛頓法吸引到鞍點;
  • 鞍點在機器學習或實際上是任何多變量優化中很常見。

查看函數$$ f = x ^ 2-y ^ 2 $$ enter image description here

如果應用多元牛頓法,則會得到以下結果。 $$ \ mathbf {x} _ {n + 1} = \ mathbf {x} _n-[\ mathbf {H} f(\ mathbf {x} _n)] ^ {-1} \ nabla f(\ mathbf {x } _n)$$

讓我們得到黑森州: $$ \ mathbf {H} = \ begin {bmatrix} \ dfrac {\ partial ^ 2 f} {\ partial x_1 ^ 2} & \ dfrac {\ partial ^ 2 f} {\ partial x_1 \,\ partial x_2} & \ cdots & \ dfrac {\ partial ^ 2 f} { \ partial x_1 \,\ partial x_n} \\ [2.2ex] \ dfrac {\ partial ^ 2 f} {\ partial x_2 \,\ partial x_1} & \ dfrac {\ partial ^ 2 f} {\ partial x_2 ^ 2} & \ cdots & \ dfrac {\ partial ^ 2 f} { \ partial x_2 \,\ partial x_n} \\ [2.2ex] \ vdots & \ vdots & \ ddots & \ vdots \\ [2.2ex] \ dfrac {\ partial ^ 2 f} {\ partial x_n \,\ partial x_1} & \ dfrac {\ partial ^ 2 f} {\ partial x_n \,\ partial x_2} & \ cdots & \ dfrac {\ partial ^ 2 f} {\ partial x_n ^ 2} \ end {bmatrix}。$$

$$ \ mathbf {H} = \ begin {bmatrix} 2 & 0 \\ [2.2ex] 0 & -2 \ end {bmatrix} $$

將其反轉: $$ [\ mathbf {H} f] ^ {-1} = \ begin {bmatrix} 1/2 & 0 \\ [2.2ex] 0 & -1/2 \ end {bmatrix} $$

獲取漸變: $$ \ nabla f = \ begin {bmatrix} 2x \\ [2.2ex] -2年 \ end {bmatrix} $$

獲得最終方程: $$ \ mathbf {\ begin {bmatrix} x \\ [2.2ex] ÿ \ end {bmatrix}} _ {n + 1} = \ begin {bmatrix} x \\ [2.2ex] ÿ \ end {bmatrix} _n -\開始{bmatrix} 1/2 & 0 \\ [2.2ex] 0 & -1/2 \ end {bmatrix} \ begin {bmatrix} 2x_n \\ [2.2ex] -2y_n \ end {bmatrix} = \ mathbf {\ begin {bmatrix} x \\ [2.2ex] ÿ \ end {bmatrix}} _ n-\ begin {bmatrix} x \\ [2.2ex] ÿ \ end {bmatrix} _n = \ begin {bmatrix} 0 \\ [2.2ex] 0 \ end {bmatrix} $$

因此,您將看到牛頓法如何將您引導到$ x = 0,y = 0 $的鞍點。

相反,梯度下降法不會導致鞍點。在鞍點處,漸變為零,但是從上面的漸變中可以看到,如果稍作修改就會使優化工作無效-y變量上的漸變為負。

多虧了您,我才真正理解了該方法從A到Z的工作原理,因此非常感謝您提供的清晰示例!
這裡最喜歡的地方是什麼?
Cam.Davidson.Pilon
2016-12-29 10:38:43 UTC
view on stackexchange narkive permalink

我最近自己學到了這一點-問題是牛頓方法想要收斂到的高維空間中鞍點的擴散。請參閱本文:識別和解決以下問題中的鞍點問題 高維非凸優化

實際上,鞍點數與局部最小值之比增加 與維數N成指數關係。

雖然梯度下降動力學被排斥在外 通過遵循負曲率方向降低誤差的鞍點,...牛頓法不能適當地處理鞍點;如 如下所述,在馬頓動力學下,鞍點變得更具吸引力。

您能為為什麼添加一些解釋嗎?理論上,牛頓法對每個特徵向量執行加權梯度下降,並具有“最佳”權重。
那篇文章所說的“想要”收斂到鞍點的牛頓方法僅適用於牛頓方法的垃圾實現。
本文從特徵值和特徵向量的角度對參數進行了重新參數化,並以此來表明梯度下降從鞍點移開:它沿負e矢量的方向移向鞍點,但在負e矢量的方向上移開正向量,因此最終離開了鞍點。另一方面,牛頓沒有這樣的保證。
他們在本文中提倡的新算法不過是牛頓方法的一種。對於正曲率方向,基本上是牛頓法,對於負曲率方向,基本上是負牛頓法。
Elizabeth Santorella
2017-01-04 02:30:52 UTC
view on stackexchange narkive permalink

您問了兩個問題:為什麼沒有更多的人使用牛頓法,為什麼要使用那麼多 人們使用隨機梯度下降法嗎?這些問題有不同的答案,因為 有很多算法可以減輕牛頓方法的計算負擔 但通常比SGD更好。

首先:牛頓方法每次迭代花費很長時間,並且佔用大量內存。 正如jwimberley所指出的,牛頓方法需要計算二階導數$ H $, 這是$ O(N ^ 2)$,其中$ N $是在計算梯度時的要素數量, $ g $僅是$ O(N)$。但是下一步是$ H ^ {-1} g $,這是要計算的$ O(N ^ 3)$。 因此,在計算Hessian的成本很高時,將其求逆或求解最小二乘通常會更糟。 (如果您的功能稀疏,則漸近效果會更好,但其他方法也可以執行 更好,所以稀疏不會使牛頓相對更具吸引力。)

第二,許多方法不僅是牛頓下降法,而且比牛頓法更常用。 從某種意義上講,它們通常是牛頓方法的假裝 他們以較低的每步計算成本來近似牛頓步,但是 更多的迭代收斂。一些例子:

  • 由於反轉了黑森州的費用, BFGS之類的``擬牛頓''方法近似於 inverse Hessian, $ H ^ {-1} $,通過觀察梯度在過去的變化情況 幾個步驟。

  • BFGS仍然非常佔用內存 高尺寸設置,因為它需要存儲整個 $ O(N ^ 2)$近似逆黑森州。有限內存BFGS(L-BFGS)計算下一個 階躍方向為粗略的逆Hessian乘以梯度, 但這僅需要存儲最近的幾個漸變更新;它 沒有顯式存儲粗略的逆黑森州。

  • 何時 您根本不想處理近似二階導數, 梯度下降法很有吸引力,因為它僅使用一階 信息。梯度下降隱式逼近逆 粗麻布作為學習率乘以單位矩陣。一世, 就個人而言,很少使用梯度下降:L-BFGS同樣容易 實現,因為它只需要指定目標函數 和漸變;它比黑森近似逆更好 梯度下降;並且由於梯度下降需要調整 學習率。

  • 有時候您有很多 觀察(數據點),但您可以從中學習得差不多 較少的觀察結果。在這種情況下,您可以使用 循環通過的“批量方法”,例如隨機梯度下降 使用觀察的子集。

(+1)值得注意的是,就參數數量而言,L-BFGS的複雜度與梯度下降相同。BFGS並非如此。因此,並非僅使L-BFGS的有限內存部分具有吸引力。
Nat
2016-12-29 13:35:01 UTC
view on stackexchange narkive permalink

梯度下降方向的計算成本較低,並且在該方向上進行線搜索是向最佳方向發展的更可靠,穩定的來源。簡而言之,梯度下降相對可靠。

牛頓法相對昂貴,因為您需要在第一次迭代時計算Hessian。然後,在每個後續迭代中,您可以完全重新計算Hessian(如在牛頓方法中),或僅“更新”先前迭代的Hessian(在準牛頓方法中),這種方法便宜但不那麼可靠。

在行為特別完善的函數(尤其是二次函數完美的函數)的極端情況下,牛頓方法無疑是贏家。如果是完美的二次方,牛頓法將在一次迭代中收斂。

在功能非常差的極端情況下,梯度下降往往會勝出。它將選擇一個搜索方向,向下搜索該方向,並最終採取小而有效的步驟。相比之下,在這些情況下,牛頓法往往會失敗,特別是如果您嘗試使用準牛頓逼近。

在梯度下降和牛頓方法之間,有一些方法,例如Levenberg-Marquardt算法(LMA),儘管我看到名稱有些混淆。要點是,當事物變得混亂和混亂時,應使用更多的梯度下降信息搜索,然後在事物變得更加線性和可靠時,使用更多的牛頓法信息搜索。

男孩,您必須使用牛頓和擬牛頓的可怕實現。如果同時使用非正定性Hessian,則使用信任區域或沿負曲率方向進行線搜索。如果是這樣,則它們比最陡的下降(即帶有線搜索或信任區域的梯度下降)更可靠。簡而言之,梯度下降比可靠實施的擬牛頓法可靠性低得多,而準牛頓方法的可靠性不如牛頓法可靠。但是,每次迭代的計算時間和內存需求是另一回事。
我認為您的意思是完美的二次函數。也就是說,牛頓法在一次迭代中收斂了具有線性梯度的二次目標函數。
@MarkL.Stone:根據定義,梯度下降沿無限小的步長沿最佳方向進行。相比之下,牛頓的方法使用二階效果來投影零,並假設您將邁出更重要的一步,嘗試獲得更直接的路線。對於步長任意較小的行為非常差的函數,梯度下降可產生最佳搜索方向。如果您實現的牛頓方法為您提供了針對微小步驟的最佳搜索方向,則不是牛頓方法-根據定義,這是最陡峭的下降。
@ElizabethSantorella:是的,您是對的!我更新了答案。
@Chemical工程師在您的最後一句話中,您有一個非常奇怪的定義。在極限情況下,如果您限制算法以零長度為步長,則最陡的下降是為了獲得最佳效果而進行的多方平局。否則,不是。這是一種考慮最陡下降的方法,它是牛頓方法,它基於二次展開,不同之處在於,它不是使用二階項中的真實Hessian,而是使用近似值,即Hessian等於Identity矩陣。除非真實的Hessian = Identity,否則這會降低二次模型的保真度,並使基於該模型的任何非零步均變差
實施得當且得到保護的牛頓法相對於最陡峭的下降的優勢增加了函數的更原始,更惡劣的條件,更不凸的功能。如果要使行為最佳的二次函數最小化,則有一個$ 1/2 x ^ Tx $二次項,即Hessian = Identity矩陣,則最陡下降就可以了,並且與牛頓方法相同。
@MarkL.Stone:我不同意具有恆等矩陣的Hessian的最速下降的解釋。我的意思是,如果您使用了最陡的下降法來計算步距,那麼這是正確的**,在這種情況下,牛頓法顯然是優越的(成本除外)。但是,在無限小的步長的限制下,牛頓和最陡的下降方向在數值上會做出不同的選擇。如果要投影零,則牛頓法更好,而簡單的漸變是該點上最大變化的方向。
如果沒有使用諸如信任區域或行搜索之類的保障措施,那麼最速下降和牛頓法都是無用的。如今,沒有保障措施的最陡下降法通常被稱為梯度下降法,與名稱相反,即使對於凸目標函數也不必下降。
@MarkL.Stone:梯度下降意味著要進行線搜索,對嗎?由於梯度下降從根本上不提供步長(除非您使用牛頓方法計算步長,將黑森州解釋為同一性-但這不是最陡峭的下降,而是混蛋牛頓方法),因此線搜索是梯度下降的默認方法。或者,如果您選擇一個假定的步長,則實際上更多是一種模式搜索算法,這是另一種動物。
最陡峭的下降,梯度下降,無論您要叫什麼,都基於目標的二次模型(或更普遍地說,在非線性約束的情況下為拉格朗日模型),其中,Hessian近似為Identity矩陣。就是說,在尚未調整為正半定值的非正半定Hessian上使用不受保護的牛頓法是高階的不當行為。令人難以置信的是,有些垃圾甚至偶爾會在名義上享有盛譽的期刊上發表http://link.springer.com/article/10.1007/s11081-016-9323-4
我從未聽過您對最陡下降(或梯度下降;我也可以互換使用)的定義,老實說我不同意。最陡下降的概念基礎是,根據微積分,我們知道某個點最大變化的方向是該點的梯度。因此,我們沿該方向進行了一條線搜索,然後反復重复。要說這是牛頓的近似與Hessian身份表明我們還應該計算步長,這就是牛頓所做的。但這並沒有隨之而來。
我已經證明了如果您想考慮最陡峭的下降,那麼梯度下降就很棒,尤其是在功能不佳的功能上,這就是您的工作。把自己打昏。
馬克·斯通在這裡是正確的。連續牛頓路徑通常比連續梯度下降路徑更好,更直接。考慮沿著一個橢圓形的山峰走,一個橢圓形的方向非常陡峭,另一個橢圓形的方向非常寬。如果您進行梯度上升,您將首先沿最陡峭的方向走到大致“山脊”,然後以狗腿形沿著山脊走到山頂。在牛頓方向上步進時,您將從起點到峰值沿直線(在x-y平面上)行走。這個“山脊”問題是根本的問題,對於更高維度的坡度上升而言,問題變得更糟。
@MarkL.Stone您是否偶然知道為什麼像Levenberg-Marquardt這樣的方法(例如,在[此處]解釋(https://www.neuraldesigner.com/blog/5_algorithms_to_train_a_neural_network))不被更普遍地使用?是只是不熟悉更複雜的優化技術,還是存在一些技術劣勢?
-1
copper.hat
2016-12-30 07:46:14 UTC
view on stackexchange narkive permalink

對於大尺寸,Hessian通常存儲和求解成本很高 一個方向的$ Hd = g $可能會很昂貴。並行化也更加困難。

當接近解決方案時,或者如果Hessian是 緩慢變化,但需要一些技巧來解決缺乏收斂性和 缺乏確定性。

在這種情況下,通常會尋求改進,而不是精確的解決方案 牛頓或類似牛頓方法的額外成本是沒有道理的。

有多種方法可以改善上述情況,例如可變指標或 信任區域方法。

作為旁注,在許多問題中,關鍵問題是縮放和Hessian 提供了出色的縮放信息,儘管需要付費。如果可以近似於粗麻布,則通常可以大大提高性能。在某種程度上,牛頓的方法提供了“最佳”縮放比例,因為它是 仿射不變。

user292463
2020-07-27 14:48:41 UTC
view on stackexchange narkive permalink

僅提供一些評論:

  1. 一階方法在收斂和避免鞍點方面具有很好的理論保證,請參閱回溯GD和修改。
  2. 回溯GD可以在DNN中實現,並且性能非常好。
  3. 回溯GD可以提高學習率,當梯度較小時,可以與梯度大小成反比。當您收斂到退化的臨界點時,這非常方便。
  4. ol>

    參考:

    https://github.com/hank-nguyen/MBT-optimizer

    https://arxiv.org/abs/2007.03618(在這裡您還會發現一種啟發式的論點,按照Zeiler在其adadelta論文中的含義,回溯gd具有正確的單位)

    關於牛頓法:如前幾次評論所指出的那樣,通過正確的修改,您可以避免出現鞍點。這是一個嚴格的證明,如果粗麻佈單數,我們還提供了一種簡單的方法進行處理

    https://arxiv.org/abs/2006.01512

    Github鏈接的代碼:

    https://github.com/hphuongdhsp/Q-Newton-方法

    尚存的問題:實施成本,無法保證收斂。

    附錄:

    1. LMB提到的Caplan論文:我看了一眼。我認為該論文沒有提出任何可以在O(N)中計算Hessian的算法。它只是說您只能用N個“函數求值”來計算Hessian-我還不知道這到底是什麼意思-最終的複雜度仍然是O(N ^ 2)。它還進行了一些實驗,並說通常的牛頓法在這些實驗中比(L-)BFGS更好。

    2. (與上一個句子有關)。我應該將其添加為JPJ和伊麗莎白·桑托雷拉的註釋,但不能(沒有足夠的分數),因此請在此處寫:既然您提到了bfgs和l-bfgs,您可以為DNN的這些源代碼提供鏈接(例如,對於數據集MNIST,CIFAR10,CIFAR100)具有報告的實驗結果,因此人們可以與一階方法(gd的變體,包括回溯gd)進行比較,以了解它們在大規模生產中的表現如何?

    3. ol>

      UiO的Tuyen Truong

Jarek Duda
2019-04-23 13:35:17 UTC
view on stackexchange narkive permalink

將牛頓法用於SGD有很多困難,尤其是:

  • 它需要Hessian矩陣-如何估算它,例如從噪聲梯度中以合理的成本獲得足夠的精度?

  • 完整的黑森州成本太高-我們寧願需要一些限制,例如到一個子空間(哪個子空間?)

  • 它需要 $ H ^ {-1} $ span>,這種方法昂貴且對噪聲估計非常不穩定-可以在 $ \ lambda = 0 $ span>轉換為無窮大,

  • 牛頓方法直接以零梯度吸引到閉合點...在這里通常是鞍形。如何排斥他們呢?例如。 無鞍牛頓反轉負曲率方向,但需要控制特徵值的符號

  • 在線進行比較好-與其在一個點上進行大量計算,不如嘗試利用更多本地信息將其分成許多小步驟。

我們可以一步一步地從一階轉到二階,例如在動量法中僅添加3個平均值的更新,我們可以同時 MSE沿其方向擬合拋物線,以便更智能地選擇步長...在低維子空間中進行二階建模,我們仍然可以使用剩餘坐標同時進行梯度下降。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...