NAS-Bench-101: Towards Reproducible Neural Architecture Search

概述

這篇題為"NAS-Bench-101: Towards Reproducible Neural Architecture Search"的論文由Chris Ying等人合作完成,旨在解決神經網絡架構搜索(NAS)領域面臨的重大挑戰:計算資源需求高和實驗難以復現的問題。

論文提出了NAS-Bench-101,這是第一個公開的NAS研究架構數據集。通過精心構建一個緊湊但表達力強的搜索空間,并利用圖同構識別423k個獨特的卷積架構,作者訓練并評估了這些架構在CIFAR-10上的表現,最終編譯成一個包含超過500萬訓練模型結果的大型數據集。

貢獻

  1. ??NAS-Bench-101數據集??:首個大規模開源的NAS架構數據集,使研究人員能夠在毫秒級別評估各種模型的質量,而無需實際訓練模型。

  2. ??搜索空間分析??:首次全面分析NAS搜索空間的特性,揭示了可能指導NAS算法設計的見解。

  3. ??算法基準測試??:展示了如何使用該數據集對各種開源NAS優化算法進行快速基準測試。

架構設計

  • 采用細胞(cell)結構,每個細胞由最多7個節點組成的有向無環圖(DAG)
  • 使用三種基本操作:3×3卷積、1×1卷積和3×3最大池化
  • 限制最大邊數為9
  • 通過圖同構識別出423k個獨特架構

圖1:(左上)各模型的外部架構示意圖。(右上)一個類似Inception的卷積單元,其原始5x5卷積結構通過兩個3x3卷積進行近似處理(省略了拼接和投影操作)。(左下)測試誤差均值最低的卷積單元(省略了投影層)。(右下)展示通道計數自動確定方式的典型單元示例(“+”表示加法運算,“&”表示拼接;使用1×1投影來縮放通道計數)。

(右上和左下都是左上這個架構圖內部的cell的結構,右上是inception cell,左下是最佳cell,右下是每個cell的更細節展示,包括了他們的輸入輸出的連接方式。根據后面論文的描述,每個cell最多有7個節點、9條邊,輸入都是&操作,輸出都是&操作。)

訓練過程

  • 所有模型在CIFAR-10上訓練和評估
  • 使用固定超參數集,通過RMSProp優化器訓練
  • 每個架構重復訓練3次以獲得方差測量
  • 采用四種不同的epoch預算(4,12,36,108)來支持多保真度優化方法

數據集指標

數據集映射每個架構到以下指標:

  • 訓練準確率
  • 驗證準確率
  • 測試準確率
  • 訓練時間(秒)
  • 可訓練模型參數數量

數據集分析發現

性能分布

  • 大多數架構能達到100%的訓練準確率
  • 驗證和測試準確率多數超過90%
  • 最佳架構平均測試準確率達到94.32%
  • ResNet-like和Inception-like細胞分別達到93.12%和92.95%

架構設計影響

  • 用1×1卷積或3×3最大池化替換3×3卷積通常會導致絕對最終驗證準確率下降
  • 深度為3時平均驗證準確率最優
  • 寬度增加似乎會提高驗證準確率,最高達到5(數據集中的最大寬度)

局部性特征

  • 搜索空間表現出局部性,即"相近"架構往往具有相似性能
  • 隨機游走自相關(RWA)顯示低距離時相關性高
  • 全局最大值周圍的鄰域也顯示出局部性

算法基準測試結果

論文比較了多種NAS和超參數優化算法:

  • 隨機搜索(RS)
  • 正則化進化(RE)
  • SMAC
  • TPE
  • Hyperband(HB)
  • BOHB
  • 強化學習(RL)

主要發現:

  • RE、BOHB和SMAC表現最佳,在約50000 TPU秒后開始優于RS
  • SMAC作為貝葉斯優化方法表現良好,盡管存在無效架構問題
  • TPE表現不佳,性能回落到隨機搜索水平
  • 多保真度優化算法HB和BOHB未顯示出常見加速效果
  • RL雖然最終優于RS,但收斂到全局最優的速度慢得多

論文的第二節詳細介紹了nas的架構。

2. The NASBench Dataset

