<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ò)搜索】Single Path One Shot

          共 4797字,需瀏覽 10分鐘

           ·

          2021-04-20 06:04

          【GiantPandaCV導(dǎo)讀】Single Path One Shot(SPOS)是曠視和清華、港科大聯(lián)合的工作。與之前的工作不同,SPOS可以直接在大型數(shù)據(jù)集ImageNet上搜索,并且文章還提出了一種緩和權(quán)重共享的NAS的解耦策略,讓模型能有更好的排序一致性。

          代碼:https://github.com/megvii-model/SinglePathOneShot

          論文:https://arxiv.org/abs/1904.00420

          摘要

          之前的One-Shot NAS訓(xùn)練難度很大,并且在大型數(shù)據(jù)集比如ImageNet上非常低效。SPOS就是來解決訓(xùn)練過程中的挑戰(zhàn),其核心思想構(gòu)建一個簡化的超網(wǎng),每個結(jié)構(gòu)都是單路徑的,每次訓(xùn)練是一個單路徑的子網(wǎng)絡(luò),通過這種方式可以緩解權(quán)重耦合的問題。訓(xùn)練過程中使用的是均勻路徑采樣,這樣所有的子網(wǎng)的權(quán)重才能被充分且公平地得到訓(xùn)練。

          SPOS訓(xùn)練方式簡單并且搜索非常迅速,支持多重搜索空間比如block-wise, channel-wise,混合精度量化和資源受限情況下的搜索等,并且在ImageNet上實現(xiàn)了SOTA。

          簡介

          目前的神經(jīng)網(wǎng)絡(luò)搜索方法可以分成以下幾種:

          • 使用嵌套優(yōu)化的方式處理權(quán)重優(yōu)化和網(wǎng)絡(luò)架構(gòu)優(yōu)化的問題。
          • 使用權(quán)重共享策略來降低計算量,加速搜索過程。
          • 使用基于梯度的方法,將離散空間松弛到連續(xù)空間。
          • 使用嵌套聯(lián)合優(yōu)化方法。

          在基于梯度的方法中,存在一些問題:

          • 超網(wǎng)中的權(quán)重是緊密耦合的,尚不清楚子網(wǎng)的權(quán)重繼承為何是有效的。
          • 使用同時優(yōu)化的方式也給網(wǎng)絡(luò)架構(gòu)參數(shù)和超網(wǎng)參數(shù)引入了耦合。

          基于梯度的方法在優(yōu)化過程中可能會引入bias,從而誤導(dǎo)網(wǎng)絡(luò)的搜索,出現(xiàn)馬太效應(yīng),算子被訓(xùn)練的次數(shù)越多,權(quán)重會越大,強(qiáng)者越強(qiáng)。

          本文主要貢獻(xiàn):

          • 對現(xiàn)有的NAS算法進(jìn)行詳盡的分析,并指出了現(xiàn)有的使用嵌套優(yōu)化方法存在的缺點。
          • 提出了均勻采樣的single path one-shot方法,可以克服現(xiàn)有one-shot方法的缺點。其簡單的形式允許更大的搜索空間,包括通道搜索、比特寬度搜索等。采用進(jìn)化算法來進(jìn)行搜索,可以滿足低延遲等約束。

          回顧以往的NAS方法

          早期的NAS方法采用嵌套優(yōu)化的方式來實現(xiàn),第一步優(yōu)化是優(yōu)化子網(wǎng)絡(luò)的權(quán)重,優(yōu)化目標(biāo)是降低在訓(xùn)練集上的loss;第二步優(yōu)化是網(wǎng)絡(luò)架構(gòu)優(yōu)化,所有子網(wǎng)中驗證集上準(zhǔn)確率最高的那個網(wǎng)絡(luò)。這種方式最大的缺點是訓(xùn)練代價太大,很多工作只能在Cifar10這樣的小數(shù)據(jù)集或者小的搜索空間中完成。

          近來的NAS方法通常會采用權(quán)重共享的訓(xùn)練策略,在這種策略中,所有子網(wǎng)會繼承超網(wǎng)的權(quán)重,這樣就可以不從頭開始訓(xùn)練,降低搜索代價。這樣的策略可以在ImageNet這類大型數(shù)據(jù)集上進(jìn)行快速搜索。

          大多數(shù)權(quán)重共享方法將離散的搜索空間轉(zhuǎn)化為連續(xù)的搜索空間,這樣就可以使用梯度優(yōu)化的方式來建模神經(jīng)網(wǎng)絡(luò)搜索問題。權(quán)重和架構(gòu)參數(shù)是同時優(yōu)化的,或者使用兩級優(yōu)化方法來處理。

          基于權(quán)重共享方法的NAS有兩個缺點:

          • 超網(wǎng)中各個子網(wǎng)耦合度高,尚不清楚為何從超網(wǎng)繼承權(quán)重的方式是有效的。
          • 同時優(yōu)化網(wǎng)絡(luò)權(quán)重參數(shù)W和架構(gòu)參數(shù)θ會不可避免對架構(gòu)引入某些偏好,這樣在優(yōu)化過程中會偏向于訓(xùn)練某些權(quán)重,造成不公平訓(xùn)練。

          Single Path One-Shot

          架構(gòu)參數(shù)和權(quán)重的耦合是基于權(quán)重共享的NAS方法不得不面對的問題,這是由于同時對兩者進(jìn)行優(yōu)化導(dǎo)致的。為了緩解耦合問題,很自然的想法就是將超網(wǎng)的訓(xùn)練和網(wǎng)絡(luò)搜索解耦合。

          one-shot方法分為兩步,具體描述如下:

          第一步,超網(wǎng)優(yōu)化方式為:

          代表網(wǎng)絡(luò)搜索空間,W代表超網(wǎng)權(quán)重,代表超網(wǎng)中編碼的搜索空間。

          第二步,網(wǎng)絡(luò)架構(gòu)搜索為:

          a代表被采樣的子網(wǎng)架構(gòu),它會繼承超網(wǎng)的權(quán)重,  然后在這個過程中挑選驗證集上準(zhǔn)確率最高的子網(wǎng)結(jié)構(gòu)。

          耦合問題的緩解方法

          耦合緩解的方法有Path dropout 策略, 超網(wǎng)的每個邊會被隨機(jī)drop。通過這種方式可以降低節(jié)點之間的耦合程度,但是網(wǎng)絡(luò)對其中的超參數(shù)dropout rate非常敏感,讓訓(xùn)練過程變得更加困難。

          drop rate參數(shù)的影響

          基于均勻采樣的單路徑方法緩解耦合問題

          權(quán)重共享的神經(jīng)網(wǎng)絡(luò)搜索方法背后有一個基礎(chǔ)原則:即繼承權(quán)重后的子網(wǎng)絡(luò)在驗證集上的表現(xiàn)能夠反映出該子網(wǎng)絡(luò)充分訓(xùn)練以后的結(jié)果。在NAS中,這被稱為一致性問題,繼承權(quán)重訓(xùn)練的子網(wǎng)得到的驗證集精度(supernet performance)高,是否能代表子網(wǎng)從頭訓(xùn)練的驗證集精度(evaluation performance)同樣高呢?實際上,很多基于權(quán)重共享的神經(jīng)網(wǎng)絡(luò)搜索方法的排序一致性都沒有很理想。

          SPOS處理方法是:提出了一個單路徑的超網(wǎng)結(jié)構(gòu),如下圖所示:

          Single Path示意圖

          為了減少權(quán)重之間的耦合度,在每個Choice Block選擇的時候必定會選擇其中的一個choice,不存在恒等映射。在訓(xùn)練階段隨機(jī)選擇子網(wǎng),并驗證其在驗證集上的準(zhǔn)確率。

          此外,為了保證每個選項都有均勻的訓(xùn)練機(jī)會,采用了均勻采樣策略。同時為了滿足一定的資源約束,比如FLOPS大小,會通過均勻采樣策略采樣一批網(wǎng)絡(luò),只訓(xùn)練滿足資源約束的子網(wǎng)絡(luò)。

          不同類型的搜索方式

          • 通道數(shù)搜索:提出了一個基于權(quán)重共享的choice block, 其核心思想是預(yù)先分配一個最大通道個數(shù)的,然后隨機(jī)選擇通道個數(shù),切分出對應(yīng)的權(quán)重進(jìn)行訓(xùn)練。通過權(quán)重共享策略,發(fā)現(xiàn)超網(wǎng)可以快速收斂。
          通道搜索類似Slimmable Network
          • 混合精度量化搜索:在超網(wǎng)的訓(xùn)練過程中,每個選擇block的 Feature Bit Width和Weight Bit Width會被隨機(jī)采樣,這個過程會在進(jìn)化算法過程中決定。
          量化搜索
          • 進(jìn)化神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索:之前的one-shot工作使用的是隨機(jī)搜索策略,對于較大的搜索空間來說不夠高效。與其他工作不同,SPOS不需要將每個架構(gòu)都從頭進(jìn)行搜索,而是每個架構(gòu)只進(jìn)行推理,來決定該架構(gòu)是否有效。
          進(jìn)化算法偽代碼

          重要細(xì)節(jié):在進(jìn)行子網(wǎng)推理之前,網(wǎng)絡(luò)中所有的Batch Normalization的需要在訓(xùn)練集的子集上重新計算。這是因為supernet中由BN計算的數(shù)值往往不能應(yīng)用于候選網(wǎng)絡(luò)中。這部分操作被稱為BN校正。

          BN校正代碼實現(xiàn):

          def bn_calibration_init(m):
              """ calculating post-statistics of batch normalization """

              cumulative_bn_stats = True

              if getattr(m, 'track_running_stats'False):
                  # reset all values for post-statistics
                  m.reset_running_stats()
                  # set bn in training mode to update post-statistics
                  m.training = True
                  # if use cumulative moving average
                  # if getattr(FLAGS, 'cumulative_bn_stats', False):
                  if cumulative_bn_stats:
                      m.momentum = None

          使用了BN校正技術(shù)以后,需要在訓(xùn)練集上再次訓(xùn)練。

          4. 實驗結(jié)果

          數(shù)據(jù)集: 在ImageNet上完成,將原先的訓(xùn)練集切分成50000張作為驗證集,剩下的作為訓(xùn)練集,原先的驗證集作為測試集。

          搜索空間:block 基于ShuffleNetv2設(shè)計的搜索空間,具體采用的架構(gòu)如下,總共有20個CB(choice block),每個choice block 可以選擇四個block,分別是kernel=3、5、7的shufflenet Units和一個Xception的block組成。

          超網(wǎng)的架構(gòu)

          初步baseline:

          其baseline是所有的choice block中都選擇相同的選擇,比如3x3的shufflenet Units,得到的top1準(zhǔn)確率都差不太多;從搜索空間中隨機(jī)采樣一些候選網(wǎng)絡(luò),得到的結(jié)果雖然一樣,但是作者認(rèn)為這是由于隨機(jī)搜索方法太過簡單,以至于不能從大型的搜索空間找到好的候選網(wǎng)絡(luò);使用進(jìn)化算法進(jìn)行搜索,得到的結(jié)果是74.3,比所有的的baeline模型都高。

          block+channel

          可以看出,同時搜索block和channel的結(jié)果性能更高,超過了其他同類型方法。

          搜索代價對比

          一致性分析: 基于超網(wǎng)模型的表現(xiàn)獨立訓(xùn)練模型的表現(xiàn)之間的相關(guān)性越強(qiáng)代表NAS算法有效性更強(qiáng)。SPOS對相關(guān)性進(jìn)行了分析來測試SPOS的有效性,使用NAS-Bench-201這個benchmark來分析SPOS的有效性。NASBench201是cell-based搜索空間,搜索空間中包含5個可選操作zero, skip connection,1x1卷積,3x3卷積,3x3 average pooling。基于這個進(jìn)一步設(shè)計了一些縮小的搜索空間,Reduce-1代表刪除了1x1卷積、Reduce-2代表刪除了3x3 average pooling, Reduce-3代表刪除了以上兩者。使用的是kendell Tau來計算相關(guān)性。

          相關(guān)性

          通過以上實驗可以看出,SPOS有一定的局限性:SPOS的超網(wǎng)是部分相關(guān)的,無法實現(xiàn)完美的真實排序。搜索空間越小,其相關(guān)性越強(qiáng)。

          結(jié)論

          Sinlge Path One Shot分析了以往的基于權(quán)重共享的NAS方法中存在的權(quán)重耦合問題,并提出了單路徑訓(xùn)練策略來緩解耦合問題。本文還分析了SPOS的搜索代價和排序一致性問題,還指出了算法的局限在于超網(wǎng)的排序一致性是部分關(guān)聯(lián)的,并不能完美的符合真實排序。搜索空間越小,排序一致性越強(qiáng)。



          想加入GiantPandaCV交流群或者對文章有疑問的,歡迎添加筆者微信。


          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  97爽无码人妻aⅴ精品牛牛 | 我看操逼| 我不卡一区二区 | 粉嫩在线 | 全黄做爰100分钟视频 |