當前位置:
首頁 > 科技 > 如何用進化方法優化大規模圖像分類神經網路?

如何用進化方法優化大規模圖像分類神經網路?

機器之心原創

作者:Angulia Chao

參與:Joni、侯韻楚、高振

讓機器具備生物一樣的進化能力一直是計算機科學的一個熱門研究領域,今年三月份,谷歌的多位研究者提出了一種圖像分類器的大規模進化方法,機器之心也曾報道過這項研究,參閱:《深度 谷歌和 OpenAI 新研究:如何使用達爾文進化論輔助設計人工智慧演算法?》。研究發布之後,機器之心的技術分析師又對這項重要研究進行了更加深度細緻的解讀。

論文:圖像分類器的大規模進化(Large-Scale Evolution of Image Classifiers)

https://arxiv.org/pdf/1703.01041.pdf

摘要:神經網路已被證明可以有效地解決難題,但它們的架構設計起來頗具挑戰性,即便只是圖像分類問題也如此。進化演算法(evolutionary algorithms)提供了一種能夠自動發現這類網路的技術。儘管其計算需求顯著,但是設計出能與大型人工設計的架構相媲美的進化模型如今已非天方夜譚。我們以空前的規模採用了簡單的進化技術,並從平凡的初始條件出發,來發現可用於 CIFAR-10 和 CIFAR-100 數據集的模型。為此,我們使用直觀的新型變異運算元(mutation operators)來導航大型搜索空間。我們認為,演化一旦開始,其輸出就應當是一個經過完整訓練的模型,不需任何人進行參與。這項研究尤其重要的是結果的可重複性、可變性以及計算要求。

解讀

不論是在學術研究還是產業應用方面,神經網路都展現了強大的能力。為了解決不同的實際問題,多種網路架構可根據特定的任務而建立。然而如今所創建的有效架構均為人工設計的成果,因此本文為解決神經網路圖像分類方面的架構優化問題提出了新的方法。在進化演算法中,所提出的方法通過操控直觀突變,來自動適應最優的網路架構。此外,整個優化過程並不需要人為干預來獲得經過完整訓練的模型。為了深入了解,我們將會介紹神經網路中應用演化演算法的細節,並將其與之前發表的論文進行比較。最後將會對本研究的整體質量進行簡要評估。

在圖像分類領域,只要擁有足夠的訓練數據,神經網路對於多個困難任務而言便是十分成功的分類器,但只有經過研究人員與工程師多年的研究和分析,才能實現表現出色的網路模型。因而以自動方式設計神經網路架構成為熱議。若要實現架構的自動設計,一種直觀的方法便是「搜索」。因此我們應用了進化演算法的思想:受到生物演化機制的啟發,演算法將候選解決方案作為大群體中的個體,而後定義適應度函數,以度量每個候選解決方案的質量。我們還應用了迭代選擇過程,其中相對最優的個體將作為「父代」進行繁殖,通過變異和重組在群體中產生新的後代。通過重複上述操作,子代會繼承父代的優勢,而突變則進一步提供了群體多樣性。依次,我們終將搜索出最佳解決方案。

為了協助優化神經網路,神經演化最初僅用於進化神經網路的連接權重。以 NEAT(增強拓撲的神經演化)演算法(Stanley 和 Miikkulainen)為例,它需要改變權重、增加現有節點之間的權重連接以及分割現有連接時插入節點這三種變異,在超參數搜索中也應用了其他類似的方法。但與如今廣泛使用的神經網路(如 AlexNet 與 VGGnet)相比,上述方法僅適用於相當小規模的網路。這些傳統方法側重於演化過程的效率而非規模,故而不適於最先進的網路優化。另一方面,非演化性神經發現方法則更適合如今的「深度」網路。因此我們使用了其他替代方法(如貝葉斯優化和強化學習)來優化深度模型,儘管它們的缺陷很明顯——網路層數仍需由研究人員證明,而非演算法本身。故而所提出的研究強調了在沒有人為干涉的條件下,其在研究網路架構的大規模搜索與基本初始條件方面的新穎性。實驗比較如下:

