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>

        紐約大學(xué)課程: 深度學(xué)習(xí)中的優(yōu)化工具

        共 2730字,需瀏覽 6分鐘

         ·

        2020-09-11 22:02

        1梯度下降

        我們以所有方法中最基本、最差的(原因后文敘述)的梯度下降法來(lái)開(kāi)始我們對(duì)優(yōu)化方法的學(xué)習(xí)。

        問(wèn)題:

        迭代式:

        其中,

        • 是第 次迭代后的更新值,
        • 是第 次迭代前的初始值,
        • 是步長(zhǎng),
        • 的梯度。

        這里假設(shè)函數(shù) 是連續(xù)且可導(dǎo)的。我們的目標(biāo)是找到優(yōu)化方程的最低點(diǎn)(谷)。但是,實(shí)際到最低谷的方法是未知的。我們只能局部地看, 因此梯度的負(fù)方向就是我們知道的最好的信息。向那個(gè)方法移動(dòng)一小步將向最小值靠近。我們每移動(dòng)一小步便重新計(jì)算梯度并且再向其相反方向移動(dòng)一小步,直到我們到達(dá)最低谷。因此本質(zhì)上來(lái)講,梯度下降法所作的一切就是沿著下降地最急劇的方向(負(fù)梯度)

        迭代更新式中的參數(shù) 叫做步長(zhǎng)。總的來(lái)說(shuō),我們不知道最佳的步長(zhǎng)值; 所以我們必須嘗試不同的值。

        標(biāo)準(zhǔn)的方式是嘗試一串呈對(duì)數(shù)比例的值然后使用最好的值。這里可能會(huì)出現(xiàn)一些不同的情況。上面這張圖描繪了一元二次函數(shù)的情況。如果學(xué)習(xí)率太小,那么我們將穩(wěn)定地向最小值前進(jìn)。但是,這可能會(huì)比理想狀態(tài)更費(fèi)時(shí)。

        想得到一個(gè)步長(zhǎng)值可以直接得到最小值是非常困難的(或者不可能的)。一個(gè)比較理想的想法是得到一個(gè)比理想步長(zhǎng)稍大一點(diǎn)的步長(zhǎng)。實(shí)際中,這樣收斂最快。但是如果我們使用過(guò)大的學(xué)習(xí)率,那么將會(huì)迭代至離最小值很遠(yuǎn)導(dǎo)致不收斂。在實(shí)際中,我們想使用稍小于不收斂的學(xué)習(xí)率。

        ? 圖 1: 一元二次函數(shù)的步長(zhǎng)。

        2隨機(jī)梯度下降

        在隨機(jī)梯度下降中,我們用梯度向量的隨機(jī)估計(jì)替換實(shí)際的梯度向量。專(zhuān)門(mén)針對(duì)神經(jīng)網(wǎng)絡(luò),隨機(jī)估計(jì)是指單個(gè)數(shù)據(jù)點(diǎn)(單個(gè)實(shí)例)的損耗梯度。

        表示 第 個(gè)實(shí)例的網(wǎng)絡(luò)損失。

        最終我們想最小化的函數(shù)是 ,表示所有實(shí)例的總損失。

        在SGD中,我們根據(jù) 上的梯度(而不是總損失 上的梯度)更新權(quán)重。

        如果 是隨機(jī)選擇的, 那么 是一個(gè)有噪聲但無(wú)偏的 的估計(jì)量, 其表達(dá)式為:

        結(jié)果,SGD 的預(yù)期第 步與完全梯度下降的第 步相同:

        因此,任何 SGD 更新都與預(yù)期的批次更新相同。但是,SGD 不僅具有噪聲的更快的梯度下降。除了更快之外,SGD 還可以比全批次梯度下降獲得更好的結(jié)果。SGD 中的噪聲可以幫助我們避免淺的局部最小值,并找到更好的(較深)最小值。這種現(xiàn)象稱(chēng)為 退火.

        ? 圖 2: SGD 退火。

        總的來(lái)說(shuō),隨機(jī)梯度下降的優(yōu)點(diǎn)如下:

        • 1、跨實(shí)例有很多冗余信息,SGD 可以防止很多此類(lèi)冗余計(jì)算。
        • 2、在初期,與梯度中的信息相比,噪聲較小。因此,SGD 的一步和 GD 的一步實(shí)際上一樣好 .
        • 3、退火 - SGD 更新中的噪聲可阻止收斂到壞的(淺)局部最小值。
        • 4、隨機(jī)梯度下降計(jì)算的成本大大降低(因?yàn)槟鸁o(wú)需遍歷所有數(shù)據(jù)點(diǎn))。
        Ξ小批次處理

        在小批次處理中,我們考慮多個(gè)隨機(jī)選擇的實(shí)例上的損失,而不是僅計(jì)算一個(gè)實(shí)例上的損失。這樣可以減少步進(jìn)更新中的噪聲。

        通常,我們可以通過(guò)使用小型批處理而不是單個(gè)實(shí)例來(lái)更好地利用我們的硬件。例如,當(dāng)我們使用單實(shí)例訓(xùn)練時(shí),GPU使用率很低。分布式網(wǎng)絡(luò)訓(xùn)練技術(shù)將大型微型批處理在群集的機(jī)器之間進(jìn)行分割,然后匯總生成的梯度。Facebook 最近使用分布式訓(xùn)練在一個(gè)小時(shí)內(nèi)對(duì) ImageNet 數(shù)據(jù)上的網(wǎng)絡(luò)進(jìn)行了訓(xùn)練。

        重要的是要注意,梯度下降絕對(duì)不能用于全尺寸批次。如果您想以完整的批次大小進(jìn)行訓(xùn)練,請(qǐng)使用一種稱(chēng)為 LBFGS 的優(yōu)化技術(shù)。PyTorch 和 SciPy 都提供了該技術(shù)的實(shí)現(xiàn)。

        3動(dòng)量

        在動(dòng)量中, 我們有兩個(gè)迭代 (),而不僅僅是一個(gè)。更新式如下:

        稱(chēng)作 SGD 動(dòng)量。在每個(gè)更新步驟中,我們將動(dòng)量的舊值減去系數(shù) (0到1之間的值),然后將其添加到動(dòng)量的舊值。可以將 視為梯度的平均值。最后,我們向新動(dòng)量 的方向移動(dòng) 。

        替代形式: 隨機(jī)重球法

        該形式在數(shù)學(xué)上與先前的形式等價(jià)。在這里,下一步是上一步的方向和新的負(fù)梯度的組合。

        Ξ直觀

        SGD 動(dòng)量類(lèi)似于物理學(xué)中的動(dòng)量概念。優(yōu)化過(guò)程就像一個(gè)沉重的球滾下山坡,動(dòng)量使球保持與已經(jīng)移動(dòng)的方向相同的方向,梯度可以認(rèn)為是沿其他方向推動(dòng)球的力。

        ? 圖 3: 動(dòng)量的影響。

        Source:distill.pub[1]

        動(dòng)量并沒(méi)有使行進(jìn)方向發(fā)生巨大變化(如左圖所示),而是產(chǎn)生了適度的變化。動(dòng)量可減輕僅使用SGD時(shí)常見(jiàn)的振蕩。

        參數(shù)稱(chēng)為阻尼因子。 必須大于零,因?yàn)槿绻扔诹悖敲茨阒皇窃谶M(jìn)行梯度下降;它也必須小于 1,否則一切都會(huì)崩潰。 的值較小會(huì)導(dǎo)致方向更改更快。對(duì)于較大的值,轉(zhuǎn)向需要更長(zhǎng)的時(shí)間。

        ? 圖 4: Beta 對(duì)收斂的影響。
        Ξ實(shí)用指南

        動(dòng)量必須總是與隨機(jī)梯度下降一起使用。 = 0.9 或者 0.99 基本上效果會(huì)很好。

        當(dāng)增加動(dòng)量參數(shù)以保持收斂時(shí),通常需要減小步長(zhǎng)參數(shù)。如果 從 0.9 變?yōu)?0.99,則學(xué)習(xí)率必須降低10倍。

        Ξ為什么動(dòng)量有用?

        加速

        以下是涅斯捷羅夫動(dòng)量的更新規(guī)則。

        使用涅斯捷羅夫動(dòng)量,如果你非常仔細(xì)地選擇常數(shù),則可以加快收斂速度。但這僅適用于凸問(wèn)題,不適用于神經(jīng)網(wǎng)絡(luò)。

        許多人說(shuō),正常的動(dòng)量也是一種加速的方法。但實(shí)際上,它僅對(duì)二次方加速。此外,由于 SGD 帶有噪音,加速不適用于 SGD,因此不適用于 SGD。因此,盡管 Momentum SGD 有一些加速作用,但僅憑它并不能很好地解釋該技術(shù)的高性能。

        噪聲平滑

        可能一個(gè)更實(shí)際和更可能動(dòng)量效果很好的原因是噪聲平滑。動(dòng)量均衡了梯度。這是我們用于每個(gè)步驟更新的漸變的平均值。從理論上講,為了使 SGD 能夠正常工作,我們應(yīng)該對(duì)所有步驟進(jìn)行平均。

        SGD 具有動(dòng)量的優(yōu)點(diǎn)在于,不再需要進(jìn)行平均。動(dòng)量為優(yōu)化過(guò)程增加了平滑度,從而使每次更新都很好地接近解。使用 SGD,你需要平均所有的更新,然后朝這個(gè)方向前進(jìn)一步。

        加速和噪聲平滑都有助于提高動(dòng)量性能。

        ? 圖 5: SGD vs Momentum。

        使用 SGD,在求解初期取得良好的進(jìn)展,但是當(dāng)?shù)竭_(dá)函數(shù)最低區(qū)域(谷底)時(shí),會(huì)在此反彈。如果我們調(diào)整學(xué)習(xí)率,我們的反彈速度將會(huì)變慢。有了動(dòng)量,就會(huì)使步伐變得平穩(wěn),以至于沒(méi)有反彈發(fā)生。


        課程主頁(yè)

        https://atcold.github.io/pytorch-Deep-Learning/

        ?參考資料?

        [1]

        distill.pub: https://distill.pub/2017/momentum/

        [2]

        原文: https://atcold.github.io/pytorch-Deep-Learning/zh/week05/05-1/


        瀏覽 41
        點(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>
            天天操天天日天天操 | 爆操极品 | 毛片99 | 成人高清无码在线播放 | 新婚夜我被做了8次 | 7777在线视频 | 青草成人 | 高清毛片AAAAAAAAA郊外 | 免费人成精品欧美精品 | xxxx性开放按摩hd |