HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    近幾年比較新的優(yōu)化算法(近幾年比較新的優(yōu)化算法有哪些)

    發(fā)布時(shí)間:2023-04-22 09:44:01     稿源: 創(chuàng)意嶺    閱讀: 132        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于近幾年比較新的優(yōu)化算法的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。

    開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端

    官網(wǎng):https://ai.de1919.com。

    創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008

    本文目錄:

    近幾年比較新的優(yōu)化算法(近幾年比較新的優(yōu)化算法有哪些)

    一、優(yōu)化算法總結(jié)

    本文介紹一下機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中常用的優(yōu)化算法和優(yōu)化器以及一些其他我知道的優(yōu)化算法,部分算法我也沒有搞懂,就先記錄下來以后慢慢研究吧.*_*.

    1.梯度下降算法(Gradient Descent)

    梯度下降法可以參考我另一篇文章 機(jī)器學(xué)習(xí)-線性回歸 里的講解,這里就不在重復(fù)敘述.這里需要強(qiáng)調(diào)一下,深度學(xué)習(xí)里常用的SGD,翻譯過來是隨機(jī)梯度下降,但是實(shí)質(zhì)是mini-batch梯度下降(mini-batch-gd),或者說是兩者的結(jié)合更準(zhǔn)確一些.

    SGD的優(yōu)點(diǎn)是,算法簡單,計(jì)算量小,在函數(shù)為凸函數(shù)時(shí)可以找到全局最優(yōu)解.所以是最常用的優(yōu)化算法.缺點(diǎn)是如果函數(shù)不是凸函數(shù)的話,很容易進(jìn)入到局部最優(yōu)解而無法跳出來.同時(shí)SGD在選擇學(xué)習(xí)率上也是比較困難的.

    2.牛頓法

    牛頓法和擬牛頓法都是求解無約束最優(yōu)化問題的常用方法,其中牛頓法是迭代算法,每一步需要求解目標(biāo)函數(shù)的海森矩陣的逆矩陣,計(jì)算比較復(fù)雜.

    牛頓法在求解方程根的思想:在二維情況下,迭代的尋找某一點(diǎn)x,尋找方法是隨機(jī)一個初始點(diǎn)x_0,目標(biāo)函數(shù)在該點(diǎn)x_0的切線與x坐標(biāo)軸的交點(diǎn)就是下一個x點(diǎn),也就是x_1.不斷迭代尋找x.其中切線的斜率為目標(biāo)函數(shù)在點(diǎn)x_0的導(dǎo)數(shù)(梯度),切必過點(diǎn)(x_0,f(x_0)).所以迭代的方程式如圖1,為了求該方程的極值點(diǎn),還需要令其導(dǎo)數(shù)等于0,也就是又求了一次導(dǎo)數(shù),所以需要用到f(x)的二階導(dǎo)數(shù).

    在最優(yōu)化的問題中,牛頓法提供了一種求解的辦法. 假設(shè)任務(wù)是優(yōu)化一個目標(biāo)函數(shù)f, 求函數(shù)ff的極大極小問題, 可以轉(zhuǎn)化為求解函數(shù)f導(dǎo)數(shù)等于0的問題, 這樣求可以把優(yōu)化問題看成方程求解問題(f的導(dǎo)數(shù)等于0). 剩下的問題就和牛頓法求解方程根的思想很相似了.

    目標(biāo)函數(shù)的泰勒展開式:

    化簡后:

    這樣就得到了與圖1相似的公式,這里是二維的,在多維空間上,求二階導(dǎo)數(shù)就是求海森矩陣,因?yàn)槭欠帜?所以還需要求海森矩陣的逆矩陣.

    牛頓法和SGD的區(qū)別:

    牛頓法是二階求導(dǎo),SGD是一階求導(dǎo),所以牛頓法要收斂的更快一些.SGD只考慮當(dāng)前情況下梯度下降最快的方向,而牛頓法不僅考慮當(dāng)前梯度下降最快,還有考慮下一步下降最快的方向.

    牛頓法的優(yōu)點(diǎn)是二階求導(dǎo)下降速度快,但是因?yàn)槭堑惴?每一步都需要求解海森矩陣的逆矩陣,所以計(jì)算復(fù)雜.

    3.擬牛頓法(沒搞懂,待定)

    考慮到牛頓法計(jì)算海森矩陣比較麻煩,所以它使用正定矩陣來代替海森矩陣的逆矩陣,從而簡化了計(jì)算過程.

    常用的擬牛頓法有DFP算法和BFGS算法.

    4.共軛梯度法(Conjugate Gradient)

    共軛梯度法是介于最速下降法與牛頓法之間的一個方法,它僅需利用一階導(dǎo)數(shù)信息,但克服了最速下降法收斂慢的缺點(diǎn),又避免了牛頓法計(jì)算海森矩陣并求逆的缺點(diǎn).共軛梯度法不僅是解決大型線性方程組最有用的方法之一,也是解大型非線性最優(yōu)化最有效的算法之一.

    5.拉格朗日法

    參考SVM里的講解 機(jī)器學(xué)習(xí)-SVM

    6.動量優(yōu)化法(Momentum)

    動量優(yōu)化法主要是在SGD的基礎(chǔ)上,加入了歷史的梯度更新信息或者說是加入了速度更新.SGD雖然是很流行的優(yōu)化算法,但是其學(xué)習(xí)過程很慢,因?yàn)榭偸且酝瑯拥牟介L沿著梯度下降的方向.所以動量是為了加速學(xué)習(xí)的方法.

    其中第一行的減號部分是計(jì)算當(dāng)前的梯度,第一行是根據(jù)梯度更新速度v,而α是新引進(jìn)的參數(shù),在實(shí)踐中,α的一般取值為 0.5,0.9 和 0.99.和學(xué)習(xí)率 一樣,α 也會隨著時(shí)間不斷調(diào)整.一般初始值是一個較小的值,隨后會慢慢變大.

    7.Nesterov加速梯度(NAG, Nesterov accelerated gradient)

    NAG是在動量優(yōu)化算法的基礎(chǔ)上又進(jìn)行了改進(jìn).根據(jù)下圖可以看出,Nesterov 動量和標(biāo)準(zhǔn)動量之間的區(qū)別體現(xiàn)在梯度計(jì)算上, Nesterov 動量中,梯度計(jì)算在施加當(dāng)前速度之后.因此,Nesterov 動量可以解釋為往標(biāo)準(zhǔn)動量方法中添加了一個校正因子

    8.AdaGrad算法

    AdaGrad算法,自適應(yīng)優(yōu)化算法的一種,獨(dú)立地適應(yīng)所有模型參數(shù)的學(xué)習(xí)率,縮放每個參數(shù)反比于其所有梯度歷史平均值總和的平方根.具有代價(jià)函數(shù)最大梯度的參數(shù)相應(yīng)地有個快速下降的學(xué)習(xí)率,而具有小梯度的參數(shù)在學(xué)習(xí)率上有相對較小的下降.通俗一點(diǎn)的講,就是根據(jù)實(shí)際情況更改學(xué)習(xí)率,比如模型快要收斂的時(shí)候,學(xué)習(xí)率步長就會小一點(diǎn),防止跳出最優(yōu)解.

    其中g(shù)是梯度,第一行的分母是計(jì)算累計(jì)梯度的平方根, 是為了防止分母為0加上的極小常數(shù)項(xiàng),α是學(xué)習(xí)率.

    Adagrad的主要優(yōu)點(diǎn)是不需要人為的調(diào)節(jié)學(xué)習(xí)率,它可以自動調(diào)節(jié).但是依然需要設(shè)置一個初始的全局學(xué)習(xí)率.缺點(diǎn)是隨著迭代次數(shù)增多,學(xué)習(xí)率會越來越小,最終會趨近于0.

    9.RMSProp算法

    RMSProp修改 AdaGrad 以在非凸設(shè)定下效果更好,改變梯度積累為指數(shù)加權(quán)的移動平均.AdaGrad旨在應(yīng)用于凸問題時(shí)快速收斂.

    10.AdaDelta算法

    11.Adam算法

    Adam是Momentum和RMSprop的結(jié)合體,也就是帶動量的自適應(yīng)優(yōu)化算法.

    12.Nadam算法

    13.模擬退火算法

    14.蟻群算法

    15.遺傳算法

    動量是為了加快學(xué)習(xí)速度,而自適應(yīng)是為了加快收斂速度,注意學(xué)習(xí)速度快不一定收斂速度就快,比如步長大學(xué)習(xí)速度快,但是很容易跳出極值點(diǎn),在極值點(diǎn)附近波動,很難達(dá)到收斂.

    未完待定....

    參考:

    《統(tǒng)計(jì)學(xué)習(xí)方法》  李航    著

    《深度學(xué)習(xí)》  花書

    二、相對于遺傳算法,蟻群算法等新的優(yōu)化方法,傳統(tǒng)的優(yōu)化算法有哪些?

    梯度法,共軛梯度法,牛頓法,變尺度法;

    坐標(biāo)輪換法,隨即搜索法,共軛方向法,單純形法,復(fù)合形法;

    懲罰函數(shù)法等。

    三、當(dāng)前流行的可用于參數(shù)優(yōu)化的有哪些算法

    對稱密碼體系的代表是 DES AES

    非對稱或者叫公鑰密碼體系的代表是 RSA ECC

    HASH算法的代表是 MD5 SHA-1 SHA-256 SHA-384 。。。

    數(shù)字簽名的代表是 DSS

    流密碼的代表是 RC4

    over

    這些是最主要的一些算法 密碼學(xué)教科書上必講的 其實(shí)現(xiàn)在密碼加密算法成百上千種 太多了

    關(guān)鍵是要掌握它們的思想 很多算法基本思想都是一樣的

    四、常用優(yōu)化器算法歸納介紹

    優(yōu)化器是神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,進(jìn)行梯度下降以尋找最優(yōu)解的優(yōu)化方法。不同方法通過不同方式(如附加動量項(xiàng),學(xué)習(xí)率自適應(yīng)變化等)側(cè)重于解決不同的問題,但最終大都是為了加快訓(xùn)練速度。

    這里就介紹幾種常見的優(yōu)化器,包括其原理、數(shù)學(xué)公式、核心思想及其性能;

    核心思想: 即針對每次輸入的訓(xùn)練數(shù)據(jù),計(jì)算輸出預(yù)測與真值的Loss的梯度;

    從表達(dá)式來看,網(wǎng)絡(luò)中參數(shù)的更新,是不斷向著最小化Loss函數(shù)的方向移動的:

    優(yōu)點(diǎn):

    簡單易懂,即對于相應(yīng)的最優(yōu)解(這里認(rèn)為是Loss的最小函數(shù)),每次變量更新都是沿著局部梯度下降最快的方向,從而最小化損失函數(shù)。

    缺點(diǎn):

    不同于標(biāo)準(zhǔn)梯度下降法(Gradient Descent)一次計(jì)算所有數(shù)據(jù)樣本的Loss并計(jì)算相應(yīng)的梯度,批量梯度下降法(BGD, Batch Gradient Descent)每次只取一個小批次的數(shù)據(jù)及其真實(shí)標(biāo)簽進(jìn)行訓(xùn)練,稱這個批次為mini-batch;

    優(yōu)點(diǎn):

    缺點(diǎn):

    隨機(jī)梯度下降法的 batch size 選擇不當(dāng)可能導(dǎo)致模型難以收斂;由于這種方法是在一次更新中,就對整個數(shù)據(jù)集計(jì)算梯度,所以計(jì)算起來非常慢,遇到很大量的數(shù)據(jù)集也會非常棘手,而且不能投入新數(shù)據(jù)實(shí)時(shí)更新模型。

    我們會事先定義一個迭代次數(shù) epoch,首先計(jì)算梯度向量 params_grad,然后沿著梯度的方向更新參數(shù) params,learning rate 決定了我們每一步邁多大。

    Batch gradient descent 對于凸函數(shù)可以收斂到全局極小值,對于非凸函數(shù)可以收斂到局部極小值。

    和 BGD 的一次用所有數(shù)據(jù)計(jì)算梯度相比,SGD 每次更新時(shí)對每個樣本進(jìn)行梯度更新,對于很大的數(shù)據(jù)集來說,可能會有相似的樣本,這樣 BGD 在計(jì)算梯度時(shí)會出現(xiàn)冗余,而 SGD 一次只進(jìn)行一次更新,就沒有冗余,而且比較快,并且可以新增樣本。

    即訓(xùn)練時(shí),每次只從一批訓(xùn)練樣本中隨機(jī)選取一個樣本進(jìn)行梯度下降;對隨機(jī)梯度下降來說,只需要一次關(guān)注一個訓(xùn)練樣本,一點(diǎn)點(diǎn)把參數(shù)朝著全局最小值的方向進(jìn)行修改了。

    整體數(shù)據(jù)集是個循環(huán),其中對每個樣本進(jìn)行一次參數(shù)更新

    缺點(diǎn):

    梯度下降速度比較慢,而且每次梯度更新時(shí)往往只專注與局部最優(yōu)點(diǎn),而不會恰好指向全局最優(yōu)點(diǎn);

    單樣本梯度更新時(shí)會引入許多噪聲(跟訓(xùn)練目標(biāo)無關(guān)的特征也會被歸為該樣本分類的特征);

    SGD 因?yàn)楦卤容^頻繁,會造成 cost function 有嚴(yán)重的震蕩。

    BGD 可以收斂到局部極小值,當(dāng)然 SGD 的震蕩可能會跳到更好的局部極小值處。

    當(dāng)我們稍微減小 learning rate,SGD 和 BGD 的收斂性是一樣的。

    優(yōu)點(diǎn):

    當(dāng)處理大量數(shù)據(jù)時(shí),比如SSD或者faster-rcnn等目標(biāo)檢測模型,每個樣本都有大量候選框參與訓(xùn)練,這時(shí)使用隨機(jī)梯度下降法能夠加快梯度的計(jì)算。

    隨機(jī)梯度下降是通過每個樣本來迭代更新一次,如果樣本量很大的情況,那么可能只用其中部分的樣本,就已經(jīng)將 迭代到最優(yōu)解了,對比上面的批量梯度下降,迭代一次需要用到十幾萬訓(xùn)練樣本,一次迭代不可能最優(yōu),如果迭代10次的話就需要遍歷訓(xùn)練樣本10次。缺點(diǎn)是SGD的噪音較BGD要多,使得SGD并不是每次迭代都向著整體最優(yōu)化方向。所以雖然訓(xùn)練速度快,但是準(zhǔn)確度下降,并不是全局最優(yōu)。雖然包含一定的隨機(jī)性,但是從期望上來看,它是等于正確的導(dǎo)數(shù)的。

    梯度更新規(guī)則:

    MBGD 每一次利用一小批樣本,即 n 個樣本進(jìn)行計(jì)算,這樣它可以降低參數(shù)更新時(shí)的方差,收斂更穩(wěn)定,另一方面可以充分地利用深度學(xué)習(xí)庫中高度優(yōu)化的矩陣操作來進(jìn)行更有效的梯度計(jì)算。

    和 SGD 的區(qū)別是每一次循環(huán)不是作用于每個樣本,而是具有 n 個樣本的批次。

    超參數(shù)設(shè)定值: n 一般取值在 50~256

    缺點(diǎn):(兩大缺點(diǎn))

    鞍點(diǎn)就是:一個光滑函數(shù)的鞍點(diǎn)鄰域的曲線,曲面,或超曲面,都位于這點(diǎn)的切線的不同邊。例如這個二維圖形,像個馬鞍:在x-軸方向往上曲,在y-軸方向往下曲,鞍點(diǎn)就是(0,0)。

    為了應(yīng)對上面的兩點(diǎn)挑戰(zhàn)就有了下面這些算法

    核心思想:

    不使用動量優(yōu)化時(shí),每次訓(xùn)練的梯度下降方向,都是按照當(dāng)前批次訓(xùn)練數(shù)據(jù)計(jì)算的,可能并不能代表整個數(shù)據(jù)集,并且會有許多噪聲,下降曲線波動較大:

    添加動量項(xiàng)之后,能夠有效減小波動,從而加快訓(xùn)練速度:

    當(dāng)我們將一個小球從山上滾下來時(shí),沒有阻力的話,它的動量會越來越大,但是如果遇到了阻力,速度就會變小。

    加入的這一項(xiàng),可以使得梯度方向不變的維度上速度變快,梯度方向有所改變的維度上的更新速度變慢,這樣就可以加快收斂并減小震蕩。

    優(yōu)點(diǎn):

    通過動量更新,參數(shù)向量會在有持續(xù)梯度的方向上增加速度;

    使梯度下降時(shí)的折返情況減輕,從而加快訓(xùn)練速度;

    缺點(diǎn):

    如果數(shù)據(jù)集分類復(fù)雜,會導(dǎo)致 和 時(shí)刻梯度 向量方向相差較大;在進(jìn)行向量求和時(shí),得到的 會非常小,反而使訓(xùn)練速度大大下降甚至模型難以收斂。

    這種情況相當(dāng)于小球從山上滾下來時(shí)是在盲目地沿著坡滾,如果它能具備一些先知,例如快要上坡時(shí),就知道需要減速了的話,適應(yīng)性會更好。

    目前為止,我們可以做到,在更新梯度時(shí)順應(yīng) loss function 的梯度來調(diào)整速度,并且對 SGD 進(jìn)行加速。

    核心思想:

    自適應(yīng)學(xué)習(xí)率優(yōu)化算法針對于機(jī)器學(xué)習(xí)模型的學(xué)習(xí)率,采用不同的策略來調(diào)整訓(xùn)練過程中的學(xué)習(xí)率,從而大大提高訓(xùn)練速度。

    這個算法就可以對低頻的參數(shù)做較大的更新,對高頻的做較小的更新,也因此,對于稀疏的數(shù)據(jù)它的表現(xiàn)很好,很好地提高了 SGD 的魯棒性,例如識別 Youtube 視頻里面的貓,訓(xùn)練 GloVe word embeddings,因?yàn)樗鼈兌际切枰诘皖l的特征上有更大的更新。

    Adagrad 的優(yōu)點(diǎn)是減少了學(xué)習(xí)率的手動調(diào)節(jié)

    式中, 表示第 個分類, 表示第 迭代同時(shí)也表示分類 累計(jì)出現(xiàn)的次數(shù)。 表示初始的學(xué)習(xí)率取值(一般為0.01)

    AdaGrad的核心思想: 縮放每個參數(shù)反比于其所有梯度歷史平均值總和的平方根。具有代價(jià)函數(shù)最大梯度的參數(shù)相應(yīng)地有較大的學(xué)習(xí)率,而具有小梯度的參數(shù)又較小的學(xué)習(xí)率。

    缺點(diǎn):

    它的缺點(diǎn)是分母會不斷積累,這樣學(xué)習(xí)率就會收縮并最終會變得非常小。

    這個算法是對 Adagrad 的改進(jìn),

    和 Adagrad 相比,就是分母的 換成了過去的梯度平方的衰減平均值,指數(shù)衰減平均值

    這個分母相當(dāng)于梯度的均方根 root mean squared (RMS),在數(shù)據(jù)統(tǒng)計(jì)分析中,將所有值平方求和,求其均值,再開平方,就得到均方根值 ,所以可以用 RMS 簡寫:

    其中 的計(jì)算公式如下, 時(shí)刻的依賴于前一時(shí)刻的平均和當(dāng)前的梯度:

    梯度更新規(guī)則:

    此外,還將學(xué)習(xí)率 換成了 RMS[Δθ],這樣的話,我們甚至都不需要提前設(shè)定學(xué)習(xí)率了:

    超參數(shù)設(shè)定值: 一般設(shè)定為 0.9

    RMSprop 是 Geoff Hinton 提出的一種自適應(yīng)學(xué)習(xí)率方法。

    RMSprop 和 Adadelta 都是為了解決 Adagrad 學(xué)習(xí)率急劇下降問題的,

    梯度更新規(guī)則:

    RMSprop 與 Adadelta 的第一種形式相同:(使用的是指數(shù)加權(quán)平均,旨在消除梯度下降中的擺動,與Momentum的效果一樣,某一維度的導(dǎo)數(shù)比較大,則指數(shù)加權(quán)平均就大,某一維度的導(dǎo)數(shù)比較小,則其指數(shù)加權(quán)平均就小,這樣就保證了各維度導(dǎo)數(shù)都在一個量級,進(jìn)而減少了擺動。允許使用一個更大的學(xué)習(xí)率η)

    超參數(shù)設(shè)定值:

    Hinton 建議設(shè)定 為 0.9, 學(xué)習(xí)率 為 0.001。

    這個算法是另一種計(jì)算每個參數(shù)的自適應(yīng)學(xué)習(xí)率的方法。相當(dāng)于 RMSprop + Momentum

    除了像 Adadelta 和 RMSprop 一樣存儲了過去梯度的平方 vt 的指數(shù)衰減平均值 ,也像 momentum 一樣保持了過去梯度 mt 的指數(shù)衰減平均值:

    如果 和 被初始化為 0 向量,那它們就會向 0 偏置,所以做了偏差校正,通過計(jì)算偏差校正后的 和 來抵消這些偏差:

    梯度更新規(guī)則:

    超參數(shù)設(shè)定值:

    建議

    示例一

    示例二

    示例三

    上面情況都可以看出,Adagrad, Adadelta, RMSprop 幾乎很快就找到了正確的方向并前進(jìn),收斂速度也相當(dāng)快,而其它方法要么很慢,要么走了很多彎路才找到。

    由圖可知自適應(yīng)學(xué)習(xí)率方法即 Adagrad, Adadelta, RMSprop, Adam 在這種情景下會更合適而且收斂性更好。

    如果數(shù)據(jù)是稀疏的,就用自適用方法,即 Adagrad, Adadelta, RMSprop, Adam。

    RMSprop, Adadelta, Adam 在很多情況下的效果是相似的。

    Adam 就是在 RMSprop 的基礎(chǔ)上加了 bias-correction 和 momentum,

    隨著梯度變的稀疏,Adam 比 RMSprop 效果會好。

    整體來講,Adam 是最好的選擇。

    很多論文里都會用 SGD,沒有 momentum 等。SGD 雖然能達(dá)到極小值,但是比其它算法用的時(shí)間長,而且可能會被困在鞍點(diǎn)。

    如果需要更快的收斂,或者是訓(xùn)練更深更復(fù)雜的神經(jīng)網(wǎng)絡(luò),需要用一種自適應(yīng)的算法。

    各種優(yōu)化器Optimizer原理:從SGD到AdamOptimizer

    深度學(xué)習(xí)——優(yōu)化器算法Optimizer詳解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)

    以上就是關(guān)于近幾年比較新的優(yōu)化算法相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。


    推薦閱讀:

    近幾年什么行業(yè)前景好(近幾年什么行業(yè)最賺錢)

    近幾年網(wǎng)絡(luò)熱詞(近幾年網(wǎng)絡(luò)熱詞相繼出現(xiàn)從2008年時(shí))

    杭州市近幾天天氣預(yù)報(bào)(杭州市近幾天天氣預(yù)報(bào)情況)

    八佰伴紹興(八佰伴紹興在哪里)

    杭州微慕科技有限公司上市(杭州微慕科技有限公司上市了嘛)