CVPR 2020 Tutorial:自動化深度學習,你還在手動調參嗎?

CVer發表於2020-06-16

本文者:張航

https://zhuanlan.zhihu.com/p/148168883

Tutorial 網站:https://hangzhang.org/CVPR2020/

計算機視覺領域需要 AutoML 嗎?

自 AlexNet 以來,計算機視覺領域的科研的重心由 feature engineering,轉化為 network engineering,各種網路結構層出不窮。然而隨著網路設計選擇空間的擴大,手動尋找最優的結構設計變得越發困難,系統地對網路結構進行搜尋成為神經網路設計的必然發展方向。其實不僅僅是網路結構,最近自動資料增強等方向的發展也證明了超參最佳化是計算機視覺領域取得 SoTA 的必備手段。

人腦通常擅長思考模組化的東西,但是對於高維度的搜尋空間,人們傾向於 grid search,實際上這種做法在超參最佳化上是非常低效的。如何更加有效地利用科學地搜尋演算法,以及高效的工具能夠讓你在新一輪的角逐中領先一步。

CVPR 2020 Tutorial:自動化深度學習,你還在手動調參嗎?

CVPR Tutorial 主要內容

為了能夠為大家比較系統地瞭解 AutoML,神經網路結構搜尋,超參最佳化等領域,我和來自麻省理工的韓松教授,還有亞馬遜的 Dr. Cedric Archambeau 和 Dr. Matthias Seeger 等學者一起舉辦了 “From HPO to NAS: Automated Deep Learning” Tutorial,主要內容包括:

  1. AutoML 背景知識和概述 (Cedric Archambeau, Amazon)

  2. 介紹 AutoGluon 工具箱 (張航, Amazon)

  3. 神經網路搜尋的前沿 OFA Network (韓松, MIT)

  4. 動手學習部分 (@吳衝若,朱力耕 @Lyken,唐昊天,Thibaut)


(Tutorial 當天 06/15~06/16,我們會提供 GPU 機器給大家動手學習準備的資料。目前我們網站上的影片僅提供了 YouTube 連結,我們隨後會提供 B 站連結。)

誤區:網路結構搜尋與超參最佳化很貴嗎?

我認為大家可能對網路結構搜尋和超參最佳化領域有個誤區,就是認為這些方法一定“很貴”,所在實驗室或者團隊資源不足,很難跟上。這可能是因為早年來自谷歌的一些比較開創性的工作都相對“暴力”,然而最新的進展讓這些原本很耗資源的領域變得更加高效。以網路結構搜尋為例,近兩年來領域內很多工作都極大地加速了搜尋過程,比如 DARTS,ENAS,ProxylessNAS,FBNet 等工作透過複用網路權重引數,交替訓練網路結構引數權重引數的方式,僅需要一次訓練就可以搜尋到最佳結構,極大地減小了對資源的需求。自動資料增強(Auto Augment)取得了很好的效果,但是其搜尋過程很費資源,最近快速資料增強(Fast AutoAugment)將搜尋速度提高了幾百倍。所以這些你認為可能“很貴”的領域,可能不再那麼耗資源了,而且這很可能是新科研時代的發展方向。

AutoML 工具箱:工欲善其事必先利其器

作為一個計算機視覺領域的研究人員,從我自己的角度來看,我需要一個 automl 工具箱可以彌補我對其他領域理解的不足,比如分散式管理,以及引數最佳化演算法,而這些正是 AutoGluon 工具箱所提供的:1)“傻瓜式”叢集管理,分散式排程。2)透過自定義搜尋空間,自動構建搜尋演算法。

特別是第二點,已有的 python 程式碼,只需要新增幾行程式碼就可以定義搜尋空間,並且構建搜尋演算法,這裡用的是 Bayesian Optimization。想快速瞭解更多的功能,歡迎看我在 tutorial 中的20分鐘講解 AutoGluon。

https://hangzhang.org/CVPR2020/

@ag. args(
    batch_size=128,    
    lr=ag.Real(1e-4, 1e-2))
def train_fn(args, reporter=None):    
    print(args.lr, args.batch_size)
    reporter(epoch=0, accuracy=0.9)

myscheduler = ag.scheduler.FIFOScheduler(train_fn, num_trials=25, searcher="bayesopt")
myscheduler.run()

課後材料:

既然介紹了 AutoML 工具箱,那麼不能只展示一下 toy example。我們復現了最近的工作 RegNet 的搜尋過程,還有快速資料增強 (Fast AutoAugment),一個我認為被嚴重低估的工作。程式碼和 README 比較易懂,之後有時間可能單獨講解一下。

https://github.com/zhanghang1989/RegNet-Search-PyTorch

https://github.com/zhanghang1989/Fast-AutoAug-Torch

相關文章