NAS-Bench-101數據集是一張將神經網絡架構與訓練評估指標對應起來的表格。目前大多數神經架構搜索方法都選擇在CIFAR-10分類數據集上訓練模型,因為該數據集的小尺寸圖像能讓神經網絡快速完成訓練。此外,那些在CIFAR-10上表現優異的模型,在擴展到更難的基準測試(如ImageNet,克里熱夫斯基等人,2012年)時通常也能取得好成績(佐普等人,2018年)。基于這些原因,我們也將CIFAR-10作為CNN訓練的基礎,構建了NAS-Bench-101數據集。

2.1. Architectures

與其它神經架構搜索方法類似,我們把神經網絡拓撲結構的探索范圍[search space]限定在小型前饋結構[small feedforward structures](通常稱為單元[cells])的空間內,具體描述如下。每個單元堆疊三次后接一個下采樣層[a downsampling layer],通過最大池化操作將圖像的高度和寬度各減半,同時通道數翻倍。這種模式重復三次后接全局平均池化層[global average pooling],最終連接一個密集型softmax層[a final dense softmax layer]。模型的初始層是一個包含一個3×3卷積核、輸出128個通道的干層[conv stem]。圖1左上角展示了整個網絡結構示意圖。值得注意的是,干層后接單元堆疊的布局模式,在人工設計的圖像分類器(何等人,2016;黃等人,2017;胡等人,2018)以及圖像分類的神經架構搜索空間中都十分常見。因此,架構差異主要源于單元本身[cell]的創新設計。
細胞[cell]架構空間由所有可能的有向無環圖[directed acyclic graphs]構成,這些圖包含V個節點,每個節點都帶有L種標簽之一,分別代表對應的操作[operation]。其中兩個頂點被特別標記為輸入和輸出操作,分別表示細胞的輸入張量輸出張量[input and output tensors]。然而,這種帶標簽的有向無環圖空間在節點數V和標簽數L上都呈指數級增長。為了限制該空間的規模以實現窮舉枚舉,我們施加了以下約束條件:
?我們設定L = 3,僅使用以下操作:(這里的操作可以理解節點上的標簽,3種操作=3個標簽)
????????– 3×3卷積
????????– 1×1卷積
????????– 3×3最大池化
?將V限制在7以內。
?將邊的最大數量限制為9條。
所有卷積層[convolutions]均采用批量歸一化[batch normalization]后接ReLU激活函數[ReLU]。這種設計選擇旨在確保搜索空間仍包含ResNet式和Inception式單元(何等人,2016;塞格迪等人,2016)。圖1右上角展示了Inception式單元的典型示例。我們特意選用卷積層[convolutions]非可分離卷積層[separable convolutions]來復現ResNet和Inception的原始架構設計,盡管這會導致參數量比AmoebaNet(瑞爾等人,2018)等最新前沿架構更為龐大。

2.2. Cell encoding

對細胞進行編碼存在多種方式,不同的編碼方式可能通過調整搜索空間來優化特定算法的性能。在多數實驗中,我們選擇采用一種通用編碼方案:即使用7×7上三角二進制矩陣表示的7頂點有向無環圖,以及包含5個標簽的列表(每個中間頂點對應一個標簽,需注意輸入輸出頂點是固定的)。由于矩陣中存在211種可能的邊連接方式,每個標簽對應3種操作模式,因此該編碼方案總共可生成221?3?≈51?M個獨特模型。補充材料S3中我們還討論替代編碼。
然而,該空間中存在大量無效模型(即輸入頂點之間不存在路徑,或總邊數超過9條)。此外,不同圖在該編碼方式下可能不具備計算唯一性。我們用于識別和枚舉唯一圖的方法詳見補充材料S1。經過去重處理后,搜索空間中共有約42.3萬個唯一圖。
在NAS-Bench-101模型搜索空間中,存在具有不同鄰接矩陣或標簽但計算等效的模型(如圖1所示)。我們將這類單元稱為同構單元。此外,不在輸入節點到輸出節點路徑上的頂點不會對單元計算產生貢獻。對于包含此類頂點的單元,可以通過剪枝操作將其縮減為更小的單元,而不會改變該單元在網絡中的有效行為。由于搜索空間規模龐大,若不考慮同構性而逐一評估所有可能的圖表示方式,將會導致計算復雜度過高且效率低下。
圖1:兩個單元,根據它們的鄰接矩陣和標簽的不同而表示不同,但編碼相同的計算。

