從迴歸分析的出現到深度學習的蓬勃發展,這條演算法的進化路線與其說是「機器替代人」,不如說是「機器幫助人類完成我們不擅長的事」。這份「不擅長」列表裡有「不擅長從大量資料中尋找規律」、「不擅長同時完成大量變數的最佳化」、「不擅長從高維資料中提取特徵」。在今天,又有一批研究者在反省人類是否也「不擅長進行模型設計與模型調優」,以及機器如何能提供幫助。近兩年,以谷歌為代表的公司再次將這一類問題以 AutoML 之名推向眾人視野之中,試圖探討這一技術能否讓更多行業專家能夠跨越工程與演算法的障礙,僅僅利用專業知識和資料積累,就能在機器的幫助下完成深度學習演算法的開發。
在國內,探智立方就是持有這樣願景的一家公司,這家成立於今年年初的公司致力於開發一個有「自主模型設計」能力的平臺——DarwinML——以進化演算法為基礎,找到模型不依賴人工設計的「進化之路」,從而降低人工智慧的應用門檻,讓各行業的 IT 人員,行業專家能更簡便的將人工智慧落地於各種適合並需要的場景中,解決人才短缺及技術能力不足的普遍問題。
七月,機器之心採訪了探智立方的兩位創始人,CTO 錢廣銳和產品總監宋煜,深入瞭解這個走向實際應用的 AutoML 系統。
機器之心:探智立方希望以 AutoML 解決哪些問題?
宋煜:AutoML 並不是一個全新的概念,這兩年它獲得了廣泛的關注,是因為大家看到資料集本身的分佈和模型的關係是十分密切的。把一個論文中效果非常好的模型應用到某一個特殊場景下,模型的表現下降也會十分嚴重。兩三年前,大家更多地會以「超引數調優」的形式進行模型改進。從基於規則的方法到貝葉斯方法,為了找到一個合理的、趨近於最優解的解空間,大家做了各種不同的嘗試;有很多超參調優的自動化工具隨之應運而生。之後大家發現除了超參之外,有時必須要改變網路結構等等。最後,大家開始思考:機器是不是可以設計一些模型。
之前我們在做模型的最佳化的時候也感受到,最有限的資源還是人的時間。因此,從去年開始我們嘗試把模型最佳化的過程儘量抽象成一個純數學問題,然後利用機器的強大計算力,以搜尋擬合的方式,在有限的時間空間內來尋找全域性最優解。探智立方今天就是以 AutoML 為主要方向,解決實際環境中人工智慧相關應用模型自動化設計和最佳化的問題。
機器之心:AutoML 都有哪些類別?探智立方選擇的是其中的哪一種?
錢廣銳:在業界,從「頭」學習的 AutoML 演算法大概有三種。除了進化演算法之外,還有最早以谷歌為代表的純強化學習演算法。目前從論文以及實踐效果來看,進化演算法的效率比強化學習要高些。除此之外,還有目前也在探索中的元學習方法。
進化演算法本身也有很多分支,比如「進化策略」和「演化方法」。谷歌採用的是演化做法,OpenAI 用的是「進化策略」演算法。探智立方的「DarwinML 平臺」是一個基於「演化」演算法型別的 AutoML 系統。
當然,如果是不要求從「頭」學習的 AutoML 方法,也有預設一個模型庫,從中選擇相應的模型進行最佳化或者遷移的做法。
機器之心:探智立方在 AutoML 中重點關注哪方面的工作?
宋煜:我們和其他偏學術的機構不一樣的地方是我們希望從 AutoML 的角度提供模型可解釋性。
如今的可解釋性研究更多是讓研究者去將中間的特徵提取層權重或啟用進行輸出,研究每一層的影響是什麼,再把自己的觀察傳達給機器。但是人的時間是有限的,我們希望由機器自己完成這個過程。
我們希望機器自己總結「特徵提取」究竟提取了什麼。找到為什麼一個特定的提取方法和損失函式計算組合作用在特定的資料分佈上的時候,能讓梯度下降更快,損失更小,然後將這些知識解釋成機器可以理解的資料化的表達方式反饋回系統,變成屬性,為下一次設計提供指導性意見,提高設計效率。
換言之,我們也在實踐進行模型設計的「大腦」可不可以越來越聰明,能不能在為相似的問題或者資料型別設計模型的時候,迅速地將設計時間從「四天達到 80% 準確率」縮短為一天甚至幾小時之內達到同等準確率?能否讓最初幾代模型不用走太多彎路就能夠進入一個和最優解非常相近的解空間裡。
錢廣銳:如今的學界對 AutoML 的研究大多集中在方法論本身,而我們更多關注如何能夠讓 AutoML 技術使用者實際的資料結合,在專案中落地。
我們開發了「DarwinML 平臺」,在幫助大量的使用者學習了自己的資料、訓練自己的模型的過程中,也讓平臺越來越聰明,能夠更高效地幫使用者實際解決問題。
機器之心:DarwinML 平臺的目標使用者群是誰?完成一個任務需要使用者完成哪些工作?平臺完成哪些工作?
宋煜:DarwinML 平臺是一個全生命週期管理平臺,這個平臺的最終目標,是成為一個自動模型開發平臺,讓業務人員,或者說不是專門從事 AI 研究的人,也能夠設計一個符合業務目標的模型出來。
使用者要做的就是準備資料,以及進行一些算力和期望效果的選擇:使用算力的上限、模型精度要求、最長訓練時間等。對演算法有了解和模型設計有經驗的使用者,也可以就模型設計過程中的引數,比如進化演算法的最大演化代數、模型最大的期望深度進行設定,甚至可以動態剔除的模型設計中不需要的「基因」、調節不同變化操作方式的進化運算元的比例等。
餘下的資料清洗、模型設計、訓練、調優、評估、推理,都在平臺上自動完成演化。
機器之心:能否描述一下平臺完成一個任務的過程?
宋煜:首先,「DarwinML 平臺」會提取資料的統計資訊,根據統計資訊設定一個演化的初始條件,包括模型的種群的個數、演化迭代的最大代數,分散式計算資源的分配情況,加上使用者設定的算力限制等。
然後平臺開始自動進行模型設計。在進化到每一代時,都會對模型進行一次評估,以選擇繼續演化的方向,同時防止種群,也就是所有模型的整體早熟(避免重複使用前期效果比較好的相同或者相近的模型,儘量讓選擇在解空間裡分散化)。
當演化到達客戶的準確率或者時間限制要求後,DarwinML 平臺會再固定模型結構進行一次引數精調,同時進行超引數的區域性最佳化。
最後,在整個過程結束後,以報告的形式將模型的特徵、硬體配置、各項表現指標返回給使用者。
機器之心:模型的基本組成模組是什麼?
錢廣銳:我們的平臺叫「DarwinML」的原因就是在於其核心演算法是進化演算法。進化演算法的實現基本思想就跟模擬自然界生物進化過程一樣。
如同動物從單細胞動物開始,進行繁殖時透過 DNA 的交叉變異生成新的個體,我們的模型設計也從第一代的模型種群的初始化開始,保持著種群的大小基本不變,透過逐代演化生成更好的模型。
針對機器學習和深度學習,平臺有著相同的演化核心演算法,但分別面向機器學習和深度學習的基本構成單元(我們稱之為「基因」)有所不同。因此,基因是「DarwinML 平臺」設計模型過程中最基本的組成模組。
機器學習的模型「基因」包括一些聚類、Imputer 等資料預處理操作,以及迴歸、分類等任務相關的四十多個機器學習基本操作,一百二十多個變種。深度學習的「基因」庫則更加龐大和複雜,它包括不同的深度學習神經元基因,比如卷積模組、 LSTM 模組、池化、全連線層等等;而當一些「基因」組合在一起的形成效能優異的更「大」的模組時,也會被固定下來,成為一個新的「基因」。這個擁有超過一百二十個初始化的深度學習基因庫,再加上不斷演化出現的更復雜的「大」基因庫,可以實現設讓機器學習、深度學習模型的結構可變性儘可能多、模組儘可能細,讓我們能夠得以探索一些超出人類想象的領域,發現一些與人類已知經驗不同的模型結構。
機器之心:模型的初始生成的過程是什麼?
錢廣銳:初代種群中的模型有兩種來源,一種是 DarwinML 平臺根據資料分佈情況,從「基因」中隨機選擇,自動生成一些模型,另外我們也支援從使用者自己提供的一些「優秀」的初始模型開始演化。
其中模型的初始化生成過程裡包含一系列類似「丟骰子」的初始化操作,根據預定義深度、總體神經元的個數隨機生成一系列模型的。當然,DarwinML 平臺會也從以前訓練模型的經驗裡面進行學習,結合使用者輸入的引數,把初始化問題從一個簡單的丟骰子情形變成一個根據資料的特徵調整生成分佈的問題。例如,系統會根據以往的經驗判定,20 層以內的模型可能就可以取得很好的效果;或者,為了考量模型的效能,需要兼顧部署時的低延遲時,如何設計一個不超過 50 個神經元模型。
機器之心:能否描述一下模型的進化過程?
錢廣銳:DarwinML平臺會把第一代隨機生成的模型進行訓練、評估,然後進行效能排序。再根據進化演算法的「優勝劣汰」法則,選擇每一個基因能夠「遺傳」下去的機率:最好的個體理論上會有最大的可能性產生新的子代,來保證產生的個體的質量越來越高。
從一代模型中產生下一代新模型的方法有幾種:
一是變異(mutation)操作,將一代模型中的少數幾個「基因」替換掉。或者將模型中的一層整體刪掉或者整體複製一次。二是交叉(crossover 或 heredity)操作,例如將兩個一代模型分為三部分,把模型 A 的中間部分去掉,用模型 B 的中間部分替換。三是為了保證多樣性,繼續隨機操作(random)生成一些,採用和第一代相同的辦法隨機生成新模型。
同時,DarwinML 平臺還引入了基於貝葉斯的、基於蒙特卡洛樹搜尋(MCTS)和基於強化學習的三種方法來指導遺傳演算法進行搜尋。貝葉斯方法用於計算下一代模型效力變好的機率分佈,MCTS 提供依據樹搜尋產生的結果來設計可能存在的合理模型,而強化學習則不完全侷限於模型變化本身,而是根據特定進化過程後、模型的得分、其他的輸入資訊更新 Q-table,指導生成更合理的模型和演化方向。
進化一代的時間由資料量和算力決定,一個 CIFAR 資料規模大小的深度學習模型 4 個 GPU 上進化一代大約需要 10-20 分鐘。一個 400 萬條資料的機器學習模型,在 100 個 CPU 核上進化一代大約需要 5-6 小時。
進化代數方面,機器學習模型一般一代在 15-20 個模型左右,不會超過 20 代。深度學習模型通常在 30-40 代,甚至更多。一般,模型越複雜,模型種群數量和進化代數就需要更多。
機器之心:能否以視覺化的形式展示 DarwinML 平臺的進化過程?
宋煜:上圖是一個基於 CIFAR-10 資料集的演化過程模型關係圖。每個圓圈代表一個模型,圓圈大小代表模型效能,越大代表效能越好;圓圈距離中心的位置代表了模型演進的代數,越靠外的模型是越晚生成的;紅色代表模型是由 Random 操作生成的,藍色代表由 Heredity 操作生成,綠色表示由 Mutation 操作生成。透過這個圖,我們可以可以看到,演算法非常高效、方向性非常強地向更優方向演進。同時,在圖的左下角,我們可以發現,後面的幾代模型效能都比較穩定,而且大多都是來自於同一個父母。在一些複雜的資料中,更加複雜的模型「家族圖譜」會清晰地告訴我們模型演化的過程,結合模型的特徵,可以更好的研究哪些「優秀」的模組(結構)被一代一代的遺傳下去,為模型的可解釋性提供資料支援。(下圖)
宋煜:如下兩張圖是基於同一個風險分析資料,由 DarwinML 平臺自動演化設計出來的兩個模型計算圖。第一個模型 pop3 是第三代裡面最好的,第二個模型 pop8 是第八代裡面最好的。
pop3 的模型達到了 98% 的準確率,而 pop8 達到了 99% 的準確率。但是相比較而言,pop3 的網路結構複雜的多。這是一個在演化過程中,透過加入懲罰項引導演化過程的例子。即使損失函式或者準確率相近,簡單的模型和複雜的模型最後的評分差距也會比較大。懲罰項的引入讓系統能夠設計更高效的網路而不是更復雜的網路。
另外,這是一個分類任務,但是機器在設計模型的過程中加入了迴歸演算法。機器並沒有因為最終的目標是分類而限制基因的種類,而是在更廣闊的範圍內尋找最優解。在這裡,機器認為用迴歸方法提取特徵再交給分類器的效果更好。
對於 Pop8 還有一個有意思的現象是,資料預處理手段「分位轉化」(Quantile Transformer)被應用在了分類器和 SVC 演算法之前,但是沒有用在 K 臨近演算法之前。這並不是一個人工設定的規則,而是機器透過大量訓練後總結出來的規則。
以人類工程師的視角觀察,我們知道將連續的變數轉為離散對於分類器和 SVC 演算法是有好處的,特別是在資料維度高、分佈分散的情況下,是很好地避免過溢位的手段。但是 K 臨近演算法的核心是計算距離,因此對資料進行分位轉化反而會引入不必要的噪聲,導致資料分佈變形。
這個是我們事後對模型的分析,而這個模型本身是在演化過程中完全由機器設計出來的,而沒有人為預設的資訊或者結構存在。
機器之心:DarwinML 系統平臺是否有側重的行業?
宋煜:我們希望平臺能為各種行業服務,所以我們的應用案例也是跨行業的:我們在金融領域裡做風控相關模型、在保險領域裡做影像識別模型、在醫療領域裡做醫療電子檔案和專業術語的語音識別、在製造業進行質檢和良品率分析。
DarwinML 平臺的目標就是不限行業,全面降低 AI 的技術門檻。任何一個行業,只要有充足的資料,業務人員,而非演算法專家,就可以讓業務「AI 落地」。我們希望基於 *DarwinML *建立一個完整的人工智慧生態圈*,*包括企業客戶服務團隊,共享雲平臺及開發者社群,從各個維度滿足企業級客戶對人工智慧的期望與需求。
機器之心:為什麼選擇以 AutoML 角度切入來創業?
錢廣銳:我在博士階段的研究工作是和進化演算法和高效能運算密切相關,當時的主要工作是使用大規模計算的方法在人類完全未知的高溫高壓的材料領域材料設計進行探索,我們當時採用了進化演算法結合第一性原理計算,開發了至今仍然是世界領先的材料結構預測軟體包。在 IBM 階段,宋煜和我一起設計了一個面向企業級使用者的人工智慧的平臺產品。
宋煜:我的早期背景是高效能運算和底層資料庫,後來則設計了能夠支援 Torch、Caffe、TensorFlow 等主要深度學習框架的上層建模平臺。在過程中,我們發現模型的設計是最麻煩的地方。在當時,我們使用了許多超參調優的方法,試圖在有限的計算力下在短期內找到一個比較好的模型,但是模型設計還是很麻煩。
我們認為,在 AI 領域,有兩個方向是值得投入大量人力精力去做的:一是損失函式本身的設計,二是如何在特定的應用領域裡使用 AI 模型。除此之外,模型設計和模型調優是耗時又沒有太大意義的工作。雖然這是今天資料科學家和演算法科學家的主要工作內容,但是久而久之,我們發現模型的相似性很大,而一旦我們把它概括為一個可微、可求導的數學問題,那麼機器的「設計」、「尋找最優」的速度甚至不亞於人。
最後一屆 ImageNet 大賽就是一個十分有趣的例子。那一屆的優勝模型其實並非一個擁有新結構的模型,而是海康威視利用大量計算力完成了一次精調。這證明了在引數調整方面,給定一年的時間限制,機器的能力已經勝過了人。而在超引數調節,乃至模型結構設計方面,道理也是相通的,我們堅信這都是機器可以幫助人完成,甚至比人做得更好的工作。