表 1. 與人工設計的架構相對比。「C10+」和「C100+」這兩列分別表示經過數據增強的 CIFAR-10 和 CIFAR-100 數據集的測試精度。「Reachable?」這一列則表示給定的人工設計的模型是否位於搜索空間內。「-」表示 Huang 等人的論文(2016b)未報告該值(並非原作者)。這張表大部分基於 Huang 等人的論文(2016a)。

表 2. 與自動發現的架構相對比。「C10+」和「C100+」分別包含經過數據增強的 CIFAR-10 和 CIFAR-100 數據集的測試精度。「-」表示該信息未報告或不為我們所知。請參考表 1 包括先進技術的人工設計結果。「離散參數」表明只能從少量值中挑選出參數(如從 中進行選擇)。

由表 1 和表 2 可得,根據所提出的演化方法,C10+以及 C100+的分類性能超過了人工方法和其他自動發現的架構,並不需經過後處理階段。

下文將對大規模演化方法做出詳細闡述。

根據演化演算法的工作原理,該方法將經過訓練的架構視為個體。因此,我們能夠創建具有多個模型的群體,並將適應度值視為驗證集的精確度。本文建議使用圖形作為數據結構來編碼個體的基本架構。在這個設計圖中,頂點表示 3 級張量,這在卷積神經網路中十分常見:使兩個維度作為圖像的空間坐標,而第三個張量表示 RGB 顏色通道;圖形的邊緣則表示連接、卷積或可變參數。隨後我們通過刪除低適應度值模型來應用進化規則,並選擇最優的父代來產生新的個體。在繁殖過程中,為了增加個體多樣性,我們也會使所選父代的複製版產生突變,接著會在大型搜索空間中重複進行隨機個體的成對比賽,以尋得最終的最優子代。對於具體的規模實現,我們已經開發了大規模並行的無鎖基礎設施。不同的計算機將進行非同步操作,並在表示個體的文件目錄之下,依靠共享文件系統進行通信,移除和垃圾回收也將被用於處理計算效率問題。此外,繁殖過程對整個群體進行了演變。變異操作也會從預定集中隨機選擇。變異操作包括:

更改學習率(下文會列出抽樣細節)。

身份(實際是指「保持訓練」)。

重設權重(如 He et al.(2015)的樣本)。

插入卷積(在「卷積主幹」中的隨機位置插入卷積,如圖 1 所示。插入的卷積具有 3×3 的濾波器,隨機步長為 1 或 2,信道數量與輸入相同。可以應用批量歸一化及 ReLU 激活,也可不進行隨機使用)。

消除卷積

改變步長(僅允許冪為 2 的步長)

改變任一卷積的信道數。

過濾器尺寸(水平或垂直方向隨機,並隨機選擇卷積,但僅為奇數值)

插入一對一(插入一對一或身份連接,類似於插入卷積突變)

添加跳過(隨機層之間的身份)

刪除跳過(刪除隨機跳過)

在突變過程中,所有參數都會產生一個密集的搜索空間,這意味著任何參數都不存在上限。因此所有的模型深度都能夠實現。參數的這種無限性引起了對可能存在的真正大型架構集的探索。換言之,神經網路的參數與架構都能夠在沒有人為干預的條件下演化。

經過對理論背景的闡釋,我們逐步介紹了將要做的實驗的初始設置與驗證策略。眾所周知,在初始化方面,即便是一個經過訓練的卷積神經網路也屬於強分類器,它還可能在實驗中達到相對較高的精確度,因此本文會從簡單個體所組成的群體出發。這些個體不包含卷積以及在分類方面性能不佳的網路,同時其學習率會被初始化為很大的值:0.1。這種設置會強制個體進行學習,使強分類器進行演變,並能通過變異進行自我發現;同時實驗可以避免「操控」,進而大獲成功。

