国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)

這篇具有很好參考價(jià)值的文章主要介紹了Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

  • 由五名研究人員和工程師組成的團(tuán)隊(duì)發(fā)布了《Deep Learning Tuning Playbook》,來(lái)自他們自己訓(xùn)練神經(jīng)網(wǎng)絡(luò)的實(shí)驗(yàn)結(jié)果以及工程師的一些實(shí)踐建議,目前在Github上已有1.5k星。原項(xiàng)目地址
  • 本文為《Deep Learning Tuning Playbook》中文翻譯版本,全程手打,非機(jī)翻。因?yàn)楸救酥R(shí)水平有限,翻譯過(guò)程中可能有誤,隨時(shí)歡迎大家指出錯(cuò)誤,我會(huì)隨時(shí)更正。
  • 我將markdown文件放在了我的github上,同時(shí)提供CSDN內(nèi)下載(當(dāng)然也是免費(fèi)的),需要的可以去下載。如果轉(zhuǎn)載請(qǐng)注意標(biāo)明出處。

深度學(xué)習(xí)調(diào)參手冊(cè)

這不是一個(gè)官方支持的谷歌產(chǎn)品。

Varun Godbole?, George E. Dahl?, Justin Gilmer?, Christopher J. Shallue?, Zachary Nado?

? Google Research, Brain Team

? Harvard University

Table of Contents

  • 這份文件為誰(shuí)準(zhǔn)備?
  • 為什么需要調(diào)參手冊(cè)?
  • 新項(xiàng)目指南
    • 選擇模型架構(gòu)
    • 選擇優(yōu)化器
    • [選擇batch size](#選擇batch size)
    • 選擇初始配置
  • 提高模型性能的科學(xué)方法
    • 漸進(jìn)式調(diào)整策略
    • 探索與開(kāi)發(fā)
    • 為下一輪實(shí)驗(yàn)選擇目標(biāo)
    • 設(shè)計(jì)下一輪實(shí)驗(yàn)
    • 是否采用訓(xùn)練管道變化或超參數(shù)配置
    • 探索結(jié)束后
  • 確定訓(xùn)練steps
    • 當(dāng)訓(xùn)練不限時(shí)時(shí)應(yīng)該訓(xùn)練多長(zhǎng)時(shí)間
    • 當(dāng)訓(xùn)練由計(jì)算機(jī)控制時(shí)應(yīng)該訓(xùn)練多長(zhǎng)時(shí)間
  • 對(duì)訓(xùn)練管道的補(bǔ)充指導(dǎo)
    • 優(yōu)化輸入管道
    • 評(píng)估模型性能
    • 保存檢查點(diǎn)并回視最佳檢查點(diǎn)
    • 設(shè)置實(shí)驗(yàn)跟蹤
    • [Batch normalization操作細(xì)節(jié)](#Batch normalization操作細(xì)節(jié))
    • 多主機(jī)管道的注意事項(xiàng)
  • 常見(jiàn)問(wèn)題

這份文件為誰(shuí)準(zhǔn)備?

這份文件是為深度學(xué)習(xí)模型性能極為感興趣的工程師和研究人員(包括個(gè)人和團(tuán)隊(duì))準(zhǔn)備的。我們假設(shè)其有一定機(jī)器學(xué)習(xí)和深度學(xué)習(xí)概念及基本知識(shí)。

我們的重點(diǎn)是超參數(shù)調(diào)整過(guò)程。同時(shí)也觸及了深度學(xué)習(xí)訓(xùn)練的其他方面,如管道實(shí)現(xiàn)和優(yōu)化,但對(duì)這些方面的講述并不完整。

我們假設(shè)機(jī)器學(xué)習(xí)問(wèn)題是一個(gè)監(jiān)督學(xué)習(xí)問(wèn)題或看起來(lái)很像一個(gè)問(wèn)題的東西(如自監(jiān)督)。也就是說(shuō),本文中的一些建議可能適用于其他類型的問(wèn)題。

為什么需要調(diào)參手冊(cè)?

目前,要想讓深度神經(jīng)網(wǎng)絡(luò)在實(shí)踐中運(yùn)行良好,需要付出驚人的努力和猜想。更糟糕的是,人們很少記錄獲得良好結(jié)果的設(shè)置。論文掩蓋了導(dǎo)致其最終結(jié)果的過(guò)程,以呈現(xiàn)一個(gè)更干凈的故事,而從事商業(yè)問(wèn)題的機(jī)器學(xué)習(xí)工程師很少有時(shí)間概括他們的調(diào)參過(guò)程。教科書(shū)傾向于回避實(shí)踐指導(dǎo),優(yōu)先考慮基本原則,即使其作者有必要應(yīng)用工作經(jīng)驗(yàn)來(lái)提供有效的建議。在準(zhǔn)備創(chuàng)建這份文件時(shí),我們找不到任何全面的說(shuō)明來(lái)實(shí)際解釋如何用深度學(xué)習(xí)獲得好的結(jié)果。相反,我們?cè)诓┛臀恼潞蜕缃幻襟w上發(fā)現(xiàn)了一些建議的片段,從研究論文的附錄中窺見(jiàn)了一些技巧,偶爾有關(guān)于某個(gè)特定項(xiàng)目或管道的案例研究,還有很多困惑。 深度學(xué)習(xí)專家和不太熟練的從業(yè)者使用表面上類似的方法,但取得的結(jié)果間存在著巨大的差距。同時(shí),這些專家也欣然承認(rèn)他們所做的一些事情可能沒(méi)有充分的理由。隨著深度學(xué)習(xí)的成熟并對(duì)世界產(chǎn)生更大影響,社區(qū)需要更多資源,涵蓋有用的設(shè)置,包括所有的實(shí)際細(xì)節(jié),這對(duì)獲得良好的結(jié)果至關(guān)重要。

我們是由5名研究人員和工程師組成的團(tuán)隊(duì),他們已經(jīng)在深度學(xué)習(xí)領(lǐng)域工作了很多年,其中一些人早在2006年就開(kāi)始工作了。我們已經(jīng)將深度學(xué)習(xí)應(yīng)用于語(yǔ)音識(shí)別、天文學(xué)等各種問(wèn)題,并在這一過(guò)程中學(xué)到了很多。這份文件是從我們自己訓(xùn)練神經(jīng)網(wǎng)絡(luò)、教導(dǎo)新的機(jī)器學(xué)習(xí)工程師以及為我們的同事提供深度學(xué)習(xí)實(shí)踐建議的經(jīng)驗(yàn)中發(fā)展出來(lái)的。 盡管看到深度學(xué)習(xí)從少數(shù)學(xué)術(shù)實(shí)驗(yàn)室實(shí)踐的機(jī)器學(xué)習(xí)方法變成了為數(shù)十億人使用的產(chǎn)品提供動(dòng)力已經(jīng)令人欣慰,但作為一門(mén)工程學(xué)科,深度學(xué)習(xí)仍然處于起步階段,我們希望這份文件能鼓勵(lì)其他人幫助該領(lǐng)域?qū)崿F(xiàn)實(shí)驗(yàn)協(xié)議系統(tǒng)化。

這份文件是我們?cè)噲D清理我們自己的深度學(xué)習(xí)方法時(shí)產(chǎn)生的,因此它代表了作者在寫(xiě)作時(shí)的觀點(diǎn),而不是任何形式的客觀真理。我們自己在超參數(shù)調(diào)整方面的掙扎使其成為我們指導(dǎo)的一個(gè)重點(diǎn),但我們也涵蓋了在工作中遇到的其他重要問(wèn)題(或看到的錯(cuò)誤)。我們的意圖是讓這項(xiàng)工作成為一份活的文件,隨著我們信仰的改變而不斷成長(zhǎng)和發(fā)展。例如,關(guān)于調(diào)試和減輕訓(xùn)練失敗的材料,我們兩年前是不能寫(xiě)的,因?yàn)樗腔谧罱慕Y(jié)果和正在進(jìn)行的調(diào)查。不可避免地,我們的一些建議將需要更新,以考慮到新的結(jié)果和改進(jìn)的工作流程。我們不知道最佳的深度學(xué)習(xí)配方,但在社區(qū)開(kāi)始寫(xiě)下和辯論不同的過(guò)程之前,我們無(wú)法找到它。 為此,我們鼓勵(lì)發(fā)現(xiàn)我們的建議有問(wèn)題的讀者提出代替意見(jiàn),并提供令人信服的證據(jù),以便我們能夠更新手冊(cè)。我們也希望看大可能有不同建議的指南和手冊(cè),以便我們能夠作為一個(gè)社區(qū)努力實(shí)現(xiàn)最佳過(guò)程。 最后,任何標(biāo)有?? 的部分都是我們想做更多研究的地方。只有在嘗試寫(xiě)完這本手冊(cè)后,才完全明白在深度學(xué)習(xí)從業(yè)者的工作流程中可以找到多少有趣的和被忽視的研究問(wèn)題

新項(xiàng)目指南

我們?cè)谡{(diào)參過(guò)程中做出的許多決定可以在項(xiàng)目開(kāi)始時(shí)做一次,只有在情況發(fā)生變化時(shí)才會(huì)偶爾重新審核。

我們的指導(dǎo)意見(jiàn)做出以下假設(shè):

  • 問(wèn)題制定、數(shù)據(jù)清理等基本工作已經(jīng)完成,在模型架構(gòu)和訓(xùn)練配置上花時(shí)間是有意義的。
  • 已經(jīng)有一個(gè)管道設(shè)置好了,可以做訓(xùn)練和評(píng)估,而且很容易為各種感興趣的模型執(zhí)行訓(xùn)練和預(yù)測(cè)工作
  • 適當(dāng)?shù)暮饬繕?biāo)準(zhǔn)已經(jīng)被選擇和實(shí)施。這些指標(biāo)應(yīng)盡可能地代表在部署環(huán)境中所測(cè)量的內(nèi)容。

選擇模型架構(gòu)

概述: 當(dāng)開(kāi)始一個(gè)新項(xiàng)目時(shí),盡量重用一個(gè)已經(jīng)工作的模型。

  • 選擇一個(gè)成熟的、常用的模型架構(gòu),先讓它工作起來(lái)。以后可以建立一個(gè)自定義模型
  • 模型架構(gòu)通常有各種超參數(shù),決定模型的大小和其他細(xì)節(jié)(如層數(shù)、層寬、激活函數(shù)的類型)
    • 因此,選擇模型架構(gòu)實(shí)際上意味著選擇一個(gè)不同的模型系列(每個(gè)模型超參數(shù)的設(shè)置都只有一個(gè))
    • 我們將在選擇初始配置和提高模型性能的科學(xué)方法中考慮選擇模型超參數(shù)的問(wèn)題。
  • 在可能的情況下,盡量找到一篇解決手頭問(wèn)題的論文,并以該模型為起點(diǎn)進(jìn)行復(fù)制。

選擇優(yōu)化器

概述: 從當(dāng)前問(wèn)題中最流行的優(yōu)化器開(kāi)始

  • 在所有類型的機(jī)器學(xué)習(xí)問(wèn)題和模型架構(gòu)中,沒(méi)有哪個(gè)優(yōu)化器是“最好”的。即使只是comparing the performance of optimizers is a difficult task.??
  • 我們建議使用成熟的、受歡迎的優(yōu)化器,特別是在開(kāi)始一個(gè)新項(xiàng)目時(shí)。
    • 理想情況下,選擇用于同類型問(wèn)題最流行的優(yōu)化器
  • 對(duì)所選優(yōu)化器的所有超參數(shù)給予關(guān)注。
    • 具有更多超參數(shù)的優(yōu)化器可能需要更多的調(diào)整努力來(lái)找到最佳配置。
    • 這在項(xiàng)目的開(kāi)始階段尤其重要,因?yàn)槲覀冋噲D找到其他各種超參數(shù)(如架構(gòu)超參數(shù))的最佳值,同時(shí)將優(yōu)化器超參數(shù)視為nuisance parameters.
    • 在項(xiàng)目的最初階段,可能最好從一個(gè)比較簡(jiǎn)單的優(yōu)化器開(kāi)始(如帶動(dòng)量的SGD或者Adam帶 ? \epsilon ?, β 1 \beta_{1} β1?
      β 2 \beta_{2} β2?) 以后再換成一個(gè)更通用的優(yōu)化器
  • 我們喜歡的成熟的優(yōu)化器包括(但不限于):
    • SGD with momentum(我們更喜歡Nesterov變體)
    • Adam and NAdam,比帶動(dòng)量的SGD更普遍。請(qǐng)注意,Adam有4個(gè)可調(diào)整的超參數(shù),他們可能都是重要的and they can all matter!
      • 參考
        How should Adam’s hyperparameters be tuned?

選擇batch size

概述: batch size控制著訓(xùn)練速度,不應(yīng)該被用來(lái)直接調(diào)整驗(yàn)證集的性能。通常情況下,理想的batch size是可用硬件所支持的最大batch size

  • batch size是決定訓(xùn)練時(shí)間和計(jì)算資源消耗的一個(gè)關(guān)鍵因素
  • 增加batch size往往會(huì)減少訓(xùn)練時(shí)間。這可能是非常有益的,因?yàn)椋?
    • 可以在一個(gè)固定的時(shí)間內(nèi)對(duì)超參數(shù)進(jìn)行更徹底的調(diào)整,可能會(huì)產(chǎn)生一個(gè)更好的最終模型
    • 減少開(kāi)發(fā)周期,可以更頻繁的測(cè)試新想法
  • 增加batch size可能會(huì)減少、增加或不改變資源消耗
  • batch size不應(yīng)該被當(dāng)作驗(yàn)證集性能的課調(diào)整超參數(shù)
    • 只要所有的超參數(shù)都調(diào)的很好(尤其是學(xué)習(xí)率和正則化超參數(shù)),并且訓(xùn)練step的數(shù)量足夠多,使用任何batch size都應(yīng)該可以達(dá)到相同的最終性能(參考Shallue et al. 2018)
    • 參考 Why shouldn’t the batch size be tuned to directly improve validation set performance?
確定可行的batch size并估計(jì)訓(xùn)練工作量
[Click to expand]
  • 對(duì)于一個(gè)給定的模型和優(yōu)化器,通常會(huì)有一個(gè)可用硬件支持的batch size范圍。限制性因素通常是加速器內(nèi)存。
  • 不幸的是,如果不允許或至少不編譯完整的訓(xùn)練程序,就很難計(jì)算出多大的batch size適合于內(nèi)存。
  • 最簡(jiǎn)單的解決方案通常是以不同的批量大小(例如增加2的冪)運(yùn)行訓(xùn)練程序,進(jìn)行少量的steps,直到其中一個(gè)程序超過(guò)了可用的內(nèi)存。
  • 對(duì)于每個(gè)batch size,我們應(yīng)該訓(xùn)練足夠長(zhǎng)的時(shí)間,以獲得對(duì)訓(xùn)練吞吐量的可靠估計(jì)。
  • 當(dāng)加速器還沒(méi)有飽和時(shí),如果批處理量增加一倍,訓(xùn)練吞吐量也應(yīng)該增加一倍(或者至少接近一倍)。等價(jià)地,隨著批處理量的增加,每步的時(shí)間應(yīng)該是恒定的(或者至少是接近恒定的)。
  • 如果不是這樣,那么訓(xùn)練管道就有一個(gè)瓶頸,如I/O或計(jì)算節(jié)點(diǎn)之間的同步。這可能值得在繼續(xù)進(jìn)行之前進(jìn)行診斷和糾正。
  • 如果訓(xùn)練吞吐量只增加到某個(gè)最大batch size,那么我們應(yīng)該只考慮到該最大吞吐量,即使硬件支持更大的batch size。
    • 使用較大的batch size的所有好處都是假設(shè)訓(xùn)練的吞吐量增加。如果沒(méi)有,那就解決瓶頸問(wèn)題或使用較小的batch size。
    • **梯度累積(Gradient accumulation)**模擬的batch size比硬件所能支持的要大,因此不能提供任何吞吐量的好處,一般來(lái)說(shuō),在應(yīng)用工作中應(yīng)避免使用它。
  • 這些steps可能需要在每次改變模型或優(yōu)化器時(shí)重復(fù)進(jìn)行(例如,不同的模型架構(gòu)可能允許更大的批處理量以適應(yīng)內(nèi)存)
選擇batch size盡可能減少訓(xùn)練時(shí)間
[Click to expand]

