3.5 自動化機器學習
前面提到,元學習的目標之一是實現General AI,使機器具備從已有模型推演出完成新任務模型的能力。自動化機器學習AutoML是類似的概念,讓機器學習變得自動化,使機器學習模型具有更好的適應性,遇到新問題時,可以自動學習機器學習模型,用來解決新問題,而且效果比人類手動調試的模型更好。然而,AutoML和元學習是不完全重合的領域,AutoML大部分的工作是在研究神經網絡模型的超參數優化,包括神經網絡模型結構的優化和結構中超參數的優化,在所有可能的超參數組合中,找到最優的超參數組合,其對應的神經網絡模型達到了全局最優的表現。早期的元學習模型大多研究超參數的優化,而近期的元學習研究更多集中在讓機器快速準確地完成分布外任務。
3.5.1 超參數優化
神經網絡模型的超參數包括以下兩部分。
(1)離散的超參數,描述的是神經網絡結構的設計。例如,CNN中卷積層和池化層疊合的結構設計,重復的層數,以及池化層的選擇;還有高速路神經網絡模型中不同層之間捷徑連接的設計,捷徑中門函數的選擇,Inception模塊的插入。在神經網絡結構中常有重復的層結構和模塊,可以靈活拼裝成神經網絡模型,滿足實際應用需要,提高模型精度。
(2)連續的超參數,描述的是神經網絡模型中的參數設計。例如,前文提到的學習率參數、動量參數等。
連續超參數的選擇依賴于離散超參數,離散超參數決定了神經網絡模型的結構,例如,深度、寬度等,連續超參數的設定依賴于神經網絡的結構。給定超參數之后,神經網絡模型的結構就確定了,即可以開始進行訓練。
常見的做法是專家根據理論和經驗來優化超參數,給出表現更好的深度神經網絡模型。AutoML的目的是自動化機器學習,通過超參數優化,在所有超參數組合中尋找最優的組合,得到最優深度神經網絡模型。AutoML通過自動化方式搜索到的最優神經網絡模型比人工調試的更優,而且,超參數取值的選擇越多,考慮的可變超參數數目越多,可選的超參數組合越多,那么,AutoML搜索出來的最優深度神經網絡模型越好。
AutoML自動化尋優花費大量時間和計算資源,找到的最優模型只能匹配人工調試的最優模型。看起來似乎不值得,但是人工智能學者們認為,計算能力發展得很快,過去需要很久計算得到的結果,現在很快就能得到,計算資源的花銷并不是方法研究中的重點,關鍵是方法本身是否會帶來更好的深度神經網絡模型,方法是否具有更好的推廣性,能否更好地下沉到實際應用的各個領域,以推動全面智能化的發展。雖然AutoML花銷很大,但是自動化便于人們學會使用,得到的模型效果不差,適用于任何深度學習領域,因此,AutoML會成為主流的深度神經網絡模型設計者。
常見的超參數優化方法有隨機搜索[29]、遺傳演化算法、強化學習、元學習、貝葉斯優化等,避免困在局部最優中,努力達到全局最優。這些常見的超參數優化方法有這樣一些比較:
(1)隨機搜索方法可以避免局部最優,但是搜索計算量較大。
(2)遺傳演化算法可以有效地避免局部最優,但是計算量仍然較大。
(3)強化學習方法將離散超參數的選擇視為行動,將模型的表現視為獎勵,通過有序的優化方法選擇最優行動,最優行動對應最優超參數組合和最優的深度網絡模型。
(4)元學習方法多和強化學習、遺傳演化算法結合起來進行模型超參數的研究,在每個超參數組合下,元學習器可以根據以往訓練的經驗,不經過大量的訓練迭代,就可以預測出該超參數組合下模型的表現,從而加速超參數優化的過程。
(5)連續超參數的優化基于給定的離散超參數的設定。首先設置離散超參數確定神經網絡模型的結構,然后在此結構上優化連續超參數。因此,連續超參數的優化依賴于離散超參數的優化,對于有依賴關系的超參數組合優化問題,貝葉斯優化方法具有優勢。
在AutoML考慮的超參數組合非常多的情況下,遍歷所有的超參數組合幾乎是不可能的,而且所有超參數組合中真正帶來好的表現的組合非常少。在這樣的情況下,搜索方法需要很有效率,而且不陷入局部最優值,這樣才能在這樣稀疏的環境中找到最優神經網絡模型。
3.5.2 元學習和自動化機器學習
元學習的思路是,在新任務上,更新神經網絡模型,適應新任務的處理,希望神經網絡模型擁有更多的自由度,更加靈活,能在新任務上進行簡單快速的優化,以形成準確的推理。自動化機器學習在大量的神經網絡模型超參數組合上進行搜索,例如,神經網絡的深度、每一層的寬度、ResNet基礎模塊或者Inception模塊的插入和重復堆疊、池化層和卷積層的組合堆疊、捷徑的使用、學習率、動量參數、批尺寸等,對神經網絡的這些超參數取值進行自由組合,找到表現最優的神經網絡模型。AutoML耗費大量的時間和計算資源,需要加速搜索的過程和加速每個超參數組合下模型的訓練過程,且避免陷入局部最優的超參數組合,努力找到全局最優的神經網絡模型,在新任務上更快地找到結構最優且超參數最優的神經網絡模型。
自動化機器學習的計算量花銷大,為了打敗人工調試的機器學習模型,AutoML需要考慮實際中人工調試時會考慮的所有超參數選項,在這些超參數組合中,找到模型表現最優的超參數組合。由于需要遍歷的超參數組合非常多,元學習思想可以用在自動化機器學習神經網絡模型中,加速模型超參數組合下模型的探索,更快地找到最優的神經網絡模型。元學習框架可以起到這樣一些作用:
(1)累積訓練經驗,預判超參數組合下神經網絡模型的表現,指導基礎學習器優先探索預測表現好的超參數組合。通過早期的訓練迭代就可預判最終訓練的結果,可節省每個超參數組合下訓練的時間。
(2)將每個超參數組合視為一個任務,元學習器綜合許多任務的訓練經驗,找到不同任務之間的相似性,在新任務上無須迭代訓練就能給出模型表現的預判,并且指示探索新任務的方向,根據預判推薦下一個要遍歷的超參數組合。
(3)將每個超參數組合視為一個任務,于是變成了找到最優任務的問題。借鑒貝葉斯元學習的思想,通過任務的先驗分布和后驗分布,在探索新任務之后,不斷更新任務的分布,根據任務分布,計算任務專屬參數的分布。
(4)AutoML讓模型從簡單到復雜進行演化,使用進化算法,借鑒生物進化過程中從最早的單細胞生物到后來具有智能的復雜生物體的由簡入繁的進化過程。在搜索的過程中,讓模型的復雜度只上升不下降,元學習器使用遺傳演化算法更新基礎學習器中的超參數組合,優先探索預判表現好的超參數組合。
(5)將已訓練任務的結果保存在記憶模塊中,通過注意力機制提取記憶,對新任務進行快速準確的推理。使用記憶模塊累積模型訓練經驗,為新任務提供初始值,加速任務的遍歷,更快找到最優的超參數組合。
如此一來,元學習框架被融入AutoML,起到了加速和指導AutoML訓練的效果。好的初始值通過快速的訓練迭代就能得到好的結果,而加速遍歷超參數組合有利于節省時間,節省下來的時間可以遍歷更多的超參數組合。通過對超參數組合進行預判,探索的都是更優的超參數組合,這樣的搜索方法更有效率。
除此之外,元學習模型還包括許多思想,在后面的章節中我會一一介紹,它們都可以被應用到AutoML中。這里簡要介紹了這樣一些元學習模型,它們可以用在AutoML中加速最優神經網絡模型的自動化搜索。舉例說明,將元學習模型用在AutoML中的思路有以下這些。
(1)設計端對端(End-to-End)的神經網絡模型更新方法(Update Strategy),可快速給出適應新任務的準確模型。一般認為,可求導的模型更新方法更有效率,例如,使用梯度反向傳播,模型無關元學習方法(MAML)通過隨機梯度算法更新參數,提高深度神經網絡模型的適應性,以便更好地應用到新任務上。將在其他任務上AutoML尋到的最優神經網絡模型經過端對端的更新,找到新任務上的最優神經網絡模型,避免了浪費時間使用AutoML從頭開始尋找最優模型。
(2)設計神經網絡模型的局部更新方法(Local Update),只更新神經網絡中對于適應新任務至關重要的部分參數,以節省計算量和時間。例如,在CNN中,輸入數據在最先進入的層中對圖像的平移不變特征進行提取,而所有圖像中特征提取的層都是類似的,因為它們的功能是類似的。對于不同的圖像任務,使用的特征提取層也是類似的,因此更新特征提取層的參數對于適應新任務而言并不至關重要。更為重要的是,更新全連接層或者上采樣層以及輸出層中的參數,這些參數對于適應新任務而言至關重要。對于不同的任務,這些和輸出層更接近的層中的參數變化很大,在給定訓練時長的要求下,需要優先更新靠近輸出層的參數,其次才是更新其他參數。在其他類似任務上,AutoML尋到的最優神經網絡模型上使用局部更新方法,找到新任務上的最優神經網絡模型。
(3)存儲模型更新過程中用過的梯度值,用于加速新的模型更新過程。在神經網絡模型中添加記憶模塊,從輸入任務數據集提取特征、模型訓練結果等有效信息,將這些信息存儲在記憶模塊中,記憶模塊具有信息存儲、信息搜索、信息遺忘等功能。處理新任務時,可以從記憶模塊中搜索到過去相關任務的訓練經驗,且記憶模塊可以被添加到任何深度神經網絡模型中,用于加速模型的訓練和提高模型的泛化能力。將AutoML處理過的任務特征和任務模型存儲起來,在新任務上提取有用的記憶用于借鑒,可更快地在新任務上找到最優神經網絡模型。
(4)將學習器中的超參數選擇視為強化學習框架下的行動策略,依靠行動策略的優化來計算最優的超參數組合,從而找到全局最優的學習器形式。這里的元學習器使用強化學習框架,在新任務上優化行動策略來更新模型,以適應新任務的處理。強化學習模型的訓練往往需要花費大量的時間和計算資源,因此在模型設計時需要適當地簡化和加速,讓模型更有效率,將AutoML中的超參數組合視為行動策略,通過元強化學習的框架找到最優超參數組合對應的最優神經網絡模型。
(5)使用循環神經網絡模型RNN作為元學習器,將元學習器作為控制器,控制神經網絡模型結構和參數的更新,也可以用RNN作為元學習器控制強化學習模型中超參數的更新。在元學習中,考慮學習器的優化時,常常采用多層元學習器的結構來提高元學習模型的適應性,以適應差異更大、更多樣的任務。例如,在論文列表中的論文[30]中給出的多層循環神經網絡RNN元學習器模型就可以實現這樣的效果。首先,任務中的數據規模可拓展,多層RNN元學習器在數據批次、模型批次、任務批次等層面上進行歸納推演,從而適應規模更加多變的任務;其次,學習器在訓練時間上也很靈活,根據任務需求和硬件條件,對數據批尺寸、模型批尺寸、任務批尺寸進行調控,從而調控學習器的訓練時長。在AutoML中使用RNN的元學習器作為控制器和預測器,控制超參數組合遍歷的方向,預測尚未探索的超參數組合中有潛力打敗目前最優模型的組合。在AutoML中優先探索有潛力的組合,加速AutoML的訓練過程,并且幫助AutoML找到更靠近全局最優的模型。
本節對元學習方法的思想進行了簡介,在后面的章節中還會依次介紹度量學習、元學習器、貝葉斯學習等元學習中的主要思想和方法,它們和自動化機器學習的結合有無限的可能,元學習和自動化機器學習的結合不止本節列出的這些,讀者可以繼續探索和挖掘。
3.5.3 加速自動化機器學習
接下來介紹兩篇論文,它們使用元學習器作為超參數組合下模型最終表現的預測。在AutoML按照一定規則遍歷所有超參數組合時,原本需要在每個超參數組合下,訓練神經網絡模型,迭代很多次,計算網絡模型最終的表現。使用元學習器對每個超參數組合的表現進行預測,根據幾十個超參數組合下模型訓練的完整經驗,再根據每個新超參數組合下迭代幾次的表現,就可以預測出迭代多次之后的表現。這樣做可以節省每個超參數組合下模型訓練的時間,更快地決定該超參數組合是否會給出更好的結果。如果會給出更好的結果,就迭代多次,如果不會給出更好的結果,就盡快舍棄,并開始探索下一個超參數組合。元學習器的預測能力是影響此時AutoML算法表現的重要因素之一。
Tobias Domhan等作者在2015年的論文“Speeding up Automatic HyperparameterOptimization of Deep Neural Networks by Extrapolation of Learning Curves”[34]中介紹了AutoML和元學習結合的雛形。這里考慮的是超參數的優化,在不同超參數的組合下,訓練神經網絡模型,計算模型的精度,通過對學習率曲線(Learning Curve)進行樣本外預測,來預判神經網絡模型的精度。不需要經過太多輪次的訓練,就能對超參數組合的效果進行判斷,縮短了遍歷所有超參數組合的尋優過程所需要的時間。這里,通過早期學習率曲線預測模型的最終表現,可以將其視為元學習器模塊。
常見的學習率曲線有以下兩種:
(1)神經網絡模型的表現對迭代輪次或者訓練時間作圖。
(2)神經網絡模型的表現對訓練數據集的大小作圖。
兩種學習率曲線的用處分別是:
(1)根據早停規則,判斷模型表現,判斷模型訓練是否應該早停。
(2)了解為了達到目標精度需要的訓練數據集的大小,從而收集相應大小的有標注數據集。
圖3.12給出了第一種學習率曲線的規律:
(1)最開始,迭代輪次增加,神經網絡模型表現逐漸變好。
(2)迭代輪次過了臨界值,再增加迭代輪次,神經網絡模型表現變差,認為是正在訓練的神經網絡模型出現了過擬合,可以在臨界值時停止對神經網絡模型的訓練,這種做法稱為早停。
(3)學習率曲線的形狀類似,可以使用早期學習率曲線預測后期曲線的走勢,以及訓練完成時模型的最終表現。

