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ī)器學(xué)習(xí):一文詳解算法優(yōu)化內(nèi)部機(jī)制

        共 4296字,需瀏覽 9分鐘

         ·

        2021-08-05 14:58

        ↑↑↑點(diǎn)擊上方藍(lán)字,回復(fù)資料,10個G的驚喜

        來源:數(shù)據(jù)派THU,編輯:黃繼彥


        本文約3500字,建議閱讀9分鐘

        本文介紹了一些關(guān)于機(jī)器學(xué)習(xí)和線性組合的部分問題以及緩解該問題的方法。

        在機(jī)器學(xué)習(xí)中,損失的線性組合無處不在。雖然它們帶有一些陷阱,但仍然被廣泛用作標(biāo)準(zhǔn)方法。這些線性組合常常讓算法難以調(diào)整。

        在本文中,作者提出了以下論點(diǎn):

        1. 機(jī)器學(xué)習(xí)中的許多問題應(yīng)該被視為多目標(biāo)問題,但目前并非如此;
        2. 「1」中的問題導(dǎo)致這些機(jī)器學(xué)習(xí)算法的超參數(shù)難以調(diào)整;
        3. 檢測這些問題何時發(fā)生幾乎是不可能的,因此很難解決這些問題。

        有一些方法可以輕微緩解這些問題,并且不需要代碼。

        梯度下降被視為解決所有問題的一種方法。如果一種算法不能解決你的問題,那么就需要花費(fèi)更多的時間調(diào)整超參數(shù)來解決問題。

        損失的線性組合無處不在

        盡管存在單目標(biāo)的問題,但通常都會對這些目標(biāo)進(jìn)行額外的正則化。本文作者從整個機(jī)器學(xué)習(xí)領(lǐng)域選擇了這樣的優(yōu)化目標(biāo)。

        首先來說正則化函數(shù)、權(quán)重衰減和 Lasso 算法。顯然當(dāng)你添加了這些正則化,你已經(jīng)為你的問題創(chuàng)建了多目標(biāo)損失。畢竟我們關(guān)心的是原始損失 L_0 和正則化損失都保持很低。你將會使用λ參數(shù)在這二者之間調(diào)整平衡。


        因此,損失(如 VAE 的)實(shí)際上是多目標(biāo)的,第一個目標(biāo)是最大程度地覆蓋數(shù)據(jù),第二個目標(biāo)是保持與先前的分布接近。在這種情況下,偶爾會使用 KL 退火來引入一個可調(diào)參數(shù)β,以幫助處理這種損失的多目標(biāo)性。


        同樣在強(qiáng)化學(xué)習(xí)中,你也可以發(fā)現(xiàn)這種多目標(biāo)性。在許多環(huán)境中,簡單地將為達(dá)成部分目的而獲得的獎勵加起來很普遍。策略損失也通常是損失的線性組合。以下是 PPO、SAC 和 MPO 的策略損失及其可調(diào)整參數(shù)α的熵正則化方法。


        最后,GAN 損失當(dāng)然是判別器損失和生成器損失的和:


        所有這些損失都有一些共性,研究者們正在嘗試同時針對多個目標(biāo)進(jìn)行高效優(yōu)化,并且認(rèn)為最佳情況是在平衡這些通常相互矛盾的力量時找到的。在某些情況下,求和方式更加具體,并且引入了超參數(shù)以判斷各部分的權(quán)重。在某些情況下,組合損失的方式有明確的理論基礎(chǔ),并且不需要使用超參數(shù)來調(diào)整各部分之間的平衡。

        一些組合損失的方法聽起來很有吸引力,但實(shí)際上是不穩(wěn)定且危險的。平衡行為通常更像是在「走鋼絲」。

        樣例分析

        考慮一個簡單的情況,我們嘗試對損失的線性組合進(jìn)行優(yōu)化。我們采用優(yōu)化總損失(損失的總和)的方法,使用梯度下降來對此進(jìn)行優(yōu)化,觀察到以下行為:


        Jax 中的代碼如下:

        def loss(θ):return loss_1(θ) + loss_2(θ)loss_derivative = grad(loss)for gradient_step in range(200):  gradient = loss_derivative(θ)  θ = θ - 0.02 * gradient

        通常情況下,我們對兩個損失之間的權(quán)衡并不滿意,因此在第二個損失上引入了比例系數(shù)α,并運(yùn)行了以下代碼:

        def loss(θ, α):return loss_1(θ) + α*loss_2(θ)loss_derivative = grad(loss)for gradient_step in range(200):  gradient = loss_derivative(θ, α=0.5)  θ = θ - 0.02 * gradient

        我們希望看到:當(dāng)調(diào)整 α 時,可以選擇兩個損失之間的折衷,并選擇最適合自身應(yīng)用的點(diǎn)。我們將有效地進(jìn)行一個超參數(shù)調(diào)整回路,手動選擇一個α來運(yùn)行優(yōu)化過程,決定降低第二個損失,并相應(yīng)地調(diào)整α并重復(fù)整個優(yōu)化過程。經(jīng)過幾次迭代,我們滿足于找到的解,并繼續(xù)寫論文。

        但是,事實(shí)并非總是如此。有時,問題的實(shí)際行為如下動圖所示:


        看起來無論怎樣調(diào)整參數(shù)α,都不能很好地權(quán)衡兩種損失。

        我們看到了兩類解決方案,它們都分別忽略了一種損失。但是,這兩種解決方案都不適用于大多數(shù)應(yīng)用。在大多數(shù)情況下,兩種損失更加平衡的點(diǎn)是可取的解決方案。

        實(shí)際上,這種關(guān)于訓(xùn)練過程中兩種損失的圖表幾乎從未繪制過,因此該圖中所示的動態(tài)情況常常無法觀察到。我們只觀察繪制總體損失的訓(xùn)練曲線,并且得出超參數(shù)需要更多時間調(diào)整的結(jié)論。也許我們可以采取一種早停法(early stopping),以使得論文中的數(shù)據(jù)是有效的。畢竟,審稿人喜歡高效的數(shù)據(jù)。

        問題出在哪里呢?為什么這種方法有時有效,有時卻無法提供可調(diào)參數(shù)?為此,我們需要更深入地研究一下以下兩個動圖之間的差異。它們都是針對相同的問題,使用相同的損失函數(shù)生成的,并且正在使用相同的優(yōu)化方法來優(yōu)化這些損失。因此,這些都不是造成差異的原因。在這些問題之間發(fā)生變化的是模型。換句話說,模型參數(shù)θ對模型輸出的影響是不同的。

        因此,讓我們可視化一下通常不可見的東西,這是兩個優(yōu)化的帕累托前沿。這是模型可以實(shí)現(xiàn)且是不受其他任何解決方案支配的解決方案的集合。換句話說,這是一組可實(shí)現(xiàn)的損失,沒有一個點(diǎn)可以使所有損失都變得更好。無論你如何選擇在兩個損失之間進(jìn)行權(quán)衡,首選的解決方案始終依賴帕累托前沿。通常,通過調(diào)整損失的超參數(shù),你通常希望僅在同一個前沿找到一個不同的點(diǎn)。


        兩個帕累托前沿之間的差異會使得第一種情況的調(diào)優(yōu)效果很好,但是在更改模型后卻嚴(yán)重失敗了。事實(shí)證明,當(dāng)帕累托前沿為凸形時,我們可以通過調(diào)整α參數(shù)來實(shí)現(xiàn)所有可能的權(quán)衡效果。但是,當(dāng)帕累托前沿為凹形時,該方法似乎不再有效。

        為什么凹帕累托前沿面的梯度下降優(yōu)化會失???

        通過查看第三個維度中的總體損失,可以發(fā)現(xiàn)實(shí)際上是用梯度下降優(yōu)化了損失。在下圖中,我們可視化了相對于每個損失的總損失平面。實(shí)際上是使用參數(shù)的梯度下降到該平面上,采取的每個梯度下降步驟也必將在該平面上向下移動。你可以想象成梯度下降優(yōu)化過程是在該平面上放置一個球形小卵石,使其在重力作用下向下移動直到它停下來。

        優(yōu)化過程停止的點(diǎn)是優(yōu)化過程的結(jié)果,此處用星星表示。如下圖所示,無論你如何上下擺動該平面,最終都將得到最佳結(jié)果。


        通過調(diào)整α,此空間將保持一個平面。畢竟更改α只會更改該平面的傾斜度。在凸的情況下,可以通過調(diào)整α來實(shí)現(xiàn)帕累托曲線上的任何解。α大一點(diǎn)會將星星拉到左側(cè),α小一點(diǎn)會將星星拉到右側(cè)。優(yōu)化過程的每個起點(diǎn)都將在相同的解上收斂,這對于α的所有值都是正確的。


        但是,如果我們看一下具有凹帕累托前沿面的不同模型問題,那么問題出現(xiàn)在哪里就變得顯而易見了。


        如果我們想象卵石遵循該平面上的梯度:有時向左滾動更多,有時向右滾動更多,但始終向下滾動。然后很明顯它最終將到達(dá)兩個角點(diǎn)之一,即紅色星或藍(lán)色星。當(dāng)我們調(diào)整α?xí)r,該平面以與凸情況下完全相同的方式傾斜,但由于帕累托前沿面的形狀,將永遠(yuǎn)只能到達(dá)該前沿面上的兩個點(diǎn),即凹曲線末端的兩個點(diǎn)。使用基于梯度下降方法無法找到曲線上的 × 點(diǎn)(實(shí)際上想要達(dá)到的點(diǎn))。為什么?因?yàn)檫@是一個鞍點(diǎn)(saddle point)。

        同樣要注意的是,當(dāng)我們調(diào)整α?xí)r會發(fā)生什么。我們可以觀察到,相對于其他解,一個解需要調(diào)整多少個起點(diǎn),但我們無法調(diào)整以找到帕累托前沿面上的其他解。

        這些線性組合會導(dǎo)致哪些問題?

        我們列舉了使用這種線性損失組合方法的問題:

        • 第一,即使沒有引入超參數(shù)來權(quán)衡損失,說梯度下降試圖在反作用力之間保持平衡也是不正確的。根據(jù)模型可實(shí)現(xiàn)的解,可以完全忽略其中一種損失,而將注意力放在另一種損失上,反之亦然,這取決于初始化模型的位置;

        • 第二,即使引入了超參數(shù),也將在嘗試后的基礎(chǔ)上調(diào)整此超參數(shù)。研究中往往是運(yùn)行一個完整的優(yōu)化過程,然后確定是否滿意,再對超參數(shù)進(jìn)行微調(diào)。重復(fù)此優(yōu)化循環(huán),直到對性能滿意為止。這是一種費(fèi)時費(fèi)力的方法,通常涉及多次運(yùn)行梯度下降的迭代;

        • 第三,超參數(shù)不能針對所有的最優(yōu)情況進(jìn)行調(diào)整。無論進(jìn)行多少調(diào)整和微調(diào),你都不會找到可能感興趣的中間方案。這不是因?yàn)樗鼈儾淮嬖?,它們一定存在,只是因?yàn)檫x擇了一種糟糕的組合損失方法;

        • 第四,必須強(qiáng)調(diào)的是,對于實(shí)際應(yīng)用,帕累托前沿面是否為凸面以及因此這些損失權(quán)重是否可調(diào)始終是未知的。它們是否是好的超參數(shù),取決于模型的參數(shù)化方式及其影響帕累托曲線的方式。但是,對于任何實(shí)際應(yīng)用,都無法可視化或分析帕累托曲線??梢暬仍嫉膬?yōu)化問題要困難得多。因此出現(xiàn)問題并不會引起注意;

        • 最后,如果你真的想使用這些線性權(quán)重來進(jìn)行權(quán)衡,則需要明確證明整個帕累托曲線對于正在使用的特定模型是凸的。因此,使用相對于模型輸出而言凸的損失不足以避免問題。如果參數(shù)化空間很大(如果優(yōu)化涉及神經(jīng)網(wǎng)絡(luò)內(nèi)部的權(quán)重,則情況總是如此),你可能會忘記嘗試這種證明。需要強(qiáng)調(diào)的是,基于某些中間潛勢(intermediate latent),顯示這些損失的帕累托曲線的凸度不足以表明你具有可調(diào)參數(shù)。凸度實(shí)際上需要取決于參數(shù)空間以及可實(shí)現(xiàn)解決方案的帕累托前沿面。


        請注意,在大多數(shù)應(yīng)用中,帕累托前沿面既不是凸的也不是凹的,而是二者的混合體,這擴(kuò)大了問題。

        以一個帕累托前沿面為例,凸塊之間有凹塊。每個凹塊不僅可以確保無法通過梯度下降找到解,還可以將參數(shù)初始化的空間分成兩部分,一部分可以在一側(cè)的凸塊上找到解,而另一部分智能在另一側(cè)上找到解。如下動圖所示,在帕累托前沿面上有多個凹塊會使問題更加復(fù)雜。


        因此,我們不僅具有無法找到所有解的超參數(shù)α,而且根據(jù)初始化,它可能會找到帕累托曲線的不同凸部分。此參數(shù)和初始化以令人困惑的方式相互混合,這讓問題更加困難。如果稍微調(diào)整參數(shù)以希望稍微移動最優(yōu)值,則即使保持相同的初始化,也可能會突然跳到帕累托前沿面的其他凸部分。

        原文鏈接:
        https://engraved.ghost.io/why-machine-learning-algorithms-are-hard-to-tune/

        推薦閱讀

        (點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)

        神經(jīng)網(wǎng)絡(luò)入門

        統(tǒng) 計 學(xué) 無 用 了 ???

        神經(jīng)網(wǎng)絡(luò)的可解釋性綜述!

        測評:《機(jī)器學(xué)習(xí)中的數(shù)學(xué)》

        統(tǒng)治世界的 10 大算法,你知道幾個?

        清華大學(xué)出版!《機(jī)器學(xué)習(xí)導(dǎo)論》PDF下載

        老鐵,三連支持一下,好嗎?↓↓↓

        瀏覽 24
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        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>
            中文字幕三级 | 大香蕉综合网 | 精品国产毛片 | 成人免费网站在线观看 | 美女喷水视频 | 欧美日韩亚洲中文字幕一区二区三区 | 国产又爽又黄的视频 | 日韩在线一区二区免费 | 95国产精成人午夜A片在线 | 99久re热视频精品98 |