如何用進(jìn)化方法優(yōu)化大規(guī)模圖像分類神經(jīng)網(wǎng)絡(luò)?
讓機(jī)器具備生物一樣的進(jìn)化能力一直是計(jì)算機(jī)科學(xué)的一個(gè)熱門研究領(lǐng)域,今年三月份,谷歌的多位研究者提出了一種圖像分類器的大規(guī)模進(jìn)化方法,機(jī)器之心也曾報(bào)道過(guò)這項(xiàng)研究,參閱:《深度 | 谷歌和 OpenAI 新研究:如何使用達(dá)爾文進(jìn)化論輔助設(shè)計(jì)人工智能算法?》。研究發(fā)布之后,機(jī)器之心的技術(shù)分析師又對(duì)這項(xiàng)重要研究進(jìn)行了更加深度細(xì)致的解讀。
論文:圖像分類器的大規(guī)模進(jìn)化(Large-Scale Evolution of Image Classifiers)
(地址:https://arxiv.org/pdf/1703.01041.pdf)
摘要:神經(jīng)網(wǎng)絡(luò)已被證明可以有效地解決難題,但它們的架構(gòu)設(shè)計(jì)起來(lái)頗具挑戰(zhàn)性,即便只是圖像分類問(wèn)題也如此。進(jìn)化算法(evolutionary algorithms)提供了一種能夠自動(dòng)發(fā)現(xiàn)這類網(wǎng)絡(luò)的技術(shù)。盡管其計(jì)算需求顯著,但是設(shè)計(jì)出能與大型人工設(shè)計(jì)的架構(gòu)相媲美的進(jìn)化模型如今已非天方夜譚。我們以***的規(guī)模采用了簡(jiǎn)單的進(jìn)化技術(shù),并從平凡的初始條件出發(fā),來(lái)發(fā)現(xiàn)可用于 CIFAR-10 和 CIFAR-100 數(shù)據(jù)集的模型。為此,我們使用直觀的新型變異算子(mutation operators)來(lái)導(dǎo)航大型搜索空間。我們認(rèn)為,演化一旦開(kāi)始,其輸出就應(yīng)當(dāng)是一個(gè)經(jīng)過(guò)完整訓(xùn)練的模型,不需任何人進(jìn)行參與。這項(xiàng)研究尤其重要的是結(jié)果的可重復(fù)性、可變性以及計(jì)算要求。
解讀
不論是在學(xué)術(shù)研究還是產(chǎn)業(yè)應(yīng)用方面,神經(jīng)網(wǎng)絡(luò)都展現(xiàn)了強(qiáng)大的能力。為了解決不同的實(shí)際問(wèn)題,多種網(wǎng)絡(luò)架構(gòu)可根據(jù)特定的任務(wù)而建立。然而如今所創(chuàng)建的有效架構(gòu)均為人工設(shè)計(jì)的成果,因此本文為解決神經(jīng)網(wǎng)絡(luò)圖像分類方面的架構(gòu)優(yōu)化問(wèn)題提出了新的方法。在進(jìn)化算法中,所提出的方法通過(guò)操控直觀突變,來(lái)自動(dòng)適應(yīng)***的網(wǎng)絡(luò)架構(gòu)。此外,整個(gè)優(yōu)化過(guò)程并不需要人為干預(yù)來(lái)獲得經(jīng)過(guò)完整訓(xùn)練的模型。為了深入了解,我們將會(huì)介紹神經(jīng)網(wǎng)絡(luò)中應(yīng)用演化算法的細(xì)節(jié),并將其與之前發(fā)表的論文進(jìn)行比較。***將會(huì)對(duì)本研究的整體質(zhì)量進(jìn)行簡(jiǎn)要評(píng)估。
在圖像分類領(lǐng)域,只要擁有足夠的訓(xùn)練數(shù)據(jù),神經(jīng)網(wǎng)絡(luò)對(duì)于多個(gè)困難任務(wù)而言便是十分成功的分類器,但只有經(jīng)過(guò)研究人員與工程師多年的研究和分析,才能實(shí)現(xiàn)表現(xiàn)出色的網(wǎng)絡(luò)模型。因而以自動(dòng)方式設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)架構(gòu)成為熱議。若要實(shí)現(xiàn)架構(gòu)的自動(dòng)設(shè)計(jì),一種直觀的方法便是「搜索」。因此我們應(yīng)用了進(jìn)化算法的思想:受到生物演化機(jī)制的啟發(fā),算法將候選解決方案作為大群體中的個(gè)體,而后定義適應(yīng)度函數(shù),以度量每個(gè)候選解決方案的質(zhì)量。我們還應(yīng)用了迭代選擇過(guò)程,其中相對(duì)***的個(gè)體將作為「父代」進(jìn)行繁殖,通過(guò)變異和重組在群體中產(chǎn)生新的后代。通過(guò)重復(fù)上述操作,子代會(huì)繼承父代的優(yōu)勢(shì),而突變則進(jìn)一步提供了群體多樣性。依次,我們終將搜索出***解決方案。
為了協(xié)助優(yōu)化神經(jīng)網(wǎng)絡(luò),神經(jīng)演化最初僅用于進(jìn)化神經(jīng)網(wǎng)絡(luò)的連接權(quán)重。以 NEAT(增強(qiáng)拓?fù)涞纳窠?jīng)演化)算法(Stanley 和 Miikkulainen)為例,它需要改變權(quán)重、增加現(xiàn)有節(jié)點(diǎn)之間的權(quán)重連接以及分割現(xiàn)有連接時(shí)插入節(jié)點(diǎn)這三種變異,在超參數(shù)搜索中也應(yīng)用了其他類似的方法。但與如今廣泛使用的神經(jīng)網(wǎng)絡(luò)(如 AlexNet 與 VGGnet)相比,上述方法僅適用于相當(dāng)小規(guī)模的網(wǎng)絡(luò)。這些傳統(tǒng)方法側(cè)重于演化過(guò)程的效率而非規(guī)模,故而不適于***進(jìn)的網(wǎng)絡(luò)優(yōu)化。另一方面,非演化性神經(jīng)發(fā)現(xiàn)方法則更適合如今的「深度」網(wǎng)絡(luò)。因此我們使用了其他替代方法(如貝葉斯優(yōu)化和強(qiáng)化學(xué)習(xí))來(lái)優(yōu)化深度模型,盡管它們的缺陷很明顯——網(wǎng)絡(luò)層數(shù)仍需由研究人員證明,而非算法本身。故而所提出的研究強(qiáng)調(diào)了在沒(méi)有人為干涉的條件下,其在研究網(wǎng)絡(luò)架構(gòu)的大規(guī)模搜索與基本初始條件方面的新穎性。實(shí)驗(yàn)比較如下:
表 1. 與人工設(shè)計(jì)的架構(gòu)相對(duì)比。
表 1中「C10+」和「C100+」這兩列分別表示經(jīng)過(guò)數(shù)據(jù)增強(qiáng)的 CIFAR-10 和 CIFAR-100 數(shù)據(jù)集的測(cè)試精度?!窻eachable?」這一列則表示給定的人工設(shè)計(jì)的模型是否位于搜索空間內(nèi)?!?」表示 Huang 等人的論文(2016b)未報(bào)告該值(并非原作者)。這張表大部分基于 Huang 等人的論文(2016a)。
表 2. 與自動(dòng)發(fā)現(xiàn)的架構(gòu)相對(duì)比。
表 2中「C10+」和「C100+」分別包含經(jīng)過(guò)數(shù)據(jù)增強(qiáng)的 CIFAR-10 和 CIFAR-100 數(shù)據(jù)集的測(cè)試精度?!?」表示該信息未報(bào)告或不為我們所知。請(qǐng)參考表 1 包括先進(jìn)技術(shù)的人工設(shè)計(jì)結(jié)果?!鸽x散參數(shù)」表明只能從少量值中挑選出參數(shù)(如從 {1,2,4} 中進(jìn)行選擇)。
由表 1 和表 2 可得,根據(jù)所提出的演化方法,C10+以及 C100+的分類性能超過(guò)了人工方法和其他自動(dòng)發(fā)現(xiàn)的架構(gòu),并不需經(jīng)過(guò)后處理階段。
下文將對(duì)大規(guī)模演化方法做出詳細(xì)闡述。
根據(jù)演化算法的工作原理,該方法將經(jīng)過(guò)訓(xùn)練的架構(gòu)視為個(gè)體。因此,我們能夠創(chuàng)建具有多個(gè)模型的群體,并將適應(yīng)度值視為驗(yàn)證集的精確度。本文建議使用圖形作為數(shù)據(jù)結(jié)構(gòu)來(lái)編碼個(gè)體的基本架構(gòu)。在這個(gè)設(shè)計(jì)圖中,頂點(diǎn)表示 3 級(jí)張量,這在卷積神經(jīng)網(wǎng)絡(luò)中十分常見(jiàn):使兩個(gè)維度作為圖像的空間坐標(biāo),而第三個(gè)張量表示 RGB 顏色通道;圖形的邊緣則表示連接、卷積或可變參數(shù)。隨后我們通過(guò)刪除低適應(yīng)度值模型來(lái)應(yīng)用進(jìn)化規(guī)則,并選擇***的父代來(lái)產(chǎn)生新的個(gè)體。在繁殖過(guò)程中,為了增加個(gè)體多樣性,我們也會(huì)使所選父代的復(fù)制版產(chǎn)生突變,接著會(huì)在大型搜索空間中重復(fù)進(jìn)行隨機(jī)個(gè)體的成對(duì)比賽,以尋得最終的***子代。對(duì)于具體的規(guī)模實(shí)現(xiàn),我們已經(jīng)開(kāi)發(fā)了大規(guī)模并行的無(wú)鎖基礎(chǔ)設(shè)施。不同的計(jì)算機(jī)將進(jìn)行異步操作,并在表示個(gè)體的文件目錄之下,依靠共享文件系統(tǒng)進(jìn)行通信,移除和垃圾回收也將被用于處理計(jì)算效率問(wèn)題。此外,繁殖過(guò)程對(duì)整個(gè)群體進(jìn)行了演變。變異操作也會(huì)從預(yù)定集中隨機(jī)選擇。變異操作包括:
- 更改學(xué)習(xí)率(下文會(huì)列出抽樣細(xì)節(jié))。
- 身份(實(shí)際是指「保持訓(xùn)練」)。
- 重設(shè)權(quán)重(如 He et al.(2015)的樣本)。
- 插入卷積(在「卷積主干」中的隨機(jī)位置插入卷積,如圖 1 所示。插入的卷積具有 3×3 的濾波器,隨機(jī)步長(zhǎng)為 1 或 2,信道數(shù)量與輸入相同。可以應(yīng)用批量歸一化及 ReLU 激活,也可不進(jìn)行隨機(jī)使用)。
- 消除卷積
- 改變步長(zhǎng)(僅允許冪為 2 的步長(zhǎng))
- 改變?nèi)我痪矸e的信道數(shù)。
- 過(guò)濾器尺寸(水平或垂直方向隨機(jī),并隨機(jī)選擇卷積,但僅為奇數(shù)值)
- 插入一對(duì)一(插入一對(duì)一或身份連接,類似于插入卷積突變)
- 添加跳過(guò)(隨機(jī)層之間的身份)
- 刪除跳過(guò)(刪除隨機(jī)跳過(guò))
在突變過(guò)程中,所有參數(shù)都會(huì)產(chǎn)生一個(gè)密集的搜索空間,這意味著任何參數(shù)都不存在上限。因此所有的模型深度都能夠?qū)崿F(xiàn)。參數(shù)的這種***性引起了對(duì)可能存在的真正大型架構(gòu)集的探索。換言之,神經(jīng)網(wǎng)絡(luò)的參數(shù)與架構(gòu)都能夠在沒(méi)有人為干預(yù)的條件下演化。
經(jīng)過(guò)對(duì)理論背景的闡釋,我們逐步介紹了將要做的實(shí)驗(yàn)的初始設(shè)置與驗(yàn)證策略。眾所周知,在初始化方面,即便是一個(gè)經(jīng)過(guò)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)也屬于強(qiáng)分類器,它還可能在實(shí)驗(yàn)中達(dá)到相對(duì)較高的精確度,因此本文會(huì)從簡(jiǎn)單個(gè)體所組成的群體出發(fā)。這些個(gè)體不包含卷積以及在分類方面性能不佳的網(wǎng)絡(luò),同時(shí)其學(xué)習(xí)率會(huì)被初始化為很大的值:0.1。這種設(shè)置會(huì)強(qiáng)制個(gè)體進(jìn)行學(xué)習(xí),使強(qiáng)分類器進(jìn)行演變,并能通過(guò)變異進(jìn)行自我發(fā)現(xiàn);同時(shí)實(shí)驗(yàn)可以避免「操控」,進(jìn)而大獲成功。
加速演化的另一種策略便是權(quán)重繼承。此處的繼承是指,只要有可能,個(gè)體便可繼承父代的部分或全部權(quán)重。在報(bào)告方法中,每次指的都是「***模式」。除了在一個(gè)實(shí)驗(yàn)中選擇***模型,具有***驗(yàn)證精確度的模型還試圖在所有實(shí)驗(yàn)中選擇「***實(shí)驗(yàn)」。
除了訓(xùn)練和測(cè)試策略,計(jì)算成本是實(shí)驗(yàn)的另一個(gè)重要方面。它由 TensorFlow 實(shí)現(xiàn),其中基因變異和卷積可被視為 TF(TensorFlow)操作。對(duì)于每一個(gè) TF 操作,我們都會(huì)預(yù)測(cè)所需浮點(diǎn)運(yùn)算(FLOP)的理論數(shù),并在給定每個(gè)個(gè)體后分配計(jì)算成本:
其中 F 表示用于訓(xùn)練和驗(yàn)證的 FLOP,E 表示正在運(yùn)行的時(shí)期,N 表示訓(xùn)練和驗(yàn)證的樣本數(shù)量。此外,每個(gè)實(shí)驗(yàn)的計(jì)算成本是其全部個(gè)體成本之和。
下一步是去實(shí)現(xiàn)上文提到的算法。每個(gè)實(shí)驗(yàn)需要在幾天內(nèi)演變出一個(gè)群體,如下圖所示:
圖 1. 演化實(shí)驗(yàn)進(jìn)展。
圖 1中每個(gè)點(diǎn)代表群體中的個(gè)體。藍(lán)點(diǎn)(黑色,右上)表示存活個(gè)體,其余個(gè)體已被殺死。四個(gè)圖表展示了發(fā)現(xiàn)的例子。這些對(duì)應(yīng)于***的個(gè)體(最右)以及它們的三個(gè)祖先。***個(gè)體通過(guò)其驗(yàn)證精確度進(jìn)行選擇。演化有時(shí)會(huì)在不存在任何非線性的區(qū)域(「C」,白色背景)之間堆疊卷積,這在數(shù)學(xué)上與單個(gè)線性運(yùn)算相同。一些卷積則與典型的人工設(shè)計(jì)架構(gòu)不同,其后伴隨著多個(gè)非線性函數(shù)(「C + BN + R + BN + R + ...」,橙色背景)。
在訓(xùn)練階段之后,所提出的方法在 CIFAR-10 數(shù)據(jù)集上使用了 9×10^19 FLOPS,使精確度達(dá)到了 94%,隨后我們應(yīng)用了相同的神經(jīng)網(wǎng)絡(luò)進(jìn)化算法,其參數(shù)是 CIFAR-100 中使用 7×10^19 FLOPS,使精確度達(dá)到 76.3% 時(shí)的參數(shù)。我們所料不錯(cuò),這兩個(gè)數(shù)據(jù)集的結(jié)果與其他***進(jìn)的人工設(shè)計(jì)結(jié)果相比頗具競(jìng)爭(zhēng)力。
我們還對(duì)多個(gè)實(shí)驗(yàn)中的結(jié)果進(jìn)行了統(tǒng)計(jì)分析,其演化進(jìn)展如下圖所示:
圖 2. 結(jié)果和控件的可重復(fù)性。
圖 2中,時(shí)間 t 處的垂直軸被定義為在 t 時(shí)刻或之前存活的具有***驗(yàn)證精確度個(gè)體的測(cè)試精確度。插圖了放大主圖的一部分。這條曲線所顯示的各實(shí)驗(yàn)的進(jìn)展情況如下。頂線(藍(lán)色實(shí)線)顯示了 5 次大規(guī)模演化實(shí)驗(yàn)的平均測(cè)試精確度,其周圍陰影區(qū)域的寬度為±2s(插圖更為清晰)。下一行(主圖和插圖中的橙色虛線)則表示禁用權(quán)重繼承時(shí)的單一實(shí)驗(yàn),因此每個(gè)個(gè)體都需從隨機(jī)權(quán)重中進(jìn)行訓(xùn)練。***位的曲線(點(diǎn)劃線)是隨機(jī)搜索控件。所有實(shí)驗(yàn)使用的硬件數(shù)量與類型都相同,而從驗(yàn)證到測(cè)試集的泛化中出現(xiàn)的少量噪聲則解釋了曲線并非單調(diào)增加的原因。±2s 區(qū)域的窄寬度(主圖和插圖)則表明演化實(shí)驗(yàn)中得到高精確度具備可重復(fù)性。
在分析時(shí),它總結(jié)出了一個(gè)用于清查的大型搜索空間,來(lái)得到更好的***解決方案。同時(shí),突變率的適當(dāng)增加有助于避免局部最小值。另一方面,當(dāng)表示訓(xùn)練步驟號(hào)的元參數(shù) T 增大時(shí),精確度便會(huì)增加。此外,更大的訓(xùn)練步驟意味著,個(gè)體需經(jīng)過(guò)更少的身份突變來(lái)達(dá)到給定的訓(xùn)練水平。
圖 3. 對(duì)元參數(shù)的依賴。
在這兩幅圖中,每個(gè)圓圈表示完整演化實(shí)驗(yàn)的結(jié)果。兩個(gè)垂直軸則表示實(shí)驗(yàn)結(jié)束時(shí)具有***驗(yàn)證精確度個(gè)體的測(cè)試精確度。所有群體的演化時(shí)間相同。每個(gè)水平軸的值存在 5 個(gè)數(shù)據(jù)點(diǎn)。左側(cè)為群體規(guī)模的影響。為了節(jié)省資源,這些實(shí)驗(yàn)的個(gè)體訓(xùn)練步驟數(shù)只有 2560 步。能夠發(fā)現(xiàn),精確度隨著群體規(guī)模的增大而增加。右側(cè)為個(gè)體訓(xùn)練步驟數(shù)量的影響??梢杂^察到隨著步驟的增多,精確度將如何增加。
同時(shí),其他的參數(shù)設(shè)置技巧也被應(yīng)用于進(jìn)一步探索,其性能如下:
圖 4. 避免局部***。
這幾幅圖顯示了兩次演化實(shí)驗(yàn)的進(jìn)展,而下述事件發(fā)生在演化中期。這些事件使群體能夠避免被困在局部***中。在這兩幅圖中,每個(gè)點(diǎn)代表一個(gè)個(gè)體。這些實(shí)驗(yàn)使用小規(guī)模群體與較少的訓(xùn)練步驟,這 2560 個(gè)個(gè)體是主實(shí)驗(yàn)。這兩種情況都使群體更容易受困,消耗的計(jì)算資源也更少。垂直軸是進(jìn)化算法中舉足輕重的驗(yàn)證精確度(或適應(yīng)度)。上部:個(gè)體數(shù)為 100 的群體通過(guò)利用突變率上升的時(shí)期,成功避免局部***的示例(第 5 節(jié))。群體向高原期演變,每次繁殖的正常情況是突變?yōu)? 1(左),隨后使突變率上升,使每次繁殖的突變?yōu)?5(中間),接著,再次將每次繁殖的突變改為 1(右)。可以發(fā)現(xiàn),群體最終避免了最初的高原期。底部:個(gè)體數(shù)為 50 的群體通過(guò)重設(shè)權(quán)重,成功避免局部***的示例(第 5 節(jié))。權(quán)重分別在三個(gè)中間刻度的標(biāo)記處進(jìn)行了 3 次重設(shè),每次重設(shè)后,群體都會(huì)達(dá)到精確度更高的新高原期。
綜上,本文提出了一種用于大規(guī)模搜索的新型神經(jīng)演化算法,其新穎性在于它能夠處理相當(dāng)大的神經(jīng)網(wǎng)絡(luò)(如 CNN 等)。由于該方法使用了新的變異策略,故而在分類任務(wù)中***競(jìng)爭(zhēng)力;同時(shí),經(jīng)過(guò)訓(xùn)練的模型獲得了良好的轉(zhuǎn)移能力(從 CIFAR-10 轉(zhuǎn)移到 CIFAR-100)。但考慮到在特定任務(wù)中,通用應(yīng)用不具備多個(gè)并行的高性能計(jì)算機(jī),因而存在計(jì)算成本昂貴的缺點(diǎn)。此外還需考慮到,如今只用一個(gè)功能強(qiáng)大的 CNN 分類器便可輕松完成分類任務(wù)。詳盡的搜索似乎并不必要,因?yàn)樗ㄙM(fèi)雖多,卻只能提升一點(diǎn)點(diǎn)精確度。但若這個(gè)方法能夠擴(kuò)展到適應(yīng)多個(gè)任務(wù)(如具有改良空間的分割和檢測(cè)),這個(gè)嘗試便是良好開(kāi)端,并且頗具潛力。
機(jī)器之心英文網(wǎng)站原文地址:https://syncedreview.com/2017/05/01/large-scale-evolution-of-image-classifiers/
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)文章,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】