AutoML研究綜述:讓AI學習設計AI

機器之心發表於2019-05-08

自動機器學習(AutoML)是近年來的一個熱門研究方向,比如機器之心曾報導過的谷歌的基於進化演算法的神經網路架構搜尋方法。近日,來自德國 USU Software AG 和斯圖加特大學的兩位研究者釋出了一篇 AutoML 綜述論文,總結了近年來 AutoML 方面的新進展。機器之心整理編譯了文章的主體結構,並重點翻譯介紹了各種方法的基本思想和未來研究方向,數學描述和實驗評估等細節請參閱原論文。

順便一提,這篇論文著重於經典機器學習,對神經網路著墨不多,對神經架構搜尋感興趣的讀者請參閱機器之心的專欄文章《神經網路架構搜尋(NAS)綜述(附 AutoML 資料推薦)》

AutoML研究綜述:讓AI學習設計AI

論文地址:https://arxiv.org/abs/1904.12054

機器學習已經成為我們日常生活中很多方面的重要組成部分。但是,構建表現優良的機器學習應用需要非常專業的資料科學家和領域專家。自動機器學習(AutoML)的目標是讓領域專家即使沒有統計學和機器學習方面的廣泛知識也能自動構建機器學習應用,從而減少對資料科學家的需求。這篇綜述論文總結了學術界和產業界的 AutoML 方面的近期進展。論文首先將對 AutoML 問題進行整體的闡述,然後會介紹用於解決 AutoML 的各種子問題的方法,最後還會呈現這些方法在合成資料和現實資料上的實驗評估結果。

1 引言

機器學習(ML)近年來的重要性與日俱增:自動語音識別、自動駕駛汽車和「工業 4.0」的預測性維護都基於機器學習。現在的機器學習已經能夠在曾被認為對計算機而言過於複雜的任務上擊敗人類,比如 AlphaGo(Silver et al., 2017)在圍棋上擊敗了人類冠軍。這些案例都是由非常專用和複雜的機器學習流程(ML pipeline)驅動的。

為了構建這樣一個機器學習流程,必需一支訓練有素的人類專家團隊:有機器學習演算法和統計學方面淵博知識的資料科學家;往往有特定領域的長期經驗的領域專家。這些人類專家需要一起合作,才能構建起合理的機器學習流程,其中包含專門的資料預處理、領域驅動的有意義的特徵工程和微調後的模型,這樣才能得到出色的預測能力。通常而言,這個過程是一個非常複雜的任務,以一種不斷試錯的迭代方式執行。也因此,構建優良的機器學習流程需要漫長的時間和高昂的成本。

根據「沒有免費的午餐定理(no free lunch theorem)」(Wolpert and Macready, 1997),單個優化演算法不可能在所有方面都優於其它所有優化演算法。這意味著對所有機器學習任務都普遍更優的機器學習流程是不存在的。因此,不可能將一個表現優良的機器學習流程遷移至新領域後還能表現出色。相反,為了得到最優的結果,必須為每個新資料集構建新的機器學習流程。但是,以人工方式為每個問題都構建一個專用機器學習流程非常耗時間,因此也有很高的成本。因此,實踐者往往會使用次優的預設機器學習流程。

AutoML 的目標是通過自動化來改進當今的機器學習應用構建方法。通過自動化超引數優化(HPO)等繁瑣的任務,AutoML 能助益機器學習專家實現更高的效率;也能讓領域專家可以無需依賴資料科學家,靠自己構建機器學習流程。

AutoML 其實並非一個新趨勢。這一趨勢從 1990 年代就開始了,那時已有商業解決方案通過網格搜尋為所選分類演算法提供自動 HPO(Dinsmore, 2016)。2004 年,第一個有效的 HPO 策略問世。對於有限的設定(比如調整某個支援向量機的 C 和 γ (Chen et al., 2004)),研究證明引導式搜尋策略能在更短的時間內得到比網格搜尋更好的結果。2004 年還發表了首個用於自動特徵選擇的方法(Samanta, 2004)。

全模型選擇(Escalante et al., 2009)是首次嘗試自動構建完整的機器學習流程,其做法是同時選擇一個預處理、特徵選擇和分類演算法,並調整每個方法的超引數。經過在多種資料集上的測試,這種與領域無關的方法的潛力得到了證明(Guyon et al., 2008)。

