1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一文概覽神經(jīng)網(wǎng)絡(luò)優(yōu)化算法

        共 4681字,需瀏覽 10分鐘

         ·

        2022-12-30 21:54

        點(diǎn)擊上方小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        一、機(jī)器學(xué)習(xí)的優(yōu)化

        機(jī)器學(xué)習(xí)的優(yōu)化(目標(biāo)),簡(jiǎn)單來(lái)說(shuō)是:搜索模型的一組參數(shù) w,它能顯著地降低代價(jià)函數(shù) J(w),該代價(jià)函數(shù)通常包括整個(gè)訓(xùn)練集上的性能評(píng)估(經(jīng)驗(yàn)風(fēng)險(xiǎn))和額外的正則化(結(jié)構(gòu)風(fēng)險(xiǎn))。與傳統(tǒng)優(yōu)化不同,它不是簡(jiǎn)單地根據(jù)數(shù)據(jù)的求解最優(yōu)解,在大多數(shù)機(jī)器學(xué)習(xí)問(wèn)題中,我們關(guān)注的是測(cè)試集(未知數(shù)據(jù))上性能度量P的優(yōu)化。

        • 對(duì)于模型,測(cè)試集是未知,我們只能通過(guò)優(yōu)化訓(xùn)練集的性能度量P_train,在獨(dú)立同分布基礎(chǔ)假設(shè)下,期望測(cè)試集也有較好的性能(泛化效果),這意味并不是一味追求訓(xùn)練集的最優(yōu)解。
        • 另外,有些情況性能度量P(比如分類(lèi)誤差f1-score)并不能高效地優(yōu)化,在這種情況下,我們通常會(huì)優(yōu)化替代損失函數(shù) (surrogate loss function)。例如,負(fù)對(duì)數(shù)似然通常用作 0 ? 1 分類(lèi)損失的替代。

        當(dāng)我們機(jī)器學(xué)習(xí)的學(xué)習(xí)目標(biāo)是極大化降低(經(jīng)驗(yàn))損失函數(shù),這點(diǎn)和傳統(tǒng)的優(yōu)化是比較相似的,那么如何實(shí)現(xiàn)這個(gè)目標(biāo)呢?我們第一反應(yīng)可能是直接求解損失函數(shù)最小值的公式/解析解(如最小二乘法),獲得最優(yōu)的模型參數(shù)。但是,通常機(jī)器學(xué)習(xí)模型的損失函數(shù)較復(fù)雜,很難直接求最優(yōu)解。幸運(yùn)的是,我們還可以通過(guò)優(yōu)化算法(如遺傳算法、梯度下降算法、牛頓法等)有限次迭代優(yōu)化模型參數(shù),以盡可能降低損失函數(shù)的值,得到較優(yōu)的參數(shù)值(數(shù)值解)。上述去搜索一組最\較優(yōu)參數(shù)解w所使用的算法,即是優(yōu)化算法。下圖優(yōu)化算法的總結(jié):(圖與本文內(nèi)容較相符,摘自@teekee)

        二、優(yōu)化算法盤(pán)點(diǎn)

        最小二乘法

        最小二乘法常用在機(jī)器學(xué)習(xí)回歸模型求解析解(對(duì)于復(fù)雜的深度神經(jīng)網(wǎng)絡(luò)無(wú)法通過(guò)這方法求解),其幾何意義是高維空間中的一個(gè)向量在低維子空間的投影。

        如下以一元線性回歸用最小二乘法求解為例。

        其損失函數(shù)mse為:對(duì)損失函數(shù)求極小值,也就是一階導(dǎo)數(shù)為0。通過(guò)偏導(dǎo)可得關(guān)于參數(shù)a及偏置b的方程組:代入數(shù)值求解上述線性方程組,可以求解出a,b的參數(shù)值。也就是求解出上圖擬合的那條直線ax+b。

        遺傳算法

        注:神經(jīng)網(wǎng)絡(luò)優(yōu)化算法以梯度下降類(lèi)算法較為高效,也是主流的算法。而遺傳算法、貪心算法、模擬退火等優(yōu)化算法用的比較少。

        遺傳算法(Genetic Algorithms,GA)是模擬自然界遺傳和生物進(jìn)化論而成的一種并行隨機(jī)搜索最優(yōu)化方法。與自然界中“優(yōu)勝略汰,適者生存”的生物進(jìn)化原理相似,遺傳算法就是在引入優(yōu)化參數(shù)形成的編碼串聯(lián)群體中,按照所選擇的適應(yīng)度函數(shù)并通過(guò)遺傳中的選擇、交叉和變異對(duì)個(gè)體進(jìn)行篩選,使適應(yīng)度好的個(gè)體被保留,適應(yīng)度差的個(gè)體被淘汰,新的群體既繼承了上一代的信息,又優(yōu)于上一代。這樣反復(fù)循環(huán)迭代,直至滿足條件。

        梯度下降(GD)

        梯度下降算法可以直觀理解成一個(gè)下山的方法,將損失函數(shù)J(w)比喻成一座山,我們的目標(biāo)是到達(dá)這座山的山腳(即求解出最優(yōu)模型參數(shù)w使得損失函數(shù)為最小值)。

        下山要做的無(wú)非就是“往下坡的方向走,走一步算一步”,而在損失函數(shù)這座山上,每一位置的下坡的方向也就是它的負(fù)梯度方向(直白點(diǎn),也就是山的斜向下的方向)。在每往下走到一個(gè)位置的時(shí)候,求解當(dāng)前位置的梯度,向這一步所在位置沿著最陡峭最易下山的位置再走一步。這樣一步步地走下去,一直走到覺(jué)得我們已經(jīng)到了山腳。當(dāng)然這樣走下去,有可能我們不是走到山腳(全局最優(yōu),Global cost minimun),而是到了某一個(gè)的小山谷(局部最優(yōu),Local cost minimun),這也后面梯度下降算法的可進(jìn)一步調(diào)優(yōu)的地方。對(duì)應(yīng)的算法步驟,直接截我之前的圖:梯度下降是一個(gè)大類(lèi),常見(jiàn)的梯度下降算法及優(yōu)缺點(diǎn),如下圖:

        隨機(jī)梯度下降(SGD)

        對(duì)于深度學(xué)習(xí)而言“隨機(jī)梯度下降, SGD”,其實(shí)就是基于小批量(mini-batch)的隨機(jī)梯度下降,當(dāng)batchsize為1也就是在線學(xué)習(xí)優(yōu)化。

        隨機(jī)梯度下降是在梯度下降算法效率上做了優(yōu)化,不使用全量樣本計(jì)算當(dāng)前的梯度,而是使用小批量(mini-batch)樣本來(lái)估計(jì)梯度,大大提高了效率。原因在于使用更多樣本來(lái)估計(jì)梯度的方法的收益是低于線性的,對(duì)于大多數(shù)優(yōu)化算法基于梯度下降,如果每一步中計(jì)算梯度的時(shí)間大大縮短,則它們會(huì)更快收斂。且訓(xùn)練集通常存在冗余,大量樣本都對(duì)梯度做出了非常相似的貢獻(xiàn)。此時(shí)基于小批量樣本估計(jì)梯度的策略也能夠計(jì)算正確的梯度,但是節(jié)省了大量時(shí)間。

        對(duì)于mini-batch的batchsize的選擇是為了在內(nèi)存效率(時(shí)間)和內(nèi)存容量(空間)之間尋找最佳平衡。

        • batchsize 不能太大。較大的batch可能會(huì)使得訓(xùn)練更快,但可能導(dǎo)致泛化能力下降。更大的batch size 只需要更少的迭代步數(shù)就可以使得訓(xùn)練誤差收斂,還可以利用大規(guī)模數(shù)據(jù)并行的優(yōu)勢(shì)。但是更大的batch size 計(jì)算的梯度估計(jì)更精確,它帶來(lái)更小的梯度噪聲。此時(shí)噪聲的力量太小,不足以將參數(shù)帶出一個(gè)尖銳極小值的吸引區(qū)域。這種情況需要提高學(xué)習(xí)率,減小batch size 提高梯度噪聲的貢獻(xiàn)。

        • batchsize不能太小。小的batchsize可以提供類(lèi)似正則化效果的梯度噪聲,有更好的泛化能力。但對(duì)于多核架構(gòu)來(lái)講,太小的batch并不會(huì)相應(yīng)地減少計(jì)算時(shí)間(考慮到多核之間的同步開(kāi)銷(xiāo))。另外太小batchsize,梯度估計(jì)值的方差非常大,因此需要非常小的學(xué)習(xí)速率以維持穩(wěn)定性。如果學(xué)習(xí)速率過(guò)大,則導(dǎo)致步長(zhǎng)的變化劇烈。

        還可以自適應(yīng)調(diào)節(jié)batchsize,參見(jiàn)《Small Batch or Large Batch? Peifeng Yin》

        Momentum動(dòng)量算法

        Momentum算法在梯度下降中加入了物理中的動(dòng)量的概念,模擬物體運(yùn)動(dòng)時(shí)候的慣性,即在更新的時(shí)候在一定程度上保留之前更新的方向,同時(shí)利用當(dāng)前batch的梯度對(duì)之前的梯度進(jìn)行微調(diào),這樣一來(lái),可以在一定程度上增加穩(wěn)定性,從而學(xué)習(xí)的更快,并且有一定的擺脫局部最優(yōu)的能力。

        該算法引入了變量 v 作為參數(shù)在參數(shù)空間中持續(xù)移動(dòng)的速度向量,速度一般可以設(shè)置為負(fù)梯度的指數(shù)衰減滑動(dòng)平均值。對(duì)于一個(gè)給定需要最小化的代價(jià)函數(shù),動(dòng)量可以表達(dá)為:更新后的梯度 = 折損系數(shù)γ動(dòng)量項(xiàng)+ 學(xué)習(xí)率?當(dāng)前的梯度。

        其中 ? 為學(xué)習(xí)率,γ ∈ (0, 1] 為動(dòng)量系數(shù),v 是速度向量。一般來(lái)說(shuō),梯度下降算法下降的方向?yàn)榫植孔钏俚姆较颍〝?shù)學(xué)上稱(chēng)為最速下降法),它的下降方向在每一個(gè)下降點(diǎn)一定與對(duì)應(yīng)等高線的切線垂直,因此這也就導(dǎo)致了 GD 算法的鋸齒現(xiàn)象。加入動(dòng)量法的梯度下降是令梯度直接指向最優(yōu)解的策略之一。

        Nesterov

        Nesterov動(dòng)量是動(dòng)量方法的變種,也稱(chēng)作Nesterov Accelerated Gradient(NAG)。在預(yù)測(cè)參數(shù)下一次的位置之前,我們已有當(dāng)前的參數(shù)和動(dòng)量項(xiàng),先用(θ?γvt?1)下一次出現(xiàn)位置的預(yù)測(cè)值作為參數(shù),雖然不準(zhǔn)確,但是大體方向是對(duì)的,之后用我們預(yù)測(cè)到的下一時(shí)刻的值來(lái)求偏導(dǎo),讓優(yōu)化器高效的前進(jìn)并收斂。

        在平滑的凸函數(shù)的優(yōu)化中,對(duì)比批量梯度下降,NAG 的收斂速度超出 1/k 到 1/(k^2)

        Adagrad

        Adagrad 亦稱(chēng)為自適應(yīng)梯度(adaptive gradient),允許學(xué)習(xí)率基于參數(shù)進(jìn)行調(diào)整,而不需要在學(xué)習(xí)過(guò)程中人為調(diào)整學(xué)習(xí)率。Adagrad 根據(jù)不常用的參數(shù)進(jìn)行較大幅度的學(xué)習(xí)率更新,根據(jù)常用的參數(shù)進(jìn)行較小幅度的學(xué)習(xí)率更新。然而 Adagrad 的最大問(wèn)題在于,在某些情況,學(xué)習(xí)率變得太小,學(xué)習(xí)率單調(diào)下降使得網(wǎng)絡(luò)停止學(xué)習(xí)過(guò)程。

        其中是梯度平方的積累量s,在進(jìn)行參數(shù)更新時(shí),學(xué)習(xí)速率要除以這個(gè)積累量的平方根,其中加上一個(gè)很小值是ε為了防止除0的出現(xiàn)。由于s 是逐漸增加的,那么學(xué)習(xí)速率是相對(duì)較快地衰減的。

        RMSProp

        RMSProp 算是對(duì)Adagrad算法的改進(jìn),主要是解決學(xué)習(xí)速率過(guò)快衰減的問(wèn)題,它不是像AdaGrad算法那樣暴力直接的累加平方梯度,而是加了一個(gè)衰減系數(shù)γ 來(lái)控制歷史信息的獲取多少。

        Adam

        Adam 算法為兩種隨機(jī)梯度下降的優(yōu)點(diǎn)集合:

        • 適應(yīng)性梯度算法(AdaGrad)為每一個(gè)參數(shù)保留一個(gè)學(xué)習(xí)率以提升在稀疏梯度(即自然語(yǔ)言和計(jì)算機(jī)視覺(jué)問(wèn)題)上的性能。
        • 均方根傳播(RMSProp)基于權(quán)重梯度最近量級(jí)的均值為每一個(gè)參數(shù)適應(yīng)性地保留學(xué)習(xí)率。這意味著算法在非穩(wěn)態(tài)和在線問(wèn)題上有很有優(yōu)秀的性能。

        Adam 算法同時(shí)獲得了 AdaGrad 和 RMSProp 算法的優(yōu)點(diǎn),像RMSprop 一樣存儲(chǔ)了過(guò)去梯度的平方 v的指數(shù)衰減平均值 ,也像 momentum 一樣保持了過(guò)去梯度 m 的指數(shù)衰減平均值:

        如果 m 和 v被初始化為 0 向量,那它們就會(huì)向 0 偏置,所以做了偏差校正放大它們:

        梯度更新能夠從梯度均值及梯度平方兩個(gè)角度進(jìn)行自適應(yīng)地調(diào)節(jié),而不是直接由當(dāng)前梯度決定。

        牛頓法

        牛頓法和梯度下降法相比,兩者都是迭代求解,不過(guò)梯度下降法是梯度求解(一階優(yōu)化),而牛頓法是用二階的海森矩陣的逆矩陣求解。相對(duì)而言,使用牛頓法收斂更快(迭代更少次數(shù)),但是每次迭代的時(shí)間比梯度下降法長(zhǎng)(計(jì)算開(kāi)銷(xiāo)更大,實(shí)際常用擬牛頓法替代)。

        通俗來(lái)講,梯度下降法每次只從你當(dāng)前所處位置選一個(gè)坡度最大的方向走一步,牛頓法在選擇方向時(shí),不僅會(huì)考慮坡度是否夠大,還會(huì)考慮你走了一步之后,后面坡度是否會(huì)變得更大。所以,可以說(shuō)牛頓法比梯度下降法看得更遠(yuǎn)一點(diǎn),能更快地走到最底部。但是,牛頓法對(duì)初始值有一定要求,在非凸優(yōu)化問(wèn)題中(如神經(jīng)網(wǎng)絡(luò)訓(xùn)練),牛頓法很容易陷入鞍點(diǎn)(牛頓法步長(zhǎng)會(huì)越來(lái)越?。?,而梯度下降法則更容易逃離鞍點(diǎn)(因此在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中一般使用梯度下降法,高維空間的神經(jīng)網(wǎng)絡(luò)中存在大量鞍點(diǎn))。

        綜上, 對(duì)于神經(jīng)網(wǎng)絡(luò)的優(yōu)化,常用梯度下降等較為高效的方法。梯度下降算法類(lèi)有SGD、Momentum、Adam等算法可選。對(duì)于大多數(shù)任務(wù)而言,通??梢灾苯酉仍囅翧dam,然后可以繼續(xù)在具體任務(wù)上驗(yàn)證不同優(yōu)化器效果。

        (End)

        文章首發(fā)公眾號(hào)“算法進(jìn)階”,更多原創(chuàng)文章敬請(qǐng)關(guān)注 個(gè)人github:https://github.com/aialgorithm

        好消息!

        小白學(xué)視覺(jué)知識(shí)星球

        開(kāi)始面向外開(kāi)放啦??????




        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目52講
        小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車(chē)道線檢測(cè)、車(chē)輛計(jì)數(shù)、添加眼線、車(chē)牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺(jué)公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


        歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱(chēng)+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


        瀏覽 47
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产做受 高潮久久 | 三级A片| 人人操超碰在线观看 | 美女日日夜夜综合 | 日日夜夜爆操 | 天天舔夜夜操 | 欧美亚洲三级 | 99精品视频免费 | 国产精品资源站 | 欧美激情老妇胡秀英最爽的一次 |