訓(xùn)練時(shí)間 = (每steps時(shí)間) x (總steps)

  • 我們通常可以認(rèn)為當(dāng)沒(méi)有并行計(jì)算開(kāi)銷,并且所有的訓(xùn)練瓶頸都已被診斷和糾正時(shí),每一步的時(shí)間對(duì)于所有可行的batch size來(lái)說(shuō)都是近似恒定的。(參考[上一節(jié)](#確定可行的batch size并估計(jì)訓(xùn)練工作量)for how to identify training bottlenecks )在實(shí)踐中,通常至少有一些增加batch size大小的開(kāi)銷。
  • 隨著batch size的增加,達(dá)到固定性能目標(biāo)所需的總steps通常會(huì)減少(前提是當(dāng)batch size大小改變時(shí),所有相關(guān)的超參數(shù)都被重新調(diào)整,參考Shallue et al. 2018)。
    • 例如,增加一倍的批處理量可能使所需的總步驟數(shù)減半。這就是所謂的 完美縮放。
    • 完美的縮放性對(duì)所有的batch size都是成立的,直到一個(gè)臨界batch size,超過(guò)這個(gè)臨界batch size,就會(huì)取得遞減的回報(bào)
    • 最終,增加batch size不再減少訓(xùn)練steps(但也不會(huì)增加)。
  • 因此,使訓(xùn)練時(shí)間最小化的batch size通常是仍能減少所需訓(xùn)練steps的最大batch size。
    • 這個(gè)batch size取決于數(shù)據(jù)集、模型和優(yōu)化器,除了對(duì)每一個(gè)新問(wèn)題進(jìn)行實(shí)驗(yàn)發(fā)現(xiàn)之外,如何計(jì)算它是一個(gè)問(wèn)題。 ??
    • 在比較batch size時(shí),要注意示例預(yù)算/epoch預(yù)算(在固定訓(xùn)練例子展示數(shù)量的情況下運(yùn)行所有試驗(yàn))和steps預(yù)算(在固定訓(xùn)練steps數(shù)量的情況下運(yùn)行所有試驗(yàn))之間的區(qū)別
      • 用一個(gè)歷時(shí)預(yù)算來(lái)比較batch size,只能探測(cè)到完美的縮放尺度,即使更大的batch size可能仍然通過(guò)減少所需的訓(xùn)練steps來(lái)提供加速。
    • 通常情況下,可用硬件支持的最大batch size將小于臨界batch size。因此,一個(gè)好的經(jīng)驗(yàn)法則(沒(méi)有進(jìn)行任何實(shí)驗(yàn))是使用盡可能大的批處理量。
  • 如果最終增加了訓(xùn)練時(shí)間,那么使用更大的batch size是沒(méi)有意義的。
選擇batch size以盡量減少資源消耗
[Click to expand]
  • 有兩種類型的資源成本與增加batch size有關(guān):
    1. 前期成本,如購(gòu)買新硬件或重寫(xiě)訓(xùn)練管道以實(shí)現(xiàn)多GPU/多TPU訓(xùn)練
    2. 使用成本,例如,根據(jù)團(tuán)隊(duì)的資源預(yù)算計(jì)費(fèi),從云供應(yīng)商處計(jì)費(fèi),電力/維護(hù)成本
  • 如果增加batch size有很大的前期成本,那么推遲增加batch size可能更好,直到項(xiàng)目成熟,更容易評(píng)估成本效益的權(quán)衡。實(shí)施多主機(jī)并行訓(xùn)練可能會(huì)引入錯(cuò)誤和微小問(wèn)題,因此,無(wú)論如何,一開(kāi)始就用一個(gè)比較簡(jiǎn)單的管道可能會(huì)更好。(另一方面,當(dāng)需要進(jìn)行大量的調(diào)整實(shí)驗(yàn)時(shí),訓(xùn)練時(shí)間的大幅加速可能會(huì)在早期非常有利)
  • 我們把總的使用成本(可能包括多種不同類型的成本)稱為“資源消耗”。我們可以將資源消耗分解為以下幾個(gè)部分。

資源消耗 = (setp資源消耗) x (總steps)

  • 增加batch size通??梢訹減少總steps](#選擇batch size盡可能減少訓(xùn)練時(shí)間)。資源消耗是增加還是減少,將取決于每個(gè)step的消耗如何變化。

    • 增加batch size可能會(huì)減少資源消耗。例如,如果大batch size每個(gè)step都可以在與小batch size相同的硬件上運(yùn)行(每一步只增加少量時(shí)間),那么每個(gè)step資源消耗的增加可能被step數(shù)的減少所抵消。
    • 增加batch size可能不會(huì)改變資源消耗。例如,如果將batch size增加一倍,所需steps減少一半,所使用的GPU數(shù)量增加一倍,總消耗量(以GPU小時(shí)計(jì))將不會(huì)改變。
    • 增加batch size可能會(huì)增加資源消耗。例如,如果增加batch size需要升級(jí)硬件,每step消耗的增加可能超過(guò)steps的減少
改變batch size需要重新調(diào)整大多數(shù)超參數(shù)
[Click to expand]
  • 大多數(shù)超參數(shù)的最優(yōu)值都對(duì)batch size很敏感。因此,改變batch size通常需要重新開(kāi)始調(diào)整過(guò)程
  • 與batch size相互作用最強(qiáng)的超參數(shù)是優(yōu)化器超參數(shù)(如學(xué)習(xí)率、動(dòng)量)和正則化超參數(shù),因此對(duì)每個(gè)batch size進(jìn)行單獨(dú)調(diào)整最為重要
  • 在項(xiàng)目開(kāi)始時(shí)選擇批量大小時(shí)要記住這一點(diǎn)。如果你以后需要切換到不同的批量大小,為新的批量大小重新調(diào)整一切,可能會(huì)很困難,浪費(fèi)時(shí)間,也很昂貴。

batch norm如何與batch size相互作用

[Click to expand]
  • batch norm很復(fù)雜,一般來(lái)說(shuō),應(yīng)該使用與梯度計(jì)算不同的batch size來(lái)計(jì)算統(tǒng)計(jì)數(shù)據(jù)。詳細(xì)討論參考batch norm部分

選擇初始配置

  • 在開(kāi)始超參數(shù)調(diào)整之前,我們必須確定起點(diǎn)。這包括指定(1)模型配置(如層數(shù)),(2)優(yōu)化器超參數(shù)(如學(xué)習(xí)率),(3)訓(xùn)練steps數(shù)量
  • 確定初始配置將需要一些手動(dòng)配置以及訓(xùn)練運(yùn)行和試錯(cuò)
  • 我們的指導(dǎo)原則是找到一個(gè)簡(jiǎn)單、相對(duì)快速、相對(duì)低資源消耗的配置,獲得“合理”的結(jié)果
    • “簡(jiǎn)單”意味著盡可能的避免使用“華麗的搭配”,這些可以在以后添加。即使這些”華麗的搭配“被證明是有幫助的,在最初的配置中加入它們也有可能浪費(fèi)時(shí)間來(lái)調(diào)整無(wú)用的功能和/或加入不必要的復(fù)雜因素。
      • 例如在增加花哨的衰減時(shí)間表之前,先從一個(gè)恒定的學(xué)習(xí)率開(kāi)始
    • 選擇一個(gè)快速的、消耗最少資源的初始配置,將使超參數(shù)調(diào)節(jié)的效率大大提升。
      • 例如,從一個(gè)較小的模型開(kāi)始。
    • "合理的"性能取決于問(wèn)題,但至少意味著訓(xùn)練好的模型在驗(yàn)證集上的表現(xiàn)比隨機(jī)選擇好得多(盡管它可能差到不值得部署)。
  • 選擇訓(xùn)練steps的數(shù)量涉及平衡以下緊張關(guān)系:
    • 一方面, 更多steps的訓(xùn)練可以提高性能,并使超參數(shù)的調(diào)整更容易 (參考Shallue et al. 2018).
    • 另一方面,較少steps的訓(xùn)練意味著每次訓(xùn)練運(yùn)行的速度更快,使用的資源更少,通過(guò)減少周期之間的時(shí)間來(lái)提高調(diào)參效率,并允許更多的實(shí)驗(yàn)被并行運(yùn)行。此外,如果最初選擇了一個(gè)不必要的大steps預(yù)算,那么接下來(lái)可能就很難改變了,例如,一旦學(xué)習(xí)率計(jì)劃被調(diào)整為該步數(shù)。

提高模型性能的科學(xué)方法

就本文而言,機(jī)器學(xué)習(xí)開(kāi)發(fā)的最終目標(biāo)是最大化所部署模型的效用。即使開(kāi)發(fā)過(guò)程的許多方面在不同的應(yīng)用中有所不同(如時(shí)間長(zhǎng)度、可用的計(jì)算資源、模型的類型),我們通??梢栽谌魏螁?wèn)題上使用相同的基本步驟和原則。

我們下面的指導(dǎo)意見(jiàn)做出了以下假設(shè):

  • 已經(jīng)有一個(gè)完全運(yùn)行的訓(xùn)練管道,以及一個(gè)獲得合理結(jié)果的配置。
  • 有足夠的計(jì)算資源可用于進(jìn)行有意義的調(diào)參實(shí)驗(yàn),并至少并行運(yùn)行幾個(gè)訓(xùn)練作業(yè)。

漸進(jìn)式調(diào)整策略

概述: 從簡(jiǎn)單的配置開(kāi)始,逐步進(jìn)行改進(jìn),同時(shí)建立對(duì)問(wèn)題的洞察力。確保任何改進(jìn)都是基于強(qiáng)有力的證據(jù),以避免增加不必要的復(fù)雜性。

  • 我們的最終目標(biāo)是找到一種配置,使我們的模型性能最大化。
    • 在某些情況下,我們的目標(biāo)將是在一個(gè)固定的截止日期前最大限度地提高模型的性能(例如提交給一個(gè)比賽)。
    • 在其他情況下,我們希望無(wú)限期地改進(jìn)模型(例如,不斷地改進(jìn)生產(chǎn)中使用的模型)。
  • 原則上,我們可以通過(guò)使用一種算法來(lái)自動(dòng)搜索整個(gè)可能的配置空間,從而最大限度地提高性能,但這并不是一個(gè)實(shí)用的選擇。
    • 可能的配置空間非常大,目前還沒(méi)有任何足夠成熟的算法可以在沒(méi)有人類指導(dǎo)的情況下有效地搜索這個(gè)空間。
  • 大多數(shù)自動(dòng)搜索算法依賴于手工設(shè)計(jì)的搜索空間,該空間定義了要搜索的配置集,而這些搜索空間可能相當(dāng)重要。
  • 將性能最大化的最有效方法是從簡(jiǎn)單的配置開(kāi)始,逐步增加功能并進(jìn)行改進(jìn),同時(shí)建立對(duì)問(wèn)題的洞察力。
    • 我們?cè)诿恳惠喺{(diào)整中使用自動(dòng)搜索算法,并隨著我們理解的加深而不斷地更新我們的搜索空間。
  • 隨著我們的探索,我們自然會(huì)發(fā)現(xiàn)越來(lái)越好的配置,因此我們的 "最佳 "模型將不斷改進(jìn)。
    • 當(dāng)我們更新我們的最佳配置時(shí),我們稱之為啟動(dòng)(launch)(可能是也可能不是對(duì)應(yīng)于一個(gè)生產(chǎn)模型的實(shí)際啟動(dòng))。
    • 對(duì)于每一次啟動(dòng),我們必須確保這種變化是基于強(qiáng)有力的證據(jù)–而不是基于幸運(yùn)的配置的隨機(jī)機(jī)會(huì)–這樣我們就不會(huì)給訓(xùn)練管道增加不必要的復(fù)雜性。

在高層次上,我們的增量調(diào)整策略包括重復(fù)以下四個(gè)步驟:

  1. 為下一輪的實(shí)驗(yàn)確定一個(gè)適當(dāng)范圍的目標(biāo)。
  2. 設(shè)計(jì)并運(yùn)行一套實(shí)驗(yàn),使之在這一目標(biāo)上取得進(jìn)展。
  3. 從結(jié)果中學(xué)習(xí)
  4. 考慮是否推出新的最佳配置。

本節(jié)的其余部分將更詳細(xì)地探討這一策略。

探索與開(kāi)發(fā)

概述: 大多數(shù)時(shí)候,我們的首要目標(biāo)是深入了解問(wèn)題。

  • 盡管人們可能會(huì)認(rèn)為我們會(huì)花大部分時(shí)間試圖在驗(yàn)證集上實(shí)現(xiàn)性能最大化,但在實(shí)踐中,我們花了大部分時(shí)間試圖深入了解問(wèn)題,而相對(duì)來(lái)說(shuō)很少有時(shí)間貪婪地關(guān)注驗(yàn)證損失。
    • 換句話說(shuō),我們把大部分時(shí)間花在 "探索 "上,只有少量的時(shí)間花在 "開(kāi)發(fā) "上。
  • 從長(zhǎng)遠(yuǎn)來(lái)看,如果我們想最大限度地提高我們的最終績(jī)效,了解問(wèn)題是至關(guān)重要的。將洞察力放在優(yōu)先于短期收益的位置可以幫助我們:
    • 避免啟動(dòng)不必要的變化,這些變化恰好存在于表現(xiàn)良好的運(yùn)行中,只是由于歷史上的偶然。
    • 識(shí)別驗(yàn)證損失對(duì)哪些超參數(shù)最敏感;哪些超參數(shù)相互影響最大,因此需要一起重新調(diào)整;哪些超參數(shù)對(duì)其他變化相對(duì)不敏感,可以在實(shí)驗(yàn)中固定下來(lái)。
    • 如果出現(xiàn)了過(guò)擬合問(wèn)題,建議嘗試潛在的新特征,如新的正則器。
    • 識(shí)別那些沒(méi)有幫助的特征,可以將其刪除,減少實(shí)驗(yàn)的復(fù)雜性。
    • 識(shí)別超參數(shù)調(diào)整帶來(lái)的改進(jìn)何時(shí)可能達(dá)到飽和。
    • 圍繞最優(yōu)值縮小我們的搜索空間,以提高調(diào)參效率。
  • 當(dāng)我們最終準(zhǔn)備好的時(shí)候,可以純粹地關(guān)注驗(yàn)證誤差,即使實(shí)驗(yàn)對(duì)調(diào)參問(wèn)題的結(jié)構(gòu)沒(méi)有太多信息。

為下一輪實(shí)驗(yàn)選擇目標(biāo)

概述: 每一輪的實(shí)驗(yàn)都應(yīng)該有一個(gè)明確的目標(biāo),而且范圍要足夠窄,以便實(shí)驗(yàn)?zāi)軌蛘嬲繕?biāo)取得進(jìn)展。

  • 每一輪實(shí)驗(yàn)都應(yīng)該有一個(gè)明確的目標(biāo),而且范圍要足夠窄,使實(shí)驗(yàn)?zāi)軌蛘嬲繕?biāo)前進(jìn):如果我們?cè)噲D一次增加多個(gè)功能或回答多個(gè)問(wèn)題,我們可能無(wú)法區(qū)分對(duì)結(jié)果的單獨(dú)影響。
  • 目標(biāo)示例包括:
    • 嘗試對(duì)管道進(jìn)行潛在的改進(jìn)(例如,新的正則化方式、預(yù)處理選擇等)。
    • 了解特定模型超參數(shù)(如激活函數(shù))的影響
    • 最大程度的減少驗(yàn)證集損失

設(shè)計(jì)下一輪實(shí)驗(yàn)

概述: 確定指標(biāo)超參數(shù)、需要調(diào)整超參數(shù)和固定超參數(shù),以實(shí)現(xiàn)實(shí)驗(yàn)?zāi)繕?biāo)。建立一個(gè)研究序列來(lái)比較指標(biāo)超參數(shù)的不同值,同時(shí)對(duì)調(diào)整超參數(shù)進(jìn)行優(yōu)化。選擇調(diào)整超參數(shù)的搜索空間,以平衡資源成本和科學(xué)價(jià)值。