圖3.12 學習率曲線早停示意圖
早停規則的兩層含義:
(1)在迭代輪次超過臨界值之前停止訓練,即在過擬合出現之前停止訓練。
(2)根據早期學習率曲線的表現預測后來的表現,在不可能超越已經找到的最優模型表現時停止訓練,開啟下一個超參數組合的探索。
使用參數回歸模型(Parametric Regression Model)對學習率曲線進行建模:

其中,t是學習率曲線中的第t個訓練迭代輪次,f是對學習率曲線建模的參數模型,θ是學習率曲線模型中的參數,ε是服從高斯分布的殘差。
論文中提到,參數模型f有11種選擇,形狀大致都是圖3.12所示的模樣。為了對學習率曲線有更好的預測,參數模型的選擇至關重要。學習率曲線預測結果的好壞,直接關系到是否會提前舍棄一個超參數組合的模型。顯然,不能舍棄任何好的超參數組合,也不能浪費時間訓練不好的超參數組合。因此,提高超參數組合下模型表現的預測能力,有利于提高AutoML算法的表現。
實際中使用的參數模型是這11種模型的線性組合:

其中,K是可供選擇的參數模型的總數,參數θ包括權重參數wk、參數模型的參數θk、殘差的方差σ2。可使用貝葉斯回歸來求解這個參數模型組合,其中,權重參數設定為非負的。
訓練過幾次之后,通過早期學習率曲線的表現預測模型訓練很多輪次之后的表現,提前結束預測表現不好的模型訓練。通過這樣的預判實現了以下效果:
(1)節省了AutoML尋找全局最優的神經網絡模型所需的時間。
(2)搜索到了更好的全局最優模型。
(3)預判確實提前終止了最終表現不好的模型訓練。
之后,在類似的思想中,Bowen Baker等作者在2018年的論文“Accelerating Neural Architecture Search Using Performance Prediction”[35]中提出了使用模型表現預測來加速AutoML的尋優過程。文中指出,元學習器可用于神經網絡模型的表現預測,元學習器記錄了訓練過的超參數組合下的模型表現,預測新的超參數組合下模型的表現,舍棄預測結果不好的超參數組合,只去探索預測會有更好表現的超參數組合。實際應用中,在這樣的思想下,提高元學習器中的預測器精度,有利于加速尋優的過程,找到更好的最優解。可以考慮用以下思路來提高預測器的精度:
(1)考慮包括模型結構、超參數組合、早期學習率曲線等許多因素,預測模型表現。
(2)考慮用少量完整訓練經歷中觀察的學習率曲線進行集成,用于預測其他學習率曲線。
論文中使用了類似的思想,使用元學習器來預測超參數組合下神經網絡模型的表現,減少了訓練模型花費的時間和計算量。這里,元學習器中的預測器得到了改進,使用了有序回歸模型(Sequential Regression Model,SRM)對模型表現進行預測,提高了預測精度,改善了AutoML整體的表現。在訓練過程中,積累經驗,不斷對模型T輪訓練迭代之后的精度進行預測。這里,記錄了迭代輪次
之前的所有模型精度
:

其中,是1輪訓練迭代之后模型的精度。不僅如此,
還記錄了迭代輪次之間模型精度的增長:

其中,是第t輪迭代和第
輪迭代之間模型精度的增量,
是模型精度增量的二階差值。對于超參數組合
,其記錄了模型訓練過程中精度的變化:

其中,指的是第1個超參數組合,
是第1個超參數組合下神經網絡模型訓練到第τ個輪次后,記錄的每個訓練輪次的精度、精度的增量、精度的二階差值。預測器是從超參數組合和訓練過程中記錄的精度到最終模型精度的映射:

其中,是超參數組合下的模型特征,例如,動量參數等超參數;T是模型訓練輪次數的最大值;yT是模型訓練完成時的精度,即需要預測的精度;訓練輪次
較小時,準確預測yT就能節省很多訓練時間。有序回歸模型SRM在第1個輪次一直到第T-1個輪次不斷預測
,每次預測多考慮一個數據點,即新加入一個輪次訓練精度數據點,每次加入一個數據點,預測的結果變化可能不會太大。預測使用回歸方法——例如,最小二乘法(Ordinary Least Squares,OLS)、隨機森林(Random Forest)、支持向量機回歸模型(Support Vector Machine Regression,SVR)等——計算回歸系數。回歸預測方程的確定建立在100個完整訓練的神經網絡模型基礎上,在這100個完整訓練輪次的經歷中,訓練SRM模型,估計預測方程。
圖3.13給出了加速自動化機器學習的示意圖,示意圖簡略地描述了元學習框架如何加速自動化機器學習過程,示意圖中主要包括以下步驟:
(1)在少量超參數組合上進行完整訓練,獲得完整學習率曲線,元學習器總結學習率曲線的規律,對學習率曲線進行建模。
(2)之后,在新的超參數組合下,只需要進行早期訓練,即可根據早期學習率曲線預測訓練完成時的模型精度。
(3)綜合這些超參數組合下模型的表現,預測尚未探索的超參數組合對應的模型精度,指導探索預測模型精度高的超參數組合。