加速演化的另一種策略便是權重繼承。此處的繼承是指,只要有可能,個體便可繼承父代的部分或全部權重。在報告方法中,每次指的都是「最佳模式」。除了在一個實驗中選擇最佳模型,具有最高驗證精確度的模型還試圖在所有實驗中選擇「最佳實驗」。

除了訓練和測試策略,計算成本是實驗的另一個重要方面。它由 TensorFlow 實現,其中基因變異和卷積可被視為 TF(TensorFlow)操作。對於每一個 TF 操作,我們都會預測所需浮點運算(FLOP)的理論數,並在給定每個個體後分配計算成本:

其中 F 表示用於訓練和驗證的 FLOP,E 表示正在運行的時期,N 表示訓練和驗證的樣本數量。此外,每個實驗的計算成本是其全部個體成本之和。

下一步是去實現上文提到的演算法。每個實驗需要在幾天內演變出一個群體,如下圖所示:

圖 1. 演化實驗進展。每個點代表群體中的個體。藍點(黑色,右上)表示存活個體,其餘個體已被殺死。四個圖表展示了發現的例子。這些對應於最優的個體(最右)以及它們的三個祖先。最優個體通過其驗證精確度進行選擇。演化有時會在不存在任何非線性的區域(「C」,白色背景)之間堆疊卷積,這在數學上與單個線性運算相同。一些卷積則與典型的人工設計架構不同,其後伴隨著多個非線性函數(「C + BN + R + BN + R + ...」,橙色背景)。

在訓練階段之後,所提出的方法在 CIFAR-10 數據集上使用了 9×10^19 FLOPS,使精確度達到了 94%,隨後我們應用了相同的神經網路進化演算法,其參數是 CIFAR-100 中使用 7×10^19 FLOPS,使精確度達到 76.3% 時的參數。我們所料不錯,這兩個數據集的結果與其他最先進的人工設計結果相比頗具競爭力。

我們還對多個實驗中的結果進行了統計分析,其演化進展如下圖所示:

圖 2. 結果和控制項的可重複性。本圖中,時間 t 處的垂直軸被定義為在 t 時刻或之前存活的具有最高驗證精確度個體的測試精確度。插圖了放大主圖的一部分。這條曲線所顯示的各實驗的進展情況如下。頂線(藍色實線)顯示了 5 次大規模演化實驗的平均測試精確度,其周圍陰影區域的寬度為±2s(插圖更為清晰)。下一行(主圖和插圖中的橙色虛線)則表示禁用權重繼承時的單一實驗,因此每個個體都需從隨機權重中進行訓練。最低位的曲線(點劃線)是隨機搜索控制項。所有實驗使用的硬體數量與類型都相同,而從驗證到測試集的泛化中出現的少量雜訊則解釋了曲線並非單調增加的原因。±2s 區域的窄寬度(主圖和插圖)則表明演化實驗中得到高精確度具備可重複性。

在分析時,它總結出了一個用於清查的大型搜索空間,來得到更好的最優解決方案。同時,突變率的適當增加有助於避免局部最小值。另一方面,當表示訓練步驟號的元參數 T 增大時,精確度便會增加。此外,更大的訓練步驟意味著,個體需經過更少的身份突變來達到給定的訓練水平。

圖 3. 對元參數的依賴。在這兩幅圖中,每個圓圈表示完整演化實驗的結果。兩個垂直軸則表示實驗結束時具有最高驗證精確度個體的測試精確度。所有群體的演化時間相同。每個水平軸的值存在 5 個數據點。左側為群體規模的影響。為了節省資源,這些實驗的個體訓練步驟數只有 2560 步。能夠發現,精確度隨著群體規模的增大而增加。右側為個體訓練步驟數量的影響。可以觀察到隨著步驟的增多,精確度將如何增加。