識(shí)別指標(biāo)、調(diào)整和固定超參數(shù)
[Click to expand]
  • 對(duì)于一個(gè)給定的目標(biāo),超參數(shù)分為指標(biāo)、調(diào)整和固定
    • 指標(biāo)超參數(shù)是指用于評(píng)估參數(shù)對(duì)模型效果的參數(shù)
    • 調(diào)整超參數(shù)是值那些需要優(yōu)化的參數(shù),以便公平地比較指標(biāo)超參數(shù)的不同值。這與統(tǒng)計(jì)學(xué)中的調(diào)整參數(shù)概念類似。nuisance parameters.
    • 固定超參數(shù)在本輪實(shí)驗(yàn)中不變。這些超參數(shù)的值在比較指標(biāo)超參數(shù)時(shí)不需要(或我們不希望它們)改變。
      • 通過(guò)為一組實(shí)驗(yàn)固定某些超參數(shù),我們必須接受從實(shí)驗(yàn)中得出的結(jié)論可能對(duì)固定超參數(shù)的其他設(shè)置無(wú)效。換句話說(shuō),固定的超參數(shù)為我們從實(shí)驗(yàn)中得出的任何結(jié)論創(chuàng)造了限制條件。
  • 例如,如果我們的目標(biāo)是 “確定具有更多隱藏層的模型是否會(huì)減少驗(yàn)證誤差”,那么隱藏層的數(shù)量就是一個(gè)指標(biāo)超參數(shù)。
    • 學(xué)習(xí)率是一個(gè)麻煩的超參數(shù),因?yàn)槲覀冎挥性跒槊總€(gè)層數(shù)分別調(diào)整學(xué)習(xí)率的情況下,才能公平地比較具有不同層數(shù)的模型(最佳學(xué)習(xí)率一般取決于模型結(jié)構(gòu))。
    • 如果我們?cè)谥暗膶?shí)驗(yàn)中確定激活函數(shù)的最佳選擇對(duì)模型深度不敏感,或者我們?cè)敢庀拗齐[藏層數(shù)量,只觀察激活函數(shù)的具體選擇,那么激活函數(shù)可以是一個(gè)固定的超參數(shù)。另外,如果我們準(zhǔn)備為每一個(gè)隱藏層的數(shù)量分別進(jìn)行調(diào)整,它也可以是一個(gè)調(diào)整參數(shù)。
  • 一個(gè)特定的超參數(shù)是指標(biāo)超參數(shù)、調(diào)整超參數(shù)還是固定超參數(shù),并不是固定的,而是根據(jù)實(shí)驗(yàn)?zāi)繕?biāo)而變化。
    • 例如,激活函數(shù)的選擇可以是一個(gè)指標(biāo)超參數(shù)(ReLU或tanh是更好的選擇嗎?),一個(gè)調(diào)整超參數(shù)(當(dāng)我們?cè)试S幾個(gè)不同的激活函數(shù)時(shí),最好的5層模型是否比最好的6層模型更好?),或一個(gè)固定的超參數(shù)(對(duì)于ReLU激活函數(shù),在特定位置添加batch normalization是否有幫助?)
  • 在設(shè)計(jì)新一輪的實(shí)驗(yàn)時(shí),我們首先為實(shí)驗(yàn)?zāi)繕?biāo)確定指標(biāo)超參數(shù)。
    • 在這個(gè)階段,我們認(rèn)為所有其他超參數(shù)都是調(diào)整超參數(shù)。
  • 接下來(lái),我們把一些調(diào)整超參數(shù)轉(zhuǎn)換成固定的超參數(shù)。
    • 在資源無(wú)限的情況下,我們會(huì)把所有非指標(biāo)超參數(shù)作為調(diào)整超參數(shù),這樣我們從實(shí)驗(yàn)中得出的結(jié)論就不會(huì)有固定超參數(shù)值的限制了。
    • 然而,我們?cè)噲D調(diào)整的調(diào)整超參數(shù)越多,就越有可能無(wú)法在每一個(gè)指標(biāo)超參數(shù)的設(shè)置上充分調(diào)整,最終從實(shí)驗(yàn)中得出錯(cuò)誤的結(jié)論。
      • 如下所述,我們可以通過(guò)增加計(jì)算預(yù)算來(lái)應(yīng)對(duì)這一風(fēng)險(xiǎn),但往往我們的最大資源預(yù)算少于在所有非科學(xué)的超參數(shù)上進(jìn)行調(diào)整所需的資源。
    • 當(dāng)我們判斷固定超參數(shù)引入比把它作為一個(gè)調(diào)整超參數(shù)的成本低時(shí),我們會(huì)選擇把一個(gè)調(diào)整超參數(shù)轉(zhuǎn)換成一個(gè)固定的超參數(shù)。
      • 一個(gè)給定的調(diào)整超參數(shù)與指標(biāo)超參數(shù)的相互作用越大,固定其數(shù)值的破壞性就越大。例如,權(quán)重衰減強(qiáng)度的最佳值通常取決于模型的大小,因此,假設(shè)一個(gè)單一的權(quán)重衰減特定值來(lái)比較不同的模型大小,不會(huì)有很好的說(shuō)服力。
  • 盡管我們給每個(gè)超參數(shù)分配的類型取決于實(shí)驗(yàn)?zāi)繕?biāo),但對(duì)于某些類別的超參數(shù),我們有以下經(jīng)驗(yàn)法則。
    • 在各種優(yōu)化器的超參數(shù)中(如學(xué)習(xí)率、動(dòng)量、學(xué)習(xí)率計(jì)劃參數(shù)、Adam betas等),至少有一些會(huì)成為調(diào)整超參數(shù),因?yàn)樗鼈兺c其他變化互動(dòng)最多。
      • 它們很少是指標(biāo)超參數(shù),因?yàn)橄?"當(dāng)前管道的最佳學(xué)習(xí)率是多少?"這樣的目標(biāo)并不能提供太多的說(shuō)服力–無(wú)論如何,最佳設(shè)置很容易隨著下一個(gè)管道的改變而改變。
      • 由于資源的限制,或者當(dāng)我們有特別有力的證據(jù)證明它們與指標(biāo)參數(shù)沒(méi)有相互作用時(shí),我們可能會(huì)偶爾固定其中的一些參數(shù)。但一般來(lái)說(shuō),我們應(yīng)該假定優(yōu)化器的超參數(shù)必須單獨(dú)調(diào)整,以便在科學(xué)超參數(shù)的不同設(shè)置之間進(jìn)行公平的比較,因此不應(yīng)該被固定。
        • 此外,我們沒(méi)有先驗(yàn)的理由去選擇一個(gè)優(yōu)化器的超參數(shù)值而不是另一個(gè)(例如,它們通常不會(huì)以任何方式影響正向傳遞或梯度的計(jì)算成本)。
    • 相比之下,優(yōu)化器的選擇通常是指標(biāo)超參數(shù)或固定超參數(shù)。
      • 如果我們的實(shí)驗(yàn)?zāi)繕?biāo)涉及在兩個(gè)或多個(gè)不同的優(yōu)化器之間進(jìn)行公平的比較(例如 “確定哪個(gè)優(yōu)化器在給定的步驟數(shù)中產(chǎn)生最低的驗(yàn)證誤差”),它就是一個(gè)指標(biāo)超參數(shù)。
      • 另外,我們可能出于各種原因?qū)⑵渥鳛橐粋€(gè)固定的超參數(shù),包括:(1)先前的實(shí)驗(yàn)使我們相信,對(duì)我們的問(wèn)題來(lái)說(shuō),最好的優(yōu)化器對(duì)當(dāng)前指標(biāo)超參數(shù)不敏感;(2)我們更愿意使用這個(gè)優(yōu)化器來(lái)比較科學(xué)超參數(shù)的值,因?yàn)樗挠?xùn)練曲線更容易推理;(3)我們更愿意使用這個(gè)優(yōu)化器,因?yàn)樗忍娲桨甘褂玫膬?nèi)存少。
    • 正則化技術(shù)引入的超參數(shù)通常是調(diào)整超參數(shù),但我們是否包含正則化技術(shù)則是一個(gè)指標(biāo)或固定超參數(shù)。
      • 例如,dropout會(huì)增加代碼的復(fù)雜性,因此在決定是否包括它時(shí),我們會(huì)將是否添加dropout作為一個(gè)指標(biāo)超參數(shù),而將dropout rate作為一個(gè)調(diào)整超參數(shù)。
        • 如果我們決定在這個(gè)實(shí)驗(yàn)的基礎(chǔ)上將dropout加入管道,那么在未來(lái)的實(shí)驗(yàn)中,dropout rate將是一個(gè)調(diào)整超參數(shù)。
    • 架構(gòu)超參數(shù)通常是指標(biāo)或固定超參數(shù),因?yàn)榧軜?gòu)的變化會(huì)影響服務(wù)和訓(xùn)練成本、延遲和內(nèi)存需求
      • 例如,層數(shù)通常是一個(gè)指標(biāo)或固定超參數(shù),因?yàn)樗鶗?huì)對(duì)訓(xùn)練速度和內(nèi)存使用產(chǎn)生巨大的影響。
  • 在某些情況下,調(diào)整和固定超參數(shù)的集合取決于指標(biāo)超參數(shù)的值。
    • 例如,假設(shè)我們?cè)噲D確定在Nesterov momentum和Adam中哪一個(gè)優(yōu)化器能使驗(yàn)證誤差最小。 指標(biāo)超參數(shù)是 optimizer,其取值為{"Nesterov_momentum", "Adam"}。當(dāng)值為optimizer="Nesterov_momentum" 包含調(diào)整/固定超參數(shù) {learning_rate, momentum}當(dāng)值為
      optimizer="Adam" 包含調(diào)整/固定超參數(shù){learning_rate, beta1, beta2, epsilon}.
    • 只有在指標(biāo)超參數(shù)的某些數(shù)值下才會(huì)出現(xiàn)的超參數(shù)被稱為 條件超參數(shù)。
    • 我們不應(yīng)該僅僅因?yàn)閮蓚€(gè)條件超參數(shù)有相同的名字就認(rèn)為它們是相同的!在上面的例子中,條件超參數(shù)名為 learning_rate 是不同的超參數(shù)當(dāng) optimizer="Nesterov_momentum"optimizer="Adam"。它在兩種算法中的作用相似(雖然不完全相同),但在每種優(yōu)化器中效果良好的數(shù)值范圍通常有幾個(gè)數(shù)量級(jí)的差異。
創(chuàng)建一套研究報(bào)告
[Click to expand]
  • 一旦我們確定了指標(biāo)和調(diào)整超參數(shù),我們就會(huì)設(shè)計(jì)一個(gè) "研究 "或一系列研究,以便朝著實(shí)驗(yàn)?zāi)繕?biāo)取得進(jìn)展。
    • 一項(xiàng)研究指定了一組為后續(xù)分析而運(yùn)行的超參數(shù)配置。每個(gè)配置被稱為一個(gè) “試驗(yàn)”。
    • 創(chuàng)建一個(gè)研究通常包括選擇不同試驗(yàn)中變化的超參數(shù),選擇這些超參數(shù)的取值(“搜索空間”),選擇試驗(yàn)的數(shù)量,并選擇一個(gè)自動(dòng)搜索算法來(lái)從搜索空間中抽取該數(shù)量的試驗(yàn)。另外,我們也可以通過(guò)手動(dòng)指定超參數(shù)配置的集合來(lái)創(chuàng)建一個(gè)研究。
  • 研究的目的是用不同的科學(xué)超參數(shù)值運(yùn)行管道,同時(shí) “優(yōu)化掉”(或 “優(yōu)化”)調(diào)整超參數(shù),以便指標(biāo)超參數(shù)不同值之間的比較盡可能公平。
  • 在最簡(jiǎn)單的情況下,我們會(huì)對(duì)指標(biāo)參數(shù)的每個(gè)配置進(jìn)行單獨(dú)研究,對(duì)調(diào)整超參數(shù)進(jìn)行調(diào)整。
    • 例如,我們的目標(biāo)是在Nesterov momentum和Adam中選擇最佳優(yōu)化器,,我們可以創(chuàng)建一個(gè)研究,在其中optimizer="Nesterov_momentum" 調(diào)整參數(shù)為{learning_rate, momentum},另一項(xiàng)研究中optimizer="Adam" 調(diào)整參數(shù)為 {learning_rate,beta1, beta2, epsilon}。 我們將通過(guò)從每個(gè)研究中選擇表現(xiàn)最好的試驗(yàn)來(lái)比較兩個(gè)優(yōu)化器。
    • 我們可以使用任何無(wú)梯度的優(yōu)化算法,包括貝葉斯優(yōu)化或進(jìn)化算法,對(duì)調(diào)整超參數(shù)進(jìn)行優(yōu)化,盡管我們更傾向于在探索階段使用準(zhǔn)隨機(jī)搜索進(jìn)行調(diào)整,因?yàn)樗谶@種情況下有多種優(yōu)勢(shì)。在探索結(jié)束后,如果有最先進(jìn)的貝葉斯優(yōu)化庫(kù),這就是我們的首選。
  • 在更復(fù)雜的情況下,我們想比較大量的指標(biāo)超參數(shù),而做那么多獨(dú)立的研究是不現(xiàn)實(shí)的,我們可以把指標(biāo)參數(shù)和調(diào)整超參數(shù)列入同一個(gè)搜索空間,并使用搜索算法在一個(gè)研究中對(duì)指標(biāo)和調(diào)整超參數(shù)進(jìn)行抽樣。
    • 當(dāng)采取這種方法時(shí),條件超參數(shù)會(huì)引起問(wèn)題,因?yàn)槌钦{(diào)整超參數(shù)集對(duì)指標(biāo)超參數(shù)的所有值都是相同的,否則很難指定一個(gè)搜索空間。
    • 在這種情況下,我們更傾向于使用準(zhǔn)隨機(jī)搜索而不是更復(fù)雜的黑箱優(yōu)化工具,因?yàn)樗艽_保我們獲得相對(duì)統(tǒng)一的指標(biāo)超參數(shù)值的抽樣。不管是哪種搜索算法,我們都需要以某種方式確保它能均勻地搜索科學(xué)參數(shù)。
