尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
機器之心原創
作者:邱陸陸
從回歸分析的出現到深度學習的蓬勃發展,這條算法的進化路線與其說是「機器替代人」,不如說是「機器幫助人類完成我們不擅長的事」。這份「不擅長」列表里有「不擅長從大量數據中尋找規律」、「不擅長同時完成大量變量的優化」、「不擅長從高維數據中提取特徵」。在今天,又有一批研究者在反省人類是否也「不擅長進行模型設計與模型調優」,以及機器如何能提供幫助。近兩年,以Google為代表的公司再次將這一類問題以 AutoML 之名推向眾人視野之中,試圖探討這一技術能否讓更多行業專家能夠跨越工程與算法的障礙,僅僅利用專業知識和數據積累,就能在機器的幫助下完成深度學習算法的開發。
在國內,探智立方就是持有這樣願景的一家公司,這家成立於今年年初的公司致力於開發一個有「自主模型設計」能力的平台——DarwinML——以進化算法為基礎,找到模型不依賴人工設計的「進化之路」,從而降低人工智能的應用門檻,讓各行業的 IT 人員,行業專家能更簡便的將人工智能落地於各種適合併需要的場景中,解決人才短缺及技術能力不足的普遍問題。
七月,機器之心採訪了探智立方的兩位創始人,CTO 錢廣銳和產品總監宋煜,深入了解這個走向實際應用的 AutoML 系統。
機器之心:探智立方希望以 AutoML 解決哪些問題?
宋煜:AutoML 並不是一個全新的概念,這兩年它獲得了廣泛的關注,是因為大家看到數據集本身的分布和模型的關係是十分密切的。把一個論文中效果非常好的模型應用到某一個特殊場景下,模型的表現下降也會十分嚴重。兩三年前,大家更多地會以「超參數調優」的形式進行模型改進。從基於規則的方法到貝葉斯方法,為了找到一個合理的、趨近於最優解的解空間,大家做了各種不同的嘗試;有很多超參調優的自動化工具隨之應運而生。之後大家發現除了超參之外,有時必須要改變網路結構等等。最後,大家開始思考:機器是不是可以設計一些模型。
之前我們在做模型的優化的時候也感受到,最有限的資源還是人的時間。因此,從去年開始我們嘗試把模型優化的過程盡量抽象成一個純數學問題,然後利用機器的強大計算力,以搜尋擬合的方式,在有限的時間空間內來尋找全局最優解。探智立方今天就是以 AutoML 為主要方向,解決實際環境中人工智能相關應用模型自動化設計和優化的問題。
機器之心:AutoML 都有哪些類別?探智立方選擇的是其中的哪一種?
錢廣銳:在業界,從「頭」學習的 AutoML 算法大概有三種。除了進化算法之外,還有最早以Google為代表的純強化學習算法。目前從論文以及實踐效果來看,進化算法的效率比強化學習要高些。除此之外,還有目前也在探索中的元學習方法。
進化算法本身也有很多分支,比如「進化策略」和「演化方法」。Google採用的是演化做法,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 大賽就是一個十分有趣的例子。那一屆的優勝模型其實並非一個擁有新結構的模型,而是海康威視利用大量計算力完成了一次精調。這證明了在參數調整方面,給定一年的時間限制,機器的能力已經勝過了人。而在超參數調節,乃至模型結構設計方面,道理也是相通的,我們堅信這都是機器可以幫助人完成,甚至比人做得更好的工作。
本文為機器之心原創,轉載請聯繫原作者獲得授權。