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

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

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

什么是病態(tài)曲率

新機(jī)器視覺 ? 來源:新機(jī)器視覺 ? 作者:新機(jī)器視覺 ? 2022-10-10 15:20 ? 次閱讀

在這篇文章中,我們討論另外一個困擾神經(jīng)網(wǎng)絡(luò)訓(xùn)練的問題,病態(tài)曲率。

雖然局部極小值和鞍點(diǎn)會阻礙我們的訓(xùn)練,但病態(tài)曲率會減慢訓(xùn)練的速度,以至于從事機(jī)器學(xué)習(xí)的人可能會認(rèn)為搜索已經(jīng)收斂到一個次優(yōu)的極小值。讓我們深入了解什么是病態(tài)曲率。

病態(tài)曲率

考慮以下?lián)p失曲線圖。

ebf6f3f6-485a-11ed-a3b6-dac502259ad0.jpg

**病態(tài)曲率**

如你所知,我們在進(jìn)入一個以藍(lán)色為標(biāo)志的像溝一樣的區(qū)域之前是隨機(jī)的。這些顏色實(shí)際上代表了在特定點(diǎn)上的損失函數(shù)的值,紅色代表最高的值,藍(lán)色代表最低的值。

我們想要下降到最低點(diǎn),因此,需要穿過峽谷。這個區(qū)域就是所謂的病態(tài)曲率。為了了解為何將其稱為病態(tài)曲率,讓我們再深入研究。放大了看,病態(tài)曲率就像這樣...

ec14c0f2-485a-11ed-a3b6-dac502259ad0.jpg

**病態(tài)曲率**

要知道這里發(fā)生的事情并不難。梯度下降沿著峽谷的山脊反彈,向最小的方向移動的速度非常慢。這是因為山脊的曲線在 W1 方向上彎曲的更陡。

考慮山脊表面的 A 點(diǎn)。我們看到,梯度在這點(diǎn)可以分解為兩個分量,一個沿著 W1 方向,另外一個沿著 W2 方向。如果 f 顯著下降的唯一方向是低曲率的,那么優(yōu)化可能會變得太慢而不切實(shí)際,甚至看起來完全停止,造成局部最小值的假象。

ec216a8c-485a-11ed-a3b6-dac502259ad0.jpg

正常情況下,我們使用一個較慢的學(xué)習(xí)率來解決這種山脊間反彈的問題,正如上一篇關(guān)于梯度下降的文章所述。然而,這卻產(chǎn)生了麻煩。

當(dāng)我們接近最小值時,慢下來是有意義的,我們想要收斂于它。但是考慮一下梯度下降進(jìn)入病態(tài)曲率的區(qū)域,以及到最小值的絕對距離。如果我們使用較慢的學(xué)習(xí)率,可能需要花費(fèi)更多的時間才能到達(dá)極小值點(diǎn)。事實(shí)上,有研究論文報道過使用足夠小的學(xué)習(xí)率來阻值山脊間的反彈可能導(dǎo)致參與者以為損失根本沒有改善,從而放棄訓(xùn)練。

如果 f 顯著下降的唯一方向是低曲率的,那么優(yōu)化可能會變得太慢而不切實(shí)際,甚至看起來完全停止,造成局部最小值的假象。

也許我們想要的是能讓我們慢慢進(jìn)入病態(tài)曲率底部的平坦區(qū)域,然后在最小值的方向上加速。二階導(dǎo)數(shù)可以幫助我們做到這一點(diǎn)。

牛頓法

梯度下降是一階優(yōu)化方法。它只考慮損失函數(shù)的一階導(dǎo)數(shù),而不考慮更高階的導(dǎo)數(shù)。這基本上意味著它不知道損失函數(shù)的曲率。它只能說明損失是否下降以及下降的速度,而不能區(qū)分曲線是平坦的,向上的,還是向下的。

ec2ea6a2-485a-11ed-a3b6-dac502259ad0.jpg