在內(nèi)容豐富的實(shí)驗(yàn)和負(fù)擔(dān)得起的實(shí)驗(yàn)之間取得平衡
[Click to expand]
  • 在設(shè)計(jì)一項(xiàng)研究或一系列研究時(shí),我們需要分配有限的預(yù)算,以充分實(shí)現(xiàn)以下三個(gè)愿望:
    1. 比較足夠多的指標(biāo)超參數(shù)
    2. 在足夠大的搜索空間內(nèi)調(diào)整調(diào)整超參數(shù)。
    3. 對(duì)調(diào)整超參數(shù)的搜索空間進(jìn)行足夠密集的采樣。
  • 我們?cè)侥軐?shí)現(xiàn)這三個(gè)愿望,我們的實(shí)驗(yàn)越有說(shuō)服力
    • 盡可能多地比較指標(biāo)超參數(shù)的值,擴(kuò)大我們從實(shí)驗(yàn)中獲得說(shuō)服力的范圍。
    • 包括盡可能多的調(diào)整超參數(shù),并允許每個(gè)調(diào)整超參數(shù)在盡可能大的范圍內(nèi)變化,這增加了我們的信心,即對(duì)于指標(biāo)超參數(shù)的每個(gè)配置,在搜索空間存在一個(gè) "好 "的調(diào)整超參數(shù)值。
      • 否則,我們可能會(huì)在指標(biāo)超參數(shù)的值之間進(jìn)行不公平的比較,因?yàn)槲覀儧](méi)有搜索調(diào)整參數(shù)空間的可能區(qū)域,在那里指標(biāo)參數(shù)可能存在更好的值。
    • 盡可能密集地對(duì)調(diào)整超參數(shù)的搜索空間進(jìn)行采樣,增加我們的信心,即任何恰好存在于我們搜索空間中的良好調(diào)整超參數(shù)都會(huì)被搜索程序發(fā)現(xiàn)。
      • 否則,我們可能會(huì)在指標(biāo)參數(shù)的值之間進(jìn)行不公平的比較,因?yàn)橛行┲翟谡{(diào)整超參數(shù)的抽樣中變得更幸運(yùn)。
  • 不幸的是,這三個(gè)維度中的任何一個(gè)改進(jìn)都需要增加試驗(yàn)的數(shù)量,從而增加資源成本,或者找到一種方法來(lái)節(jié)省其他維度的資源。
    • 每個(gè)問(wèn)題都有自己的特異性和計(jì)算限制,所以如何在這三個(gè)方面分配資源需要一定程度的領(lǐng)域知識(shí)。
    • 在運(yùn)行一項(xiàng)研究后,我們總是試圖了解該研究是否對(duì)調(diào)整超參數(shù)進(jìn)行了足夠好的調(diào)整(即對(duì)足夠大的空間進(jìn)行了足夠廣泛的搜索),以公平地比較科學(xué)的超參數(shù)(如下文更詳細(xì)地描述)。

從實(shí)驗(yàn)結(jié)果中提取靈感

概述: 除了努力實(shí)現(xiàn)每組實(shí)驗(yàn)的原始科學(xué)目標(biāo)外,還要通過(guò)附加問(wèn)題的檢查表,如果發(fā)現(xiàn)問(wèn)題,要修改實(shí)驗(yàn)并重新運(yùn)行。

  • 最終,每組實(shí)驗(yàn)都有一個(gè)具體的目標(biāo),我們要評(píng)估實(shí)驗(yàn)為實(shí)現(xiàn)這一目標(biāo)提供的證據(jù)。
    • 然而,如果我們提出正確的問(wèn)題,我們往往會(huì)發(fā)現(xiàn)在一組特定的實(shí)驗(yàn)?zāi)軌虺畛醯哪繕?biāo)取得很大進(jìn)展之前需要糾正的問(wèn)題。
      • 如果我們不問(wèn)這些問(wèn)題,我們可能會(huì)得出不正確的結(jié)論。
    • 由于運(yùn)行實(shí)驗(yàn)可能是昂貴的,我們也想借此機(jī)會(huì)從每組實(shí)驗(yàn)中提取其他有用的見(jiàn)解,即使這些見(jiàn)解與當(dāng)前的目標(biāo)沒(méi)有直接關(guān)系。
  • 在分析一組特定的實(shí)驗(yàn),使其向最初的目標(biāo)邁進(jìn)之前,我們應(yīng)該問(wèn)自己以下的附加問(wèn)題。
    • 搜索空間是否足夠大?
      • 如果一項(xiàng)研究的最佳點(diǎn)在一個(gè)或多個(gè)維度上接近搜索空間的邊界,那么搜索的范圍可能不夠大。在這種情況下,我們應(yīng)該用擴(kuò)大的搜索空間再進(jìn)行一次研究。
    • 我們是否從搜索空間中抽出了足夠的點(diǎn)?
      • 如果不是,就多跑點(diǎn)幾次,或者在調(diào)整目標(biāo)上不那么精益求精。
    • 在每項(xiàng)研究中,有多大比例的實(shí)驗(yàn)是 不可行的 (即試驗(yàn)出現(xiàn)分歧,得到非常糟糕的損失值,或者因?yàn)檫`反了一些隱含的約束條件而根本無(wú)法運(yùn)行)?
      • 當(dāng)研究中很大一部分點(diǎn)是不可行的,我們應(yīng)該嘗試調(diào)整搜索空間,以避免對(duì)這些點(diǎn)進(jìn)行采樣,這有時(shí)需要重新參數(shù)化搜索空間。
      • 在某些情況下,大量的不可行點(diǎn)可能表明訓(xùn)練代碼中存在錯(cuò)誤。
    • 該模型是否表現(xiàn)出優(yōu)化問(wèn)題?
    • 我們能從最佳試驗(yàn)的訓(xùn)練曲線中學(xué)到什么?
      • 例如,最佳試驗(yàn)的訓(xùn)練曲線是否出現(xiàn)了過(guò)擬合現(xiàn)象。
  • 如有必要,根據(jù)上述問(wèn)題的答案,完善最近的研究(或一組研究),以改進(jìn)搜索空間或?qū)Ω嗟脑囼?yàn)進(jìn)行抽樣,采取一些其他糾正措施。
  • 一旦我們回答了上述問(wèn)題,我們就可以繼續(xù)評(píng)估實(shí)驗(yàn)為實(shí)現(xiàn)我們最初的目標(biāo)所提供的證據(jù)(例如,評(píng)估一個(gè)變化是否有用).
識(shí)別不良的搜索空間邊界
[Click to expand]
  • 如果一個(gè)搜索空間中的最佳采樣點(diǎn)接近其邊界,那么這個(gè)搜索空間就是可疑的。如果我們向那個(gè)方向擴(kuò)大搜索范圍,我們可能會(huì)找到一個(gè)更好的點(diǎn)。
  • 為了檢查搜索空間的邊界,我們喜歡將完成的試驗(yàn)繪制在基本超參數(shù)軸圖上。我們將驗(yàn)證目標(biāo)值與其中一個(gè)超參數(shù)(例如學(xué)習(xí)率)進(jìn)行對(duì)比。圖上的每一個(gè)點(diǎn)都對(duì)應(yīng)于一個(gè)試驗(yàn)。
    • 每次試驗(yàn)的驗(yàn)證目標(biāo)值通常應(yīng)該是它在訓(xùn)練過(guò)程中取得的最佳值。
      Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)
      Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)

圖 1:不良搜索空間邊界和良好搜索空間邊界例子

  • 圖 1 顯示錯(cuò)誤率(越低越好)與初始學(xué)習(xí)率的對(duì)比。
  • 如果最佳點(diǎn)聚集在搜索空間的邊緣(在某些維度上),那么搜索空間的邊界可能需要擴(kuò)大,直到最佳觀察點(diǎn)不再靠近邊界。
  • 通常,一項(xiàng)研究會(huì)包括 "不可行 "的試驗(yàn),這些試驗(yàn)會(huì)出現(xiàn)分歧或得到非常糟糕的結(jié)果(在上圖中用紅色X標(biāo)記)。
    • 如果所有的試驗(yàn)對(duì)于學(xué)習(xí)率大于某個(gè)閾值的情況下是不可行的,并且如果表現(xiàn)最好的試驗(yàn)的學(xué)習(xí)率處于該區(qū)域的邊緣。 該模型可能存在穩(wěn)定性問(wèn)題,使其無(wú)法獲得更高的學(xué)習(xí)率。
在搜索空間中未對(duì)足夠的點(diǎn)進(jìn)行采樣
[Click to expand]
  • 一般來(lái)說(shuō),要知道搜索空間的采樣是否足夠密集是非常困難的??
  • 進(jìn)行更多的試驗(yàn)當(dāng)然更好,但也有明顯的代價(jià)。
  • 由于很難知道我們什么時(shí)候采樣夠了,所以我們通常會(huì)對(duì)我們能負(fù)擔(dān)得起的東西進(jìn)行采樣,并試圖反復(fù)觀察各種超參數(shù)軸圖中校準(zhǔn)我們的直覺(jué),并試圖了解有多少點(diǎn)在搜索空間的 "好 "區(qū)域。
檢查訓(xùn)練曲線
[Click to expand]

概述: 檢查訓(xùn)練曲線是識(shí)別常見(jiàn)故障的一個(gè)簡(jiǎn)單方法,可以幫助我們確定下一步要采取行動(dòng)的優(yōu)先次序。

  • 雖然在很多情況下,我們實(shí)驗(yàn)的主要目標(biāo)只需要考慮每一次試驗(yàn)的驗(yàn)證損失,但當(dāng)把每一次試驗(yàn)簡(jiǎn)化為一個(gè)單一的數(shù)字時(shí),我們必須小心,因?yàn)樗赡軙?huì)隱藏表面之下的重要細(xì)節(jié)。
  • 對(duì)于每項(xiàng)研究,我們總是至少看最好的幾項(xiàng)試驗(yàn)的訓(xùn)練曲線(訓(xùn)練損失和驗(yàn)證損失與訓(xùn)練steps在訓(xùn)練期間的關(guān)系圖)。
  • 即使這對(duì)解決主要的實(shí)驗(yàn)?zāi)繕?biāo)沒(méi)有幫助,檢查訓(xùn)練曲線也是識(shí)別常見(jiàn)故障模式的一個(gè)簡(jiǎn)單方法,可以幫助我們確定下一步要采取行動(dòng)的優(yōu)先次序。
  • 在研究訓(xùn)練曲線時(shí),我們對(duì)以下問(wèn)題感興趣。
  • 是否有試驗(yàn)表現(xiàn)出過(guò)擬合現(xiàn)象?
    • 當(dāng)驗(yàn)證誤差在訓(xùn)練過(guò)程中的某個(gè)時(shí)刻開(kāi)始增加時(shí),就可能會(huì)出現(xiàn)過(guò)擬合現(xiàn)象。
    • 在實(shí)驗(yàn)環(huán)境中,我們通過(guò)為每個(gè)指標(biāo)超參數(shù)設(shè)置選擇 "最佳 "試驗(yàn)來(lái)優(yōu)化調(diào)整超參數(shù),我們應(yīng)該在每個(gè)實(shí)驗(yàn)中檢查過(guò)擬合問(wèn)題。
      • 如果有一個(gè)最佳試驗(yàn)表現(xiàn)出過(guò)擬合現(xiàn)象,我們通常要用額外的正則化技術(shù)重新進(jìn)行試驗(yàn),或在比較指標(biāo)超參數(shù)的值之前更好地調(diào)整現(xiàn)有的正則化參數(shù)。
        • 如果指標(biāo)超參數(shù)包括正則化參數(shù),這可能就不適用了,因?yàn)槟菢拥脑?,正則化參數(shù)設(shè)置過(guò)低導(dǎo)致出現(xiàn)過(guò)擬合,也就不奇怪了。
      • 減少過(guò)擬合通常是直接使用常見(jiàn)的正則化技術(shù),這些技術(shù)略微增加了代碼復(fù)雜性或額外的計(jì)算(例如dropout、label smoothing、weight decay),在下一輪實(shí)驗(yàn)中增加一個(gè)或多個(gè)這樣的技術(shù)通常沒(méi)什么大不了的。
      • 例如,如果指標(biāo)超參數(shù)是 “隱藏層的數(shù)量”,而使用最大數(shù)量隱藏層的最佳試驗(yàn)表現(xiàn)出過(guò)擬合現(xiàn)象,那么我們通常傾向于用額外的正則化來(lái)再次嘗試,而不是立即選擇較小數(shù)量的隱藏層。
      • 即使沒(méi)有一個(gè) "最好的 "試驗(yàn)表現(xiàn)出有問(wèn)題的過(guò)度擬合,但如果在任何試驗(yàn)中出現(xiàn)這種情況,仍然可能有問(wèn)題。
        • 選擇最好的試驗(yàn)會(huì)抑制出現(xiàn)過(guò)擬合的配置,而偏向于那些沒(méi)有問(wèn)題的配置。換句話說(shuō),它將有利于具有更多規(guī)范化的配置。
        • 然而,任何使訓(xùn)練變得更糟糕的東西都可以作為正則器,即使它并不打算這樣做。例如,選擇一個(gè)較小的學(xué)習(xí)率可以通過(guò)阻礙優(yōu)化過(guò)程來(lái)規(guī)范訓(xùn)練,但我們通常不希望以這種方式選擇學(xué)習(xí)率。
        • 因此,我們必須意識(shí)到,為每一個(gè)指標(biāo)超參數(shù)設(shè)置的 "最佳 "試驗(yàn)可能是某些指標(biāo)或調(diào)整超參數(shù)產(chǎn)生了“壞”的結(jié)果。
  • 在訓(xùn)練后期,訓(xùn)練或驗(yàn)證損失是否存在較高的step與step之間的差異?
    • 如果是這樣,這可能會(huì)干擾我們比較不同指標(biāo)超參數(shù)值的能力(因?yàn)槊總€(gè)試驗(yàn)都隨機(jī)地在一個(gè) "幸運(yùn) "或 "不幸運(yùn) "的步驟上結(jié)束),以及我們?cè)谏a(chǎn)中重現(xiàn)最佳試驗(yàn)結(jié)果的能力(因?yàn)樯a(chǎn)模型可能不會(huì)在研究中的相同 "幸運(yùn) "步驟上結(jié)束)。
    • 最有可能導(dǎo)致步與步之間差異的原因是批次差異(從每批訓(xùn)練集中隨機(jī)抽取例子),小的驗(yàn)證集,以及在訓(xùn)練后期使用過(guò)高的學(xué)習(xí)率。
    • 可能的補(bǔ)救措施包括增加批次大小,獲得更多的驗(yàn)證數(shù)據(jù),使用學(xué)習(xí)率衰減,或使用Polyak平均法。
  • 訓(xùn)練結(jié)束后,試驗(yàn)是否仍在改進(jìn)?
    • 如果是這樣,這表明我們處于“計(jì)算約束”狀態(tài),我們可能會(huì)從增加訓(xùn)練steps的數(shù)量或改變學(xué)習(xí)率策略中得到改善。
  • 在最后的訓(xùn)練步驟之前,訓(xùn)練集和驗(yàn)證集的性能是否早已飽和?
    • 如果是這樣,這表明我們處于“不受計(jì)算約束”狀態(tài),我們可能會(huì)從增加訓(xùn)練steps的數(shù)量或改變學(xué)習(xí)率策略中得到改善。
  • 雖然我們不能一一列舉,但還有許多其他的行為可以通過(guò)檢查訓(xùn)練曲線而變得明顯(例如,訓(xùn)練損失在訓(xùn)練過(guò)程中增加,通常表明訓(xùn)練管道中存在錯(cuò)誤)。
用隔離圖檢測(cè)參數(shù)變化是否有用
[Click to expand]

Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)

圖 2: ImageNet上訓(xùn)練的ResNet-50最佳權(quán)重衰減值隔離圖

  • 通常,一組實(shí)驗(yàn)的目標(biāo)是比較一個(gè)指標(biāo)超參數(shù)的不同值。
    • 例如,我們可能想確定導(dǎo)致最佳驗(yàn)證損失的權(quán)重衰減值。
  • 隔離圖是基本超參數(shù)軸圖的一個(gè)特例。隔離圖上的每一個(gè)點(diǎn)都對(duì)應(yīng)于一些(或全部)調(diào)整超參數(shù)的最佳試驗(yàn)的性能。
    • 換句話說(shuō),我們?cè)?"優(yōu)化 "了調(diào)整超參數(shù)之后,繪制了模型的性能。
  • 隔離圖使其更容易在指標(biāo)超參數(shù)的不同值之間進(jìn)行對(duì)應(yīng)的比較。
  • 例如,圖 2 顯示了在ImageNet上訓(xùn)練的ResNet-50的特定配置下產(chǎn)生最佳驗(yàn)證性能的權(quán)重衰減值。
    • 如果我們的目標(biāo)是確定是否要加入權(quán)重衰減,那么我們將把這個(gè)圖中的最佳點(diǎn)與沒(méi)有權(quán)重衰減的基線進(jìn)行比較。為了進(jìn)行公平的比較,基線也應(yīng)該對(duì)其學(xué)習(xí)率進(jìn)行同樣良好的調(diào)整。
  • 當(dāng)我們有由(準(zhǔn))隨機(jī)搜索產(chǎn)生的數(shù)據(jù),并考慮用一個(gè)連續(xù)的超參數(shù)來(lái)繪制隔離圖時(shí),我們可以通過(guò)對(duì)基本超參數(shù)軸圖的X軸值進(jìn)行分桶,并在分桶定義的每個(gè)垂直切片中取最佳試驗(yàn)來(lái)近似繪制隔離圖。
自動(dòng)生成常用檢查圖譜
[Click to expand]
  • 繪制的圖譜越多,我們就能從中獲得更多信息。因此,我們有必要設(shè)置基礎(chǔ)模塊,以自動(dòng)參數(shù)盡可能多的圖譜
  • 至少,我們會(huì)對(duì)實(shí)驗(yàn)中改變的所有超參數(shù)自動(dòng)生成基本的超參數(shù)軸圖。
  • 此外,我們?yōu)樗械脑囼?yàn)自動(dòng)生成訓(xùn)練曲線,并盡可能方便地找到每項(xiàng)研究中最好的幾個(gè)試驗(yàn),檢查它們的訓(xùn)練曲線。
  • 我們還可以添加許多其他潛在的繪圖和可視化的東西,這些都是有用的。雖然上面描述的那些是一個(gè)很好的起點(diǎn),但套用Geoffrey Hinton的話說(shuō),"每當(dāng)你繪制新的東西,你就會(huì)學(xué)到新的東西。

確定是否采用訓(xùn)練管道變化或超參數(shù)配置

概述: 當(dāng)決定是否對(duì)我們的模型或訓(xùn)練程序進(jìn)行改變或采用新的超參數(shù)配置前進(jìn)時(shí),我們需要意識(shí)到結(jié)果中不同的變化來(lái)源。

  • 當(dāng)我們?cè)噲D改進(jìn)模型時(shí),可能會(huì)觀察到,與現(xiàn)有的配置相比,一個(gè)特定的候選變化最初取得了很好的驗(yàn)證損失,但在重復(fù)實(shí)驗(yàn)后發(fā)現(xiàn),沒(méi)有一致的優(yōu)勢(shì)。非正式地,我們可以把導(dǎo)致這種不一致結(jié)果最重要的變化來(lái)源分為以下幾大類。
    • 訓(xùn)練程序方差, 再訓(xùn)練方差, 或 試驗(yàn)方差: 當(dāng)我們使用相同的超參數(shù),但不同的隨機(jī)種子時(shí)會(huì)導(dǎo)致訓(xùn)練過(guò)程的差距。
      • 例如,不同的隨機(jī)初始化、training data shuffles、dropout masks、數(shù)據(jù)增強(qiáng)操作模式和并行算術(shù)操作順序,都是試驗(yàn)差異的潛在來(lái)源。
    • 超參數(shù)搜索方差,或學(xué)習(xí)方差:由與選擇搜索超參數(shù)的方式引起的結(jié)果差異。
      • 例如,我們可能用一個(gè)特定的搜索空間運(yùn)行同一個(gè)實(shí)驗(yàn),但用兩個(gè)不同的種子進(jìn)行準(zhǔn)隨機(jī)搜索,最后選擇不同的超參數(shù)值。
    • 數(shù)據(jù)收集和抽樣差異:任何一種隨機(jī)分成訓(xùn)練、驗(yàn)證和測(cè)試數(shù)據(jù)的差異,或更普遍地由于訓(xùn)練數(shù)據(jù)生成過(guò)程而產(chǎn)生的差異。
  • 使用嚴(yán)格的統(tǒng)計(jì)測(cè)試對(duì)有限驗(yàn)證集上估計(jì)的驗(yàn)證錯(cuò)誤率進(jìn)行比較是很好的,但往往僅試驗(yàn)方差就能在使用相同超參數(shù)設(shè)置的兩個(gè)不同的訓(xùn)練模型之間產(chǎn)生統(tǒng)計(jì)上的顯著差異。
  • 在試圖做出超越超參數(shù)空間中單個(gè)點(diǎn)的水平結(jié)論時(shí),我們最關(guān)心的是研究方差。
    • 研究方差取決于試驗(yàn)的數(shù)量和搜索空間,它比試驗(yàn)方差大以及小得多的情況都有可能發(fā)生。
  • 因此,在采用一個(gè)候選變化之前,考慮運(yùn)行最佳試驗(yàn)N次,以描述試驗(yàn)的差異。
    • 通常情況下,我們可以在管道發(fā)生重大變化后只對(duì)試驗(yàn)差異進(jìn)行重新定性,但在某些應(yīng)用中,我們可能需要更頻繁的估計(jì)。
    • 在其他應(yīng)用中,表征試驗(yàn)方差的成本太高,不值得。
  • 在試驗(yàn)結(jié)束時(shí),雖然我們只想采用能產(chǎn)生真正改進(jìn)的變化(包括新的超參數(shù)配置),但要求完全確定某種東西有幫助,也不是完全。
  • 因此,如果一個(gè)新的超參數(shù)點(diǎn)(或其他變化)得到了比基線更好的結(jié)果(盡可能考慮到新點(diǎn)和基線的再訓(xùn)練方差),那么我們可能應(yīng)該把它作為新的基線,用于未來(lái)的比較。
    • 然而,我們應(yīng)該只采用那些產(chǎn)生的改進(jìn)超過(guò)其增加復(fù)雜性帶來(lái)收益的。

探索結(jié)束后

概述: 一旦我們完成了對(duì)搜索空間的探索,并決定了哪些超參數(shù)應(yīng)該被調(diào)整,貝葉斯優(yōu)化工具就是一個(gè)引人注目的選擇。

  • 在某些時(shí)候,我們優(yōu)先考慮產(chǎn)生一個(gè)最佳配置,滯后調(diào)參問(wèn)題。
  • 在這一點(diǎn)上,應(yīng)該有一個(gè)精煉的搜索空間,它舒適地包含了最佳觀察試驗(yàn)周圍的局部區(qū)域,并且已經(jīng)被充分地采樣了。
  • 我們的探索工作應(yīng)該已經(jīng)揭示了最基本的超參數(shù)的調(diào)整(以及它們的合理范圍),我們可以利用盡可能大的調(diào)整預(yù)算來(lái)構(gòu)建一個(gè)搜索空間,以進(jìn)行最終的自動(dòng)調(diào)整。
  • 由于我們不再關(guān)心參數(shù)帶來(lái)的靈感,隨機(jī)搜索許多優(yōu)勢(shì)不再適用,應(yīng)該使用貝葉斯優(yōu)化工具來(lái)自動(dòng)尋找最佳超參數(shù)配置。
    • 如果搜索空間包含非顯著的發(fā)散點(diǎn)(得到NaN訓(xùn)練損失或比平均值差很多的訓(xùn)練損失點(diǎn)),使用適當(dāng)處理發(fā)散試驗(yàn)的黑匣優(yōu)化工具是很重要的 (參考帶未知約束的貝葉斯優(yōu)化是處理這個(gè)問(wèn)題一個(gè)很好的方法)。
  • 在這一點(diǎn)上,我們還應(yīng)該考慮檢查測(cè)試集上的性能。
    • 原則上,我們甚至可以將驗(yàn)證集折疊到訓(xùn)練集中,重新訓(xùn)練用貝葉斯優(yōu)化法找到的最佳配置。然而,這只適合于未來(lái)不會(huì)有這種特定工作量的啟動(dòng)(例如,一次性的Kaggle比賽)。

確定訓(xùn)練steps

  • 有兩種類型的工作負(fù)載:一種是與計(jì)算有關(guān)的,另一種是與計(jì)算無(wú)關(guān)的。
  • 當(dāng)訓(xùn)練受計(jì)算限制時(shí),訓(xùn)練受限于我們?cè)敢獾却嚅L(zhǎng)時(shí)間,而不是受限于有多少訓(xùn)練數(shù)據(jù)或其他因素。
    • 在這種情況下,如果我們能以某種方式延長(zhǎng)訓(xùn)練時(shí)間或提高訓(xùn)練效率,我們應(yīng)該看到較低的訓(xùn)練損失,并且通過(guò)適當(dāng)?shù)恼{(diào)整,改善驗(yàn)證損失。
    • 換句話說(shuō),加快訓(xùn)練速度就等于改善訓(xùn)練,而 "最佳 "訓(xùn)練時(shí)間總是 “在我們能承受的范圍內(nèi)”。
    • 也就是說(shuō),工作負(fù)荷是有限的,并不意味著更長(zhǎng)/更快的訓(xùn)練是提高結(jié)果的唯一途徑。
  • 當(dāng)訓(xùn)練不受計(jì)算限制時(shí),我們可以負(fù)擔(dān)得起我們想訓(xùn)練多久就訓(xùn)練多久,而且,在某些時(shí)候,訓(xùn)練時(shí)間越長(zhǎng)越?jīng)]有幫助(甚至?xí)?dǎo)致過(guò)擬合問(wèn)題)。
    • 在這種情況下,我們應(yīng)該期望能夠訓(xùn)練到非常低的訓(xùn)練損失,以至于訓(xùn)練時(shí)間越長(zhǎng)可能會(huì)稍微減少訓(xùn)練損失,但不會(huì)很大幅度地減少驗(yàn)證損失。
    • 特別是當(dāng)訓(xùn)練不受計(jì)算限制時(shí),充足的訓(xùn)練時(shí)間預(yù)算可以使調(diào)諧更容易,特別是在調(diào)諧學(xué)習(xí)率衰減時(shí)間表時(shí),因?yàn)樗鼈兣c訓(xùn)練預(yù)算有特別強(qiáng)的互動(dòng)。
      • 換句話說(shuō),匱乏的訓(xùn)練時(shí)間預(yù)算可能需要將學(xué)習(xí)率衰減計(jì)劃調(diào)整到完美狀態(tài),以達(dá)到良好的損失。
  • 不管一個(gè)給定的工作負(fù)載是否有計(jì)算限制,增加梯度方差(跨批次)的方法通常會(huì)導(dǎo)致較慢的訓(xùn)練進(jìn)度,從而可能增加達(dá)到特定驗(yàn)證損失所需的訓(xùn)練步驟。高梯度方差可能是由以下原因造成的。
    • 使用小的batch size
    • 增加數(shù)據(jù)增量
    • 添加某些類型的正則化(如dropout)。

當(dāng)訓(xùn)練不限時(shí)時(shí)應(yīng)該訓(xùn)練多長(zhǎng)時(shí)間

  • 我們的主要目標(biāo)是確保訓(xùn)練時(shí)間足夠長(zhǎng),以使模型達(dá)到最好的結(jié)果,同時(shí)避免訓(xùn)練steps的數(shù)量過(guò)多。
  • 在有問(wèn)題的情況下,請(qǐng)選擇較長(zhǎng)的訓(xùn)練時(shí)間。假設(shè)回視(最佳)檢查點(diǎn)選擇得當(dāng),并且足夠頻繁,那么訓(xùn)練時(shí)間越長(zhǎng),性能就越不會(huì)下降。
  • 不要在試驗(yàn)中調(diào)整max_train_steps 的值。選擇一個(gè)常數(shù),并將其用于所有實(shí)驗(yàn)。從這些試驗(yàn)中,觀察各訓(xùn)練steps中回視檢查點(diǎn),以完善max_train_steps的選擇
    • 例如,如果最佳step總是在訓(xùn)練steps的前10%,那么max_train_steps就太高了。
    • 另外,如果最佳step一直在訓(xùn)練steps的后25%,更長(zhǎng)的訓(xùn)練時(shí)間和重新調(diào)整的衰減策略可能會(huì)更進(jìn)一步提升性能。
  • 當(dāng)架構(gòu)或數(shù)據(jù)發(fā)生變化時(shí),理想的訓(xùn)練steps數(shù)量會(huì)發(fā)生變化(例如增加數(shù)據(jù)增量)。
  • 下面我們將描述如何使用恒定學(xué)習(xí)率確定合適的訓(xùn)練集所需steps,為max_train_steps挑選一個(gè)初始候選值。
    • 請(qǐng)注意,我們并不是以精確或數(shù)學(xué)上明確的方式使用 "完全適合訓(xùn)練集 "這一短語(yǔ)。它只是作為一個(gè)非正式的描述詞,表示訓(xùn)練損失非常小。
      • 例如,當(dāng)用log loss進(jìn)行訓(xùn)練時(shí),如果沒(méi)有正則化,我們可能會(huì)看到訓(xùn)練損失一直在緩慢提高,直到達(dá)到浮點(diǎn)極限,因?yàn)榫W(wǎng)絡(luò)權(quán)重?zé)o限制地增長(zhǎng),模型對(duì)訓(xùn)練集的預(yù)測(cè)變得越來(lái)越自信。在這種情況下,我們可以說(shuō),錯(cuò)誤分類誤差在訓(xùn)練集上達(dá)到零的時(shí)候,模型 "完全適合 "訓(xùn)練集。
    • 如果訓(xùn)練過(guò)程中的梯度噪聲增加,max_train_steps的起始值可能需要增加。
      • 例如,如果在模型中引入數(shù)據(jù)增強(qiáng)或正則器(如dropout)。
    • 如果訓(xùn)練過(guò)程有一定的改善,可能會(huì)減少max_train_steps
      • 例如,用一個(gè)更好的優(yōu)化器或一個(gè)更好的學(xué)習(xí)率衰減策略。
使用學(xué)習(xí)率掃描為max_train_steps挑選初始值
[Click to expand]
  • 這個(gè)程序假定不僅有可能 "完美 "地?cái)M合訓(xùn)練集,而且可以使用恒定的學(xué)習(xí)率計(jì)劃來(lái)實(shí)現(xiàn)。
  • 如果有可能完全適合整個(gè)訓(xùn)練集,那么一定存在一個(gè)配置(某個(gè)max_train_steps的值)完全適合訓(xùn)練集;找到這樣的配置并使用其max_train_steps的值作為起點(diǎn)N
  • 在沒(méi)有數(shù)據(jù)增強(qiáng)和正則化的情況下,運(yùn)行恒定的學(xué)習(xí)率掃描(即網(wǎng)格搜索學(xué)習(xí)率),其中每個(gè)試驗(yàn)訓(xùn)練了N步。
  • 我們對(duì)max_train_steps的初步猜測(cè)是,在掃描中最快達(dá)到完美訓(xùn)練性能所需的steps。
  • 注意:不良的搜索空間會(huì)具有欺騙性。
    • 例如,如果一項(xiàng)試驗(yàn)中的所有學(xué)習(xí)率都太小,我們可能會(huì)錯(cuò)誤地得出結(jié)論,認(rèn)為一個(gè)非常大的max_train_steps值是必要的。
    • 至少,我們應(yīng)該檢查試驗(yàn)中的最佳學(xué)習(xí)率是否處于搜索空間的邊界。

當(dāng)訓(xùn)練由計(jì)算機(jī)控制時(shí)應(yīng)該訓(xùn)練多長(zhǎng)時(shí)間

  • 在某些情況下,訓(xùn)練損失一直在無(wú)限期地改善,我們的耐心和計(jì)算資源成為限制因素。
  • 如果訓(xùn)練損失(甚至是驗(yàn)證損失)一直在無(wú)限期地改善,那么我們是否應(yīng)該一直訓(xùn)練,只要我們能夠負(fù)擔(dān)得起?不一定。
    • 通過(guò)運(yùn)行大量較短的實(shí)驗(yàn),并為我們希望推出的模型保留最長(zhǎng)的 “production length”,也許能夠更有效地進(jìn)行調(diào)整。
    • 隨著試驗(yàn)的訓(xùn)練時(shí)間接近我們的耐心極限,調(diào)參實(shí)驗(yàn)對(duì)我們潛在的模型候選來(lái)說(shuō)變得更加相關(guān),但我們能完成的實(shí)驗(yàn)卻更少。
    • 可能有很多問(wèn)題我們可以在只訓(xùn)練~10%的訓(xùn)練長(zhǎng)度時(shí)回答,但總是有一種風(fēng)險(xiǎn),即我們?cè)谶@個(gè)時(shí)間限制下的結(jié)論將不適用于20%的訓(xùn)練長(zhǎng)度的實(shí)驗(yàn),更不用說(shuō)100%了。
  • 在多輪訓(xùn)練中進(jìn)行調(diào)參,并增加每輪訓(xùn)練的steps限制,是一種明智的做法。
    • 我們可以想做多少輪就做多少輪,但通常1-3輪是最實(shí)際的。
    • 從本質(zhì)上講,盡量使用周轉(zhuǎn)時(shí)間非??斓脑囼?yàn)來(lái)獲得對(duì)問(wèn)題的理解,用調(diào)整的徹底性和與最終最長(zhǎng)運(yùn)行的相關(guān)性來(lái)交換。
    • 一旦每一次試驗(yàn)的時(shí)間限制產(chǎn)生了有用的見(jiàn)解,我們就可以增加訓(xùn)練時(shí)間并繼續(xù)調(diào)整,根據(jù)需要反復(fù)檢查從較短的運(yùn)行中得出的結(jié)論。
  • 作為一個(gè)起點(diǎn),我們建議進(jìn)行兩輪的調(diào)整:
    • Round 1:縮短運(yùn)行時(shí)間,以找到好的模型和優(yōu)化器超參數(shù)。
    • Round 2:在良好的超參數(shù)點(diǎn)上進(jìn)行很少的長(zhǎng)時(shí)間運(yùn)行,以獲得最終模型。
  • Round iRound i+1 最大的問(wèn)題是如何調(diào)整學(xué)習(xí)率衰減策略。
    • 在調(diào)整各輪學(xué)習(xí)率策略時(shí),一個(gè)常見(jiàn)的陷阱是用太小的學(xué)習(xí)率來(lái)使用所有的額外訓(xùn)練步驟。
Round 1
[Click to expand]
  • 不幸的是,不能保證在短期不完整的訓(xùn)練中發(fā)現(xiàn)的好的超參數(shù)在訓(xùn)練長(zhǎng)度大幅增加時(shí)仍然是好的選擇。然而,對(duì)于某些種類的超參數(shù)來(lái)說(shuō),它們往往有足夠的相關(guān)性,因此第一回合是有用的。
  • 在較短的運(yùn)行中發(fā)現(xiàn)的哪些超參數(shù)值,能轉(zhuǎn)移到較長(zhǎng)的訓(xùn)練運(yùn)行中去?對(duì)于所有這些,我們需要更多的研究。但是根據(jù)我們目前所了解的情況,以下是作者的猜測(cè),按照概率遞減的順序。
    • 非常有可能轉(zhuǎn)移
      • 早期訓(xùn)練的不穩(wěn)定性可以在第一輪調(diào)整中用較少的訓(xùn)練步驟來(lái)解決。也許這些超參數(shù)是我們所擁有的最接近于肯定的轉(zhuǎn)移的東西。
        • Warmup length
        • Initialization
    • 有可能轉(zhuǎn)移
      • 模型架構(gòu)中的戲劇性勝利通常會(huì)轉(zhuǎn)移,但可能有許多反例。
    • 可能會(huì)轉(zhuǎn)移
      • 優(yōu)化算法/優(yōu)化器超參數(shù) - 我們認(rèn)為這將 "松散地 "轉(zhuǎn)移。它肯定比上面的東西要弱。
      • Data augmentation
      • Regularization
        • 如果不可能完全擬合訓(xùn)練集,模型可能處于正則化不太可能有很大幫助的狀態(tài)。
    • 不太可能轉(zhuǎn)移
      • Learning rate schedule:不太可能完美轉(zhuǎn)移。
        • 這篇文章表面即使學(xué)習(xí)率衰變策略可以轉(zhuǎn)移,但我們不認(rèn)為這在一般情況下是真的。比如。在小的訓(xùn)練step上調(diào)整sqrt衰減,然后擴(kuò)展到大的步數(shù),會(huì)導(dǎo)致大部分訓(xùn)練發(fā)生在過(guò)小的step上。
          • 在極端訓(xùn)練預(yù)算的限制下,人們可能會(huì)對(duì)大多數(shù)時(shí)間表做得 “足夠好”,但如果對(duì)其進(jìn)行調(diào)整,可能會(huì)看到明顯的性能改進(jìn)。
        • 理解隨機(jī)元優(yōu)化中的短跨度偏差 描述了試圖短視地挑選學(xué)習(xí)率的危險(xiǎn)性。
Round 2
[Click to expand]
  • 運(yùn)行第一回合的最佳超參數(shù)配置。
  • (猜測(cè)) ?? 利用額外的steps來(lái)延長(zhǎng)高學(xué)習(xí)率的訓(xùn)練期。
    • 例如,如果是線性計(jì)劃,那么從第一輪開(kāi)始就保持衰減的長(zhǎng)度不變,并在開(kāi)始時(shí)延長(zhǎng)恒定lr的時(shí)間。
    • 對(duì)于余弦衰減,只需保留第一輪的基礎(chǔ)lr,并像Chinchilla論文中那樣擴(kuò)展max_train_steps
  • 對(duì)于擁有非常成熟的建模和調(diào)參管道以及長(zhǎng)時(shí)間的生產(chǎn)培訓(xùn)運(yùn)行團(tuán)隊(duì)來(lái)說(shuō),更多的輪次可能是有意義的,但它們往往是矯枉過(guò)正。
    • 我們已經(jīng)描述了如何從Step 1 → Step 2。如果我們不關(guān)心時(shí)間,有效利用計(jì)算是壓倒一切的關(guān)注點(diǎn),那么理想的做法是在許多不同的調(diào)整回合中以指數(shù)形式增加訓(xùn)練運(yùn)行的長(zhǎng)度(從而增加完成一項(xiàng)研究的端到端時(shí)間)
      • 在每一輪比賽中,我們系統(tǒng)地確保選擇繼續(xù)保持。
      • 新的想法要經(jīng)過(guò)一個(gè)管道,從Step i → Step i+1,使用越來(lái)越長(zhǎng)的實(shí)驗(yàn)來(lái)逐步解讀它們。

對(duì)訓(xùn)練管道的補(bǔ)充指導(dǎo)

優(yōu)化輸入管道

概述: 輸入受限于管道的原因和干預(yù)措施在很大程度上取決于任務(wù);使用剖析器并注意常見(jiàn)的問(wèn)題。

  • 使用適當(dāng)?shù)姆治銎鱽?lái)診斷輸入約束管道。比如JAX的Perfetto或TensorFlow的TensorFlow profiler。
  • 最終,具體的原因和干預(yù)措施將高度依賴于任務(wù)。更廣泛的工程考慮(如最大限度地減少磁盤(pán)占用)可能會(huì)導(dǎo)致輸入管道性能變差。
  • 常見(jiàn)的原因:
    • 數(shù)據(jù)沒(méi)有與訓(xùn)練過(guò)程同步,導(dǎo)致I/O延遲(這可能發(fā)生在通過(guò)網(wǎng)絡(luò)讀取訓(xùn)練數(shù)據(jù)時(shí))。
    • 昂貴的在線數(shù)據(jù)預(yù)處理(考慮離線做一次并保存)。
    • 非故意的同步障礙,干擾了數(shù)據(jù)管道讀取。例如,在CommonLoopUtils中設(shè)備和主機(jī)之間同步度量時(shí)。
  • 常見(jiàn)提示:
    • Instrument input pipeline to prefetch examples (例如tf.data.Dataset.prefetch)
    • 盡可能早地從每一個(gè)管道中刪除未使用的功能/數(shù)據(jù)。
    • 增加為輸入管道生成例子的復(fù)制。例如,通過(guò)使用tf.data service.

評(píng)估模型性能

概述: 以比訓(xùn)練更大的批次規(guī)模運(yùn)行評(píng)估。以定期的步驟間隔,而不是定期的時(shí)間間隔來(lái)運(yùn)行評(píng)估。

評(píng)估設(shè)置
[Click to expand]
  • 我們可以在幾種情況下評(píng)估我們模型的性能
    • 在線評(píng)估 - 當(dāng)模型在生產(chǎn)環(huán)境中提供預(yù)測(cè)服務(wù)時(shí),會(huì)收集指標(biāo)。
    • 離線評(píng)估 - 當(dāng)模型在生產(chǎn)環(huán)境中提供預(yù)測(cè)服務(wù)時(shí),會(huì)收集指標(biāo)。
    • 定期評(píng)估 - 在模型訓(xùn)練期間收集的指標(biāo)可能是離線評(píng)估的代理,或在離線評(píng)估中使用的數(shù)據(jù)子集。
  • 在線評(píng)估是黃金標(biāo)準(zhǔn),但在模型開(kāi)發(fā)階段往往是不現(xiàn)實(shí)的。
  • 根據(jù)問(wèn)題的不同,離線評(píng)估可能是相當(dāng)復(fù)雜的,而且計(jì)算成本很高。
  • 定期評(píng)估是最實(shí)用和經(jīng)濟(jì)的選擇,但可能不能完全代表生產(chǎn)環(huán)境。
    • 在定期評(píng)估期間,我們的目標(biāo)是使用離線評(píng)估的便捷代理,而不犧牲我們?cè)谟?xùn)練期間得到的信息可靠性。
設(shè)置定期評(píng)估
[Click to expand]
  • 我們?cè)谟?xùn)練過(guò)程中進(jìn)行定期評(píng)估,以實(shí)時(shí)監(jiān)測(cè)其進(jìn)展,便于回顧性地選擇模型檢查點(diǎn),這樣我們就可以在訓(xùn)練結(jié)束后檢查訓(xùn)練曲線。
  • 最簡(jiǎn)單的配置是在同一個(gè)計(jì)算實(shí)例中進(jìn)行訓(xùn)練和定期評(píng)估,定期交替進(jìn)行訓(xùn)練和評(píng)估。
    • 在這種情況下,用于執(zhí)行評(píng)估的批次大小至少應(yīng)該和用于訓(xùn)練的批次大小一樣大,因?yàn)樵谠u(píng)估過(guò)程中不需要維護(hù)模型的激活,降低了每個(gè)例子的計(jì)算要求。
  • 定期評(píng)估應(yīng)該以固定的steps間隔進(jìn)行,而不是以時(shí)間間隔進(jìn)行。
    • 基于時(shí)間間隔進(jìn)行評(píng)估會(huì)使解釋訓(xùn)練曲線變得更加困難,特別是當(dāng)訓(xùn)練可能受到訓(xùn)練作業(yè)的搶占、網(wǎng)絡(luò)延遲問(wèn)題等的影響。
  • 驗(yàn)證/測(cè)試指標(biāo)的周期性(當(dāng)使用洗牌的訓(xùn)練/驗(yàn)證/測(cè)試分割時(shí))可以顯示錯(cuò)誤,如測(cè)試數(shù)據(jù)與訓(xùn)練數(shù)據(jù)重疊,或訓(xùn)練數(shù)據(jù)沒(méi)有被正確洗牌。以定期的steps間隔進(jìn)行評(píng)估可以使這些問(wèn)題更容易被發(fā)現(xiàn)。
  • 當(dāng)評(píng)估集不能被batch size所分割時(shí),就會(huì)出現(xiàn)部分批次。確保被填充的例子有正確的權(quán)重,以防止損失函數(shù)被它們所偏離。通常,這些被填充的例子可以被賦予零的權(quán)重。
  • 每次評(píng)估要保存足夠的信息以支持離線分析。理想情況下,我們會(huì)保存對(duì)個(gè)別例子的預(yù)測(cè),因?yàn)樗鼈儗?duì)于調(diào)試是非常有價(jià)值的。
    • 生成類似SavedModels,可以在評(píng)估工作結(jié)束后輕松進(jìn)行臨時(shí)的模型檢查。
選擇定期評(píng)估的樣本
[Click to expand]
  • 定期評(píng)估工作的運(yùn)行速度可能不夠快,無(wú)法在合理的時(shí)間內(nèi)計(jì)算完整的離線評(píng)估集指標(biāo)。這往往需要對(duì)定期評(píng)估的數(shù)據(jù)進(jìn)行抽樣。
  • 在構(gòu)建抽樣數(shù)據(jù)集時(shí),我們考慮以下因素。
    • 樣本數(shù)量
      • 檢查定期工作所使用的抽樣數(shù)據(jù)集上計(jì)算的性能是否與整個(gè)離線評(píng)估集上的性能相匹配,即抽樣集和完整數(shù)據(jù)集之間沒(méi)有偏差。
      • 用于定期評(píng)估的數(shù)據(jù)集應(yīng)該足夠小,以便于在其整體上生成模型預(yù)測(cè),但又不能太小,以便于準(zhǔn)確測(cè)量模型的改進(jìn)(即不被標(biāo)簽噪聲所淹沒(méi))。
      • 要避免隨著時(shí)間的推移對(duì)驗(yàn)證集進(jìn)行適應(yīng)性的 “擬合”,而這種擬合方式并不能推廣到被保留的測(cè)試集。然而,這種考慮很少成為實(shí)際問(wèn)題。
    • 不平衡的數(shù)據(jù)集
      • 對(duì)于不平衡的數(shù)據(jù)集,在罕見(jiàn)類別的例子上表現(xiàn)往往會(huì)有噪音。
      • 對(duì)于在一個(gè)類別標(biāo)簽中只有少量例子的數(shù)據(jù)集,對(duì)預(yù)測(cè)正確的例子數(shù)量進(jìn)行記錄,以便更深入地了解準(zhǔn)確率的提高(0.05的靈敏度提高聽(tīng)起來(lái)令人振奮,但這只是多了一個(gè)正確的例子嗎?)。

保存檢查點(diǎn)并回視最佳檢查點(diǎn)

概述: 運(yùn)行訓(xùn)練的固定步數(shù),并回顧性地從運(yùn)行中選擇最佳檢查點(diǎn)。

  • 大多數(shù)深度學(xué)習(xí)框架支持模型檢查點(diǎn)。也就是說(shuō),模型的當(dāng)前狀態(tài)會(huì)周期性地保存在磁盤(pán)上。這使得訓(xùn)練工作對(duì)計(jì)算實(shí)例的中斷具有彈性。
  • 最好的檢查點(diǎn)往往不是最后一個(gè)檢查點(diǎn),特別是當(dāng)驗(yàn)證集的性能并沒(méi)有隨著時(shí)間的推移而持續(xù)增加,而是圍繞一個(gè)特定的值波動(dòng)時(shí)。
  • 設(shè)置管道,以跟蹤訓(xùn)練期間迄今看到的N個(gè)最佳檢查點(diǎn)。在訓(xùn)練結(jié)束時(shí),模型的選擇就是選擇訓(xùn)練中看到的最佳檢查點(diǎn)。我們把這稱為回顧性的最佳檢查點(diǎn)選擇。
  • 選用前瞻性的早停策略通常是沒(méi)有必要的,因?yàn)槲覀冾A(yù)先規(guī)定了試驗(yàn)預(yù)算,并保留了迄今為止看到的N個(gè)最佳檢查點(diǎn)。

設(shè)置實(shí)驗(yàn)跟蹤

概述: 在跟蹤不同的實(shí)驗(yàn)時(shí),一定要注意一些要領(lǐng),如研究中檢查點(diǎn)的最佳表現(xiàn),以及對(duì)研究的簡(jiǎn)短描述。

  • 我們發(fā)現(xiàn),在電子表格中記錄實(shí)驗(yàn)結(jié)果對(duì)我們所做的各種建模問(wèn)題很有幫助。它通常有以下幾欄。
    • 試驗(yàn)名稱
    • 該試驗(yàn)對(duì)應(yīng)的配置文件
    • 注釋或?qū)ρ芯康暮?jiǎn)短描述
    • 運(yùn)行的試驗(yàn)數(shù)量
    • 在研究中最佳檢查點(diǎn)的驗(yàn)證集上的表現(xiàn)
    • 具體的復(fù)制命令或說(shuō)明有哪些未提交的修改是啟動(dòng)培訓(xùn)所必需的
  • 找到一個(gè)至少能捕捉上述信息的跟蹤系統(tǒng),并且對(duì)做實(shí)驗(yàn)的人來(lái)說(shuō)是方便的。沒(méi)有跟蹤的實(shí)驗(yàn)還不如不存在。

Batch normalization操作細(xì)節(jié)

概述: 現(xiàn)在batch norm往往可以用LayerNorm代替,但在不能代替的情況下,在改變批量大小或主機(jī)數(shù)量時(shí)有一些棘手的細(xì)節(jié)。

  • batch norm使用當(dāng)前批次的平均數(shù)和方差對(duì)激活進(jìn)行歸一化,但在多設(shè)備設(shè)置中,除非明確同步,否則這些統(tǒng)計(jì)數(shù)據(jù)在每個(gè)設(shè)備上都是不同的。
  • 傳聞(主要是在ImageNet上)說(shuō),batch size為64來(lái)計(jì)算這些歸一化的統(tǒng)計(jì)數(shù)據(jù)在實(shí)踐中效果更好。(參考
    Ghost Batch Norm this paper).
  • 將總batch size和用于計(jì)算batch norm統(tǒng)計(jì)的例子數(shù)量解耦,對(duì)batch size的確定非常有用。
  • Ghost batch norm并不總是能正確地處理每個(gè)設(shè)備的批大小>虛擬批大小的情況。在這種情況下,我們實(shí)際上需要對(duì)每個(gè)設(shè)備上的 batch norm進(jìn)行再抽樣,以便獲得適當(dāng)數(shù)量的 batch norm統(tǒng)計(jì)實(shí)例。
  • 在測(cè)試模式下batch norm中使用的指數(shù)移動(dòng)平均數(shù)只是訓(xùn)練統(tǒng)計(jì)量的線性組合,所以這些EMA只需要在檢查點(diǎn)中保存之前進(jìn)行同步。然而,batch norm的一些常見(jiàn)實(shí)現(xiàn)并不同步這些EMA,只保存第一個(gè)設(shè)備的EMA。

多主機(jī)管道的注意事項(xiàng)

概述: 對(duì)于記錄、評(píng)估、RNG、檢查點(diǎn)和數(shù)據(jù)分片來(lái)說(shuō),多主機(jī)訓(xùn)練會(huì)使其非常容易引入bug!

  • 確保管道只在一臺(tái)主機(jī)上進(jìn)行記錄和檢查點(diǎn)。
  • 確保在評(píng)估或檢查點(diǎn)運(yùn)行之前,批量規(guī)范的統(tǒng)計(jì)數(shù)據(jù)在各主機(jī)之間是同步的。
  • 不同主機(jī)的RNG種子是相同的(用于模型初始化),不同主機(jī)的種子是不同的(用于數(shù)據(jù)洗牌/預(yù)處理),這一點(diǎn)很關(guān)鍵,所以一定要適當(dāng)?shù)貥?biāo)記它們。
  • 為了提高性能,通常建議將數(shù)據(jù)文件分散到各個(gè)主機(jī)上。

常見(jiàn)問(wèn)題

最佳的學(xué)習(xí)率衰減策略是什么?

[Click to expand]
  • 這是一個(gè)開(kāi)放的問(wèn)題。目前還不清楚如何構(gòu)建一套嚴(yán)格的實(shí)驗(yàn)來(lái)自信地回答什么是 "最佳"LR衰減策略。
  • 雖然我們不知道最好策略,但我們確信,有一些(非恒定的)策略是很重要的,而且調(diào)整它也很重要。
  • 在優(yōu)化過(guò)程中,不同的學(xué)習(xí)率在不同的時(shí)間段效果最好。有了某種策略,模型更有可能達(dá)到一個(gè)好的學(xué)習(xí)率。

我應(yīng)該使用哪種學(xué)習(xí)率衰減策略作為默認(rèn)值?

[Click to expand]
  • 我們的偏好是線性衰減或余弦衰減,其他衰減系列可能也不錯(cuò)。

為什么有些論文采用復(fù)雜的學(xué)習(xí)率衰減策略?

[Click to expand]
  • 采用復(fù)雜學(xué)習(xí)率(LR)衰減策略的論文并不少見(jiàn)。
  • 讀者經(jīng)常想知道作者是如何得出如此復(fù)雜的研究結(jié)果的。
  • 許多復(fù)雜的LR衰減策略是將策略作為驗(yàn)證集性能的函數(shù),以特別的方式進(jìn)行調(diào)整。
    1. 用一些簡(jiǎn)單的LR衰減(或恒定的學(xué)習(xí)率)開(kāi)始一個(gè)單一的訓(xùn)練運(yùn)行。
    2. 繼續(xù)進(jìn)行訓(xùn)練,直到表現(xiàn)似乎停滯不前。如果發(fā)生這種情況,暫停訓(xùn)練。從這一點(diǎn)出發(fā),用一個(gè)可能更陡峭的LR衰減策略(或更小的恒定學(xué)習(xí)率)恢復(fù)訓(xùn)練。重復(fù)這個(gè)過(guò)程,直到啟動(dòng)的最后期限。
  • 輕率地復(fù)制所產(chǎn)生的策略通常不是一個(gè)好主意,因?yàn)樽詈玫奶囟ú呗詫?duì)一系列其他的超參數(shù)敏感。
    • 最好是復(fù)制產(chǎn)生策略的算法。
  • 這種對(duì)驗(yàn)證錯(cuò)誤敏感的策略,如果能夠完全自動(dòng)化的話,使用起來(lái)是沒(méi)有問(wèn)題的,但是作為驗(yàn)證錯(cuò)誤的函數(shù)策略是很脆弱的,不容易重現(xiàn),所以我們建議避免使用。
    • 在發(fā)表使用這種策略的結(jié)果之前,請(qǐng)盡量使其完全可重現(xiàn)。

應(yīng)該如何調(diào)整Adam的超參數(shù)?

[Click to expand]
  • 如上所述,對(duì)搜索空間和應(yīng)該從搜索空間采樣多少個(gè)點(diǎn)做出一般性的陳述是非常困難的。請(qǐng)注意,并非Adam中的所有超參數(shù)都同樣重要。以下經(jīng)驗(yàn)法則對(duì)應(yīng)于研究中不同的試驗(yàn)數(shù)量的 “預(yù)算”。
    • 如果在一項(xiàng)研究中<10次試驗(yàn),只調(diào)整(基礎(chǔ))學(xué)習(xí)率。
    • 如果實(shí)驗(yàn)次數(shù)在10-25,調(diào)整learning rate和 β 1 \beta_1 β1?。
    • 如果實(shí)驗(yàn)次數(shù)25+,調(diào)整learning rate、 β 1 \beta_1 β1? ? \epsilon ?.
    • 如果可以運(yùn)行大大超過(guò)25個(gè)實(shí)驗(yàn),還可以調(diào)整 β 2 \beta_2 β2?.

為什么在調(diào)整的探索階段使用準(zhǔn)隨機(jī)搜索而不是更復(fù)雜的黑箱優(yōu)化算法?

[Click to expand]
  • 準(zhǔn)隨機(jī)搜索(基于低差異序列)作為迭代調(diào)參過(guò)程的一部分,旨在最大限度地了解調(diào)參問(wèn)題(我們稱之為 “探索階段”),是我們的首選,而不是更高級(jí)的黑盒子優(yōu)化工具。貝葉斯優(yōu)化和類似工具更適合于開(kāi)發(fā)階段。
  • 基于隨機(jī)移位的低差異序列準(zhǔn)隨機(jī)搜索可以被認(rèn)為是 “抖動(dòng)的、洗牌的網(wǎng)格搜索”,因?yàn)樗鶆虻亍⒌S機(jī)地探索一個(gè)給定的搜索空間,并且比隨機(jī)搜索更分散搜索點(diǎn)。
  • 與更復(fù)雜的黑箱優(yōu)化工具(如貝葉斯優(yōu)化、進(jìn)化算法)相比,準(zhǔn)隨機(jī)搜索的優(yōu)勢(shì)包括:
    1. 對(duì)搜索空間的非適應(yīng)性采樣使得在事后分析中改變調(diào)整目標(biāo)成為可能,而無(wú)需重新進(jìn)行實(shí)驗(yàn)。
      • 例如,我們通常希望找到在訓(xùn)練的任何時(shí)候達(dá)到最佳驗(yàn)證損失的試驗(yàn)。但是,準(zhǔn)隨機(jī)搜索的非適應(yīng)性使得我們有可能根據(jù)最終的驗(yàn)證損失、訓(xùn)練損失或一些替代的評(píng)價(jià)指標(biāo)來(lái)找到最佳試驗(yàn),而不需要重新進(jìn)行任何實(shí)驗(yàn)。
    2. 準(zhǔn)隨機(jī)搜索的行為是一致的,在統(tǒng)計(jì)學(xué)上是可重復(fù)的。
      • 即使搜索算法的實(shí)施發(fā)生了變化,只要保持相同的均勻性屬性,就應(yīng)該可以重現(xiàn)六個(gè)月前的研究。如果使用復(fù)雜的貝葉斯優(yōu)化軟件,不同版本之間的實(shí)現(xiàn)方式可能會(huì)發(fā)生重要變化,從而使重現(xiàn)舊的搜索變得更加困難。并不總是能夠回滾到一個(gè)舊的實(shí)現(xiàn)(例如,如果優(yōu)化工具是作為服務(wù)運(yùn)行的)。
    3. 它對(duì)搜索空間的統(tǒng)一探索使其更容易推理出結(jié)果以及對(duì)搜索空間的建議。
      • 例如,如果準(zhǔn)隨機(jī)搜索中的最佳點(diǎn)是在搜索空間的邊界上,這是一個(gè)很好的(但不是萬(wàn)無(wú)一失的)信號(hào),說(shuō)明搜索空間的邊界應(yīng)該被改變。本節(jié)將進(jìn)行更深入的探討。然而,一個(gè)自適應(yīng)的黑盒優(yōu)化算法可能因?yàn)橐恍┎恍疫\(yùn)的早期試驗(yàn)而忽略了搜索空間的中間部分,即使它恰好包含同樣好的點(diǎn),因?yàn)橐粋€(gè)好的優(yōu)化算法需要采用的正是這種非均勻性來(lái)加快搜索速度。
    4. 在使用準(zhǔn)隨機(jī)搜索(或其他非適應(yīng)性搜索算法)時(shí),平行運(yùn)行與順序運(yùn)行不同數(shù)量的試驗(yàn)不會(huì)產(chǎn)生統(tǒng)計(jì)學(xué)上的不同結(jié)果,這與適應(yīng)性算法不同。
    5. 更復(fù)雜的搜索算法不一定能正確處理不可行的點(diǎn),特別是如果它們?cè)谠O(shè)計(jì)時(shí)沒(méi)有考慮到神經(jīng)網(wǎng)絡(luò)超參數(shù)的調(diào)整。
    6. 準(zhǔn)隨機(jī)搜索很簡(jiǎn)單,當(dāng)許多調(diào)參試驗(yàn)平行運(yùn)行時(shí),效果特別好。
      • 從一些軼事來(lái)看,自適應(yīng)算法很難打敗擁有2倍預(yù)算的準(zhǔn)隨機(jī)搜索,特別是當(dāng)許多試驗(yàn)需要平行運(yùn)行時(shí)(因此在啟動(dòng)新試驗(yàn)時(shí)很少有機(jī)會(huì)利用以前的試驗(yàn)結(jié)果)。
      • 如果沒(méi)有貝葉斯優(yōu)化和其他高級(jí)黑盒優(yōu)化方法的專業(yè)知識(shí),我們可能無(wú)法實(shí)現(xiàn)它們?cè)谠瓌t上能夠提供的好處。在現(xiàn)實(shí)的深度學(xué)習(xí)調(diào)整條件下,很難對(duì)高級(jí)黑盒優(yōu)化算法進(jìn)行基準(zhǔn)測(cè)試。它們是當(dāng)前非常活躍的研究領(lǐng)域,而且對(duì)于沒(méi)有經(jīng)驗(yàn)的用戶來(lái)說(shuō),更復(fù)雜的算法也有自己的陷阱。這些方法的專家能夠獲得良好的結(jié)果,但在高平行度條件下,搜索空間和預(yù)算往往更重要。
  • 也就是說(shuō),如果我們的計(jì)算資源只允許少量的試驗(yàn)并行運(yùn)行,而我們可以負(fù)擔(dān)得起許多試驗(yàn)的順序運(yùn)行,那么貝葉斯優(yōu)化就會(huì)變得更有吸引力,盡管會(huì)使我們的調(diào)參結(jié)果更難解釋。

我在哪里可以找到準(zhǔn)隨機(jī)搜索的實(shí)現(xiàn)?

[Click to expand]
  • 我們使用這種實(shí)現(xiàn)方式,為給定的搜索空間生成一個(gè)Halton序列(旨在實(shí)現(xiàn)https://arxiv.org/abs/1706.03200 中推薦的移位、加擾的Halton序列)。
  • 如果沒(méi)有基于低差異序列的準(zhǔn)隨機(jī)搜索算法,可以用偽隨機(jī)統(tǒng)一搜索代替,盡管這樣做的效率可能會(huì)略低。
    • 在1-2個(gè)維度中,網(wǎng)格搜索也是可以接受的,盡管在更高的維度中不能接受 (參考Bergstra & Bengio, 2012).

使用準(zhǔn)隨機(jī)搜索需要多少次試驗(yàn)才能獲得好的結(jié)果?

[Click to expand]

Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)

圖 3: 在ImageNet上用100次試驗(yàn)對(duì)ResNet-50進(jìn)行了調(diào)參。通過(guò)bootstrapping,模擬了不同數(shù)量的調(diào)參預(yù)算。上面繪制了每個(gè)試驗(yàn)預(yù)算的最佳性能箱形圖。

  • 沒(méi)有辦法籠統(tǒng)地回答這個(gè)問(wèn)題,但我們可以看一下具體的例子。
  • 如圖3所示,一項(xiàng)研究中的試驗(yàn)數(shù)量對(duì)結(jié)果有很大影響。
    • 請(qǐng)注意,當(dāng)6個(gè)試驗(yàn)被抽樣時(shí),與20個(gè)試驗(yàn)被抽樣時(shí)相比,四分位數(shù)范圍有多大。
    • 即使有20次試驗(yàn),特別幸運(yùn)和不幸運(yùn)的研究之間差異也可能大于該模型在不同的隨機(jī)種子上重新訓(xùn)練的典型變化,固定的超參數(shù),對(duì)于這個(gè)工作量來(lái)說(shuō),可能是+/-0.1%左右,驗(yàn)證錯(cuò)誤率為~23%。

如何對(duì)優(yōu)化失敗進(jìn)行調(diào)試和緩解?

[Click to expand]
***概述:*** *如果模型遇到了優(yōu)化困難,在嘗試其他事情之前,解決這些困難是很重要的。診斷和糾正訓(xùn)練失敗是一個(gè)活躍的研究領(lǐng)域。*

Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)

圖 4: 在WideResnet中改變單個(gè)剩余塊(2x2->1x1)的步長(zhǎng)會(huì)導(dǎo)致訓(xùn)練不穩(wěn)定。這不會(huì)降低低學(xué)習(xí)率下的性能,但高學(xué)習(xí)率下由于不穩(wěn)定而不再訓(xùn)練良好。應(yīng)用1000步的學(xué)習(xí)率預(yù)熱解決了這一特殊的不穩(wěn)定情況,允許在最大學(xué)習(xí)率為0.1時(shí)進(jìn)行穩(wěn)定訓(xùn)練。

識(shí)別不穩(wěn)定的工作負(fù)載
  • 如果學(xué)習(xí)率太大,任何工作負(fù)載都會(huì)變得不穩(wěn)定。只有在迫使我們使用小的學(xué)習(xí)率時(shí),不穩(wěn)定才是一個(gè)問(wèn)題。
  • 至少有兩種類型的訓(xùn)練不穩(wěn)定性值得區(qū)分。
    1. 初始化/訓(xùn)練初期的不穩(wěn)定性。
    2. 在訓(xùn)練中突然出現(xiàn)不穩(wěn)定。
  • 我們可以采取系統(tǒng)的方法來(lái)確定我們工作中的穩(wěn)定性問(wèn)題
    1. 做一次學(xué)習(xí)率掃描,找到最佳學(xué)習(xí)率lr*。
    2. 繪制學(xué)習(xí)率剛剛超過(guò)lr*的訓(xùn)練損失曲線。
    3. 如果學(xué)習(xí)率>lr*顯示出損失的不穩(wěn)定性(在訓(xùn)練期間損失上升而不是下降),那么修復(fù)不穩(wěn)定性很可能會(huì)帶來(lái)更好的訓(xùn)練效果。
  • 在訓(xùn)練過(guò)程中記錄全損梯度的L2準(zhǔn)則,離群值會(huì)導(dǎo)致訓(xùn)練中間出現(xiàn)虛假的不穩(wěn)定。這可以為如何挑選梯度/更新剪切提供參考。

注意:有些模型顯示出非常早期的不穩(wěn)定性,然后是恢復(fù),趨于緩慢但穩(wěn)定的訓(xùn)練。普通的評(píng)估策略可能會(huì)因?yàn)樵u(píng)估不夠頻繁而錯(cuò)過(guò)這些問(wèn)題!

為了檢查這一點(diǎn),我們可以用lr = 2 * current best來(lái)訓(xùn)練一個(gè)大約500步的簡(jiǎn)略運(yùn)行,但要評(píng)估每一步。
Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)

圖 5: 如果懷疑模型受到早期訓(xùn)練不穩(wěn)定的影響,在訓(xùn)練開(kāi)始時(shí)進(jìn)行頻繁的評(píng)估,是很有用的。

常見(jiàn)不穩(wěn)定模式的潛在修復(fù)方法
  • 采用learning rate warmup
    • 最適合早期訓(xùn)練的不穩(wěn)定性。
  • 應(yīng)用梯度剪裁
    • 對(duì)早期和中期訓(xùn)練的不穩(wěn)定性都有好處,可能會(huì)修復(fù)一些熱身運(yùn)動(dòng)無(wú)法修復(fù)的不良狀態(tài)。
  • 嘗試新的優(yōu)化器
    • 有時(shí)Adam可以處理Momentum不能處理的不穩(wěn)定性。這是一個(gè)活躍的研究領(lǐng)域。
  • 確保我們的模型架構(gòu)使用最佳實(shí)踐/初始化(下面的例子)
    • 如果模型中不包含殘差連接和歸一化,則添加殘差連接和歸一化。
  • 歸一化應(yīng)該是殘差前的最后一個(gè)操作。例如x + Norm(f(x))
  • Norm(x + f(x))會(huì)導(dǎo)致問(wèn)題。
  • 嘗試將剩余分支初始化為0。 (例如ReZero init).
  • 降低學(xué)習(xí)率
    • 這是最后的手段。
Learning rate warmup

Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)

圖 6: warmup期間不穩(wěn)定的一個(gè)例子(注意橫軸的對(duì)數(shù)比例)。在這種情況下,需要40000steps熱身才能成功訓(xùn)練。

什么時(shí)候采用learning rate warmup

Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)

圖 7a: 一個(gè)表現(xiàn)出訓(xùn)練不穩(wěn)定性的模型超參數(shù)軸圖的例子。最佳的學(xué)習(xí)率是在可行的邊緣。一個(gè) "不可行 "的試驗(yàn)被定義為產(chǎn)生NaN或高損失值

Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)

圖 7b: 使用不穩(wěn)定學(xué)習(xí)率模型的訓(xùn)練損失

  • 圖7a顯示了一個(gè)超參數(shù)軸圖,表明一個(gè)模型正在經(jīng)歷優(yōu)化不穩(wěn)定,因?yàn)樽罴褜W(xué)習(xí)率正好處于不穩(wěn)定的邊緣。
  • 圖7b顯示了如何通過(guò)檢查(比峰值大5倍或10倍的學(xué)習(xí)率訓(xùn)練模型的訓(xùn)練損失)來(lái)進(jìn)行雙重檢查。如果該圖顯示損失在穩(wěn)步下降后突然上升(例如,在上圖中的步驟~10k),那么該模型很可能患有優(yōu)化不穩(wěn)定。
如何應(yīng)用learning rate warmup

Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)

圖 8: warmup對(duì)解決訓(xùn)練不穩(wěn)定現(xiàn)象有很好的效果

  • 利用上面的章節(jié),我們假設(shè)實(shí)踐者已經(jīng)確定了模型變得不穩(wěn)定的學(xué)習(xí)率。其值為unstable_base_learning_rate。
  • Warmup包括預(yù)設(shè)一個(gè)學(xué)習(xí)率策略,將學(xué)習(xí)率從0提升到某個(gè)穩(wěn)定的 base_learning_rate,至少比unstable_base_learning_rate大一個(gè)數(shù)量級(jí)。默認(rèn)情況下,將嘗試一個(gè)10倍于unstable_base_learning_ratebase_learning_rate
    。盡管注意到有可能再次運(yùn)行這整個(gè)過(guò)程,以獲得類似100倍的效果unstable_base_learning_rate。具體的策略是:
    • Ramp up 從0到base_learning_rate經(jīng)過(guò)warmup_steps.
    • 以恒定的速度訓(xùn)練 post_warmup_steps。
  • 我們的目標(biāo)是找到最短的 warmup_steps 使我們能夠獲得遠(yuǎn)高于unstable_base_learning_rate的峰值學(xué)習(xí)率。
  • 因此對(duì)于每個(gè)base_learning_rate,我們需要調(diào)整 warmup_stepspost_warmup_steps。通常將 post_warmup_steps 設(shè)置為2*warmup_steps。
  • Warmup可以獨(dú)立于現(xiàn)有的衰變策略進(jìn)行調(diào)整。warmup_steps 應(yīng)該在幾個(gè)不同的數(shù)量級(jí)上進(jìn)行掃描。例如,可以嘗試[10, 103, 104,105]。最大的可行點(diǎn)應(yīng)該不超過(guò)max_train_steps的10%。
  • 一旦建立了一個(gè)穩(wěn)健的base_learning_rate訓(xùn)練的 warmup_steps ,就應(yīng)該將其應(yīng)用于基線模型。從本質(zhì)上講,我們把這個(gè)策略預(yù)置到現(xiàn)有的策略上,并使用上面討論的最佳檢查點(diǎn)來(lái)比較這個(gè)試驗(yàn)和基線。例如,如果我們?cè)瓉?lái)有10,000個(gè) max_train_steps并做了1000步的warmup_steps 新的訓(xùn)練程序應(yīng)該總共運(yùn)行11000步。
  • 如果穩(wěn)定訓(xùn)練需要較長(zhǎng)的 warmup_steps (>max_train_steps的5%),可能需要增加 max_train_steps以考慮到這一點(diǎn)。
  • 在所有的模型中,其實(shí)并沒(méi)有一個(gè) "典型 "的數(shù)值。有些模型只需要100步,而其他模型(特別是transformer)可能需要4w步以上。
梯度裁剪

Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)

圖 9: 梯度剪裁糾正早期訓(xùn)練不穩(wěn)定性的說(shuō)明。

  • 當(dāng)發(fā)生大的或離群的梯度問(wèn)題時(shí),梯度剪裁是最有用的。
  • 剪切可以修復(fù)早期訓(xùn)練的不穩(wěn)定性(早期的大梯度規(guī)范),或訓(xùn)練中期的不穩(wěn)定性(訓(xùn)練中期的突然梯度尖峰)。
  • 有時(shí),較長(zhǎng)的warmup可以糾正不穩(wěn)定的情況,而裁剪則不能,參考本節(jié)
    • ?? warmup時(shí)采用裁剪會(huì)怎么樣?
  • 理想的裁剪閾值剛剛超過(guò) "典型 "的梯度規(guī)范。
  • 下面是一個(gè)關(guān)于如何進(jìn)行梯度剪裁的例子。
    • 如果梯度的規(guī)范 ∣ g ∣ \left | g \right | g 大于梯度裁剪閾值 λ \lambda λ, g ′ = λ × g ∣ g ∣ {g}'= \lambda \times \frac{g}{\left | g \right |} g=λ×gg? 其中 g ′ {g}' g 是新的梯度。
  • 在訓(xùn)練過(guò)程中記錄未裁剪的梯度。默認(rèn)情況下生成:
    • 梯度規(guī)范與step的關(guān)系圖
    • 所有steps中梯度規(guī)范的直方圖
  • 根據(jù)梯度規(guī)范的第90個(gè)百分點(diǎn)選擇梯度剪裁閾值。
    • 閾值將取決于工作量,但90%是一個(gè)好的起點(diǎn)。如果不成功,這個(gè)閾值可以調(diào)整一下。
    • ?? 某種適應(yīng)性策略呢?
  • 如果我們嘗試梯度剪裁,不穩(wěn)定的問(wèn)題仍然存在,我們可以更努力地嘗試(即讓閾值更小)。
  • 極為激進(jìn)的梯度剪裁在本質(zhì)上是一種降低學(xué)習(xí)率的奇怪方式。如果我們發(fā)現(xiàn)自己在使用極為激進(jìn)的剪裁,我們也許應(yīng)該直接削減學(xué)習(xí)率。
  • 我們通常會(huì)認(rèn)為有>50%的更新以某種方式被剪掉是 “極其積極的”。
  • 如果我們需要做極為激進(jìn)的梯度剪裁來(lái)處理不穩(wěn)定問(wèn)題,那還不如降低學(xué)習(xí)率。

為什么你把學(xué)習(xí)率和其他優(yōu)化參數(shù)稱為超參數(shù)?它們不是任何先驗(yàn)分布的參數(shù)。

[Click to expand]
  • 誠(chéng)然,"超參數(shù) "一詞在貝葉斯機(jī)器學(xué)習(xí)中有著確切的含義,將學(xué)習(xí)率和我們?cè)谏疃葘W(xué)習(xí)中調(diào)整的大多數(shù)其他參數(shù)稱為 "超參數(shù) "是一種術(shù)語(yǔ)的濫用。
  • 對(duì)于學(xué)習(xí)率、架構(gòu)參數(shù)以及我們?cè)谏疃葘W(xué)習(xí)中調(diào)整的所有其他東西,我們更愿意使用 "元參數(shù) "這一術(shù)語(yǔ),因?yàn)樗苊饬艘蛘`用 "超參數(shù) "一詞而產(chǎn)生的潛在混淆(在討論貝葉斯優(yōu)化時(shí),概率響應(yīng)面模型有其真正的超參數(shù),這種混淆特別容易發(fā)生)。
  • 不幸的是,盡管有可能造成混淆,但超參數(shù)這個(gè)詞在深度學(xué)習(xí)界已經(jīng)變得極為普遍。
  • 因此,對(duì)于像本文這樣一份面向廣大讀者的文件,其中包括許多不太可能知道這一技術(shù)問(wèn)題的人,我們選擇對(duì)該領(lǐng)域的一個(gè)混亂來(lái)源做出貢獻(xiàn),希望能避免另一個(gè)混亂。
  • 也就是說(shuō),在發(fā)表研究論文時(shí),我們可能會(huì)做出不同的選擇,而且我們會(huì)鼓勵(lì)其他人在大多數(shù)情況下使用 "元參數(shù) "來(lái)代替。

