谷歌推出深度學(xué)習(xí)調(diào)優(yōu)手冊,不到一天狂攬1200星,Hinton轉(zhuǎn)發(fā)
5位大佬工程師合寫
豐色 Pine 發(fā)自 凹非寺
量子位 | 公眾號 QbitAI
各位煉丹er們,調(diào)參是你們最頭疼的環(huán)節(jié)嗎?
現(xiàn)在,一份上線不到一天就狂攬1200+星的《深度學(xué)習(xí)調(diào)優(yōu)手冊》來了。
△數(shù)字還在飛速上漲,估計(jì)馬上就要登熱榜了
這可能是市面上首個(gè)如此全面的煉丹寶典,由5位谷歌工程師大佬合作總結(jié)。
這些大佬們都已在深度學(xué)習(xí)領(lǐng)域“踩坑”多年、工作成果應(yīng)用從語音識別到天文學(xué)都有涉獵。
為了這份手冊,他們總結(jié)了自己在訓(xùn)練網(wǎng)絡(luò)、帶新工程師、以及和同事交流時(shí)get到的各種經(jīng)驗(yàn)和技巧。
連“深度學(xué)習(xí)之父”Geoffrey Hinton都來盛贊:
來看看具體都有些啥。
谷歌煉丹寶典,聚焦超參數(shù)調(diào)整
本手冊適用范圍為:對系統(tǒng)地最大化深度學(xué)習(xí)模型性能感興趣的工程師和研究人員,包括個(gè)人和團(tuán)隊(duì)。
默認(rèn)翻開這本手冊的都掌握了機(jī)器學(xué)習(xí)基本知識和深度學(xué)習(xí)概念。
其中內(nèi)容主要聚焦超參數(shù)調(diào)整,因?yàn)檫@是作者們在工作中耗時(shí)最多、收獲也最多的環(huán)節(jié)。
具體一共分為四大部分:
開始新項(xiàng)目
第一部分從訓(xùn)練一個(gè)新的模型開始,教大家如何選擇:
(1)模型架構(gòu)(2)優(yōu)化器(3)batch size(4)初始配置。
比如,在選擇優(yōu)化器時(shí),由于所有類型的機(jī)器學(xué)習(xí)問題和模型架構(gòu)中都不存在最好的那一個(gè),那么我們就堅(jiān)持選擇時(shí)下最流行、最成熟的那一個(gè)(尤其對于新項(xiàng)目來說)。
這里作者們推薦(但不限于):SGDM和更通用的Adam、NAdam,特別提醒:Adam有4個(gè)可調(diào)超參數(shù) ,它們都很重要。
而在選擇batch size時(shí),需要注意它只是決定訓(xùn)練速度,不應(yīng)該直接用于調(diào)整驗(yàn)證集的性能。
因?yàn)橛醒芯勘砻鳎灰谐瑓?shù)都經(jīng)過良好調(diào)整(尤其是學(xué)習(xí)率和正則化超參數(shù))并且訓(xùn)練步數(shù)足夠,任何batch size值都應(yīng)該可以獲得相同的性能。
通常來說,理想的batch size是可用硬件支持的最大值。
具體如何選擇,手冊在這里作出了非常詳細(xì)的解釋:
初始配置方面,指導(dǎo)原則是找到一個(gè)簡單、相對快速、資源消耗相對較低的配置,好獲得一個(gè)“合理”的結(jié)果。
所謂簡單,就是切記不要在開始時(shí)就添加一些花里胡哨的東西,現(xiàn)階段沒用不說還浪費(fèi)時(shí)間。
比如在找到一個(gè)合適的學(xué)習(xí)率之前,就不要想著各種花式的decay schedule。
科學(xué)提高模型性能
本部分的經(jīng)驗(yàn)建立以下兩點(diǎn)前提之上:
- 我們已經(jīng)有一個(gè)完全運(yùn)行的訓(xùn)練pipeline以及能夠獲得合理結(jié)果的配置;
- 有足夠的計(jì)算資源用于進(jìn)行有意義的調(diào)整實(shí)驗(yàn)、用于并行運(yùn)行多個(gè)訓(xùn)練項(xiàng)目。
具體一共分為7個(gè)小部分:
第1部分標(biāo)題為“逐步調(diào)整策略”,即從一個(gè)簡單的配置開始,逐步進(jìn)行改進(jìn),需要重復(fù)以下四個(gè)步驟:
- 為下一輪實(shí)驗(yàn)確定范圍適當(dāng)?shù)哪繕?biāo);
- 設(shè)計(jì)并運(yùn)行實(shí)驗(yàn),朝著目標(biāo)取得進(jìn)展;
- 分析結(jié)果;
- 考慮是否推出新的最佳配置。
后續(xù)部分就是圍繞上面四個(gè)步驟進(jìn)行詳細(xì)的展開,超參數(shù)如何選擇和修改也在本節(jié)作為重點(diǎn)出現(xiàn)。
比如不管我們的實(shí)驗(yàn)?zāi)繕?biāo)是什么,我們都需要將超參數(shù)分為三類:科學(xué)超參數(shù)、nuisance超參數(shù)和固定超參數(shù)。
如果我們的目標(biāo)是“確定具有更多隱藏層(hidden layer)的模型是否會(huì)減少驗(yàn)證錯(cuò)誤”,那么隱藏層數(shù)就是一個(gè)科學(xué)超參數(shù),這是我們在設(shè)計(jì)新實(shí)驗(yàn)時(shí)需要首先確定的。
需要修改的主要是第二類。
當(dāng)我們進(jìn)行到第三步,也就是分析結(jié)果時(shí),需要額外問自己以下幾個(gè)問題:
搜索空間是否足夠大?是否從里面采樣了足夠多的點(diǎn)?該模型是否存在優(yōu)化問題?我們可以從最佳試驗(yàn)的訓(xùn)練曲線中學(xué)到什么?
具體怎么判斷和解決這些問題,手冊也有非常詳細(xì)的解釋。
最后,當(dāng)我們確定好了應(yīng)該調(diào)整哪些超參數(shù),就可以善用貝葉斯優(yōu)化工具了。
不同工作負(fù)載如何設(shè)置訓(xùn)練步數(shù)
在這部分,手冊根據(jù)工作負(fù)載的不同分了兩部分來展開,分別為:
- 工作負(fù)載為計(jì)算密集型(CPU密集型)時(shí),訓(xùn)練步數(shù)如何設(shè)置?
- 工作負(fù)載為非計(jì)算密集型(IO密集型)時(shí),訓(xùn)練步數(shù)如何設(shè)置?
通俗來講,計(jì)算密集型與非計(jì)算密集型就是受不受計(jì)算量的限制。而我們要解決的問題,就是無論在哪種情況下,如何讓模型都能達(dá)到最佳效果。
也不多說廢話,直接舉個(gè)栗子來看寶典中是如何講的?
當(dāng)工作負(fù)載受計(jì)算限制時(shí),也就是說計(jì)算資源成為主要的限制因素,首先面臨的問題就是:
如果訓(xùn)練損失在無限期的改善,有沒有必要這樣一直訓(xùn)練下去?
寶典給出的答案是:沒有!?多輪調(diào)整最明智,1~3輪最實(shí)用。
并且還附有兩輪調(diào)整的具體建議:
- 第1輪:較短的運(yùn)行時(shí)間以找到好的模型和優(yōu)化器超參數(shù)
- 第2輪:不要在良好的超參數(shù)點(diǎn)上長時(shí)間運(yùn)行以獲得最終模型
(詳見手冊)
關(guān)于當(dāng)工作負(fù)載不受計(jì)算限制時(shí),調(diào)整的部分主要圍繞max_train_steps,具體這里就不再贅述。
其他補(bǔ)充
到這里,寶典差不多就接近尾聲了,谷歌研究員們還貼心地給出了一份pipeline訓(xùn)練的補(bǔ)充指南,內(nèi)容包括:
- 優(yōu)化輸入pipeline
- 評估模型性能
- 保存檢查點(diǎn)并回顧性地選擇最佳檢查點(diǎn)
- 建立實(shí)驗(yàn)跟蹤
- Batch規(guī)范化實(shí)現(xiàn)細(xì)節(jié)
- multi-host pipelines的注意事項(xiàng)
在“優(yōu)化輸入pipeline”部分,寶典列出了導(dǎo)致輸入pipeline的一些常見原因,并給出了一些小tips。
關(guān)于“評估模型性能”,也給出了詳細(xì)的操作步驟。
……
寶典全文的鏈接也已附在文末,感興趣的朋友可以扔進(jìn)收藏夾了。
mem it~
關(guān)于作者
一共4位谷歌在職大佬,1位哈佛的在讀博士生(以前也在谷歌工作了5年多)。
Varun Godbole,目前是谷歌AI的一名軟件工程師,主要經(jīng)驗(yàn)集中在建模和構(gòu)建處理大型數(shù)據(jù)集的基礎(chǔ)設(shè)施方面。
之前,他的研究領(lǐng)域是計(jì)算機(jī)視覺和醫(yī)學(xué)圖像的交叉點(diǎn),合著的論文“International evaluation of an AI system for breast cancer screening”曾登上Nature。
George E. Dahl,是谷歌大腦團(tuán)隊(duì)的研究科學(xué)家,他的研究集中在高度靈活的模型上,并且他還對語言、感知數(shù)據(jù)以及化學(xué)、生物和醫(yī)學(xué)數(shù)據(jù)的應(yīng)用感興趣。
George在多倫多大學(xué)攻讀博士學(xué)位時(shí),主要解決語音識別、計(jì)算化學(xué)和自然語言文本處理等問題的深度學(xué)習(xí)方法,其中包括一些首次成功的深度聲學(xué)模型。
Justin Gilmer,谷歌大腦的研究科學(xué)家,他在Google Scholar上引用已經(jīng)破萬,主要研究方向?yàn)樯疃葘W(xué)習(xí)、組合型、隨機(jī)圖論。
量子位前不久的《幾十年數(shù)學(xué)難題被谷歌研究員意外突破!曾因不想搞數(shù)學(xué)自學(xué)編程,當(dāng)年差點(diǎn)被導(dǎo)師趕出門》講的正是這位科學(xué)家。
Christopher Shallue,目前正在攻讀哈佛大學(xué)的天體物理學(xué)博士學(xué)位,在此之前,他曾在谷歌工作了5年10個(gè)月。
在谷歌工作的那段時(shí)間,Shallue有3年多的時(shí)間在谷歌大腦擔(dān)任機(jī)器學(xué)習(xí)研究工程師,研究的內(nèi)容包括:
- 開發(fā)識別系外行星的機(jī)器學(xué)習(xí)技術(shù)(包括神經(jīng)網(wǎng)絡(luò)首次發(fā)現(xiàn)行星)
- 加快超級計(jì)算機(jī)規(guī)模的機(jī)器學(xué)習(xí)培訓(xùn)
- 實(shí)證研究機(jī)器學(xué)習(xí)中的優(yōu)化算法和超參數(shù)調(diào)整
- TensorFlow 中的開源參考模型實(shí)現(xiàn)(圖像字幕、句子嵌入、系外行星探測)
Zachary Nado,谷歌大腦的研究工程師,本科就讀期間,曾先后在谷歌和SpaceX實(shí)習(xí),研究領(lǐng)域包括數(shù)據(jù)挖掘與建模、機(jī)器智能、NLP等。
寶典傳送門:
https://github.com/google-research/tuning_playbook