近日,日本的深度學(xué)習(xí)公司PerferredNetworks 發(fā)布了其超參數(shù)優(yōu)化框架的beta版本。這篇文章中將詳細介紹這一框架的特性及其后面的原理。
關(guān)于超參數(shù)
超參數(shù)是控制機器學(xué)習(xí)算法行為的參數(shù),在深度學(xué)習(xí)中主要包括了學(xué)習(xí)率、批量大小和訓(xùn)練周期、層數(shù)、每層神經(jīng)元的數(shù)量和通道等。他們不僅僅是一個簡單的數(shù)值,同時控制著模型訓(xùn)練的行為并在很大程度上影響著模型的性能。除了上述提到的數(shù)值外還包括了使用的優(yōu)化方法(SDG或Adam等)。調(diào)參是深度學(xué)習(xí)的一項重要技術(shù),由于需要眾多的實踐經(jīng)驗和對算法的理解,調(diào)參的過程常常被人們戲稱作煉丹。這也是初學(xué)者所面臨的最大困難。
對于機器學(xué)習(xí)算法來說,如果沒有超參數(shù)算法的設(shè)計和模型的訓(xùn)練幾乎不可能進行。對于深度學(xué)習(xí)來說,超參數(shù)的數(shù)量很可能十分龐大,工程師們需要花費巨量的時間來調(diào)整超參數(shù)來獲取表現(xiàn)較好的模型。如何快速調(diào)整模型,甚至自動化搜索超參數(shù),已經(jīng)成為一個廣泛的研究熱點。
下面讓我們來看看PFN提出的這一框架有什么特點。
Optuna
Optuna是一套能夠自動優(yōu)化超參數(shù)的的軟件框架,它可以通過不斷試錯的方法找到最好表現(xiàn)的最優(yōu)超參數(shù)值。值得注意的是,官方提供了Python接口,能夠方便的集成到代碼中使用。它主要基于運行的歷史數(shù)據(jù)來確定接下來需要測試的超參數(shù)值?;谶@些數(shù)據(jù),它可以估計出超參數(shù)比較可能出現(xiàn)的區(qū)域并在這個區(qū)域中進行超參數(shù)搜索嘗試。隨著不斷獲取新的結(jié)果,它也將更新這一區(qū)域并繼續(xù)搜索。在不斷重復(fù)搜索、評價更新的過程中來獲取表現(xiàn)更好的超參數(shù)。具體來講,這一軟件框架的優(yōu)化方法屬于貝葉斯優(yōu)化算法中的樹形帕曾(Parzen)優(yōu)化器。
適用范圍
Optuna作為超參數(shù)優(yōu)化框架可以和PFN自己的深度學(xué)習(xí)框架Chainer充分結(jié)合使用。只需要在Chainer中寫接受來自O(shè)ptuna的超參數(shù)的代碼即可。通過這一接口Optuna可以不斷調(diào)用了用戶編寫的模型代碼,神經(jīng)網(wǎng)絡(luò)也可以在你不同的超參數(shù)下得以訓(xùn)練并搜尋較好的結(jié)果。
目前在PFN的多個項目中都使用了Chainer深度學(xué)習(xí)架構(gòu)和Optuna優(yōu)化框架的組合。但我們用戶來說這兩個框架是相互獨立的,同樣可以將Optuna與其他機器學(xué)習(xí)軟件結(jié)合起來使用。目前官方提供了使用scikit-learn、XGBoost和LightGBM等算法集成Optuna的實例代碼供用戶學(xué)習(xí)。事實上,除了機器學(xué)習(xí)問題外Optuna還廣泛適用于各種需要優(yōu)化的任務(wù),比如計算加速就是一個典型的例子。只要可以編寫接收超參數(shù)的接口并返回算法的計算結(jié)果即可使用這一框架來自動化冗長的調(diào)參過程。
新框架的優(yōu)勢
如果熟悉PFN的小伙伴可能會問,為什么在擁有諸如Hyperopt、Spearmint、SMAC等超參數(shù)自動化框架后還需要建立新的框架Optuna呢?這是因為目前的框架在某些環(huán)境下無法工作或者不能保持穩(wěn)定的優(yōu)化,同時這些框架已經(jīng)落后于目前最先進的超參數(shù)優(yōu)化機制。研究人員希望開發(fā)出一種可以在python中具體指定需要調(diào)優(yōu)的超參數(shù),而不是為優(yōu)化器編寫單獨的代碼。
新特點
和Chainer一樣,Optuna提供了動態(tài)圖模型(define-by-run)風格的接口,這使得用戶可以在代碼很復(fù)雜的情況下比其他框架更好地保持模塊化特性。同時Optuna還可以在復(fù)空間中優(yōu)化超參數(shù),這是先前的框架所不能完成的。
在深度學(xué)習(xí)中定義計算圖主要有兩種主要的風格:動態(tài)圖和靜態(tài)圖。在早期的深度學(xué)習(xí)框架中,Caffe和Tensorflow等靜態(tài)圖框架占據(jù)了主流;但隨著技術(shù)的發(fā)展,Chainer首次提出了動態(tài)圖框架,隨后PyTorch和Tensorflow2.0更新的eager也引入了動態(tài)圖模型,逐漸成為深度學(xué)習(xí)的主流方法。在超參數(shù)調(diào)優(yōu)領(lǐng)域,同樣存在著Define-and-Run和Define-by-Run兩種風格。Optuna和市面上絕大多數(shù)的框架不同,它是基于Define-by-Run的概念,API風格非常獨特。
這使得用于程序保持高度模塊化成為可能,同時也使得復(fù)雜超參數(shù)空間中的參數(shù)搜索成為可能。當使用如深度學(xué)習(xí)或梯度推舉算法等迭代算法時,對于訓(xùn)練粗略的預(yù)測可以通過學(xué)習(xí)曲線來得到。利用這樣的方法,Optuna能根據(jù)這一預(yù)測終止可能性較小的超參數(shù)區(qū)域,把更多的算力用于可能性更高的區(qū)域以提高搜索效率。而上面提到已有的超參數(shù)學(xué)習(xí)框就缺乏這一功能。此外最近的研究表明在學(xué)習(xí)曲線上使用剪枝技術(shù)十分有效,下圖顯示了在一個簡單深度學(xué)習(xí)任務(wù)上表現(xiàn)出的有效性,當Optuna和Hyperopt優(yōu)化引擎使用相同TPE時,Optuna使用剪枝技術(shù)獲取了更高的效率。
深度學(xué)習(xí)是計算密集型技術(shù),訓(xùn)練也是耗時的過程。對于一個自動超參數(shù)優(yōu)化框架來說,高效和穩(wěn)定應(yīng)當是其主要特征。Optuna支持異步分布式優(yōu)化,使得算法可以同時在多個節(jié)點上進行多次嘗試。并行計算的效果如下圖所示,研究人員通過修改計算機的數(shù)量來探索了分布式優(yōu)化的加速情況。
用戶可通過簡單的代碼配置,就可以并行地分布式地執(zhí)行包含分布式過程的目標函數(shù)。
可視化
面板可視化,基于http 優(yōu)化過程或?qū)С鰌andas數(shù)據(jù)。
可視化方便我們形象的理解并優(yōu)化程序的運行。Optuna提供了可通過瀏覽器訪問的面板來觀察優(yōu)化過程。用戶可以通過這一方法從實驗過程和結(jié)果中獲取有效的信息來幫助分析。同時還提供了優(yōu)化過程詳細信息的導(dǎo)出,以便進行詳細的分析。
在Optuna的支持下FPN參加了OpenImageChallange2018,并取得了第二名的好成績。
PFN開源眾多算法的目的在于加速深度學(xué)習(xí)的研發(fā)活動,Optuna作為在自動化超參數(shù)調(diào)優(yōu)上的研究成果是十分重要的進步,讓機器學(xué)習(xí)的自動化加速過程又進了一步。除此之外研究人員還在繼續(xù)研究神經(jīng)架構(gòu)自動搜索和自動特征抽取等功能,十分期待PFN能夠開發(fā)更多優(yōu)秀的算法。
-
自動化
+關(guān)注
關(guān)注
29文章
5581瀏覽量
79283 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8418瀏覽量
132654 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5503瀏覽量
121175
原文標題:Perferred Networks提出自動化超參數(shù)優(yōu)化框架Optuna
文章出處:【微信號:thejiangmen,微信公眾號:將門創(chuàng)投】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論