之所以會發(fā)生這種現(xiàn)象,是因為梯度下降只關(guān)心梯度,就好像上圖中紅色的點(diǎn),三個曲線在這一點(diǎn)上的梯度是相同的。如何解決?使用二階導(dǎo)數(shù),或者考慮梯度變化的速率。

一個非常流行的可以使用二階導(dǎo)數(shù)的技術(shù),可以解決我們的問題,這個方法稱為牛頓法。如果表面變得不那么陡峭,那么學(xué)習(xí)步驟就會減少。

牛頓法可以提供一個理想的步長,在梯度方向上移動。由于我們現(xiàn)在有了關(guān)于損失表面曲率的信息,所以可以選擇步長,而不是用病態(tài)曲率來超過該區(qū)域的極限。

牛頓法通過計算 Hessian 矩陣來實(shí)現(xiàn),Hessian 矩陣是損失函數(shù)的二階導(dǎo)數(shù)組成的權(quán)值組合。我所說的權(quán)值組合,如下所示。

ec45a7da-485a-11ed-a3b6-dac502259ad0.jpg

Hessian 矩陣在一個大矩陣中計算所有這些梯度。

ec524d64-485a-11ed-a3b6-dac502259ad0.jpg

Hessian 矩陣給出了一個點(diǎn)的損失曲面曲率的估計。一個損失的表面可以有一個正曲率,這意味著當(dāng)我們移動時,表面會迅速變得不那么陡峭。如果我們有一個負(fù)曲率,這意味著當(dāng)我們移動時,曲面變得越來越陡。

ec664fe4-485a-11ed-a3b6-dac502259ad0.jpg

注意,如果這一步是負(fù)的,那就意味著我們可以使用任意的步驟。換句話說,我們可以切換回原來的算法。這對應(yīng)于下面的情況,梯度變得越來越陡。

ec762acc-485a-11ed-a3b6-dac502259ad0.jpg

然而,如果梯度變得不那么陡峭,我們可能會走向一個處于病態(tài)曲率底部的區(qū)域。在這里,牛頓法給了我們一個修正的學(xué)習(xí)步驟,正如你所看到的,它與曲率成反比,或者曲面變得越來越小

如果表面變得不那么陡峭,那么學(xué)習(xí)步驟就會減少。

為什么我們很少使用牛頓法? 看到公式中的 Hessian 矩陣了嗎?Hessian 矩陣需要計算損失函數(shù)對所有權(quán)值組合的梯度。在組合已知的情況下,要求的值的數(shù)量約是神經(jīng)網(wǎng)絡(luò)中權(quán)值數(shù)量的平方。

對于現(xiàn)代的網(wǎng)絡(luò)來說,通常都含有數(shù)十億個參數(shù),使用高階的優(yōu)化方法很難計算 10 億的平方數(shù)量級的梯度。

二階優(yōu)化是關(guān)于梯度本身如何變化的信息。雖然我們不能精確的計算它,但是我們可以遵循啟發(fā)式方式,以指導(dǎo)我們根據(jù)之前的梯度進(jìn)行優(yōu)化。

Momentum

SDG 結(jié)合使用的一種常用方法叫做Momentum。Momentum 不僅會使用當(dāng)前梯度,還會積累之前的梯度以確定走向。梯度下降方程修改如下。

ec8c0b94-485a-11ed-a3b6-dac502259ad0.jpg

第一個式子有兩項。第一項是上一次迭代的梯度,乘上一個被稱為「Momentum 系數(shù)」的值,可以理解為取上次梯度的比例。

ec98df4a-485a-11ed-a3b6-dac502259ad0.jpg

我們設(shè) v 的初始為 0,動量系數(shù)為 0.9,那么迭代過程如下:

ecb23b84-485a-11ed-a3b6-dac502259ad0.jpg