為什么不應(yīng)該調(diào)整batch size來(lái)直接提高驗(yàn)證集的性能?

[Click to expand]
  • 在不改變訓(xùn)練管道任何其他細(xì)節(jié)的情況下,改變batch size往往會(huì)影響驗(yàn)證集的性能。
  • 然而,如果為每個(gè)batch size獨(dú)立優(yōu)化訓(xùn)練管道,兩個(gè)批次規(guī)模之間驗(yàn)證集的性能差異通常會(huì)消失。
  • 與batch size相互作用最強(qiáng)的超參數(shù)是優(yōu)化器超參數(shù)(如學(xué)習(xí)率、動(dòng)量)和正則化超參數(shù),因此對(duì)每個(gè)batch size進(jìn)行單獨(dú)調(diào)整最為重要。
    • 由于樣本差異,較小的batch size在訓(xùn)練算法中引入了更多的噪聲,而這種噪聲會(huì)產(chǎn)生正則化效應(yīng)。因此,較大的批次規(guī)??赡芨菀壮霈F(xiàn)過(guò)擬合,可能需要更強(qiáng)的正則化或額外的正則化技術(shù)。
  • 此外,在改變batch size時(shí),[可能需要調(diào)整訓(xùn)練步驟的數(shù)量](#選擇batch size盡可能減少訓(xùn)練時(shí)間)。
  • 一旦考慮到所有這些影響,目前沒(méi)有令人信服的證據(jù)表明批次大小會(huì)影響可實(shí)現(xiàn)的最大驗(yàn)證性能 (參考Shallue et al. 2018).

所有流行的優(yōu)化算法更新規(guī)則是什么?

[Click to expand]
Stochastic gradient descent (SGD)

θ t + 1 = θ t ? η t ? l ( θ t ) \theta_{t+1} = \theta_{t} - \eta_t \nabla \mathcal{l}(\theta_t) θt+1?=θt??ηt??l(θt?)

Momentum

v 0 = 0 v_0 = 0 v0?=0

v t + 1 = γ v t + ? l ( θ t ) v_{t+1} = \gamma v_{t} + \nabla \mathcal{l}(\theta_t) vt+1?=γvt?+?l(θt?)

θ t + 1 = θ t ? η t v t + 1 \theta_{t+1} = \theta_{t} - \eta_t v_{t+1} θt+1?=θt??ηt?vt+1?

Nesterov

v 0 = 0 v_0 = 0 v0?=0

v t + 1 = γ v t + ? l ( θ t ) v_{t+1} = \gamma v_{t} + \nabla \mathcal{l}(\theta_t) vt+1?=γvt?+?l(θt?)

θ t + 1 = θ t ? η t ( γ v t + 1 + ? l ( θ t ) \theta_{t+1} = \theta_{t} - \eta_t( \gamma v_{t+1} + \nabla \mathcal{l}(\theta_{t}) θt+1?=θt??ηt?(γvt+1?+?l(θt?)

RMSProp

v 0 = 1 , m 0 = 0 v_0 = 1 \text{,} m_0 = 0 v0?=1,m0?=0

v t + 1 = ρ v t + ( 1 ? ρ ) ? l ( θ t ) 2 v_{t+1} = \rho v_{t} + (1 - \rho) \nabla \mathcal{l}(\theta_t)^2 vt+1?=ρvt?+(1?ρ)?l(θt?)2

m t + 1 = γ m t + η t v t + 1 + ? ? l ( θ t ) m_{t+1} = \gamma m_{t} + \frac{\eta_t}{\sqrt{v_{t+1} + \epsilon}}\nabla \mathcal{l}(\theta_t) mt+1?=γmt?+vt+1?+? ?ηt???l(θt?)

θ t + 1 = θ t ? m t + 1 \theta_{t+1} = \theta_{t} - m_{t+1} θt+1?=θt??mt+1?

ADAM

m 0 = 0 , v 0 = 0 m_0 = 0 \text{,} v_0 = 0 m0?=0,v0?=0

m t + 1 = β 1 m t + ( 1 ? β 1 ) ? l ( θ t ) m_{t+1} = \beta_1 m_{t} + (1 - \beta_1) \nabla \mathcal{l} (\theta_t) mt+1?=β1?mt?+(1?β1?)?l(θt?)

v t + 1 = β 2 v t + ( 1 ? β 2 ) ? l ( θ t ) 2 v_{t+1} = \beta_2 v_{t} + (1 - \beta_2) \nabla \mathcal{l}(\theta_t)^2 vt+1?=β2?vt?+(1?β2?)?l(θt?)2

b t + 1 = 1 ? β 2 t + 1 1 ? β 1 t + 1 b_{t+1} = \frac{\sqrt{1 - \beta_2^{t+1}}}{1 - \beta_1^{t+1}} bt+1?=1?β1t+1?1?β2t+1? ??

θ t + 1 = θ t ? α t m t + 1 v t + 1 + ? b t + 1 \theta_{t+1} = \theta_{t} - \alpha_t \frac{m_{t+1}}{\sqrt{v_{t+1}} + \epsilon} b_{t+1} θt+1?=θt??αt?vt+1? ?+?mt+1??bt+1?

NADAM

m 0 = 0 , v 0 = 0 m_0 = 0 \text{,} v_0 = 0 m0?=0,v0?=0

m t + 1 = β 1 m t + ( 1 ? β 1 ) ? l ( θ t ) m_{t+1} = \beta_1 m_{t} + (1 - \beta_1) \nabla \mathcal{l} (\theta_t) mt+1?=β1?mt?+(1?β1?)?l(θt?)

v t + 1 = β 2 v t + ( 1 ? β 2 ) ? l ( θ t ) 2 v_{t+1} = \beta_2 v_{t} + (1 - \beta_2) \nabla \mathcal{l} (\theta_t)^2 vt+1?=β2?vt?+(1?β2?)?l(θt?)2

b t + 1 = 1 ? β 2 t + 1 1 ? β 1 t + 1 b_{t+1} = \frac{\sqrt{1 - \beta_2^{t+1}}}{1 - \beta_1^{t+1}} bt+1?=1?β1t+1?1?β2t+1? ??

θ t + 1 = θ t ? α t β 1 m t + 1 + ( 1 ? β 1 ) ? l ( θ t ) v t + 1 + ? b t + 1 \theta_{t+1} = \theta_{t} - \alpha_t \frac{\beta_1 m_{t+1} + (1 - \beta_1) \nabla \mathcal{l} (\theta_t)}{\sqrt{v_{t+1}} + \epsilon} b_{t+1} θt+1?=θt??αt?vt+1? ?+?β1?mt+1?+(1?β1?)?l(θt?)?bt+1?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-427107.html

到了這里,關(guān)于Deep Learning Tuning Playbook(深度學(xué)習(xí)調(diào)參手冊(cè)中譯版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 解鎖深度表格學(xué)習(xí)(Deep Tabular Learning)的關(guān)鍵:算術(shù)特征交互

    解鎖深度表格學(xué)習(xí)(Deep Tabular Learning)的關(guān)鍵:算術(shù)特征交互

    近日,阿里云人工智能平臺(tái)PAI與浙江大學(xué)吳健、應(yīng)豪超老師團(tuán)隊(duì)合作論文《Arithmetic Feature Interaction is Necessary for Deep Tabular Learning》正式在國(guó)際人工智能頂會(huì)AAAI-2024上發(fā)表。本項(xiàng)工作聚焦于深度表格學(xué)習(xí)中的一個(gè)核心問(wèn)題:在處理結(jié)構(gòu)化表格數(shù)據(jù)(tabular data)時(shí),深度模型是否

    2024年04月17日
    瀏覽(22)
  • 基于深度學(xué)習(xí)的語(yǔ)音識(shí)別(Deep Learning-based Speech Recognition)

    基于深度學(xué)習(xí)的語(yǔ)音識(shí)別(Deep Learning-based Speech Recognition)

    隨著科技的快速發(fā)展,人工智能領(lǐng)域取得了巨大的進(jìn)步。其中,深度學(xué)習(xí)算法以其強(qiáng)大的自學(xué)能力,逐漸應(yīng)用于各個(gè)領(lǐng)域,并取得了顯著的成果。在語(yǔ)音識(shí)別領(lǐng)域,基于深度學(xué)習(xí)的技術(shù)也已經(jīng)成為了一種主流方法,極大地推動(dòng)了語(yǔ)音識(shí)別技術(shù)的發(fā)展。本文將從深度學(xué)習(xí)算法的

    2024年02月04日
    瀏覽(88)
  • 第二章:Learning Deep Features for Discriminative Localization ——學(xué)習(xí)用于判別定位的深度特征

    第二章:Learning Deep Features for Discriminative Localization ——學(xué)習(xí)用于判別定位的深度特征

    ????????在這項(xiàng)工作中,我們重新審視了在[13]中提出的全局平均池化層,并闡明了它如何明確地使卷積神經(jīng)網(wǎng)絡(luò)(CNN)具有出色的定位能力,盡管它是在圖像級(jí)別標(biāo)簽上進(jìn)行訓(xùn)練的。雖然這個(gè)技術(shù)之前被提出作為一種訓(xùn)練規(guī)范化的手段, 但我們發(fā)現(xiàn)它實(shí)際上構(gòu)建了一個(gè)通

    2024年02月15日
    瀏覽(22)
  • 基于深度學(xué)習(xí)的目標(biāo)檢測(cè)的介紹(Introduction to object detection with deep learning)

    基于深度學(xué)習(xí)的目標(biāo)檢測(cè)的介紹(Introduction to object detection with deep learning)

    物體檢測(cè)的應(yīng)用已經(jīng)深入到我們的日常生活中,包括安全、自動(dòng)車輛系統(tǒng)等。對(duì)象檢測(cè)模型輸入視覺(jué)效果(圖像或視頻),并在每個(gè)相應(yīng)對(duì)象周圍輸出帶有標(biāo)記的版本。這說(shuō)起來(lái)容易做起來(lái)難,因?yàn)槟繕?biāo)檢測(cè)模型需要考慮復(fù)雜的算法和數(shù)據(jù)集,這些算法和數(shù)據(jù)集在我們說(shuō)話的時(shí)

    2024年02月11日
    瀏覽(18)
  • 深度強(qiáng)化學(xué)習(xí)的變道策略:Harmonious Lane Changing via Deep Reinforcement Learning

    深度強(qiáng)化學(xué)習(xí)的變道策略:Harmonious Lane Changing via Deep Reinforcement Learning

    偏理論,假設(shè)情況不易發(fā)生 多智能體強(qiáng)化學(xué)習(xí)的換道策略,不同的智能體在每一輪學(xué)習(xí)后交換策略,達(dá)到零和博弈。 和諧駕駛僅依賴于單個(gè)車輛有限的感知結(jié)果來(lái)平衡整體和個(gè)體效率,獎(jiǎng)勵(lì)機(jī)制結(jié)合個(gè)人效率和整體效率的和諧。 自動(dòng)駕駛不能過(guò)分要求速度性能, 考慮單個(gè)車

    2024年01月17日
    瀏覽(15)
  • 基于深度學(xué)習(xí)的手寫(xiě)數(shù)字識(shí)別項(xiàng)目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)

    基于深度學(xué)習(xí)的手寫(xiě)數(shù)字識(shí)別項(xiàng)目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)

    一步一步教你建立手寫(xiě)數(shù)字識(shí)別項(xiàng)目,需要源文件的請(qǐng)可直接跳轉(zhuǎn)下邊的鏈接:All project 在本文中,我們將使用MNIST數(shù)據(jù)集實(shí)現(xiàn)一個(gè)手寫(xiě)數(shù)字識(shí)別應(yīng)用程序。我們將使用一種特殊類型的深度神經(jīng)網(wǎng)絡(luò),即卷積神經(jīng)網(wǎng)絡(luò)。最后,我們將構(gòu)建一個(gè)GUI,您可以在其中繪制數(shù)字并立即

    2024年02月11日
    瀏覽(21)
  • 商簡(jiǎn)智能學(xué)術(shù)成果|基于深度強(qiáng)化學(xué)習(xí)的聯(lián)想電腦制造調(diào)度(Lenovo Schedules Laptop Manufacturing Using Deep Reinforcement Learning)

    商簡(jiǎn)智能學(xué)術(shù)成果|基于深度強(qiáng)化學(xué)習(xí)的聯(lián)想電腦制造調(diào)度(Lenovo Schedules Laptop Manufacturing Using Deep Reinforcement Learning)

    獲取更多資訊,趕快關(guān)注上面的公眾號(hào)吧! ??本篇論文作為商簡(jiǎn)智能的最新研究成果,發(fā)表于運(yùn)籌學(xué)頂刊《INFORMS JOURNAL ON APPLIED ANALYTICS》, 首次將深度強(qiáng)化學(xué)習(xí)落地于大規(guī)模制造調(diào)度場(chǎng)景 ,該先進(jìn)排程項(xiàng)目入圍國(guó)際運(yùn)籌學(xué)權(quán)威機(jī)構(gòu) INFORMS運(yùn)籌學(xué)應(yīng)用最高獎(jiǎng)——Franz Edelman

    2024年02月09日
    瀏覽(92)
  • Deep Learning-學(xué)習(xí)筆記

    deep learning訓(xùn)練過(guò)程 如果對(duì)所有層同時(shí)訓(xùn)練,時(shí)間復(fù)雜度會(huì)太高;如果每次訓(xùn)練一層,偏差就會(huì)逐層傳遞。這會(huì)面臨跟上面監(jiān)督學(xué)習(xí)中相反的問(wèn)題,會(huì)嚴(yán)重欠擬合(因?yàn)樯疃染W(wǎng)絡(luò)的神經(jīng)元和參數(shù)太多了)。 2006年,hinton提出了在非監(jiān)督數(shù)據(jù)上建立多層神經(jīng)網(wǎng)絡(luò)的一個(gè)有效方法,

    2024年02月12日
    瀏覽(22)
  • 2 機(jī)器學(xué)習(xí)知識(shí) Softmax回歸 deep learning system

    2 機(jī)器學(xué)習(xí)知識(shí) Softmax回歸 deep learning system

    The hypothesis class: 模型結(jié)構(gòu) loss fuction 損失函數(shù) An optimization method:在訓(xùn)練集上減小loss的方法 訓(xùn)練數(shù)據(jù): x ( i ) ∈ R n , y ( i ) ∈ 1 , . . . , k f o r i = 1 , . . . m x^{(i)}in mathbb{R}^n ,y^{(i)}in {1,...,k} for i=1,...m x ( i ) ∈ R n , y ( i ) ∈ 1 , ... , k f or i = 1 , ... m n 是輸入數(shù)據(jù)的維度,輸入的每

    2024年02月05日
    瀏覽(56)
  • 深入理解預(yù)訓(xùn)練(pre-learning)、微調(diào)(fine-tuning)、遷移學(xué)習(xí)(transfer learning)三者的聯(lián)系與區(qū)別

    深入理解預(yù)訓(xùn)練(pre-learning)、微調(diào)(fine-tuning)、遷移學(xué)習(xí)(transfer learning)三者的聯(lián)系與區(qū)別

    你需要搭建一個(gè)網(wǎng)絡(luò)模型來(lái)完成一個(gè)特定的圖像分類的任務(wù)。首先,你需要隨機(jī)初始化參數(shù),然后開(kāi)始訓(xùn)練網(wǎng)絡(luò),不斷調(diào)整參數(shù),直到網(wǎng)絡(luò)的損失越來(lái)越小。在訓(xùn)練的過(guò)程中,一開(kāi)始初始化的參數(shù)會(huì)不斷變化。當(dāng)你覺(jué)得結(jié)果很滿意的時(shí)候,你就可以將訓(xùn)練模型的參數(shù)保存下來(lái)

    2024年02月15日
    瀏覽(41)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包