自 2011 年開始,研究者們提出了很多應用貝葉斯優化來進行超引數調節(Bergstra et al., 2011; Snoek et al., 2012)和模型選擇(Thornton et al., 2013)的不同方法。2015 年出現了首個無需領域知識進行自動特徵工程的方法(Kanter and Veeramachaneni, 2015)。

自 2016 年以來,構建任意形狀的流程已成為了可能(Olson and Moore, 2016)。2017 和 2018 年,隨著多個全球玩家釋出商用 AutoML 解決方案(Golovin et al., 2017; Clouder, 2018; Baidu, 2018),AutoML 主題在媒體上受到了很大的關注(Google, 2019)。

與此同時,AutoML 領域的研究得到了很大的推動,實現了很多效能提升。近期的方法能將 AutoML 流程的執行時間從數小時降低至幾分鐘(Hutter et al., 2018)。

這篇論文回顧和總結了涉及機器學習各方面自動化的研究:確定流程的形狀、為流程中的每個階段選擇一個機器學習演算法並調節每個演算法。此外,文中還分析了最流行的開源 AutoML 框架。這份調查關注的是經典的機器學習,而沒有考慮神經網路,儘管仍有很多思想可以遷移用於神經網路。對神經網路的全面概述,尤其是網路架構搜尋方面的概述,請參閱 Baker et al. (2016) 和 Zoph and Le (2017)。

本論文的貢獻如下:

  • 我們引入了一種數學形式描述,覆蓋自動機器學習流程建立的整個過程。

  • 就我們所知,這篇論文是第一篇覆蓋構建機器學習流程的每個步驟的 AutoML 技術的調查。

  • 我們在合成資料和現實資料上對所有給出的演算法執行了廣泛的實驗評估。這些實驗能在相同條件下為當前的前沿演算法提供公平的比較。

這樣做能讓讀者全面地瞭解當前前沿的 AutoML 演算法。本文將介紹自動構建機器學習流程的所有重要階段,並會評估已有的方法。這能揭示當前方法的侷限以及提出新的有待解決的問題。

第 2 節將給出自動構建機器學習流程的數學上堅實可靠的描述。第 3 節將呈現用於確定流程結構的不同策略。第 4 節將介紹用於機器學習模型選擇和 HPO 的多種方法,並會提供理論解釋。接下來,第 5 和 6 節將分別介紹用於自動資料清理特徵工程的方法。第 7 節將描述用於提升所生成的流程的效能以及降低優化執行時間的措施。第 8 節將簡要描述已有的 AutoML 實現和框架。第 9 節將在多個不同資料集上評估這些框架。最後,第 10 節會闡述未來的研究機會,第 11 節是一個簡短總結。

2 問題描述

機器學習流程是多種演算法的順序組合,這些演算法可將特徵向量轉換成目標值,即分類問題的類別標籤。我們可以不失一般性地將這些演算法分為三個集合:資料清理特徵工程和建模。

機器學習流程:流程的結構可被視為一個任意的有向無環圖(DAG),其中每個節點都表示一個資料處理、特徵工程或建模演算法,邊則表示輸入資料集在不同演算法間的流動。每個機器學習流程都可視為一個三元組,其中包含結構的 DAG、每個節點所選演算法的向量、每個所選演算法的超引數的向量。

流程效能:給定一個流程,可通過一個損失(loss)度量來計算流程的效能。

流程建立問題:給定一組演算法且它們有可參考的超引數域。流程建立問題是指選出一套能夠最小化損失的聯合演算法和超引數

3 流程結構建立

構建機器學習流程的首個任務是建立流程結構。這一主題也被稱為架構搜尋,已在設計神經網路方面備受關注,比如(Zoph and Le, 2017; Liu et al., 2017)。在經典的機器學習方面,這一主題針對自然語言處理等多種特定問題加以解決(Agerri et al., 2014)。讓人驚訝的是,還沒有人發表針對通用流程構建的文章。然而,常見的最佳實踐表明存在一種基本的機器學習流程佈局,如圖 2 所示(Kégl, 2017; Ayria, 2018; Zhou, 2018)。