我們可以看到之前的梯度會一直存在后面的迭代過程中,只是越靠前的梯度其權(quán)重越小。(說的數(shù)學(xué)一點(diǎn),我們?nèi)〉氖沁@些梯度步長的指數(shù)平均)。

這對我們的例子有什么幫助呢?觀察下圖,注意到大部分的梯度更新呈鋸齒狀。我們也注意到,每一步的梯度更新方向可以被進(jìn)一步分解為 w1 和 w2 分量。如果我們單獨(dú)的將這些向量求和,沿 w1 方向的的分量將抵消,沿 w2 方向的分量將得到加強(qiáng)。

ecc5a2dc-485a-11ed-a3b6-dac502259ad0.jpg

對于權(quán)值更新來說,將沿著 w2 方向進(jìn)行,因為 w1 方向已抵消。這就可以幫助我們快速朝著極小值方向更新。所以,動量也被認(rèn)為是一種抑制迭代過程中鋸齒下降問題的技術(shù)。

這種方法還可以提高收斂速度,但如果超過極小值,可能需要使用模擬退化算法

我們通常初始化動量為 0.5,并且在一定循環(huán)次數(shù)后逐漸退火到 0.9。

RMSProp

RMSProp 或均方根反向傳播算法有著有趣的歷史。它是由傳奇人物Geoffrey Hinton提出的,當(dāng)時只是在課堂上是隨意提出的一個想法。

RMSProp 算法也旨在抑制梯度的鋸齒下降,但與動量相比, RMSProp 不需要手動配置學(xué)習(xí)率超參數(shù),由算法自動完成。更重要的是,RMSProp 可以為每個參數(shù)選擇不同的學(xué)習(xí)率。

在 RMSprop 算法中,每次迭代都根據(jù)下面的公式完成。它是對每個參數(shù)單獨(dú)迭代。

ece172be-485a-11ed-a3b6-dac502259ad0.jpg

讓我們來看看上面的方程都在做什么。

在第一個方程中,我們計算一個梯度平方的指數(shù)平均值。由于我們需要針對每個梯度分量分別執(zhí)行平方,所以此處的梯度向量 Gt 對應(yīng)的是正在更新的參數(shù)方向的梯度各個方向的投影分量。

為此,我們將上一次更新的超參數(shù)乘希臘字母 nu。然后將當(dāng)前的梯度平方乘(1-nu)。最后我們將他們加到一起得到這一時刻的指數(shù)平均。

我們之所以使用指數(shù)平均是因為在 momentum 例子中看到的那樣,它可以使得間隔和權(quán)重成正比例變化。實(shí)際上使用「指數(shù)」一詞是因為前面項的權(quán)重呈指數(shù)級下降(最近的項權(quán)重是 ρ,次近的 ρ 方,然后是 ρ 立方,以此類推)。

注意我們表示病態(tài)曲率的圖,梯度沿 w1 方向的分量比沿 w2 方向的分量大的多。我們以平方的方式將 w1 和 w2 疊加,w1 不會發(fā)生抵消,w2 在指數(shù)平均后會更小。

第二個方程定義了步長,我們沿負(fù)梯度方向移動,但是步長受到指數(shù)平均值的影響。我們設(shè)置了一個初始學(xué)習(xí)率 eta,用它除指數(shù)平均值。在我們的例子中,因為 w1 平均后比 w2 大很多,所以 w1 的迭代步長就比 w2 要小很多。因此這將避免我們在山脊之間跳躍而朝著正確的方向移動。

第三個方程是更新操作,超參數(shù) p 通常選為 0.9,但是你可能需要調(diào)整它。方程 2 中的 epsilon 是為了防止被 0 除,通常取 1e-10。

還要注意的是,RMSProp 隱含的執(zhí)行模擬退火,假設(shè)我們正朝著極小值前進(jìn)并且我們想要放慢速度避免越過極小值。當(dāng)步長很大時 RMSProp 將自動減小梯度更新的步長(大步長容易越過極小值點(diǎn))。

Adam