圖3.13 加速自動化機器學習示意圖
加速自動化機器學習引入了模型表現的預測器作為元學習器,實現了對AutoML算法的加速,元學習器的主要功能有以下兩項:
(1)根據少量模型迭代的步驟,預測多次迭代后模型訓練完成時的表現,節省每個超參數組合下模型迭代所需要的時間。在給定時間下,AutoML可以遍歷更多的超參數組合,找到更好的最優神經網絡模型。
(2)根據少量的模型訓練經驗,預測尚未探索過的超參數組合下模型的表現,指導AutoML優先探索預測表現更好的超參數組合。
加速自動化機器學習有以下優勢:
(1)讓AutoML更快地從超參數組合估計出模型的最終表現,節約時間。
(2)在神經網絡模型的訓練過程中及時總結經驗,給出尋優方向,加速訓練過程。
(3)讓AutoML在有限時間內遍歷更多的超參數組合,找到更接近全局最優的神經網絡模型。
對加速自動化機器學習有以下探討:
(1)加速的效果依賴于模型表現的預測器,預測模型不能過擬合,預測精度極大地影響了AutoML尋優的效果,在預測模型的構建上,需要格外謹慎。
(2)在加速過程中,需要考慮超參數組合對模型精度預測的影響。在不同超參數組合下,及時更新預測器,不斷積累經驗,給出更加切合超參數組合的預測。
3.5.4 決策式自動化機器學習
Matthias Feurer等作者在2015年的論文“Efficient and Robust Automated Machine Learning”[36]中提出了一種AutoML思路,選擇常用的機器學習方法,對機器學習模型中的超參數組合進行決策,進而對參數進行估計,以此實現自動化機器學習。決策式自動化機器學習將機器學習模型和超參數的選擇視為決策,超參數有連續超參數和離散超參數兩種,對應的是連續的決策選項和離散的決策選項。根據以往的經驗,決定這樣的任務數據集通常采用怎樣的機器學習模型訓練,超參數是怎樣選擇的,元學習器為新任務數據集提供建議,找到合適的機器學習模型進行訓練,更快地實現自動化機器學習,找到全局最優的神經網絡模型。
AutoML通過優化目標函數,對于任務,自動化地找到最優決策,以及相應的最優機器學習模型。這里的AutoML考慮的不僅是神經網絡模型,還考慮所有常用的機器學習模型,用來處理日常生活中的任務。例如,教師使用的分析影響學生考試成績重要因素的模型,通過模型,教師得知如何在這些重要因素上進行改進,提高學生的成績;投資分析師對資產價格進行分析,找到影響價格的重要因素,對資產合理價格區間進行預測。對于不同的任務,常用的機器學習模型有決策樹、隨機森林、支持向量機模型等。
沒有任何一個機器學習算法在所有任務的數據集上都表現最優,機器學習算法的表現極度依賴模型中超參數組合的選取。對于不同的任務,目標函數不同,可選的機器學習模型庫也不同,超參數組合的決策選項也不同。普適的AutoML算法需要考慮不同任務的目標函數、可選機器學習模型庫、超參數的決策選項庫。元學習總結了過去使用過的不同機器學習模型處理不同任務數據集的經驗,為新任務數據集的處理給出指導。
圖3.14描述了決策式自動化機器學習示意圖,元學習框架在決策式自動化機器學習中起到了以下作用:
(1)選擇合適的機器學習模型和相應的超參數組合。在大量訓練任務上,找到哪些元特征較好地反映了數據集最合適的模型和訓練方式。對很多任務數據集進行訓練,記錄下這些數據集的元特征。根據元特征,為數據集選取最合適的機器學習模型,以及數據集的有效訓練方式。
(2)對于新任務,元學習框架綜合為許多任務數據集選取合適的機器學習模型的經驗,為新任務數據集推薦合適的機器學習模型庫和相應的超參數組合初始值,新任務接下來根據元學習框架給出的初始模型進行迭代。
AutoML根據元學習推薦的機器學習模型庫和相應的參數初始值,使用貝葉斯優化,對模型進行訓練迭代。如圖3.14所示,決策式自動化機器學習分為以下幾個階段。