同時,其他的參數設置技巧也被應用於進一步探索,其性能如下:

圖 4. 避免局部最優。這幾幅圖顯示了兩次演化實驗的進展,而下述事件發生在演化中期。這些事件使群體能夠避免被困在局部最優中。在這兩幅圖中,每個點代表一個個體。這些實驗使用小規模群體與較少的訓練步驟,這 2560 個個體是主實驗。這兩種情況都使群體更容易受困,消耗的計算資源也更少。垂直軸是進化演算法中舉足輕重的驗證精確度(或適應度)。上部:個體數為 100 的群體通過利用突變率上升的時期,成功避免局部最優的示例(第 5 節)。群體向高原期演變,每次繁殖的正常情況是突變為 1(左),隨後使突變率上升,使每次繁殖的突變為 5(中間),接著,再次將每次繁殖的突變改為 1(右)。可以發現,群體最終避免了最初的高原期。底部:個體數為 50 的群體通過重設權重,成功避免局部最優的示例(第 5 節)。權重分別在三個中間刻度的標記處進行了 3 次重設,每次重設後,群體都會達到精確度更高的新高原期。

綜上,本文提出了一種用於大規模搜索的新型神經演化演算法,其新穎性在於它能夠處理相當大的神經網路(如 CNN 等)。由於該方法使用了新的變異策略,故而在分類任務中極具競爭力;同時,經過訓練的模型獲得了良好的轉移能力(從 CIFAR-10 轉移到 CIFAR-100)。但考慮到在特定任務中,通用應用不具備多個並行的高性能計算機,因而存在計算成本昂貴的缺點。此外還需考慮到,如今只用一個功能強大的 CNN 分類器便可輕鬆完成分類任務。詳盡的搜索似乎並不必要,因為它花費雖多,卻只能提升一點點精確度。但若這個方法能夠擴展到適應多個任務(如具有改良空間的分割和檢測),這個嘗試便是良好開端,並且頗具潛力。

機器之心英文網站原文地址:https://syncedreview.com/2017/05/01/large-scale-evolution-of-image-classifiers/

本文為機器之心英文原創文章,轉載請聯繫本公眾號獲得授權

------------------------------------------------

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

百度提出互動式學習方法:讓人工智慧代理在對話中學習說話
谷歌移動端神經網路架構MobileNet的CoreML實現
從貝葉斯角度,看深度學習的屬性和改進方法
深度學習C語言修改器DeepFix:用人工智慧加「;」
關係推理超越人類:DeepMind全新神經網路推理預測技術

TAG:機器之心 |

您可能感興趣

圖像分類器結構搜索的正則化非同步進化方法
使用經典模型進行圖像分類
如何優化你的圖像分類模型效果?
圖像分類網路模塊化,深度化,輕量化
如何用卷積神經網路構建圖像?
使用機器學習模型快速進行圖像分類識別
中科院自動化所赫然:大規模人臉圖像編輯理論、方法及應用
基於三維圖像的虛擬切口模式規劃優化手術
深度神經網路是如何成為圖像大師的?
基於深度學習的圖像分類方法
使用生成式對抗網路進行圖像去模糊
如何可視化卷積網路分類圖像時關注的焦點
AI 安全大佬教你如何攻擊雲端圖像分類模型 | 純乾貨
AI 安全大佬教你如何攻擊雲端圖像分類模型
用這種方法實現無監督端到端圖像分類!
二值化網路&基於素描圖的圖像檢索論壇
一種基於原子模型對結構密度圖進行後處理的電鏡圖像恢復演算法
FAIR提出用聚類方法結合卷積網路,實現無監督端到端圖像分類
「計算機視覺必讀乾貨」圖像分類、檢測,語義分割等方法梳理
Adobe提出新型超解析度方法:用神經網路遷移參照圖像紋理