神经结构搜索资料NAS
神經結構進化搜索資料
近年來, 深度神經網絡 (DNNs) 在許多人工智能任務中取得卓越表現,然而網絡設計嚴重依賴專家知識,這是一個耗時且易出錯的工作。于是, 作為自動化機器學習 (AutoML) 的重要子領域之一, 神經結構搜索 (NAS) 受到越來越多的關注, 旨在以自動化的方式設計表現優異的深度神經網絡模型。[1]
目前主要的神經架構搜索可以分為以下三種,如下表1所示[2](以下是對參考文獻二的整理)
表1
| 神經架構搜索算法 | 特點 |
| 強化學習(RL) | 需要數千個GPU工作好幾天才能夠完成預期的效果,例如CIFAR-10圖像分類數據集,顯示很難廣泛應用。 |
| 基于梯度NAS算法 | 相比于強化學習,更加有效率,但是由于優化器的選擇可能會導致病態,并且需要專家知識 |
| 基于演化計算的NAS算法 成為ENAS算法 | 廣泛應用于解決非凸優化問題,甚至目標函數數學表達式未知的問題。 |
EC(Evolutionary Computation)是一種基于種群演化的算法,模擬物種或行為的進化
對自然界中的種群進行優化,以解決具有挑戰性的優化問題。ENAS是通過EC來搜索最優DNN架構的過程,ENAS算法根據其他搜索策略可以進一步劃分,如下圖1所示,進化計算技術中根據優化方法采用的搜索策略,可以分為進化算法(evolution algorithm),群體智能(swarm intelligence)和其他方法。目前論文研究中進化算法占絕大多數,進一步遺傳算法(GA)又占一大部分,遺傳編程(GP)和進化策略(ES)均屬于進化算法。群體智能算法中又包括粒子群優化方法(PSO)和蟻群算法(ACO)。同時,在其他分類中也存在差分進化(DE),螢火蟲算法(FA)等,算法具體介紹可參考論文
圖 1
?
ENAS算法的具體流程圖如下圖2所示。首先群體初始化,確定編碼策略,從初始空間中構建個體,然后評估個體適應度。初始化完成后,進入群體進化階段,從初始化群體中隨機選擇個體作為父代。根據搜索空間,進行交叉、變異等進化操作,對生成的個體評估其適應度。根據群體更新策略,選擇保留的個體,加入到群體中,直到滿足條件,返回最優的個體。上面算法主要涉及搜索空間的設計,編碼,群體更新策略,以及評估加速方法。
?
圖2
以下將會分開具體介紹ENAS算法流程圖中的每一部分
搜索空間包含組成有效個體的基本單元以及所有候選參數,根據搜索空間中基本單元的不同,大致分為三類,layer-based,block-based和cell-based搜索空間,此外,有些算法沒有考慮基本單元內部參數,而是關心單元間的連接,這樣的搜索空間稱作topology-based空間。同時,搜索空間中的約束也是非常重要的,這表示人參與的程度。較多的約束可以得到較好的結構,但阻止了任何不在約束中的新結構。另外,不同大小的搜索空間也會影響搜索效率。(具體見論文5、6頁)。
當前,搜索空間主要關注三方面,固定深度,豐富的初始化以及部分固定結構。固定深度表明群體中的所有個體結構有著相同的深度。豐富的初始化表示結構具有良好的設計,通常是人工設計的。部分固定結構意味著網絡結構中有部分是確定的。相對較少的約束表明沒有前面三個方面要求的較強的約束。
一般而言,初始化以及進化過程中的搜索空間是相同的,有時初始化時會加入一些人為約束,使得進化過程的搜索空間將大于初始化的搜索空間。
每種ENAS方法在開始第一個階段之前,需要確定如何將網絡編碼成個體。一般根據進化過程中個體長度是否變化,將編碼策略分為固定長度編碼以及可變長度編碼。使用固定長度編碼,在進化過程中個體擁有相同的長度。但是,需要定義一個合適的最大長度,因為這關系到網絡結構的最優深度,但這依賴一定的專業知識以及經驗。可變長度編碼包含結構的更多細節以及更自由的表示,當面臨一個新問題時,可以隨機設置編碼長度。(具體參考論文第6、7頁)。
通常現有ENAS算法中不同進化計算方法的更新機制不同,導致群體更新策略也各不相同。當前的ENAS研究中,EA-based算法占大多數,而GA-based是最受歡迎的方法。具體算法如下表二所示,(參考論文8、9頁)
表二
| 群體更新算法 | 具體算法 | 算法簡介 | ||
| 進化算法 | Elitism | 精英主義方法會保留最高適應度的個體,但這種方法容易損失種群多樣性,導致種群落入局部最優 | ||
| Discard the worst or the oldest | 丟棄最壞的個體與精英主義相似,從種群中移除最低適應度的個體。也有選擇丟棄種群中最老的個體,這種方法可以更多的探索搜索空間不用過早的選擇好模型 | |||
| roulette wheel selection | 輪轉法會根據群體中個體的適應度分配一個概率,無論好壞,將決定個體是否存活(或被丟棄) | |||
| tournament selection | 錦標賽選擇法從等概率采樣的個體中選擇最好的一個 | |||
| Others | 在一些論文中,強調基因比存活個體更重要,基因可以表示結構中的任何成分。 | |||
| 群體智能 | 粒子群優化(PSO) | 啟發來自魚群,利用群體中的個體對信息的共享使整個群體的運動再問題求解空間中產生從無序到有序的演化過程,從而獲得最優解 | ||
| 蟻群算法(ACO) | 由自然界中螞蟻覓食的行為而啟發,每個螞蟻根據信息素的指導從一個節點到另一個節點構建出一個結構,每代更新信息素,從而吸引下一代螞蟻進行探索,由于信息素是逐漸衰減的,這也鼓勵其他螞蟻探索其他區域。最終得到一個最優結構。 | |||
| 其他方法 | 進化差分(DE) | 首先,產生足量的隨機變量,作為初始的可能解。接著進行突變、交叉、選擇計算,一輪后,檢查是否滿足終止條件,若未滿足,則重新突變、交叉、選擇計算,最終輸出最后一輪的最佳解 | ||
| 螢火蟲算法(FA) | 是一種模仿螢火蟲之間信息交流,相互吸引集合,算法中,每個螢火蟲的位置代表了一個待求問題的可行解,而螢火蟲的亮度表示該螢火蟲位置的適應度,亮度越高的螢火蟲個體在解空間中的位置越好 | |||
| 爬山算法(HCA) | 是一種局部搜索算法,再增加高度的方向上連續移動,以找到山峰或最佳解決問題的方法。再達到峰值時終止,其中沒有鄰居具有更高的值 | |||
| Coronavirus optimization algorithm(CVOA) | 通過模擬病毒傳播以及感染健康個體從而發現最優結構 | |||
4、評估加速
在進化NAS算法中,通常網絡評估過程是最耗費時間的。幾乎所有的方法評估個體,首先要進行訓練,然后在驗證集/測試集上評估效果。由于結構正變得越來越復雜,訓練每一個結構要花費大量時間使其收斂。因此,有了各種不同的方法來縮短評估時間,減少計算資源消耗。常見的加速評估過程的方法有權重繼承,早停,減小訓練集,以及群體記憶,如下表3所示。
表3
| 評估加速算法 | 簡介 |
| 權重繼承 | 因為進化操作不會完全打破個體結構,新生成的個體的一些結構和它們父代相同。因而相同部分的權重可以很容易的繼承過來。由于權重繼承,不需要再從頭訓練網絡。 |
| 早停策略 | 早停策略已被廣泛用于NAS方法中,最簡單的方式是設置一個固定且相對較小的訓練epoch。但是,早停策略也導致評估個體表現不準確,特別對于大型,復雜結構 |
| 減少訓練集 | 使用與大數據集相似特性的數據集子集,可以有效的縮短時間。一般與遷移學習結合將搜索出的模型遷移到大型數據集上 |
| 群體記憶 | 重用群體中前面出現過的結構信息。在基于群體方法,特別是基于遺傳的算法中,會在后代中保留群體內表現良好的個體。有時下一代個體直接繼承它們父代所有的結構信息,因此,不需要再重新評估該個體 |
參考文獻
[1] 李航宇,王楠楠,朱明瑞,楊曦,高新波.神經結構搜索的研究進展綜述[J].軟件學報,2022,33(01):129-149.DOI:10.13328/j.cnki.jos.006306.
[2] Liu Y, Sun Y, Xue B, et al. A survey on evolutionary neural architecture search[J]. IEEE Transactions on Neural Networks and Learning Systems, 2021.
總結
以上是生活随笔為你收集整理的神经结构搜索资料NAS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 若依修改页面数据
- 下一篇: 研发管理05:项目管理经验总结