0
本文作者: 嘉嘉 | 2022-09-27 11:44 | 專題:IEEE X ATEC科技思享會(huì) |
IEEE x ATEC科技思享會(huì)是由專業(yè)技術(shù)學(xué)會(huì)IEEE與前沿科技探索社區(qū)ATEC聯(lián)合主辦的技術(shù)沙龍。邀請(qǐng)行業(yè)專家學(xué)者分享前沿探索和技術(shù)實(shí)踐,助力數(shù)字化發(fā)展。
隨AI技術(shù)的不斷深入發(fā)展,醫(yī)學(xué)人工智能應(yīng)用如雨后春筍般迅速涌現(xiàn),在醫(yī)療領(lǐng)域遍地開花。AI具有智能化、自動(dòng)化的特點(diǎn),能夠通過強(qiáng)大算力解鎖復(fù)雜數(shù)據(jù)、處理海量數(shù)據(jù),在醫(yī)學(xué)變革過程中發(fā)揮著無(wú)與倫比的重要作用。IEEE x ATEC科技思享會(huì)第三期會(huì)議特邀四位嘉賓圍繞“AI驅(qū)動(dòng)下的醫(yī)學(xué)變革—從生命科學(xué)到醫(yī)療管理”獨(dú)立TALK。
以下是香港科技大學(xué)(廣州)教授/博導(dǎo)、ATEC科技精英賽高級(jí)咨詢委員會(huì)專家褚曉文教授的演講《AutoML 在基于胸部 CT 影像的 Covid-19 輔助診斷中的應(yīng)用》。
大家好,感謝IEEE x ATEC科技思享會(huì)邀請(qǐng)我參與本場(chǎng)“AI驅(qū)動(dòng)下的醫(yī)學(xué)變革”的分享。我是來(lái)自香港科技大學(xué)(廣州)數(shù)據(jù)科學(xué)與分析學(xué)域的褚曉文教授,在加入港科大(廣州)之前,我一直在香港浸會(huì)大學(xué)計(jì)算機(jī)科學(xué)系工作。
今天我要跟大家分享的內(nèi)容是《AutoML 在基于胸部 CT 影像的 Covid-19 輔助診斷中的應(yīng)用》。首先我要感謝本項(xiàng)目的合作者,主要包括我在香港浸會(huì)大學(xué)的博士生賀鑫等人,杭州電子科技大學(xué)張繼勇教授團(tuán)隊(duì)以及美國(guó)南加州大學(xué)的Ying Guohao。
今天的報(bào)告主要分四個(gè)部分:首先是對(duì)AutoML的一個(gè)簡(jiǎn)單介紹,其次是可微搜索在CT影像分類中的應(yīng)用,第三是基于進(jìn)化算法的神經(jīng)結(jié)構(gòu)搜索的一點(diǎn)嘗試。最后再簡(jiǎn)單介紹一下我們?nèi)绾谓Y(jié)合自動(dòng)數(shù)據(jù)增強(qiáng)和神經(jīng)結(jié)構(gòu)搜索。
今天的報(bào)告內(nèi)容主要基于以下四篇學(xué)術(shù)論文:第一篇是我們關(guān)于AutoML的一個(gè)綜述論文,適合對(duì)AutoML技術(shù)感興趣的初學(xué)者。第二篇是發(fā)表在AAAI2021的一篇論文,主要展示了如何用AutoML技術(shù)有效針對(duì)3D CT影像去尋找一個(gè)3D的CNN模型。第三篇是發(fā)表在今年MICCAI的論文,主要是介紹了一種基于多目標(biāo)優(yōu)化和進(jìn)化算法的AutoML設(shè)計(jì)。最后一篇論文是我們近期對(duì)自動(dòng)數(shù)據(jù)增強(qiáng)和神經(jīng)結(jié)構(gòu)搜索的一個(gè)結(jié)合。大家如果對(duì)其中的技術(shù)細(xì)節(jié)感興趣,可以參考一下。
首先,我們對(duì)AutoML做一個(gè)簡(jiǎn)單介紹。
在過去的十幾年里,我們見證了基于深度學(xué)習(xí),即深度神經(jīng)網(wǎng)絡(luò)的蓬勃發(fā)展。深度學(xué)習(xí)在各種AI任務(wù)中都取得了令人振奮的成績(jī),并廣泛應(yīng)用到我們實(shí)際生活的方方面面。熟悉神經(jīng)網(wǎng)絡(luò)的朋友們可以看出,在上圖中我們展示了五種不同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。從單鏈的線性結(jié)構(gòu)一直發(fā)展到今天有諸多分支和跨層結(jié)構(gòu)的復(fù)雜網(wǎng)絡(luò)。這些網(wǎng)絡(luò)的設(shè)計(jì)大部分都是基于Trial and Error,是靠成千上萬(wàn)的科研工作人員不斷通過人工試錯(cuò)而發(fā)現(xiàn)的。
而基于數(shù)據(jù)驅(qū)動(dòng),機(jī)器學(xué)習(xí)方法一般都包括數(shù)據(jù)預(yù)處理、特征工程模型評(píng)估、模型選擇等若干階段。在傳統(tǒng)的機(jī)器學(xué)習(xí)領(lǐng)域,如何自動(dòng)化的進(jìn)行數(shù)據(jù)預(yù)處理、超參調(diào)優(yōu)、模型選擇,都是非常經(jīng)典的問題。
隨著深度神經(jīng)網(wǎng)絡(luò)技術(shù)的繁榮和不斷突破,如何自動(dòng)化的進(jìn)行神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì),也成為自動(dòng)機(jī)器學(xué)習(xí)中一個(gè)非常重要且具有挑戰(zhàn)性的課題。這個(gè)問題我們通常稱之為神經(jīng)結(jié)構(gòu)搜索,即Neural Architecture Search。神經(jīng)結(jié)構(gòu)搜索主要有三個(gè)構(gòu)件,分別是搜索空間(Search Space)、搜索策略(Search Strategy)和性能評(píng)估策略(Performance Estimation Strategy)。
搜索空間一般是基于一定的先驗(yàn)知識(shí)和對(duì)具體問題的理解,大概制定一下神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。搜索策略則是要求在給定的搜索空間中如何去探索未知的網(wǎng)絡(luò)結(jié)構(gòu),希望能夠不斷找到一個(gè)更好的網(wǎng)絡(luò)。而性能評(píng)估策略就是如何對(duì)搜索到的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行快速打分,即如何從一組結(jié)構(gòu)中判斷出來(lái)哪一個(gè)結(jié)構(gòu)是最好的。
接下來(lái)我們逐一對(duì)這三個(gè)構(gòu)件做進(jìn)一步介紹。
搜索空間(Search Space),它定義了NAS算法可以搜索的神經(jīng)網(wǎng)絡(luò)的類型和拓?fù)浣Y(jié)構(gòu)。一般可以把一個(gè)網(wǎng)絡(luò)描述成一個(gè)有向無(wú)環(huán)圖DAG,圖中的每個(gè)節(jié)點(diǎn)代表了一個(gè)網(wǎng)絡(luò)層,而圖中的邊代表網(wǎng)絡(luò)之間的數(shù)據(jù)流向。除了輸入和輸出層,中間層可以有不同的類型,比如全連接層,各種的卷積、池化、激活函數(shù)層等等。而每種網(wǎng)絡(luò)層的類型又有其獨(dú)特的超參數(shù)需要考慮,在此就不一一贅述。
如果我們要對(duì)整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行端對(duì)端的搜索,那這個(gè)搜索空間會(huì)非常龐大。比如一個(gè)簡(jiǎn)單的鏈條結(jié)構(gòu),如果我們要設(shè)計(jì)一個(gè)100層的網(wǎng)絡(luò),而每一層有4種不同的算子選擇,那么整個(gè)搜索空間的大小就是4的100次方。
為了提高搜索效率,我們可以基于經(jīng)驗(yàn)對(duì)搜索空間進(jìn)行一定的限定或者簡(jiǎn)化。比如最流行的Resnet和Transformer模型等等,都是通過設(shè)計(jì)一個(gè)復(fù)雜的子模塊,然后將其堆疊而成。因此我們也可以把要搜索的網(wǎng)絡(luò)切分成基本的單元cell。然后每個(gè)單元里面又進(jìn)一步分成若干個(gè)操作塊block。通過這些單元的堆疊形成更復(fù)雜的網(wǎng)絡(luò)。這樣我們就把搜索一個(gè)網(wǎng)絡(luò)的問題簡(jiǎn)化為搜索一個(gè)單元的問題。在圖(b)的示例中,normal cell主要是進(jìn)行一些常規(guī)的卷積操作,而reduction cell主要是用于下采樣的操作。
性能評(píng)估策略在NAS中有著舉足輕重的地位。如果能夠提高性能評(píng)估的速度,就可以在同樣的時(shí)間預(yù)算里面搜索一個(gè)更大的網(wǎng)絡(luò)空間,有利于我們找到一個(gè)更好的網(wǎng)絡(luò)結(jié)構(gòu)。
然而如何把神經(jīng)網(wǎng)絡(luò)的性能評(píng)估做到又快又準(zhǔn),是一個(gè)非常困難的問題。最早期大家都是基于Brute-Force的方法,把一個(gè)搜索到的模型訓(xùn)練到收斂來(lái)判斷其性能。這個(gè)方法雖然比較準(zhǔn)確,但是非常消耗資源。比如在cell這種小型的數(shù)據(jù)集上進(jìn)行網(wǎng)絡(luò)搜索,一般都需要幾千個(gè)GPU hours。為了降低NAS對(duì)算力的需求,我們可以通過對(duì)數(shù)據(jù)降維或者對(duì)模型進(jìn)行壓縮來(lái)大概估算這樣一個(gè)模型的性能。中國(guó)有句俗話叫三歲看老,所以也有學(xué)者提出來(lái)用Early stopping的策略來(lái)預(yù)判一個(gè)網(wǎng)絡(luò)模型的性能。
近年來(lái),AutoML領(lǐng)域一個(gè)比較大的突破就是采用了這種Weight sharing權(quán)重共享的思路來(lái)加速性能評(píng)估。它的核心思想是訓(xùn)練一個(gè)supernet的結(jié)構(gòu)。這個(gè)supernet里的任何一個(gè)子圖都是一個(gè)潛在的subnet網(wǎng)絡(luò)結(jié)構(gòu)。所以在這種方法里面,supernet的權(quán)重會(huì)被它所有的subnet共享。我們只需要訓(xùn)練一個(gè)supernet就可以得到所有subnet的權(quán)重,從而對(duì)這個(gè)subnet做性能的評(píng)估。經(jīng)驗(yàn)表明,通過權(quán)重共享,通??梢园阉阉鞯挠?jì)算消耗從幾千個(gè)GPU hours降到幾十個(gè)甚至幾個(gè)GPU hours。因此這個(gè)方法也成為了目前AutoML一個(gè)主流的方法。
性能評(píng)估的手段。最后一個(gè)問題就是如何在龐大的搜索空間中有效的進(jìn)行搜索。由于描述神經(jīng)網(wǎng)絡(luò)的參數(shù)含有大量的離散數(shù)據(jù),因此網(wǎng)絡(luò)搜索是一個(gè)離散且高維度的優(yōu)化問題。很難去找最優(yōu)解。通常我們都是使用一些迭代優(yōu)化的思路,去嘗試提高搜索效果。具體而言,我們可以分為網(wǎng)格和隨機(jī)搜索、進(jìn)化算法、貝葉斯優(yōu)化、強(qiáng)化學(xué)習(xí)和基于梯度的算法等等。
這里我們大概介紹一下進(jìn)化算法的思路。首先我們要制定一個(gè)把網(wǎng)絡(luò)結(jié)構(gòu)編碼成二進(jìn)制串的方案,然后我們會(huì)隨機(jī)初始化一組網(wǎng)格作為初始解。經(jīng)過了一系列的選擇、交叉、變異和更新等步驟,進(jìn)行不斷進(jìn)化迭代,希望最終找到一組更好的網(wǎng)格結(jié)構(gòu),再?gòu)闹羞M(jìn)行重新訓(xùn)練,得到一個(gè)最好的選擇。
這里我們?cè)俳榻B另外一種非常流行的基于梯度優(yōu)化的思路。它也是一個(gè)把離散優(yōu)化的問題松弛到連續(xù)空間,這樣就可以利用梯度下降算法進(jìn)行有效的搜索。我們這里提一下DARTS這個(gè)非常有影響力的工作,發(fā)表在ICLR2019年。
圖(a)代表了一個(gè)supernet的一個(gè)結(jié)構(gòu),每條邊代表著一些潛在的數(shù)據(jù)運(yùn)算。這里每個(gè)問號(hào)代表它可能是五種或者十種不同的運(yùn)算模式。當(dāng)我有很多很多問號(hào)時(shí),這就是一個(gè)非常復(fù)雜的組合優(yōu)化問題。
而DARTS的思路就是同時(shí)考慮所有可能的運(yùn)算。比如說(shuō)我們每條邊有三種可能,分別用三種顏色來(lái)代表,我們這個(gè)supernet就包含了所有可能的運(yùn)算,讓它們同時(shí)進(jìn)行。但是每一條邊或者說(shuō)每一個(gè)運(yùn)算給它們賦一個(gè)概率值。比如說(shuō)初始化的時(shí)候都是三分之一的概率,然后就可以對(duì)這個(gè)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,包括這些權(quán)重值也是可以進(jìn)行訓(xùn)練的。最終可以得到一個(gè)不同值的一個(gè)權(quán)重。最后我們就選擇權(quán)重值最大的那條邊作為最終選擇的操作。
以上就是我們對(duì)AutoML的一個(gè)簡(jiǎn)要介紹。接下來(lái)我們來(lái)討論如何把AutoML用于基于胸部 CT 影像的Covid-19輔助診斷當(dāng)中。
在2019到2020年間,快速檢測(cè)新冠肺炎的手段還不是太成熟,一種是基于RT-PCR的病毒測(cè)試,一般需要四個(gè)多小時(shí)以上的時(shí)間才能夠得到測(cè)試結(jié)果。而另一方面,醫(yī)療影像學(xué)家通過對(duì)X光胸片和CT胸部影像的分析,也可以做新冠肺炎的診斷。在2020年的一個(gè)跟蹤研究中發(fā)現(xiàn),通過對(duì)一千多例病人的分析表明,胸部CT影像對(duì)新冠肺炎的診斷有非常高的識(shí)別率和敏感度,是病毒檢測(cè)的一個(gè)有效補(bǔ)充手段。
因此很多計(jì)算機(jī)科學(xué)家開始研究如何利用深度學(xué)習(xí)的方法來(lái)協(xié)助新冠肺炎的智能檢測(cè)。
上面這張表總結(jié)了2020年的一些相關(guān)的工作,主要是一些相關(guān)的數(shù)據(jù)集。從早期2D的X-ray數(shù)據(jù)集到2D的CT數(shù)據(jù)集,到最后比較大規(guī)模的3D CT數(shù)據(jù)集。在這些數(shù)據(jù)集里面,NCP代表新冠肺炎,CP代表普通的肺炎,Normal代表正常的影像。但是由于大家使用的數(shù)據(jù)集都不太一樣,很難去對(duì)一個(gè)具體的深度學(xué)習(xí)方法做出一個(gè)公平又公正的判斷。
因此我們首先選取了三個(gè)比較大型的CT數(shù)據(jù)集作為我們的研究基礎(chǔ),而且我們?cè)谶@三個(gè)公開數(shù)據(jù)集上做了一些benchmark工作。第一個(gè)數(shù)據(jù)集是來(lái)自伊朗的Covid-CTset,這個(gè)數(shù)據(jù)集大概有526個(gè)樣本。第二個(gè)數(shù)據(jù)集是來(lái)自俄羅斯的MosMedData ,有1110個(gè)樣本。而第三個(gè)數(shù)據(jù)集是來(lái)自我們中國(guó)的CC-CCII數(shù)據(jù),有4300多個(gè)CT樣本,是目前最大的一個(gè)公開數(shù)據(jù)集。
由于原始的數(shù)據(jù)集有不同的數(shù)據(jù)格式,也有不少的噪音和錯(cuò)誤的數(shù)據(jù)。因此我們對(duì)數(shù)據(jù)集做了統(tǒng)一的預(yù)處理,并人工對(duì)數(shù)據(jù)做了一些清理工作,提高了數(shù)據(jù)質(zhì)量。我們進(jìn)一步以病人為單位,把數(shù)據(jù)集分割為訓(xùn)練集和測(cè)試集。
我們這項(xiàng)工作的研究動(dòng)機(jī)有三點(diǎn)。首先傳統(tǒng)的檢測(cè)方法比較耗時(shí),因此我們希望利用深度學(xué)習(xí)技術(shù)來(lái)實(shí)現(xiàn)快速的新冠診斷。第二,已有的深度學(xué)習(xí)方法大部分都是基于二維的X-ray或者CT影像,無(wú)法充分利用3D CT影像信息,所以在性能上還有提升空間。第三,針對(duì)新冠檢測(cè)的3D卷積模型還比較少,因此我們希望利用自動(dòng)機(jī)器學(xué)習(xí)技術(shù)來(lái)自動(dòng)發(fā)現(xiàn)一些比較好的3D模型。為了驗(yàn)證自動(dòng)機(jī)器學(xué)習(xí)的性能,我們需要選取一些傳統(tǒng)的方法作為比對(duì)基準(zhǔn)。
上圖是一個(gè)3D的深度神經(jīng)網(wǎng)絡(luò)的工作流程,輸入是一個(gè)3D的CT數(shù)據(jù)集,包括N個(gè)CT scan。每一個(gè)scan都包含若干張二維CT影像。所以我們要先對(duì)每個(gè)scan進(jìn)行采樣,保證每個(gè)scan的圖像數(shù)量是一樣的,然后進(jìn)行數(shù)據(jù)預(yù)處理,得到一些批量的3D數(shù)據(jù)影像。再送到設(shè)計(jì)好的3D卷積網(wǎng)絡(luò)里面進(jìn)行訓(xùn)練。我們選了三個(gè)流行的3D卷積網(wǎng)絡(luò)作為我們的Baseline,包括ResNet3D101,DenseNet3D121以及MC3_18。
要使用AutoML,首先要清楚自己的目標(biāo)和任務(wù)特征。比如我們做CT影像的分類任務(wù),就需要我們的網(wǎng)絡(luò)具備3D空間數(shù)據(jù)的特征提取能力。同時(shí)考慮到新冠檢測(cè)對(duì)速度的要求,我們希望這個(gè)模型不要太龐大,訓(xùn)練和推理的時(shí)間都要比較合理。
我們使用了supernet的設(shè)計(jì)來(lái)共享權(quán)重。我們的模型包括兩個(gè)部分,上圖中藍(lán)色部分是不需要搜索的,包括Stem層、全局平均池化層和最后的全連接層。中間有N個(gè)cells,即N個(gè)單元,這些是需要進(jìn)行搜索的。每一個(gè)單元又包含若干個(gè)塊(blocks),每個(gè)block是依靠經(jīng)驗(yàn)設(shè)計(jì)出來(lái)的一組候選操作集,我們需要從中搜索不同的操作組合。
目前我們這個(gè)AutoML的方法涉及到一些額外的超參數(shù),包括整個(gè)單元的數(shù)量N以及每個(gè)單元里block的數(shù)量Bi。這些參數(shù)都是依靠人工經(jīng)驗(yàn)進(jìn)行設(shè)置的,希望以后有機(jī)會(huì)也能夠把這些參數(shù)自動(dòng)化。通過控制每個(gè)block的candidate的數(shù)量,我們可以控制整個(gè)網(wǎng)絡(luò)參數(shù)的參數(shù)集的大小。
supernet設(shè)計(jì)里最重要的一個(gè)環(huán)節(jié)就是塊算子的設(shè)計(jì)對(duì)于網(wǎng)絡(luò)輕量化的追求。我們參考了2018年CVPR的文章《Mobilenetv2:Inverted residuals and linear bottlenecks》以mobile bottleneck convolution為核心框架,這個(gè)卷積MBConv屬于一種可分離的卷積設(shè)計(jì),其特點(diǎn)就是計(jì)算量比較小。它分為三組操作。第一組是一個(gè)主點(diǎn)的1*1*1的卷積,外接一個(gè)3D BN操作,再加上一個(gè)ReLU6。第二組,最重要的就是一個(gè)3D的K*K*K的深度卷積。同樣后面要跟一個(gè)3D的BN操作和一個(gè)ReLU6操作。第三組又是一個(gè)主點(diǎn)的卷積,再接一個(gè)3D BN操作。最后這個(gè)模塊也包含一個(gè)跳連接的操作。
最終我們選取了8種不同的塊算子作為候選的運(yùn)算集。這些candidate的大小從3*3*3到7*7*7,最后的3、4、6代表了從第一個(gè)卷積到第二個(gè)卷積之間一個(gè)擴(kuò)散因子。整個(gè)搜索空間的大小還是非常大的。比如說(shuō)我們有6個(gè)單元,一共有21個(gè)blocks,每個(gè)block有8個(gè)候選設(shè)計(jì),那搜索空間的大小就是8的21次方。如果用傳統(tǒng)暴力訓(xùn)練的方法是不太可能的。因此我們這個(gè)工作就采用了基于梯度的可微分搜索的策略。
下面簡(jiǎn)單介紹一下可微分搜索的思路。我們搜索的目標(biāo)是一個(gè)包含若干塊的單元,每個(gè)塊都要從事先制定好的操作里面選擇一種操作。這里我們用節(jié)點(diǎn)i和節(jié)點(diǎn)i+1代表兩個(gè)特征張量,它們對(duì)應(yīng)著公式里的輸入X, i和i+1這兩個(gè)張量之間有若干條邊,每條邊對(duì)應(yīng)了一個(gè)可能的操作。每條邊又有一個(gè)權(quán)重值Pk,通過SOFTMAX函數(shù)計(jì)算而來(lái)。因此這三個(gè)權(quán)重的和為一。最后張量i+1的操作,它的值是這三個(gè)操作的加權(quán)平均。
前面介紹的可微分搜索策略在訓(xùn)練過程中的每次的前向和后向,都需要對(duì)所有的算子進(jìn)行操作。因此它的復(fù)雜度隨著算子候選集的增大而增加。為了降低計(jì)算壓力,我們采用了一種采樣的思路,每次前向運(yùn)算并不需要對(duì)所有的候選運(yùn)算進(jìn)行操作。而是從其中按照概率分布來(lái)選取一種算子進(jìn)行操作。這里就用到了深度學(xué)習(xí)近年來(lái)一個(gè)非常流行的重參數(shù)的技巧叫做GUMBEL SOFTMAX,它使用了GUMBEL SOFTMAX函數(shù)來(lái)近似一個(gè)離散的GUMBEL MAX函數(shù),使得一個(gè)離散的采樣技術(shù)和梯度下降算法能夠得以結(jié)合。
介紹完搜索策略,接下來(lái)介紹一下整體的訓(xùn)練策略。我們把NAS定義為一個(gè)雙層優(yōu)化問題,它有兩套未知的參數(shù):第一個(gè)是神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),用α來(lái)表示。第二個(gè)是一個(gè)具體網(wǎng)絡(luò)α自身的網(wǎng)絡(luò)參數(shù),用Wα來(lái)表示。我們的優(yōu)化目標(biāo)就是希望最小化在一個(gè)給定的驗(yàn)證集上的損失函數(shù)值,而其約束條件是這個(gè)參數(shù)Wα﹡,它是能夠最小化這個(gè)網(wǎng)絡(luò)α在給定的訓(xùn)練集上的一個(gè)損失函數(shù)。
通常這種雙層的優(yōu)化問題是使用一個(gè)交叉迭代的方法去解的。我們先固定一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)α,然后用訓(xùn)練集來(lái)求解Wα﹡。我們又固定了這個(gè)Wα,通過驗(yàn)證集來(lái)對(duì)網(wǎng)絡(luò)結(jié)構(gòu)α進(jìn)行調(diào)優(yōu)。一直迭代下去,直到收斂。
在此,我們對(duì)整體的搜索和訓(xùn)練過程再做一個(gè)總結(jié)。在搜索階段我們從搜索空間進(jìn)行采樣,得到一個(gè)模型,然后訓(xùn)練一個(gè)epoch記錄該模型以及它的性能。重復(fù)N次,最終得到N個(gè)不同的模型。進(jìn)入到評(píng)估階段后,我們從N個(gè)模型中選出表現(xiàn)最好的K個(gè)模型,對(duì)這K個(gè)模型重新進(jìn)行一個(gè)比較短期的訓(xùn)練,再?gòu)闹羞x取表現(xiàn)最好的一個(gè),最后對(duì)我們選出來(lái)的模型進(jìn)行一次完整的訓(xùn)練。
我們?cè)谌齻€(gè)數(shù)據(jù)集上進(jìn)行了測(cè)試。每個(gè)數(shù)據(jù)集我們得到了兩種不同大小的3D卷積網(wǎng)絡(luò),分別稱之為3D-S和3D-L。每一組AutoML的實(shí)驗(yàn),我們大概需要花8個(gè)GPU hours,實(shí)際上我們是用了四張Nvidia V100的卡進(jìn)行搜索,兩個(gè)小時(shí)就能完成一個(gè)搜索任務(wù)。
從上圖的實(shí)驗(yàn)結(jié)果看,AutoML搜索到的模型,在Accuracy這個(gè)指標(biāo)上是全面超過了三個(gè)手工設(shè)計(jì)的baseline了。另外我們發(fā)現(xiàn)我們輕量化的模型CovidNet3D-S,它的模型大小大概只有10MB左右,性能表現(xiàn)也非常不錯(cuò)。
接下來(lái)我們?cè)俸?jiǎn)單介紹另外一種基于進(jìn)化算法的AutoML技術(shù)。這個(gè)工作的創(chuàng)新點(diǎn)是結(jié)合了多目標(biāo)優(yōu)化來(lái)緩解在AutoML中的穩(wěn)定性問題。
近期很多學(xué)者發(fā)現(xiàn)權(quán)重共享雖然能夠降低AutoML對(duì)計(jì)算資源的需求,但是它本身犧牲了模型性能評(píng)估的準(zhǔn)確度。由于一個(gè)supernet的權(quán)重被其所覆蓋的所有subnets所共享,因此很多subnets之間如果有一些共享的邊,這些subnet之間就會(huì)互相影響。比如說(shuō)你想優(yōu)化這個(gè)subnet,那么就調(diào)整了它的參數(shù),這樣就會(huì)對(duì)跟它有重疊的subnet帶來(lái)一些參數(shù)的變化。這些對(duì)subnets的影響是未知的。因此,我們會(huì)觀察到同一個(gè)subnet在訓(xùn)練過程中的性能是不穩(wěn)定的。比如它的loss值,有時(shí)上升有時(shí)下降,這樣可能會(huì)導(dǎo)致一些比較好的模型在早期就被淘汰掉。為了解決這個(gè)問題,我們引入了一個(gè)新的優(yōu)化目標(biāo),叫做potential,希望這個(gè)優(yōu)化目標(biāo)能夠幫助去保持一些比較好的模型。
我們?cè)谒阉骺臻g上的設(shè)計(jì)并沒有太多變化,主要還是基于MobileNetV2的結(jié)構(gòu)。由于我們這回使用了進(jìn)化算法,我們需要把網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行編碼。這個(gè)例子里面每個(gè)塊有五個(gè)不同的候選操作,因此每個(gè)塊的編碼就是一個(gè)五維的one-hot編碼,而整個(gè)網(wǎng)絡(luò)的二進(jìn)制編碼就由這些五維的向量拼接而成。例如你有N個(gè)layer,那每個(gè)layer都是一個(gè)很短的code,N個(gè)layer就是由N個(gè)這樣的code拼接而成。
基于進(jìn)化算法的神經(jīng)結(jié)構(gòu)搜索,主要包含以下幾個(gè)步驟:
首先我們有一個(gè)預(yù)熱的訓(xùn)練階段,從中選取一組最好的初始模型來(lái)構(gòu)建一個(gè)群體population,然后才可以進(jìn)入進(jìn)化的迭代。在每一次的進(jìn)化周期,我們先從整個(gè)群體里面按照帕累托最優(yōu)來(lái)選取一組模型subset,這個(gè)是作為我們的種子。然后再?gòu)闹须S機(jī)選取一些模型隊(duì)進(jìn)行交叉Crossover。希望這樣能夠引入一些新的進(jìn)化,同時(shí)會(huì)對(duì)隨機(jī)選取的一些模型進(jìn)行變異操作。
整體而言,我們進(jìn)化算法是要在探索新的模型(exploration)跟充分利用已有模型(exploitation)之間取得一定的平衡。和已有的AutoML算法不同,我們采用了一個(gè)多目標(biāo)的優(yōu)化設(shè)計(jì)。已有的AutoML算法一般都是用subnet的性能來(lái)作為選擇條件。但是由于在漫長(zhǎng)的訓(xùn)練過程中,一個(gè)subnet的性能時(shí)好時(shí)壞,因此具有一定的隨機(jī)性和不穩(wěn)定性。我們就把訓(xùn)練過程中的每一個(gè)子網(wǎng)的性能都做一個(gè)記錄,記在F 向量里面。而E向量,就是他們對(duì)應(yīng)的訓(xùn)練的索引。
最后我們對(duì)收斂的曲線做了一個(gè)擬合,把它的線性擬合的斜率定義為它的potential。斜率比較高的時(shí)候,就代表它的收斂潛力比較大。所以我們就在我們的多目標(biāo)設(shè)計(jì)里面,除了考慮一個(gè)模型在某一時(shí)刻的accuracy,同時(shí)也考慮它的歷史發(fā)展軌跡。
我們的實(shí)驗(yàn)結(jié)果表明,經(jīng)過多目標(biāo)優(yōu)化和進(jìn)化算法結(jié)合以后,它能夠大幅提升搜索效率,尤其是和我們之前的CovidNet3D比較,在三個(gè)數(shù)據(jù)集上都有了較大的提升。
最后我們?cè)俳榻B一下,近期我們?nèi)绾伟炎詣?dòng)數(shù)據(jù)增強(qiáng)Data augmentation和神經(jīng)結(jié)構(gòu)搜索結(jié)合起來(lái)。在3D醫(yī)療影像的分類問題上有兩個(gè)常見的挑戰(zhàn),包括模型設(shè)計(jì)的復(fù)雜性以及一般數(shù)據(jù)集比較小的問題。
我們知道醫(yī)療領(lǐng)域如果要對(duì)數(shù)據(jù)做高質(zhì)量的標(biāo)注,成本是非常高的。解決小數(shù)據(jù)集的問題,首選手段就是數(shù)據(jù)增強(qiáng)Data augmentation。但研究表明最優(yōu)的數(shù)據(jù)增強(qiáng)策略往往依賴于數(shù)據(jù)集本身。所以近年來(lái)如何做自動(dòng)的數(shù)據(jù)增強(qiáng),也吸引了很多學(xué)者的注意。它的目的主要是對(duì)一個(gè)給定的數(shù)據(jù)集和學(xué)習(xí)任務(wù)來(lái)自動(dòng)去尋找一個(gè)合適的數(shù)據(jù)增強(qiáng)策略。
我們提出了一個(gè)MEDPIPE(聯(lián)合流水線)的方案。我們利用自動(dòng)機(jī)器學(xué)習(xí)的思路,把自動(dòng)數(shù)據(jù)增強(qiáng)策略和自動(dòng)的網(wǎng)絡(luò)結(jié)構(gòu)搜索統(tǒng)一起來(lái),主要是構(gòu)建了一個(gè)統(tǒng)一的流水線。我們把數(shù)據(jù)增強(qiáng)策略DAP和NA做一個(gè)統(tǒng)一的網(wǎng)絡(luò)編碼,這樣就可以在同一個(gè)搜索空間下面對(duì)DAP和NA同時(shí)進(jìn)行優(yōu)化。
上面是MEDPIPE的一個(gè)概覽圖。
我們把數(shù)據(jù)增強(qiáng)策略,也用一個(gè)DAG圖來(lái)描述,這樣它就成為了整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)的一部分。后面跟前面介紹的一樣,后面網(wǎng)絡(luò)搜索的DAG圖是沒有變化的。
上圖是我們具體的一個(gè)設(shè)計(jì),對(duì)數(shù)據(jù)增強(qiáng)策略,考慮到了不同的操作,包括Invert、V-Flip、H-Flip、Blur,還有Erase、Affine等。
上圖是我們對(duì)神經(jīng)結(jié)構(gòu)的一個(gè)搜索空間的設(shè)計(jì),主要還是沿用了我們之前MBConv的一個(gè)設(shè)計(jì)。
有了搜索空間以后,我們要解決的搜索問題,被定義為一個(gè)雙層優(yōu)化問題,在此不再贅述了。但是由于層數(shù)比較多,引入了數(shù)據(jù)增強(qiáng)以后,它的搜索空間大小變得更加復(fù)雜。因此我們有必要對(duì)這個(gè)訓(xùn)練做進(jìn)一步的優(yōu)化。
我們采用的還是采樣的思路,叫單路徑采樣。從一個(gè)比較大的DAG圖里面,在前項(xiàng)和后項(xiàng)運(yùn)算時(shí),我們并不需要嘗試所有的運(yùn)算。我們通過Gumbel Softmax來(lái)進(jìn)行一個(gè)采樣的操作,通過Gumbel Softmax來(lái)把它的操作變成是可微分的。
上圖是我們實(shí)驗(yàn)結(jié)果。我們看到在三種不同的數(shù)據(jù)集上,我們搜索到的數(shù)據(jù)增強(qiáng)的策略是非常不一樣的。這說(shuō)明在不同的數(shù)據(jù)集上,的確需要設(shè)計(jì)不同的數(shù)據(jù)增強(qiáng)的方法。
上圖是我們結(jié)合數(shù)據(jù)增強(qiáng)和神經(jīng)結(jié)構(gòu)搜索得到的一些網(wǎng)絡(luò)模型,我們就稱之為MEDPIPE模型。和之前的沒有采用自動(dòng)數(shù)據(jù)增強(qiáng)的網(wǎng)絡(luò)搜索方法相比,性能都有一個(gè)非常大的提升。
最后,我對(duì)今天的報(bào)告做一個(gè)總結(jié),通過我們近兩年的研究表明,AutoML是一種非常有效的手段,可以在任意給定的數(shù)據(jù)集上搜索出比較高效的神經(jīng)網(wǎng)絡(luò)模型。而以可微搜索算法為代表的權(quán)重共享等技術(shù)可以大幅降低AutoML對(duì)算力的需求?;谶M(jìn)化的搜索方法,可以幫我們搜索到一些更好的網(wǎng)絡(luò)結(jié)構(gòu)。最后數(shù)據(jù)增強(qiáng)和網(wǎng)絡(luò)結(jié)構(gòu)搜索相結(jié)合,可以進(jìn)一步提高AutoML的效能。
然而,目前AutoML技術(shù)還依賴于一定的人工設(shè)計(jì)經(jīng)驗(yàn),如何突破人工設(shè)計(jì)的約束來(lái)創(chuàng)造出有效的網(wǎng)絡(luò)結(jié)構(gòu),將是一個(gè)非常重要的發(fā)展方向。另外,如何快速而準(zhǔn)確的評(píng)估一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)的性能,還需要更深入的研究。
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。
本專題其他文章