2.3. Combine semantics

將圖結構轉換為對應的神經網絡架構相對簡單,但存在一個例外情況:當多條邊指向同一節點時,需要對傳入的張量進行合并處理。此時采用加法[+]或拼接[&]操作都是常規做法。為兼容ResNet和Inception類網絡單元,同時保持計算空間的可擴展性,我們制定了固定規則:輸出節點的張量采用拼接方式處理,而其他節點的輸入則進行求和運算。輸入節點的輸出張量會按順序投影[projected in order],以匹配后續操作所需的輸入通道數量。該機制如圖1右下角所示。

2.4. Training

訓練流程是架構搜索基準測試中的關鍵環節,因為不同的訓練方法會導致性能出現顯著差異。為解決這一問題并確保NAS算法在公平條件下進行對比,我們為數據集中的所有模型設計并開源了一個通用訓練流程。
超參數選擇方面[Choice of hyperparameters.],我們為NAS-Bench-101的所有模型采用統一固定超參數集。該參數集通過粗網格搜索優化了從空間中隨機抽取的50個架構的平均準確率,從而確保其在不同架構間的魯棒性。這種做法與文獻中的標準做法(Zoph等人,2018;Liu等人,2018a;Real等人,2018)相似,并在第5.1節的實驗分析中得到了進一步驗證。
模型訓練與評估細節[Implementation details.]。所有模型均在CIFAR-10數據集(包含4萬訓練樣本、1萬驗證樣本和1萬測試樣本)上進行訓練與評估,采用標準數據增強技術(He等人,2016)。通過余弦衰減算法(Loshchilov & Hutter,2017)將學習率逐步降至零,以降低多次獨立訓練產生的方差波動。訓練過程使用RMSProp優化器(Tieleman & Hinton,2012)配合交叉熵損失函數,并采用L2正則化。所有模型均在TPU v2加速器上完成訓練。基于TensorFlow開發的代碼及相關超參數配置已公開發布于https: //github.com/google-research/nasbench。
我們設置了3次重復實驗和4個訓練輪次預算[3 repeats and 4 epoch budgets.]。所有架構均進行三次重復訓練與評估以獲取方差度量。為評估多保真優化方法(如Hyperband算法,Li等人,2018),我們采用四個遞增訓練輪次預算進行訓練:Estop∈{Emax/3 3,Emax/3 2,Emax/3,Emax} = {4,12,36,108}輪次。每次訓練時,學習率在Estop輪次達到最大值后逐步衰減至零。因此,針對每個Estop參數值,我們分別訓練了3×423k~1.27M個模型,總計獲得4×1.27M~5M個模型。

2.5.Metrics

我們對每個架構A進行了三次不同隨機初始化的訓練測試,針對上述四個預算參數Estop逐一進行。最終數據集包含以下維度:
?訓練準確率;
?驗證準確率;
?測試準確率;
?訓練耗時(秒);
?可訓練模型參數數量。
在單一NAS算法中,僅需使用訓練集和驗證集的指標來搜索模型,測試準確率僅用于離線評估。訓練耗時指標既可用于基準測試算法在時間限制下的精度優化(見第4節),也可評估多目標優化方法。其他無需重新訓練的指標可通過公開代碼計算得出。

2.6. Benchmarking methods

該數據集的核心目標之一是為NAS算法提供基準測試支持。本節將詳細闡述使用NAS-Bench-101的推薦最佳實踐方案,這些方案在后續分析中均被采用;若需獲取完整的基準測試操作指南,請參閱補充材料S6。
NAS算法的目標是在Emax輪次時找到具有高測試準確率的架構。為此,我們會在(A,Estop)配對點上反復查詢數據集,其中A是搜索空間中的一個架構,Estop表示允許的輪次數(Emstop∈{4,12,36,108})。每次查詢都會通過隨機試驗索引進行查找,該索引是均勻分布的從{1,2,3}中隨機選取,以模擬SGD訓練的隨機性。
在搜索過程中,我們會記錄算法在每次函數評估后找到的最佳架構A?i,并根據其驗證準確率進行排序。為了更好地模擬現實世界的計算約束,當總“訓練時間”超過固定限制時,我們會終止搜索運行。每次完整搜索結束后,我們會查詢該模型對應的平均測試準確率f(A?i)(測試準確率本身不應作為搜索的指導依據)。隨后計算即時測試遺憾值:r(A?i)=f(A?i)?f(A?),其中A?表示整個數據集中平均測試準確率最高的模型。該遺憾值即為本次搜索運行的得分。為了評估不同搜索算法的魯棒性,需要進行大量獨立的搜索運行測試。