圖3.14 決策式自動化機器學習示意圖
(1)元學習器訓練大量任務數據集,提取有效的元特征,記錄這些特征、學習模型,估計元特征到合適的機器學習模型和模型訓練方式的映射。
(2)元學習器根據大量處理任務數據集的經驗,在處理新任務時,提供合適的初始機器學習模型和合適的初始值,在更好的初始模型下,AutoML可以更快地迭代出較好的模型。
(3)AutoML對新任務數據集進行預處理,在預處理時選取根據經驗來說較好的預處理模型;然后,使用預處理的數據集對初始模型進行訓練迭代,逐漸優化,并且記錄模型訓練結果。
(4)最后,將訓練過的機器學習模型的訓練結果進行集成。
處理新任務時,需要選擇這樣一些模型:
(1)從任務數據集獲取元特征的模型(Feature Preprocessing)。
(2)任務數據集預處理模型(Data Preprocessing)。
(3)機器學習模型(Machine Learing Algorithm)。
決策式自動化機器學習方法以元學習框架為開端,積累經驗,在新任務上推薦合適的機器學習模型和初始值。建立在好的初始模型的基礎上,新任務上模型的訓練和迭代會事半功倍。在新任務上對初始機器學習模型進行訓練迭代,記錄下所有訓練過的機器學習模型的結果,最后,以這些機器學習模型訓練結果的集成為結尾,給出最優的機器學習框架,為新任務提供最優的結果。
決策式自動化機器學習有以下優勢:
(1)使用元學習框架積累處理任務的經驗,適用于所有任務,包括差別很大的任務,可以解決很多實際問題,對于自動化機器學習的應用和推廣具有深刻的意義。
(2)使用集成學習將已訓練的機器學習模型結果進行集成,給出任務的處理方案。這樣的方案具有更好的表現,沒有浪費任何迭代訓練模型的經驗成果。
對決策式自動化機器學習有以下探討:
使用幾十個元特征來對數據集的模型和初始值給出建議,本身就是很難的問題,尤其是在任務復雜多變,且數據集特別大的情況下,元特征的選取會變得更加困難。因此,這樣的模型更適用于簡單的任務,生活中很多數據分析問題都是簡單的實際問題,不需要非常復雜的模型就可以很好地解決,使用AutoML自動化地解決這一類問題仍然具有深刻的意義。
3.5.5 漸進式自動化機器學習
漸進式AutoML將模型的尋優過程設定為由簡入繁的過程,從簡單的神經網絡模型開始,讓模型逐漸變得復雜,尋找最優的神經網絡模型。有時每一步添加的元素都帶來了增益,但是新添加的元素卻有可能讓過去添加的元素變得沒有增益了。因此,時不時地回望、測試一下最近添加的元素組合是否帶來了增益。對過去添加的元素組合進行檢查,如果舍棄過去添加過的元素組合沒有導致模型表現變差,可以舍棄過去添加過的元素組合,讓模型變得簡化一些。很多AutoML尋優神經網絡模型的算法都是漸進式的,從最簡單的模型開始逐漸添加元素,例如,神經元、連接、捷徑、卷積層、池化層、殘差模塊、Inception模塊等,組合起來,在模型逐漸變復雜的過程中,模型的表現也越來越好,直到找到表現最好的神經網絡模型。
在AutoML尋找最優神經網絡模型的過程中,一定要避免陷入局部最優,讓自動找到的神經網絡模型靠近全局最優,打敗人類調試得到的最優網絡模型。因此,常用的搜索方法是隨機搜索、遺傳演化算法和強化學習算法,其中,隨機搜索最緩慢,遺傳演化算法和強化學習算法更常用。前面章節中提到過元學習加速自動化機器學習算法,這種做法非常常見,通過元學習思想預測怎么改變現有的神經網絡模型,獲得最大的收益,指導模型尋優的過程,或者在少量訓練之后就能預測模型表現,加速超參數組合的遍歷。
來自約翰斯·霍普金斯大學、谷歌人工智能實驗室和斯坦福大學的Liu Chenxi等作者在2018年的論文“Progressive Neural Architecture Search”[37]中提出了一種漸進式神經網絡模型搜索方法PNAS(Progressive Neural Architecture Search),用于加速在AutoML中搜索全局最優神經網絡模型。論文中介紹了這樣簡單的經驗:
(1)預測神經網絡模型表現的預測器越好,指導AutoML遍歷的超參數組合越優質。
(2)加速AutoML做得越好,AutoML可遍歷的超參數組合越優質,找到的神經網絡模型越好。
遺傳演化算法在漸進式自動化機器學習中應用很多。在遺傳演化算法中,從空模型開始,在模型中添加元素,看到模型的表現逐漸變好,直到模型的表現不再變得更好,就認為獲得了最優的神經網絡模型。遺傳演化算法常用來改進神經網絡模型的結構,在原有模型的基礎上,添加新元素,例如,神經元、連接、卷積層、池化層等,同時,使用隨機梯度下降法來估計神經網絡模型中的參數。
遺傳演化算法在現有模型上選擇添加神經元或者神經網絡層等,讓模型逐漸長大,觀察模型表現的變化。例如,在PNAS論文[37]中,卷積神經網絡模型CNN的基礎結構是卷積層和池化層,所有的CNN都可以看作卷積層和池化層堆疊而成的,在空的CNN模型基礎上添加卷積層和池化層,可以形成很多CNN模型。對于像素點較多的高清圖片,CNN模型的層會更多,以對高清圖片中的特征進行提取。在PNAS論文[37]中,在CNN基礎結構模塊中,添加的兩個元素在以下神經網絡層中選擇:3×3卷積層、5×5卷積層、7×7卷積層、1×7卷積層和7×1卷積層組合、3×3平均值池化層、3×3最大值池化層等。同時,添加的兩個神經網絡層之間的連接方式也需要選擇,形成的CNN模型具有更多靈活度,有利于最終尋找到更優的神經網絡模型。在不添加其他元素的情況下,保持模型的復雜度不變,遺傳演化算法還可以對神經網絡模型進行變形(Mutation),查看變形后的神經網絡模型表現是否更好,繼續尋找全局最優的神經網絡模型。
在遺傳演化算法對神經網絡模型的結構進行演化的同時,對神經網絡模型表現的預測器也進行了訓練。正如前面章節中提到的,預測器是從神經網絡結構和驗證集精度到模型最終精度的映射,在每個訓練輪次后,都會同時對預測器進行迭代更新。提高預測器的精度并不容易,在PNAS論文[37]中,使用預測器對所有尚未遍歷過的模型的精度進行了排序,預測器給出的排序和實際這些模型精度的排序之間的相關性系數都是正數,在0.1和0.6之間,是正相關的,但是并不是完美的正相關關系。將預測器視為元學習器,指導超參數的遍歷,預測器指導模型探索有希望帶來更好表現的超參數組合,因此,預測器對尚未探索過的模型的精度的判斷很重要,判斷越準確,越有利于更快地找到好的神經網絡模型。PNAS論文[37]中使用的預測器是神經網絡模型集成的預測器,預測器的表現很好,帶來了AutoML模型更好的加速,找到了更優的神經網絡模型。未來,在與更多機器學習模型相結合時,作為元學習器的預測器會不斷進步,帶來更好的AutoML算法。
類似地,來自谷歌大腦(Google Brain/Research)的Esteban Real等作者在2020年的論文“AutoML-Zero: Evolving Machine Learning Algorithms From Scratch”[38]中使用遺傳演化算法進行漸進式自動化機器學習,從空的程序開始演化,添加命令行,形成自動化的機器學習算法。這樣做需要大量的計算,但是計算能力發展很快,文中認為計算量大但是好用的算法在未來會受到歡迎。人工進行算法的調試會引入人為的偏差(Human Bias),不同人建模的經驗不同,知識的儲備不同,在算法調試中會有個人的特點和偏好,即使人工找到的算法超過了已有的最好算法,但是仍然不是所有存在的算法中最好的。AutoML旨在通過大量的計算,將算法尋優變得自動化,使用計算機去尋找最優算法,以省去人工對算法調試的麻煩。
AutoML-Zero給出的算法是從空程序開始的,通過遺傳演化算法不斷添加命令行,直到模型的效果達到預期,此時的模型就是自動化機器學習給出的最優模型。通過添加命令行的方式,AutoML-Zero考慮了很多機器學習方法的可變選項,包括神經網絡模型中正則方法的選取、數據增強方式的選取等。在前面的章節中,我們介紹過神經網絡模型中的正則方法,列出了十幾種常見的神經網絡正則化方法,包括隨機失活和批歸一化,這些正則化方法均可以選用。前面章節中還列出過很多種批歸一化的變體,涉及很多種神經網絡模型中的規范化方法,也可以選用這些方法。在實際中,人工進行算法的調試時,會考慮到這些常見的選項組合來進行神經網絡模型的調試,為了達到比人工調試出的算法更好的效果,AutoML也需要考慮將這些選項作為超參數進行選擇,在很多選項的基礎上找到全局最優的神經網絡模型。
AutoML-Zero考慮了很多神經網絡模型設計中的可變選項,由于超參數組合特別多,實際上這些超參數組合中真正效果好的模型很少,于是造成了這樣的情形:需要遍歷的超參數組合搜索域很大,而搜索域中有效的解很稀疏。此時,使用遺傳演化算法進行搜索是較合適的,其既能提高搜索的效率,又能有效地避免陷入局部最優,靠近全局最優。在AutoML-Zero中使用了以下方法來提高搜索的效率,找到更好的最優模型,更靠近全局最優:
(1)檢查算法程序是不是等價的,是否已經訓練過。
(2)讓算法變得和過去訓練過的算法更不一樣。
AutoML-Zero設計的空算法程序包括三個部分:框架初始化(Setup)、預測器(Predict)、學習器(Learn)。除此之外,還有一個算法評價(Evaluate)程序,將任務數據集分為訓練集和驗證集,使用框架初始化、預測器和學習器,在訓練集上對算法進行訓練,在驗證集上計算算法的精度。算法中這三部分的作用如下。
(1)框架初始化:定義算法中的變量,并且對變量的值進行初始化。
(2)預測器:根據算法中變量的值,輸出算法的預測結果。
(3)學習器:最小化損失函數,對算法中變量的值進行優化,訓練算法。
可以看到,任何機器學習模型都可以用包括這樣三部分的程序來表示,使用這樣的算法表示方法來進行演化是合理的。演化過程是由簡到繁的,每次演化通過添加命令行的方式增加程序的復雜程度。由于AutoML-Zero考慮的超參數選項較多,可供添加的命令行選擇也很多。
AutoML-Zero中的算法變異方法有以下這些:
(1)在函數程序中隨機插入或者刪除命令行。
(2)將函數程序中的命令行全部隨機重排序。
(3)將函數程序中某一個設定的選項更換成其他選項。
AutoML-Zero中的演化方法有以下步驟:
(1)使用P個空算法,開始進行由簡到繁的演化。
(2)從P個算法中隨機抽取T個算法,在這T個算法中找到表現最好的那個作為父算法(Parent)。
(3)在父算法的基礎上進行算法變異,生成子算法(Child)。
(4)在記憶模塊中將最舊的算法刪除,將新生成的子算法記錄下來。
通過這樣的方式,AutoML-Zero實現了靈活多變的模型設置,給出了從空模型到最優模型的演化方法。接下來通過一個簡單的例子給出漸進式自動化機器學習的全貌,讓讀者對元學習、遺傳演化算法、漸進式AutoML的結合方式有更加宏觀的了解。
圖3.15給出了簡化的漸進式自動化機器學習的示意圖,示意圖中包括以下步驟。

