第八周 - 20180601

LycorisNet之超參數(shù)自動搜尋策略

在設(shè)計(jì)Lycoris的伊始冀续,就沒有考慮過為用戶留下太多的接口來調(diào)整超參數(shù)裆蒸,畢竟對現(xiàn)代框架調(diào)參的厭煩也是獨(dú)立開發(fā)這個(gè)庫的動力之一熔萧。于是,自動搜尋最佳超參數(shù)的策略便成為了一個(gè)相當(dāng)重要的需求僚祷。

但凡提到自動調(diào)整超參數(shù)佛致,“網(wǎng)格搜索”、“隨機(jī)搜索”辙谜、“貝葉斯優(yōu)化”等等便習(xí)慣性地被提及晌杰。Grid Search是一種調(diào)參手段,也稱為窮舉搜索:在所有候選的參數(shù)選擇中筷弦,通過循環(huán)遍歷,嘗試每一種可能性抑诸,表現(xiàn)最好的參數(shù)就是最終的結(jié)果烂琴,其原理就像是在數(shù)組里找最大值;隨機(jī)搜索顧名思義就是隨機(jī)的搜索蜕乡,沒有特別的要說的奸绷,舉個(gè)例子:有十億個(gè)數(shù)字,我想搜索十萬次就找出一個(gè)比較理想的最胁懔帷(大)數(shù)号醉。這就是一個(gè)簡單的應(yīng)用隨機(jī)搜索的一個(gè)場景反症。這時(shí)候我們需要設(shè)計(jì)一個(gè)隨機(jī)取樣的函數(shù),然后在十億個(gè)數(shù)里取出十萬個(gè)數(shù)進(jìn)行比較獲取最信吓伞(大)的數(shù)铅碍。雖然后最的結(jié)果不精確,但是如果并不需要知道確切的最優(yōu)值的時(shí)候线椰,這還是非常棒的提高程序效率的算法胞谈;貝葉斯優(yōu)化其實(shí)就是在函數(shù)方程不知的情況下根據(jù)已有的采樣點(diǎn)預(yù)估函數(shù)最大值的一個(gè)算法,貝葉斯優(yōu)化會選取未知函數(shù)的中數(shù)個(gè)已知點(diǎn)憨愉,作為先驗(yàn)(prior)烦绳,假設(shè)這些點(diǎn)是GP中的一部分,即他們服從多變量高斯分布配紫。根據(jù)多變量高斯分布的一些性質(zhì)径密,可以計(jì)算出這些點(diǎn)中每一個(gè)點(diǎn)的均值(mean)和方差(variance) 。

在Lycoris中這三種優(yōu)化方案均不能直接用于策略中躺孝,主要原因還是增強(qiáng)拓?fù)涞倪^程帶來的不穩(wěn)定性享扔,這種情況下,項(xiàng)目組采用了一種近似隨機(jī)搜索思想的優(yōu)化方案括细,對NEAT的超參數(shù)實(shí)現(xiàn)自動化調(diào)整伪很,這一部分的代碼如下:

void Lycoris::autoParameter() {

? ? if (args->checkFlag) {

? ? ? ? auto length = uint32_t(args->gapList->size());

? ? ? ? auto lastValue = args->gapList->back();

? ? ? ? uint32_t count = 0;

? ? ? ? for (auto iter = args->gapList->begin(); iter != args->gapList->end(); ++iter) {

? ? ? ? ? ? if (lastValue > (*iter)) {

? ? ? ? ? ? ? ? count++;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? if (count < (length / 2 + 1)) {

? ? ? ? ? ? args->miss++;

? ? ? ? ? ? args->hit = 0;

? ? ? ? ? ? if (args->miss == 2) {

? ? ? ? ? ? ? ? if (args->tock > 1) {

? ? ? ? ? ? ? ? ? ? args->tock /= 2;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? args->miss = 1;

? ? ? ? ? ? }

? ? ? ? ? ? args->p1 = args->p1B;

? ? ? ? ? ? args->p2 = args->p2B;

? ? ? ? ? ? args->p3 = args->p3B;

? ? ? ? ? ? args->p4 = args->p4B;

? ? ? ? ? ? args->p5 = args->p5B;

? ? ? ? ? ? args->p6 = args->p6B;

? ? ? ? ? ? args->mateOdds = args->mateOddsB;

? ? ? ? ? ? args->mutateOdds = args->mutateOddsB;

? ? ? ? ? ? args->mutateTime = args->mutateTimeB;

? ? ? ? } else {

? ? ? ? ? ? args->hit++;

? ? ? ? ? ? args->miss = 0;

? ? ? ? ? ? if (args->hit == 2) {

? ? ? ? ? ? ? ? if (args->tock < args->maxTock) {

? ? ? ? ? ? ? ? ? ? args->tock *= 2;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? args->hit = 1;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? args->checkFlag = false;

? ? }

? ? if (args->tick == args->tock) {

? ? ? ? emergeArgs();

? ? ? ? args->checkFlag = true;

? ? ? ? args->tick = 0;

? ? } else {

? ? ? ? args->tick += 1;

? ? }

}

從代碼可以看出還借鑒了少許的“tick-tock”思想。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奋单,一起剝皮案震驚了整個(gè)濱河市锉试,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌览濒,老刑警劉巖呆盖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贷笛,居然都是意外死亡应又,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門乏苦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來株扛,“玉大人,你說我怎么就攤上這事汇荐《淳停” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵掀淘,是天一觀的道長旬蟋。 經(jīng)常有香客問我,道長革娄,這世上最難降的妖魔是什么倾贰? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任冕碟,我火速辦了婚禮,結(jié)果婚禮上匆浙,老公的妹妹穿的比我還像新娘安寺。我一直安慰自己,他們只是感情好吞彤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布我衬。 她就那樣靜靜地躺著,像睡著了一般饰恕。 火紅的嫁衣襯著肌膚如雪挠羔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天埋嵌,我揣著相機(jī)與錄音破加,去河邊找鬼。 笑死雹嗦,一個(gè)胖子當(dāng)著我的面吹牛范舀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播了罪,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锭环,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了泊藕?” 一聲冷哼從身側(cè)響起辅辩,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娃圆,沒想到半個(gè)月后玫锋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡讼呢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年撩鹿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悦屏。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡节沦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出础爬,到底是詐尸還是另有隱情散劫,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布幕帆,位于F島的核電站,受9級特大地震影響赖条,放射性物質(zhì)發(fā)生泄漏失乾。R本人自食惡果不足惜常熙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碱茁。 院中可真熱鬧裸卫,春花似錦、人聲如沸纽竣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜓氨。三九已至聋袋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間穴吹,已是汗流浹背幽勒。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留港令,地道東北人啥容。 一個(gè)月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像顷霹,于是被迫代替她去往敵國和親咪惠。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理淋淀,服務(wù)發(fā)現(xiàn)遥昧,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法绅喉,類相關(guān)的語法渠鸽,內(nèi)部類的語法,繼承相關(guān)的語法柴罐,異常的語法徽缚,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,811評論 0 11
  • 把工作當(dāng)成深愛(?°з°)-的去對待越挫越勇的走向高峰,非常開心最近的狀態(tài)革屠,意識到工作的難度凿试,更快的去克服,執(zhí)行力...
    接受每一刻時(shí)光閱讀 193評論 0 0
  • 分手后的第一年,春節(jié)剛過党瓮,我在朋友圈發(fā)了一段話“愿有人陪你對酒當(dāng)歌的夜详炬,也有人陪你四下無人的街”。后來寞奸,你和她在一...
    回風(fēng)亂雪閱讀 118評論 0 1