3. NASBench as a Dataset

在本節中,我們將對NAS-Bench-101數據集進行全面分析,以深入理解神經網絡操作和細胞拓撲結構對卷積神經網絡性能的影響。通過這一研究,我們希望揭示NAS算法所經歷的損失函數變化軌跡。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91054.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91054.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91054.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot整合Fastexcel/EasyExcel導出Excel導出多個圖片

整個工具的代碼都在Gitee或者Github地址內 gitee:solomon-parent: 這個項目主要是總結了工作上遇到的問題以及學習一些框架用于整合例如:rabbitMq、reids、Mqtt、S3協議的文件服務器、mongodb、xxl-job、powerjob還有用Docker compose部署各類中間組件。如果大家有…

網絡原理--HTTPHTTPS

目錄 一、HTTP 1.1 HTTP是什么 1.2 HTTP協議的工作過程 1.3 HTTP協議格式 1.3.1 抓包工具的使用 1.3.2 抓包結果 1.4 HTTP請求 1.4.1 URL 1.4.2 認識“方法” (method) 1.4.3 認識請求“報頭”(header) 1.4.4 認識請求“正文”(body) 1.5 HTTP 響應詳解 1.5.1 HTTP…

『 C++ 入門到放棄 』- 哈希表

一、哈希的概念 哈希,也稱「 散列 」是一種用來進行高效查找的數據結構,查找的時間復雜度平均為O(1),其本質就是依賴哈希函數這個算法來將 key 和該 key 存儲位置建立一個映射關系。 而因為是有著映射關系,所以哈希的事件復雜度為…

零售收銀系統開源代碼全解析:連鎖門店一體化解決方案(含POS+進銷存+商城)

過去10年,收銀系統技術經歷了從單機版到云服務、從單純結算到全渠道整合的快速演進。面對連鎖多門店、AI稱重、智能分賬、跨店庫存同步等新需求,很多企業的現有傳統saas系統已顯乏力。本文將梳理收銀系統關鍵技術指標,助您在系統升級時做出明…

能源高效利用如何實現?樓宇自控系統智能化監管建筑設備

隨著全球能源危機日益嚴峻和“雙碳”目標的持續推進,建筑領域作為能耗大戶(約占社會總能耗的40%),其節能潛力備受關注。樓宇自控系統(Building Automation System,簡稱BAS)作為建筑智能化的核心…

校園二手交易小程序的設計與實現

文章目錄前言詳細視頻演示具體實現截圖后端框架SpringBoot微信小程序持久層框架MyBaits成功系統案例:參考代碼數據庫源碼獲取前言 博主介紹:CSDN特邀作者、985高校計算機專業畢業、現任某互聯網大廠高級全棧開發工程師、Gitee/掘金/華為云/阿里云/GitHub等平臺持續…

Redis(二):Redis高級特性和應用(慢查詢、Pipeline、事務)