圖3.15 漸進式自動化機器學習示意圖
(1)為機器學習模型構建空模型、空模塊、空程序、空的卷積神經網絡結構、空的神經網絡結構等。在演化時,在空模型上添加模型,在空模塊上添加模塊,在空程序中添加命令行,在空的卷積神經網絡結構中添加卷積層和池化層等,在空的神經網絡結構中添加神經元、網絡層、連接等。在這些添加行動中,有許多選項,使用元學習器來預測這些可選行動中會帶來模型最好表現的選項,并且探索相應的添加行動,可獲得當下最優的機器學習模型。
(2)接下來,對當下最優的機器學習模型進行變異,生成子模型。讓子模型繼續演化,在子模型的基礎上繼續選擇添加模型、模塊、命令行、卷積層和池化層、神經元、網絡層和連接等行動。元學習框架又會對添加行動后的模型表現進行預測,推薦會給模型帶來最好表現的選項,形成新的最優機器學習模型,接著對當下最優的機器學習模型進行變異。
(3)如此周而復始,不斷地在模型中添加元素,模型從簡單變得復雜,直到模型表現趨于穩定,得到最終的模型,以此作為漸進式自動化機器學習尋找到的最優模型。
漸進式自動化機器學習有以下優勢:
(1)在超參數組合極多的情況下,機器學習模型的自由度很大,可以選用的機器學習模型非常多,但是其中有用的、效果最好的機器學習模型很少,在整個搜索域內,有用有效的解非常稀疏。此時,使用隨機搜索在探索超參數組合上會浪費很多時間,不能有效地靠近最優解。在這種情況下,使用遺傳演化算法從簡到繁來搜索最優算法,能高效地找到最優解,在最優解的基礎上找到更優解,逐漸靠近全局最優解。
(2)在演化過程得到的模型能被有效地改進和更新,元學習框架在演化過程中積累經驗,對添加行動中的選項進行預判,推薦帶來模型表現最好增益的添加選項,加速演化過程,讓演化變得更有效率。
(3)對當下最優機器學習模型進行變異能有效地生成子模型,避免陷入局部最優解。在子模型的基礎上繼續進行由簡到繁的演化,讓模型變得更加復雜,這里的子模型和當下最優機器學習模型之間的復雜度是相同的。
對漸進式自動化機器學習有以下探討:
(1)遺傳演化算法從空模型開始演化,讓模型從簡到繁,在解稀疏的空間中尋找解,會花費大量的時間和計算量,但這樣計算得到的模型效果很好,可以避免局部最優,靠近全局最優。由于計算量很大,對于復雜的任務,數據集極其巨大,需要的最優模型復雜度非常高,那么從空模型到達最優模型需要的時間就更多,且每次對最優模型進行變異生成子模型時,子模型也會變得非常多。可以考慮進一步使用元學習框架,避免每次都從空模型開始演化,而是從元學習框架建議的初始模型開始演化。
(2)漸進式模型需要回頭看。添加每一步行動后,模型的表現變得更好,但是新添加的行動可能會讓過去添加的行動變得不必要,需要回頭看。對很多步的添加組合起來檢查,在舍棄過去添加過的元素組合并沒有使模型表現變差時,需要及時舍棄,讓模型變得簡化一些。