首先,通過多個不同步驟清理輸入資料,比如插補缺失的資料和對類別輸入進行 one-hot 編碼。接下來,在特徵工程階段選擇相關特徵和建立新特徵。這個階段高度依賴於底層領域。最後,在之前選擇的特徵上訓練單個模型。

AutoML研究綜述:讓AI學習設計AI

圖 2:機器學習流程原型。首先清理資料,然後提取特徵,最後經過轉換的輸入通過一個機器學習模型以建立預測結果。

3.1 固定的形狀

很多 AutoML 框架並不解決結構選擇問題,因為它們被預設為了一種固定的流程形狀,如圖 3 所示,比如(Komer et al., 2014; Feurer et al., 2015a; Swearingen et al., 2017; Parry, 2019; McGushion, 2019)。這個流程很接近最佳實踐的流程,是一個線性序列:包含多個資料清理步驟、一個特徵選擇步驟、一個變數與處理步驟和剛好一個建模步驟。預處理步驟會從已知的眾多演算法中最多選擇一個演算法,比如各種矩陣分解演算法。在資料清理方面,流程形狀各有不同,但通常會實現插補和縮放兩個步驟。

AutoML研究綜述:讓AI學習設計AI

圖 3:大多數 AutoML 框架使用的固定機器學習流程。在實現資料清理步驟方面略有不同。

通過使用固定形狀的流程,就完全消除了確定圖結構的複雜性;流程建立問題就被簡化為了選擇預處理演算法和建模演算法的問題。儘管這種方式能極大簡化流程建立問題,但在複雜資料集上會得到較差的流程表現。但是,對於很多有高質量訓練資料的問題而言,簡單的流程結構可能就足夠了。

3.2 可變形狀 

為了獲得最好的結果,資料科學專家通常會為給定的機器學習任務構建高度專用的流程。固定形狀的機器學習流程缺乏適應特定任務的靈活性。現有的幾種自動構建靈活流程的方法全都基於同樣的原理思想:包含一組機器學習原語(即基本演算法)、一個克隆資料集的運算元和一個組合多個資料集的運算元(稱為資料集複製器和特徵聯合)。資料集複製器(data set duplicator)的作用是在流程中建立並行的路徑;並行路徑可以通過特徵聯合(feature union)加入。圖 4 展示了使用這三種運算元的一個流程。下面要介紹的多種方法都是通過結合這些原語來完成一個流程。

AutoML研究綜述:讓AI學習設計AI

圖 4:針對特定機器學習任務的專用機器學習流程

3.2.1 遺傳程式設計