Redis的慢查詢 許多存儲系統(例如 MySQL)提供慢查詢日志幫助開發和運維人員定位系統存在的慢操作。所謂慢查詢日志就是系統在命令執行前后計算每條命令的執行時間,當超過預設閥值,就將這條命令的相關信息(例如:發生時間,耗時&…

如何為你的WordPress網站選擇合適的安全插件

在管理WordPress網站時,安全因素至關重要。由于WordPress的廣泛使用,它也成為了黑客攻擊的首要目標。為了避免潛在的安全風險,選擇合適的安全插件至關重要。而Wordfence和iThemes,作為兩款頗具人氣的WordPress安全插件&#xff0c…

我們使用Rust開發的AI知識庫應用

這段時間陸陸續續的開發了2個AI知識庫應用,一個面向企業,一個面向C端用戶。 飛樹智庫:一個安全高效的面向 企業的知識庫平臺(https://fskb.coderbox.cn/)。 小飛樹:一個專注于個人知識管理的AI應用&#…

自動化測試實戰篇

目錄 1. 自動化實施步驟 1.1 編寫web測試用例 1.2 自動化測試腳本開發 1.3 將自動化測試補充至測試報告 1. 自動化實施步驟 1.1 編寫web測試用例 1.2 自動化測試腳本開發 TestDevelopment: 測試用例 - Gitee.comhttps://gitee.com/Axurea/test-development/tree/master/2…

idea 服務器Debug端口啟動設置

一:在阿里云服務器安全組已經設置了端口授權對象:正確命令:nohup java -Xdebug -Xrunjdwp:transportdt_socket,servery,suspendn,address9998 -jar -Duser.timezoneGMT08 -Xms256m -Xmx256m /opt/projects/*/*/*-starter-1.0-SNAPSHOT.jar -…

大模型量化004

Bert P-tuning BertPET、BertP-Tuning Chain of Thought Few shot Cot Auto-COT 解決手動編寫高質量CoT示例麻煩耗時的問題 Auto COT 自動思維鏈生成器 1.業務場景: 每天收到很多反饋,之前需要人工整理,找到重點,做判斷那些需要立…

C#(基本語法)

數據類型C#是一種強類型語言,變量必須聲明類型。基本數據類型包括整型(int、long)、浮點型(float、double)、布爾型(bool)、字符型(char)和字符串型(string&a…

ARM-I2C軟實現

開發流程引腳初始化引腳功能定義實現讀操作實現寫操作GD32F4軟件I2C初始化void SoftI2C_init() {// 時鐘配置rcu_periph_clock_enable(SCL_RCU);// 設置輸出模式gpio_mode_set(SCL_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, SCL_PIN);gpio_output_options_set(SCL_PORT, GPIO_O…

防水醫用無人機市場報告:現狀、趨勢與洞察

市場規模與增長趨勢在全球醫療科技快速發展的當下,防水醫用無人機市場正嶄露頭角,展現出強勁的發展勢頭。據 QYR統計,2023 年全球醫用無人機市場銷售額達到 1.9 億美元,預計到 2030 年將飆升至 8.5 億美元,年復合增長率…

haproxy代理

一.負載均衡 1.1.什么是負載均衡 負載均衡:Load Balance,簡稱LB,是一種服務或基于硬件設備等實現的高可用反向代理技術,負載均 衡將特定的業務(web服務、網絡流量等)分擔給指定的一個或多個后端特定的服務器或設備,…

【面試】軟件測試面試題

1. 測試用例如何編寫 2. bug的生命周期 項目有多少人?多少條測試用例?多少bug?自己發現的第一條?(是不是bug) 3. 缺陷管理工具 包括Jira, PingCode, 禪道,BugZilla,Redmine, TAPD&am…

HbuilderX開發小程序

1.打卡HbuilderX,選擇文件—新建—項目2.創建項目3.在HbuilderX中運行前要確定微信開發這工具的服務端口號是打開的4.HbuilderX中點擊預覽可以實時預覽5.在微信開發者中進行本地測試點擊后自動跳轉到微信開發者工具中運行項目

Netty中FastThreadLocal解讀

io.netty.util.concurrent.FastThreadLocal 是 Netty 中提供的高性能線程局部存儲(Thread-Local Storage)實現,位于 io.netty.util.concurrent 包。它是 Java 標準庫 ThreadLocal 的替代品,旨在優化性能,減少內存分配和…

上海迪士尼游玩攻略 小鐵寄存柜讓你輕松暢玩

去上海迪士尼玩最煩帶一堆行李,其實有小鐵寄存柜幫忙就能輕裝上陣,各個關鍵位置都有分布,玩起來特別省心。?剛到迪士尼的時候,要是坐地鐵到上海國際旅游度假區站,1/2 號口安檢區就有小鐵柜,行李箱、大背包…