原文鏈接:https://arxiv.org/pdf/1812.00332.pdf? 發(fā)表:ICLR 2018
編輯:牛濤
code:https://github.com/MIT-HAN-LAB/ProxylessNAS
為了減小NAS的復(fù)雜度岳悟,之前的方法通過在proxy dateset上搜索cell然后堆疊的方式生成網(wǎng)絡(luò)結(jié)構(gòu)。但是proxy上性能好不代表遷移后表現(xiàn)也好,同時(shí)堆疊cell需要cell結(jié)構(gòu)都一樣,這限制了其結(jié)構(gòu)多樣性。
由此伯铣,本文提出了一種在target task上的NAS方法,同時(shí)還兼顧了硬件的metric。該方法允許cell是多樣的动猬。
類似于One-Shot和DARTS,本文建立了一個(gè)hypernet表箭,每層的輸出是分支輸出的融合結(jié)果赁咙。如下式
但是這樣做的一個(gè)顯著問題是,每次計(jì)算的時(shí)候需要保留所有支路的中間變量免钻,這需要龐大的顯存并且很耗時(shí)彼水。作者通過二值化在每次只選擇一條支路計(jì)算的方式解決上述問題。具體如下
對(duì)于結(jié)構(gòu)參數(shù)极舔,因?yàn)槠鋮⑴c了二值化無(wú)法直接求導(dǎo)凤覆,所以借鑒了二值神經(jīng)網(wǎng)絡(luò)(準(zhǔn)確的說是里面的直通估計(jì)),跳過了二值化處的求導(dǎo)來傳遞梯度拆魏。然而盯桦,更新結(jié)構(gòu)參數(shù)的時(shí)候還是需要把整個(gè)hyper-net傳到GPU中,為了解決顯存問題渤刃,作者利用了一個(gè)很直觀的思想拥峦。即如果某一個(gè)candidate是最好的,它比任意一個(gè)都要好溪掀。通過在N個(gè)候選path中依據(jù)概率選擇兩個(gè)事镣,只需要更新這兩個(gè)的大小關(guān)系,不斷重復(fù)迭代最后任意兩個(gè)都會(huì)有明確的大小關(guān)系揪胃。(這部分原文沒有公式只有文字描述璃哟,詳情可以參考原文)
作者在更新結(jié)構(gòu)參數(shù)的同時(shí)還考慮到了推理時(shí)延,每層的時(shí)延也采用mix-operation的方式喊递,對(duì)于該層的每個(gè)分支随闪,用一個(gè)時(shí)延預(yù)測(cè)模型預(yù)測(cè)其推理時(shí)延,記為F骚勘,如下式
因此在更新結(jié)構(gòu)參數(shù)時(shí)的總損失寫為
除了用直通估計(jì)傳遞梯度更新的方式铐伴,作者還使用了RL的方式(策略梯度)來更新撮奏,詳情可以參考原文,和最開始的NAS如出一轍当宴。