到目前為止,我們已經(jīng)對比了 RMSProp 和 Momentum 兩種方法。盡管 Momentum 加速了我們對極小值方向的搜索,但 RMSProp 阻礙了我們在振蕩方向上的搜索。

Adam 或 Adaptive Moment Optimization 算法將 Momentum 和 RMSProp 兩種算法結(jié)合了起來。這里是迭代方程。

ecfad5a6-485a-11ed-a3b6-dac502259ad0.jpg

我們計算了每個梯度分量的指數(shù)平均和梯度平方指數(shù)平均(方程 1、方程 2)。為了確定迭代步長我們在方程 3 中用梯度的指數(shù)平均乘學(xué)習(xí)率(如 Momentum 的情況)并除以根號下的平方指數(shù)平均(如 Momentum 的情況),然后方程 4 執(zhí)行更新步驟。

超參數(shù) beta1 一般取 0.9 左右,beta_2 取 0.99。Epsilon 一般取1e-10。

結(jié)論

在這篇文章中,我們介紹了 3 種基于梯度下降法來解決病態(tài)曲率同時加快搜索速度的方法。這些方法通常稱為「自適應(yīng)方法」,因為學(xué)習(xí)步驟會根據(jù)等高線拓?fù)溥M(jìn)行調(diào)整。

在上面的三種方法中,盡管 Adam 算法在論文中被認(rèn)為是最有前景的算法,但是 Momentum 方法貌似更主流一些。實(shí)踐結(jié)果表明,在給定損失函數(shù)的情況下,三種算法都能收斂到不同的局部最優(yōu)極小值。但是用帶 Momentum 的 SGD 算法比 Adam 算法找到的極小值更加平坦,而自適應(yīng)方法往往會收斂到更加尖銳的極小值點(diǎn)。平坦的極小值通常好于尖銳的極小值。

ed08cada-485a-11ed-a3b6-dac502259ad0.jpg

盡管自適應(yīng)算法有助于我們在復(fù)雜的損失函數(shù)上找到極小值點(diǎn),但這還不夠,特別是在當(dāng)前網(wǎng)絡(luò)越來越來越深的背景下。除了研究更好的優(yōu)化方法之外,還有一些研究致力于構(gòu)建產(chǎn)生更平滑損失函數(shù)的網(wǎng)絡(luò)架構(gòu)。Batch-Normalization 和殘差連接是其中的解決方法,我們也會盡快在博客上發(fā)布有關(guān)的詳細(xì)介紹。

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

