<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【神經(jīng)網(wǎng)絡(luò)搜索】NasBench301 使用代理模型構(gòu)建Benchmark

          共 3821字,需瀏覽 8分鐘

           ·

          2021-11-06 15:48



          【GiantPandaCV導(dǎo)語(yǔ)】

          本文介紹的是NAS中的一個(gè)benchmark-NASBench301, 由automl.org組織發(fā)表,其核心思想是針對(duì)表格型基準(zhǔn)存在的不足提出使用代理模型擬合架構(gòu)與對(duì)應(yīng)準(zhǔn)確率。




          Paper: NAS-Bench-301 and The case for surrogate benchmarks for Neural Architecture Search

          Code: https://github.com/automl/nasbench301

          1?動(dòng)機(jī)

          • NAS領(lǐng)域需要統(tǒng)一的benchmark,否則研究NAS需要的計(jì)算量對(duì)大多數(shù)人來(lái)說(shuō)很難承受。

          • 目前存在的表格型Benchmark(例如NASbench101中使用了表格進(jìn)行管理,根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)編碼得到對(duì)應(yīng)準(zhǔn)確率)存在搜索空間受限的問(wèn)題,同時(shí)遷移性比較差。

          • 為了解決以上問(wèn)題,提出使用代理模型構(gòu)建benchmark,其中包含了量級(jí)的網(wǎng)絡(luò)架構(gòu),同時(shí)可以遷移到其他模型空間中。

          • 所謂代理模型可以理解為一個(gè)預(yù)測(cè)器,輸入是網(wǎng)絡(luò)架構(gòu)編碼,輸出是對(duì)應(yīng)架構(gòu)精度。

          根據(jù)以上介紹,需要重點(diǎn)關(guān)注:

          • 為了適配更多的benchmark,如何進(jìn)行網(wǎng)絡(luò)編碼?

          • 使用代理模型進(jìn)行回歸就一定會(huì)帶來(lái)誤差,如何選擇回歸模型?如何避免誤差帶來(lái)干擾?

          2?貢獻(xiàn)

          • 提出代理NAS Benchmark - NAS-Bench-301, 其搜索空間能夠覆蓋真實(shí)場(chǎng)景中NAS的空間(規(guī)模),提出使用代理來(lái)估計(jì)模型性能。

          • 證明了使用代理模型來(lái)擬合架構(gòu)能夠比表格型benchmark更能反映架構(gòu)的真實(shí)性能 。

          • 分析并開(kāi)源了NASbench301的訓(xùn)練集(60k規(guī)模),詳見(jiàn)Open Graph Benchmark

          • 在NASBench301上詳盡的評(píng)估了一系列回歸模型,證明了在更大的搜索空間中,歸回模型依然可以表現(xiàn)出很強(qiáng)的泛化能力。

          • 在NASBench301上運(yùn)行了一系列NAS算法,發(fā)現(xiàn)NAS算法搜索軌跡和真實(shí)的搜索軌跡是高度一致的 。

          • NASBench301可以得到科研方面的insight,以local search為例進(jìn)行了實(shí)驗(yàn)。

          3?證明代理模型優(yōu)越性

          在seed不固定的情況下,模型運(yùn)行結(jié)果并不是固定的,即便是seed固定,一些模型也存在無(wú)法精確復(fù)現(xiàn)的問(wèn)題。NAS的Benchmark制作中也會(huì)遇到這樣的問(wèn)題,NASBench101中使用三個(gè)不同的seed從頭開(kāi)始訓(xùn)練,得到對(duì)應(yīng)模型的三個(gè)精度。因此對(duì)表格型的基準(zhǔn)來(lái)說(shuō),也是存在一定的誤差的,如果基于代理的基準(zhǔn)的MAE(MeanAbsoluteError)能夠低于表格型,就證明其具有更好的預(yù)測(cè)能力。

          實(shí)驗(yàn)結(jié)果如下:

          其中代理模型選擇是GIN(A fair comparison of graph neural networks for graph classification),實(shí)驗(yàn)發(fā)現(xiàn)代理模型可以隨著訓(xùn)練規(guī)模的增大,更好的學(xué)習(xí)平滑噪聲。

          4?NAS-Bench-301數(shù)據(jù)集

          NAS-Bench-301數(shù)據(jù)集詳細(xì)信息如下:

          • 由60k個(gè)架構(gòu)組成

          • 數(shù)據(jù)集是CIFAR10

          • 搜索空間:DARTS-Like search space

          3.1 數(shù)據(jù)采集

          由于搜索空間巨大,不可能將整個(gè)搜索空間遍歷并訓(xùn)練,需要考慮均勻采樣搜索空間。

          通過(guò)對(duì)整個(gè)搜索空間進(jìn)行可視化t-SNE:

          可以發(fā)現(xiàn),并不存在大量突變,同時(shí)性能最好的架構(gòu)在整個(gè)簇的外邊,形成獨(dú)立的簇。

          可視化不同算法在整個(gè)搜索空間中采樣結(jié)果可得:

          3.2 性能表現(xiàn)統(tǒng)計(jì)

          參數(shù)量和驗(yàn)證集error:可以發(fā)現(xiàn)形成了帕累托前沿。

          比較奇特的是,隨著參數(shù)量的增加,error還會(huì)進(jìn)行一次反彈,這說(shuō)明模型容量過(guò)大會(huì)導(dǎo)致出現(xiàn)過(guò)擬合問(wèn)題。

          下圖發(fā)現(xiàn)Cell depth對(duì)性能影響不大:

          5?在NAS-Bench-301擬合代理模型

          代理模型的任務(wù)還是回歸,本文中并沒(méi)有提出新的回歸模型,而是普遍驗(yàn)證了多種回歸算法并進(jìn)行選擇。

          可選的代理模型有:

          • Deep GCN

          • GIN

          • Random Forests

          • Support Vector Regression(SVR)

          • XGBoost

          • LGBoost

          • NGBoost

          • predictor-based NAS

          評(píng)估指標(biāo)包括:

          • 決定系數(shù)R

          • sparse Kendall Tau肯德?tīng)栂禂?shù)

          肯德?tīng)栂禂?shù)適用評(píng)估模型預(yù)測(cè)的排序與真實(shí)排序的一致性,普通的肯德?tīng)栂禂?shù)過(guò)于嚴(yán)苛,需要整個(gè)排序嚴(yán)格一致,但是由于相同精度的模型可能數(shù)量非常多,如果排序過(guò)于嚴(yán)格會(huì)導(dǎo)致指標(biāo)不夠精確,所以稀疏肯德?tīng)栂禂?shù)允許出現(xiàn)0.1%的排序改變,能夠更好地反映代理模型的性能。

          實(shí)驗(yàn)結(jié)果:最好的幾個(gè)模型是:LGBoost,XGBoost,GIN, 因而

          引入噪聲建模:發(fā)現(xiàn)GIN依然是性能最好的。

          6?注意事項(xiàng)

          使用NASBench301存在的風(fēng)險(xiǎn)和注意事項(xiàng):

          • 代理模型被視為黑盒,只能用于預(yù)測(cè)模型,但不應(yīng)該被用于提取梯度信息。

          • 不鼓勵(lì)使用類似于NASBench301中的代理模型,如GNN-based 貝葉斯優(yōu)化方法,GIN

          • 為了確保可比性,在測(cè)評(píng)過(guò)程中需要提供基準(zhǔn)的版本號(hào),比如NB301-XGB-v1.0, NB301-GIN-v1.0

          7?代碼使用

          環(huán)境安裝:

          git?clone?https://github.com/automl/nasbench301.git
          cd?nasbench301
          cat?requirements.txt?|?xargs?-n?1?-L?1?pip?install
          pip?install?.

          環(huán)境安裝可能會(huì)出現(xiàn)問(wèn)題,因?yàn)樵鹊膔equirements.txt只針對(duì)cuda10.0,如果本身就是cuda10.0環(huán)境可以直接使用官方提供的api,但是如果是cuda11.1可以繼續(xù)往下看。

          安裝過(guò)程中,主要是問(wèn)題在于torch_sparse包安裝非常繁瑣,對(duì)版本要求非常高。如果版本不匹配,會(huì)出現(xiàn)段錯(cuò)誤,或者undefined symbols等問(wèn)題。

          torch_sparse: https://github.com/rusty1s/pytorch_sparse

          本文所用環(huán)境:

          • ubuntu16.04

          • cuda11.1

          • torch=1.8+cu111

          • python==3.7

          經(jīng)過(guò)一整天的配置,終于試出來(lái)一個(gè)版本:

          torch==1.8.0+cu111?-f?https://download.pytorch.org/whl/cu111/torch_stable.html
          torchvision==0.9.0+cu111?-f?https://download.pytorch.org/whl/cu111/torch_stable.html

          torch-scatter==2.0.6?-f?https://data.pyg.org/whl/torch-1.9.0%2Bcu111.html
          torch-sparse==0.6.12?-f?https://data.pyg.org/whl/torch-1.9.0%2Bcu111.html

          torch-cluster==1.5.9?-f?https://data.pyg.org/whl/torch-1.9.0%2Bcu111.html
          torch-spline-conv==1.2.0?-f?https://data.pyg.org/whl/torch-1.9.0%2Bcu111.html
          torch-geometric==1.6.3

          • torch-scatter中提供的源:https://data.pyg.org/whl/torch-1.9.0%2Bcu111.html

          • nasbench301使用的源:https://pytorch-geometric.com/whl/torch-1.9.0%2Bcu111.html

          • torch官方源:https://download.pytorch.org/whl/cu111/torch_stable.html

          遇到的錯(cuò)誤:

          TypeError: load() missing 1 required positional argument: ‘Loader‘

          YAML 5.1版本后棄用了yaml.load(file)這個(gè)用法,因?yàn)橛X(jué)得很不安全,5.1版本之后就修改了需要指定Loader,通過(guò)默認(rèn)加載器(FullLoader)禁止執(zhí)行任意函數(shù),該load函數(shù)也變得更加安全

          用以下三種方式都可以

          d1=yaml.load(file,Loader=yaml.FullLoader)
          d1=yaml.safe_load(file)
          d1?=?yaml.load(file,?Loader=yaml.CLoader)

          原文鏈接:https://blog.csdn.net/qq_34495095/article/details/120905179

          OSError: python3.7/site-packages/torch_sparse/_version_cuda.so: undefined symbol

          這個(gè)主要是由于環(huán)境不匹配導(dǎo)致的問(wèn)題,需要選擇正確對(duì)應(yīng)關(guān)系的版本。如果有更好的解決方案也歡迎聯(lián)系筆者。


          END



          瀏覽 51
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天堂一区在线观看 | 欧美乱码熟妇色精精品 | 色色色五月天婷婷 | 国产精品九九九九。。。 | 艹逼网|