自動構建靈活的機器學習流程的首個方法來自 Olson and Moore (2016)。Olson et al. (2016a) 基於遺傳程式設計(Banzhaf et al., 1997)。遺傳程式設計是一種迭代式的、與領域無關的優化方法,源自生物演化思想。給定一個問題的一組可能的解(稱為一個「種群(population)」,使用一個適應度函式(fitness function)來進行評估。基於每個個體的表現,它們特定比例的遺傳物質會被傳遞給下一代。表現差的個體會滅絕,而表現好的個體會產生後代。後代要麼通過兩個親代交配來建立,要麼通過單個親代突變來建立。這一流程重複固定數代,並且每代都有固定數量的個體;第一代通常是隨機生成的。最後,將表現最佳的個體用作最終解。圖 5 給出了這一流程的圖示。

AutoML研究綜述:讓AI學習設計AI

圖 5:遺傳程式設計過程圖示。初始種群是隨機建立的。整個種群會根據一個目標函式進行評估,然後選出一些表現最佳的個體。然後使用這些親代來生成一個新種群。

遺傳程式設計已經在自動程式程式碼生成方面被使用了很長時間(Poli et al., 2008)。但是,在流程結構選擇方面的應用近期才開始。首先,建立隨機的流程結構並在訓練資料集上進行評估。再選出表現最佳的流程以建立下一代。通過選擇流程的子圖可以將兩個個體結合起來組成一個新圖。通過向圖新增隨機節點、移除隨機選擇的節點或用新節點替換隨機選擇的節點,都可以實現突變。通過這種方式,可以生成任意形狀的流程。但是,在目標函式評估的數量方面,遺傳程式設計並不非常高效(Cooper and Hinde, 2003)。因為每次目標函式評估都有相對高的成本,所以這一方法需要相當長的優化週期。

3.2.2 分層規劃

分層任務網路(HTN)(Ghallab et al., 2004)是一種更直接的方法。HTN 是一種源自自動規劃的方法,會遞迴地將複雜問題劃分為更簡單的子問題。這些子問題會再次被分解,直到剩下基本的終端操作。這一流程可以表示為一個圖結構。每個節點表示一個(可能不完整的)流程;每條邊表示都一個將複雜步驟分解為子步驟的過程。當所有的複雜問題都被替換為機器學習原語時,就建立出了一個機器學習流程。使用這種抽象方法,尋找機器學習流程結構的問題就被簡化為了尋找圖中最佳葉節點的問題(Mohr et al., 2018)。

3.2.3 Self-Play

self-play(Lake et al., 2017)是一種強化學習策略,近來由於 AlphaZero(Silver et al., 2017)的成功而備受關注。這種演算法不是從固定的資料集中學習,而是通過自我對抗來建立新的訓練示例。流程結構搜尋也可被視為一場博弈(Drori et al., 2018):機器學習流程和訓練資料集是當前的盤面狀態 s;每一步玩家都可從三個動作 a 中選擇一個:新增、移除或替換流程中的單個元素。流程的損失被用作分數 ν(s)。

在一個迭代過程中,為了評估流程 s_i,使用一個神經網路來預測其分數 ν(s_i) 和在該狀態選擇某個動作的概率 P(s_i , a)。如果沒有訓練,這些預測基本都是隨機的。因此,這些預測會被傳遞給一個蒙特卡洛樹搜尋(Browne et al., 2012)。在這個樹中,每個節點表示一個流程結構,每條邊都是一個可能的動作。基於狀態和動作概率選擇一個節點。如果之前沒有訪問過該節點,則在資料集上評估據此得到的流程,並使用其表現來更新神經網路。有最低預測損失的節點被選作下一個狀態。這三個步驟不斷重複,直到耗盡訓練預算。self-play 方法的一個常見缺點是收斂速度慢(Brandt et al., 2010),這使得這一方法相當不適用於 AutoML。

4 演算法選擇和超引數優化

給定一個圖的形狀、一個損失函式、一個訓練集和一個驗證集。對於圖中的每個節點,都必須選擇一個演算法,並通過超引數配置它。這一節將介紹各種用於演算法選擇和配置的方法。

Thornton et al. (2013) 首先引入了一個之後被其他很多人採用的概念,即:組合式演算法選擇與超引數優化(CASH)問題。這一概念是指不先後分別執行演算法選擇和超引數優化,而是兩者同時執行。這一問題被構建為了一個黑盒優化問題,進而可得到相當類似於前述流程建立問題的最小化問題。

下面將介紹一些不同的優化策略。

4.1 網格搜尋 

網格搜尋是首個用於系統性探索配置空間的方法。顧名思義,網格搜尋會建立一個配置網格並評估所有配置。

4.2 隨機搜尋 

隨機搜尋(Anderson, 1953)也是一種著名方法,即通過為每個超引數獨立地隨機選擇值來生成候選配置。通過遍歷分層的依賴圖,可以隱式地處理條件超引數。這一過程重複 k 次。圖 7 描述了通過隨機選擇為兩個超引數選擇的配置。

AutoML研究綜述:讓AI學習設計AI

圖 7:用於最小化 Branin 函式(見 9.2 節)的不同搜尋策略的受測配置。網格搜尋測試的是均勻分佈在二維搜尋空間上的配置。隨機搜尋隨機選擇配置。引導式搜尋策略會利用表現良好區域的知識,會更多地測試接近區域性最小值的配置。

4.3 序列式基於模型的優化 

CASH 問題可被視為一個迴歸問題:可基於被測試的超引數配置使用標準的迴歸方法近似損失函式。這一概念可通過演算法 1 給出的序列式基於模型的優化(SMBO)(Bergstra et al., 2011; Hutter et al., 2011; Bergstra et al., 2013)體現。

AutoML研究綜述:讓AI學習設計AI

演算法 1:序列式基於模型的優化

AutoML研究綜述:讓AI學習設計AI

圖 8:SMBO 過程示意圖。一組配置和分數元組會在初始化過程中建立。這些樣本可用於建立目標函式的迴歸模型。接下來,選擇一個新的配置並通過目標函式評估它。最後,將新元組加入到樣本集中。

4.4 進化演算法

SMBO 的一種替代方法是進化演算法(Coello et al., 2007)。進化演算法是多種受生物進化啟發的基於種群的優化演算法的集合。進化演算法的所有例項都遵循圖 5 給出的同樣的抽象過程。首先,隨機建立一個初始的種群。然後,使用一個目標函式評估當前一代中每個個體的表現,並選出表現最佳的個體。再基於這些親代建立新一代。這三個步驟不斷重複直到結束。

一般而言,進化演算法適用於各種各樣的優化問題,因為它不需要關於目標函式的假設。由於新一代的建立或多或少是隨機的和未加引導的,所以相比於貝葉斯優化,進化演算法在目標函式評估數量方面並不非常高效。但是,因為一代中的所有個體都是彼此獨立地評估的,所以這一方法尤其適合在叢集中分散計算負載。

產生新一代的方法取決於特定的演算法例項。下面是兩種常見的演算法例項。

4.4.1 遺傳程式設計

4.4.2 粒子群優化

4.5 多臂賭博機學習

「利用與探索」問題方面一個得到了廣泛研究的模型是多臂賭博機問題(Robbins, 1952)。一個賭博者能夠使用 K 臺不同的老虎機,且每臺機器都基於一個未知的分佈提供獎勵。這位賭博者可以操作任意他想使用的機器固定次數。為了最大化他的獎勵,這位賭博者必須儘快找到有最高獎勵概率的老虎機,並一直使用它。

4.6 梯度下降

梯度下降(Bottou, 2010)是一種非常強大的優化方法,是一種迭代式的最小化演算法。該演算法從一個隨機點開始,沿最大梯度的相反方向移動以選擇下一個點。這樣,就會創造一個向區域性最小值收斂的單調序列。如果目標函式是凸函式,則這個區域性最小值即是全域性最小值。

5 自動資料清理

資料清理是構建機器學習流程的一個重要方面。資料清理的目標是通過移除資料錯誤來提升資料集的質量。常見的錯誤類別是輸入資料缺失值、無效值或多個資料集的項之間缺乏聯絡(Rahm and Do, 2000)。

6 自動特徵工程

特徵工程是指根據給定的資料集為後續的建模步驟生成和選擇特徵的過程。這個步驟對完整的機器學習流程而言至關重要,因為整體的模型表現非常依賴於可用的特徵。通過構建優良的特徵,機器學習流程的表現可以增加很多倍(Pyle, 1999)。但是,有太多無關特徵會增加訓練時間(維度災難),還可能導致過擬合特徵工程任務非常特定於領域,而且非常難以泛化。即使對於資料科學家,也很難了解一個特徵的影響,因為領域知識是必需的。由此導致的後果是,特徵工程主要是由試錯驅動的人工的且耗時的任務。

7 效能提升 

這一節將介紹不同的效能提升。這些提升覆蓋多種技術,有加速優化流程的技術,也有提升所生成的機器學習流程的整體效能的技術。

7.1 多保真近似

7.2 早停

7.3 可擴充套件性

7.4 整合學習

7.5 元學習

8 已有框架

這一節將介紹最流行的開源 AutoML 框架。首先會給出 CASH 演算法的實現和分析,接下來會討論用於建立完整機器學習流程的框架。

8.1 CASH 演算法

AutoML研究綜述:讓AI學習設計AI

表 1:不同 CASH 演算法的比較。報告了使用過的求解器,並且涉及是否考慮了搜尋空間的結構(Λ)、是否實現了並行化以及是否存在單次估計的超時。

8.2 AutoML 框架

AutoML研究綜述:讓AI學習設計AI

表 2:不同 AutoML 框架的比較。報告了使用過的 CASH 求解器和流程結構。此外,還列出了是否是整合學習(Ensem.)、元學習(Meta)、流程的並行評估或是否支援單次評估的超時。

9 實驗

這一節提供了不同 CASH 演算法和流程構建演算法的實驗評估。下面展示了部分結果,更多結果請參閱原論文。

AutoML研究綜述:讓AI學習設計AI

表 5:所有被測 CASH 求解器在 OpenML100 基準套件上的結果。本表格給出了平均誤分類率、執行時間(小時)和每個 CASH 演算法的失敗評估的百分比。

AutoML研究綜述:讓AI學習設計AI

表 6:幾種 AutoML 框架在所選的 OpenML 資料集上的誤分類百分率。標註有 * 的資料集的平均誤分類率大於 30%。標註有 – 的項始終不能生成一個機器學習流程。

10 討論和未來研究機會

目前而言,AutoML 完全聚焦於監督學習。儘管某些方法可能也適用於無監督學習強化學習,但研究者總是會針對監督學習測試他們提出的方法。此外,所有已有的高階 AutoML 框架都只支援分類和迴歸任務。針對無監督學習強化學習的專門研究可以助力 AutoML 框架的發展,進而解決當前還未顯露的學習問題。此外,專門的方法也能提升這些任務的效能表現。

當前的大多數文獻在處理 CASH 問題時,要麼通過引入新的求解器,要麼是提升已有方法的表現。可能的解釋是 CASH 完全與領域無關,因此相對而言更容易自動化。但是,CASH 僅僅是自動構建機器學習流程方面的一小部分。資料科學家通常會把 60–80% 的時間用在清理資料集和特徵工程上(Pyle, 1999),用於微調演算法的時間只有 4%(Press, 2016)。這樣的分佈卻與當前的研究努力不匹配。我們沒能找到任何覆蓋先進資料清理方法的文獻。在特徵建立方面,所有的方法都基於深度特徵合成。在構建靈活的流程方面,目前被提出的不同方法僅有三種。這三個領域中任意方向的進一步研究都有望高度提升自動建立的機器學習流程的整體表現。

目前而言,研究者關注的都是流程建立過程中的單個點。如果將動態形狀的流程與自動特徵工程和複雜精細的 CASH 方法相結合,有望超越當前已有的框架。但是,研究空間的複雜度也會提升到一個全新層面,這可能需要實現高效搜尋的新方法。儘管如此,長期目標應該是自動構建完整流程,且其中每個單個元件都是經過優化的。

AutoML 的目標是完全自動化機器學習流程的建立,以讓領域專家能使用機器學習。除了少數一些文獻(如 Friedman and Markovitch, 2015; Smith et al., 2017),當前的 AutoML 演算法都是以黑箱形式設計的。儘管這對經驗不足的使用者而言很方便,但這種方法也有兩個重大缺陷:

  • 領域專家有關於資料集的深度知識。使用這些知識,搜尋空間可以大幅縮減。

  • 近些年來,機器學習的可解釋性日益重要(Doshi-Velez and Kim, 2017)。使用者想要能夠理解獲得模型的方式。使用人工設計的機器學習模型,模型的推理方式往往已經對使用者而言未知了。通過自動化建立模型,使用者基本上將沒有機會理解選擇特定流程的原因。

人類引導式機器學習(Langevin et al., 2018; Gil et al., 2019)的目標是向領域專家提出簡單的問題以引導對搜尋空間的探索。領域專家可以通過自己的經驗引導模型建立。這一領域的進一步研究有望得到更深刻的模型,從而更接近真實地刻畫現實世界的依賴關係。同時,領域專家可能有機會更好地理解機器學習模型的推理。這能促進對所提出的流程的接納認可。

AutoML 框架通常有可被使用者調節的超引數。但是,這基本上正是 AutoML 一開始就試圖解決的同一問題。研究自動設計超引數更少的框架是可行的(Feurer and Hutter, 2018)。

11 總結

自 1990 年代以來,AutoML 主題已行過千里之路。但是,自動生成的流程還不能超越人類專家水平(Guyon et al., 2016)。AutoML 很可能將繼續作為一個熱門研究主題,並在不遠的將來創造更好的整體 AutoML 框架。

相關文章