原文標(biāo)題:深度學(xué)習(xí)優(yōu)化入門:Momentum、RMSProp 和 Adam

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    深入淺出地介紹了牛頓法、動量法、RMSProp、Adam優(yōu)化算法

    通常情況下,我們使用低學(xué)習(xí)率來應(yīng)對這樣的反復(fù)振蕩,但在病態(tài)曲率區(qū)域使用低學(xué)習(xí)率,可能要花很多時間才能達(dá)到最小值處。事實(shí)上,有論文報告,防止反復(fù)振蕩的足夠小的學(xué)習(xí)率,也許會導(dǎo)致從業(yè)者相信損失完全沒有改善,干脆放棄訓(xùn)練。
    的頭像 發(fā)表于 10-08 09:15 ?3.2w次閱讀

    智能車曲率計算(1).

    本帖最后由 eehome 于 2013-1-5 10:03 編輯 智能車曲率計算(1).
    發(fā)表于 08-13 18:54

    飛思卡爾智能車賽道曲率計算

    飛思卡爾智能車賽道曲率計算
    發(fā)表于 06-04 10:46

    請問怎么用labview求得曲線的曲率

    有哪位大佬知道怎么用labview求得曲線的曲率嗎,也可以說怎么去檢測曲線突變?
    發(fā)表于 03-08 17:48

    曲率的計算公式

    曲率的計算公式為: 來源:為了平衡曲線的彎曲程度
    發(fā)表于 08-13 02:05 ?3.5w次閱讀
    <b class='flag-5'>曲率</b>的計算公式

    飛思卡爾曲率計算教程

    曾看到智能車制作論壇里很多人詢問曲率的計算,今天在整理一個PPT 的時候,剛好又用到了曲率計算,我就解釋下東北大學(xué)和上海大學(xué)攝像頭組計算曲率的方法(請參看第二屆東北大學(xué)
    發(fā)表于 08-31 16:11 ?0次下載
    飛思卡爾<b class='flag-5'>曲率</b>計算教程

    兩點(diǎn)算法求智能車賽道曲率

    兩點(diǎn)算法求智能車賽道曲率。
    發(fā)表于 10-30 17:46 ?7次下載

    基于曲率補(bǔ)償?shù)碾娏骰鶞?zhǔn)源的設(shè)計

    一種曲率補(bǔ)償電流值準(zhǔn)源的設(shè)計
    發(fā)表于 05-03 14:55 ?4次下載

    曲率估計及在曲面檢測中的應(yīng)用

    曲線或曲面的曲率信息是計算機(jī)圖形學(xué)、計算機(jī)動畫、流體仿真、模式匹配、形狀分析、幾何建模、紋理識別、人臉識別、散亂點(diǎn)云數(shù)據(jù)處理、虹膜識別等應(yīng)用領(lǐng)域中經(jīng)常利用的重要信息之一,在與曲線或曲面的幾何特性
    發(fā)表于 12-11 16:59 ?1次下載
    <b class='flag-5'>曲率</b>估計及在曲面檢測中的應(yīng)用

    基于平均曲率的布料模擬彎曲模型

    通過對布料特性及內(nèi)部結(jié)構(gòu)的研究與分析,針對布料的彎曲特性提出一種非線性彎曲近似模型。首先對實(shí)際布料的彎曲屬性值進(jìn)行測量,獲得布料的彎曲屬性參數(shù);然后,在此基礎(chǔ)上建立基于平均曲率的彎曲近似模型來表示
    發(fā)表于 12-21 17:08 ?0次下載

    電力系統(tǒng)病態(tài)潮流求解

    使用常規(guī)方法可能會不收斂,成為病態(tài)潮流。病態(tài)潮流的出現(xiàn)主要有以下兩方面的原因: 1)潮流計算的解遠(yuǎn)離平啟動點(diǎn),使得在平啟動下使用常規(guī)潮流計算方法無法求出。 2)在系統(tǒng)重負(fù)荷、接近功率極限點(diǎn)時,系統(tǒng)的雅克比矩陣,出現(xiàn)奇
    發(fā)表于 02-08 16:00 ?3次下載

    屏幕曲率是什么? 4000r黃金曲率是多少

    除了成本價格的因素外,另外,曲率也不是越大越好,考慮到液晶顯示器的屏幕尺寸大小之后,以最佳視聽距離為半徑的圓的曲率,才是最符合用戶需求的曲率。
    發(fā)表于 09-04 15:09 ?1.5w次閱讀

    曲面電視4000的曲率和6600的曲率那個更有優(yōu)勢

    曲率是幾何體不平坦程度的一種衡量。在物理中,曲率通常通過法向加速度(向心加速度)來求,具體參見法向加速度。
    發(fā)表于 09-04 15:37 ?1470次閱讀

    病態(tài)建筑綜合癥如何利用物聯(lián)網(wǎng)來達(dá)到預(yù)防的目的

    利用物聯(lián)網(wǎng),建筑物管理人員可以防止工作人員或居住者成為病態(tài)建筑綜合癥的犧牲品。
    發(fā)表于 02-07 10:51 ?453次閱讀

    基于單位統(tǒng)計曲率特征匹配的紅外目標(biāo)檢測

    基于單位統(tǒng)計曲率特征匹配的紅外目標(biāo)檢測
    發(fā)表于 06-19 16:20 ?7次下載