0
本文作者: 叢末 | 2018-10-08 00:27 |
近年來,神經(jīng)網(wǎng)絡(luò)已經(jīng)成為了計(jì)算機(jī)視覺中主要的機(jī)器學(xué)習(xí)解決方案。然而神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)仍然需要極強(qiáng)的專業(yè)知識(shí),在一定程度上妨礙了神經(jīng)網(wǎng)絡(luò)的普及。
近日,在雷鋒網(wǎng) AI 研習(xí)社公開課上,約翰霍普金斯大學(xué)在讀博士劉晨曦就分享了在神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索的最新研究,并講解了如何通過由簡(jiǎn)至繁的漸進(jìn)式搜索得到在 ImageNet 圖像分類上最高的識(shí)別精度。公開課回放視頻網(wǎng)址:http://www.mooc.ai/open/course/550?=aitechtalkliuchenxi
劉晨曦:約翰霍普金斯大學(xué)在讀博士,導(dǎo)師是 Alan Yuille 教授,主要研究方向?yàn)橛?jì)算機(jī)視覺,自然語(yǔ)言處理等。曾就讀于加州大學(xué)洛杉磯分校及清華大學(xué)。其研究工作曾在 CVPR,ICCV,ECCV 等發(fā)表。
分享主題:漸進(jìn)式神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索
分享大綱:
AutoML 和神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索的背景介紹
網(wǎng)絡(luò)結(jié)構(gòu)搜索空間
漸進(jìn)式神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索算法
圖像分類的實(shí)驗(yàn)結(jié)果
雷鋒網(wǎng) AI 研習(xí)社將其分享內(nèi)容整理如下:
今天我要跟大家分享是漸進(jìn)式神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索(Progressive Neural Architecture Search)。這項(xiàng)工作是我在 Google(美國(guó))實(shí)習(xí)的時(shí)候做的項(xiàng)目,并在不久前的 ECCV 2018 上做口頭報(bào)告。
首先介紹一下 AutoML 和神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索的背景。
這篇文章主要涉及的領(lǐng)域是 AutoML,這是一個(gè)新興領(lǐng)域,也是 Google 非常重視的一個(gè)具體方向。它的目標(biāo)很簡(jiǎn)單但也很重要,就是能夠在 Machine Learning solution 的整個(gè)設(shè)計(jì)過程中,減少人的參與。當(dāng) AutoML 的實(shí)現(xiàn)程度夠高,能實(shí)現(xiàn)的具體場(chǎng)合是:人只需在早上起來的時(shí)候按一個(gè)回車鍵,整個(gè)設(shè)計(jì)過程就能實(shí)現(xiàn)高度的自動(dòng)模式,晚上回來的時(shí)候就能夠完成。
當(dāng)然理想很豐滿,現(xiàn)實(shí)實(shí)現(xiàn)難度卻比較大,為什么?
現(xiàn)在的 Machine Learning solution 既有參數(shù)也有超參數(shù),而現(xiàn)在最受歡迎的機(jī)器學(xué)習(xí)框架是神經(jīng)網(wǎng)絡(luò),這里主要討論它的優(yōu)化是否自動(dòng)化了。目前,參數(shù)的調(diào)整已經(jīng)非常自動(dòng)化了,可以直接用 Backpropagation 函數(shù)實(shí)現(xiàn)最優(yōu)的參數(shù)調(diào)整,而難以實(shí)現(xiàn)較大程度自動(dòng)化的,是超參數(shù)的調(diào)整。
那超參數(shù)都在哪里?
一提到超參數(shù),我們會(huì)更多地想到 learning rate 相關(guān)的數(shù)字,比如說整個(gè) training 有多長(zhǎng)時(shí)間,絕對(duì)數(shù)值應(yīng)該選多少等。但是對(duì)于神經(jīng)網(wǎng)絡(luò)來說,很多超參數(shù)都在它的結(jié)構(gòu)里面。下圖就是一個(gè)網(wǎng)絡(luò)結(jié)構(gòu):
很多神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)需要很多的 expert experience 和 knowledge,但這樣得出的結(jié)果并不是最優(yōu)的,這也是我們嘗試漸進(jìn)式神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索最主要的 motivation。
近幾年來,大家逐漸開始關(guān)注一個(gè)問題:能不能不要過于依賴于 expert experience 和 knowledge,而通過自動(dòng)的方式來得到一個(gè)非常好的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)?
神經(jīng)網(wǎng)絡(luò)領(lǐng)域發(fā)展得很快,但是現(xiàn)在神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索相關(guān)的文章中主要使用的方法是:進(jìn)化的算法(EA)和強(qiáng)化學(xué)習(xí)的算法(RL)。
【關(guān)于這兩種算法的講解,請(qǐng)回看視頻 00:07:00 處,http://http://www.mooc.ai/open/course/550?=aitechtalkliuchenxi】
在我們之前,神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索的相關(guān)工作已經(jīng)做得比較好了,但在我們研究這一領(lǐng)域的時(shí)候,發(fā)現(xiàn)的問題是,之前的工作都非常依賴計(jì)算資源。比如在 Google Brain 2017 年的一篇文章里,為了做神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索用了 800 塊 K40 的 GPU,然后訓(xùn)練了 28 天。在今年的一篇文章里,雖然有了很大提升,但還是用了 500 塊 P100,并訓(xùn)練了 5 天。
所以我們這項(xiàng)工作的主要目標(biāo)是嘗試把神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索的速度和效率提高,具體的做法是:提出一個(gè)創(chuàng)新的算法。在我們描述這個(gè)算法前,我們需要了解網(wǎng)絡(luò)結(jié)構(gòu)搜索空間(Architecture Search Space)。
網(wǎng)絡(luò)結(jié)構(gòu)搜索空間大概的結(jié)構(gòu)是:定義整個(gè) Network 由一些 Cell 組成,一個(gè) Cell 進(jìn)一步由一些 Block 組成。
從 Cell 到 Network 的過程,如右圖所示,就是有了一個(gè) Cell structure 后,組建整個(gè) Network,整個(gè)過程借鑒了 ResNet 的設(shè)計(jì)。
【關(guān)于從 Cell 到 Network 的過程更具體的講解,請(qǐng)回看視頻 00:12:40 處,http://www.mooc.ai/open/course/550?=aitechtalkliuchenxi】
從 Block 到 Cell 的過程,是指一個(gè) Cell 由 5 個(gè) Block 組成,整個(gè) Cell 的 output 是 5 個(gè) Block 的 output 的 concatenation(連接)。如右圖,H 代表 Cell 的 output,H1 到 H5 代表了五個(gè) Block 的 output。
而一個(gè) Block 大概是下圖右邊的這樣一個(gè)結(jié)構(gòu),這是整個(gè)網(wǎng)絡(luò)最小的形成段,Input1 通過 Operator1 transform 一下,Input2 通過 Operator2 transform 一下,二者通過一定方法 Combine 形成一個(gè) Block。
【更多關(guān)于 Block 的形成過程的講解,請(qǐng)回看視頻 00:14:34 處,http://www.mooc.ai/open/course/550?=aitechtalkliuchenxi】
總的來說,網(wǎng)絡(luò)結(jié)構(gòu)搜索空間中一個(gè) Cell 結(jié)構(gòu)如右圖所示,每個(gè)「+」的位置都代表 Block 結(jié)束的地方,每個(gè) Block 結(jié)束都有一個(gè) element-wise addition 的操作,H(c-1)是前一個(gè) Cell 的 output,H(c-2)是前兩個(gè) Cell 的 output。
左邊是我進(jìn)行的對(duì)應(yīng)的計(jì)算,這樣的結(jié)構(gòu)就已經(jīng)有 10 的 14 次方的 combinations,而神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索的目標(biāo)就是從這 10 的 14 次方個(gè)結(jié)果中選出最佳的那個(gè),這顯然是一個(gè)非常具有挑戰(zhàn)性的 Task,這就需要一個(gè)好的算法來進(jìn)行。
我們主要的 Idea 其實(shí)很簡(jiǎn)單:從簡(jiǎn)單到復(fù)雜的 Curriculum Learning。我們注意到之前的方法都直接在 10 的 14 次方大小的搜索空間進(jìn)行取樣或者訓(xùn)練,這樣的搜索空間非常大,很難進(jìn)行有效的信息積累。
而我們的 Idea 是,不直接在 10 的 14 次方大小的搜索空間中工作,而是從簡(jiǎn)到繁慢慢進(jìn)入最大的搜索空間:
首先,訓(xùn)練所有的 1-block cells,當(dāng)然,我們的目標(biāo)是搜索 5-block cells,但我們一開始先假裝不知道我們的目標(biāo)。這個(gè)網(wǎng)絡(luò)結(jié)構(gòu)的一個(gè)好處是它的結(jié)構(gòu)比較簡(jiǎn)單,另一個(gè)好處是它的絕對(duì)數(shù)量只有 256 個(gè)不同的可能。
然后,去測(cè)它的算法的話,它們的分值會(huì)比較低,這是因?yàn)樗鼈冇懈俚?Block。但是,對(duì)于它們之間相對(duì)的性能,已經(jīng)有信號(hào)暗示哪些 Cell 是 promising 的,哪些不 promising。
最后,我們直接從 256 個(gè)可能里面挑選 K 個(gè) promising 最高的 Cell,讓它變成 2-block cells,再變到 3-block cells,依次這樣發(fā)展。
【關(guān)于這種 Idea 更詳細(xì)的講解,請(qǐng)回看視頻 00:19:50 處,http://www.mooc.ai/open/course/550?=aitechtalkliuchenxi】
然而這種 Idea 是難以預(yù)測(cè)的?;诖?,我們的解決方案是引入了一個(gè)「cheap」surrogate model,它讀入一個(gè)結(jié)構(gòu),比如下圖中的 (0, 2, 0, 6),將其直接放入到 predictor 中去預(yù)測(cè) final performance,這樣的一個(gè) predictor 是很輕便的,我們的想法就是用這個(gè) surrogate model 完全代替整個(gè)訓(xùn)練過程。
【關(guān)于 surrogate model 更詳細(xì)的講解,請(qǐng)回看視頻 00:22:28 處,http://www.mooc.ai/open/course/550?=aitechtalkliuchenxi】
最終,我們既嘗試了 MLP-ensemble 也嘗試了 RNN-ensemble 的 predictor。RNN-ensemble 的方法比較直觀,每次當(dāng)遇到結(jié)構(gòu)的大小不一樣長(zhǎng)的時(shí)候,只要將 RNN unroll 不同的步數(shù)就可以了。MLP-ensemble 則通過 mean pooling 的方式來處理可變大小。
接下來我們用一個(gè)具體例子來看這種漸進(jìn)式神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索方法。
【關(guān)于漸進(jìn)式神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索方法的案例講解,請(qǐng)回看視頻 00:26:39 處,http://www.mooc.ai/open/course/550?=aitechtalkliuchenxi】
最后介紹一下我們的實(shí)驗(yàn)結(jié)果。
在搜索過程中,我們做了這樣一個(gè)實(shí)驗(yàn),在 CIFAR-10 架構(gòu)上進(jìn)行了漸進(jìn)式神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索,K 取值 256,而每個(gè)模型的 N 和 F 分別取值 2、24,相對(duì)較小,并對(duì)模型進(jìn)行了 20 次迭代訓(xùn)練,以更快、更準(zhǔn)確地判斷 Network 的好壞。這個(gè)過程中的一個(gè)很重要的問題是,我們的搜索是不是更加有效率——這也是我們整篇論文最主要的目標(biāo)。
答案肯定是,是的。在下圖中,我把我們的漸進(jìn)式神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索跟 Random Rearch 和 NAS 進(jìn)行了比較:
【關(guān)于對(duì)三種搜索方法的比較的具體講解,請(qǐng)回看視頻 00:31:45 處,http://www.mooc.ai/open/course/550?=aitechtalkliuchenxi】
我們搜索的結(jié)構(gòu)有 PNASNet-1、 2、3、4、5,它們的具體的樣子如下圖:
其中 PNASNet-5 是我們最終搜索出來的結(jié)果。而我們找到這樣一個(gè)結(jié)構(gòu)之后,僅僅確保它在過程中的表現(xiàn)好還不夠,我們還要在搜索完成后,將 N 和 F 增大,在 CIFAR-10 和 ImageNet 上進(jìn)行訓(xùn)練和測(cè)試。這里的問題是,我們找到的網(wǎng)絡(luò)結(jié)構(gòu)在最好的 benchmark datasets 上的表現(xiàn)是怎么樣的。
在 CIFAR-10 上實(shí)驗(yàn)的結(jié)果如下圖:
在 ImageNet (Mobile、Large)上實(shí)驗(yàn)的結(jié)果如下圖:
【關(guān)于在 CIFAR-10 和 ImageNet 上的實(shí)驗(yàn)結(jié)果的具體講解,請(qǐng)回看視頻 00:35:30 處,http://www.mooc.ai/open/course/550?=aitechtalkliuchenxi】
對(duì)我們的工作做一下總結(jié):
第一,我們提出了一種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索方法,具體采用的是從簡(jiǎn)單到復(fù)雜的方法,同時(shí),為了讓這個(gè)算法變得更具可預(yù)測(cè)性,我們學(xué)習(xí)了一個(gè) surrogate function 來指導(dǎo)搜索。
第二,我們將最后搜索出來的結(jié)果叫做 PNASNet-5 ,它在 CIFAR-10 和 ImageNet 上達(dá)到了非常高的準(zhǔn)確率,且在搜索過程中比當(dāng)下最好的增強(qiáng)學(xué)習(xí)和進(jìn)化算法的方法都更快。
我們?cè)?ImageNet 上訓(xùn)練好的 PNASNet-5 模型已經(jīng) release 了,包括剛剛提到在 ImageNet 上的 Mobile、 Large 模型,Both TensorFlow 、PyTorch 模型,以及(據(jù)我所知)在 ImageNet 所有對(duì)外開放的模型中準(zhǔn)確度和效率最高的 SOTA 模型,大家如果有需要可以到相應(yīng)網(wǎng)址找到。
我們的 Paper 自在 ECCV 上發(fā)表后,有了很多新的變化和 Extensions。我們的算法被用到類似的 Task 中,比如 PPP-Net 和 DPP-Net 的 Pareto-optimal architectures 或者 Meta-learning 中,都取得了不錯(cuò)的效果。
而在我們的論文中沒有解決的問題是,我們對(duì)每個(gè)單獨(dú) sample 出來的模型進(jìn)行單獨(dú)訓(xùn)練,彼此間沒有很好的 Sharing。最近有一篇論文將我們的方法與其他方法進(jìn)行結(jié)合,使神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)搜索的速度變得更快、更有效率。
以上就是本期嘉賓的全部分享內(nèi)容。更多公開課視頻請(qǐng)到雷鋒網(wǎng) AI 研習(xí)社社區(qū)(https://club.leiphone.com/)觀看。關(guān)注微信公眾號(hào):AI 研習(xí)社(okweiwu),可獲取最新公開課直播時(shí)間預(yù)告。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。