0
我們目前身處的人工智能浪潮在很大程度上是數據驅動的。在這個「數據為王」的時代,數據的壁壘為研究者們開展研究帶來了大量的障礙。然而,我們真的只有利用這些「真實」的數據才能訓練出性能優秀的模型嗎?
最近,來自 Uber 的研究人員提出了一種生成式教學網絡(GTN),可以通過生成非真實的訓練數據,可以看下通過 GTN 生成的數字,基本沒有一個是我們能夠認得出來的:

把這些數據用在神經網絡架構的搜索(NAS)上,能夠獲得9倍的提速,且計算量下降幾個數量級。這項工作非常有意義,按照作者的說法,“GTN開辟了一個新的研究方向”;此外,GTN 并不僅僅適用于NAS,它是一種通用的工具,可以被用于機器學習的所有領域。作者為此專門寫了一篇解讀博客,內容詳實有趣,AI 科技評論翻譯并稍作修改——
通過使用大量由人類標注的數據,我們推動了機器學習技術的發展,但是要制作出這種帶標簽的數據需要付出大量的時間和金錢。在 Uber 人工智能實驗室,我們研究了一個非常有趣的問題:我們是否可以創建一些學習算法,通過學習智能體所處的環境以及「課程」(curricula)自動地生成訓練數據,從而幫助人工智能體迅速地學習。在我們發表的論文「Generative Teaching Networks: Accelerating Neural Architecture Search by Learning to Generate Synthetic Training Data」(https://arxiv.org/abs/1912.07768)中,我們說明了可以通過「生成式教學網絡」(GTN)實現這樣的算法。
GTN 是一種深度神經網絡,它能夠生成數據或生成訓練環境,學習器(例如,某種剛剛經過初始化的神經網絡)在接受目標任務(例如,識別圖中的物體)之前,可以使用 GTN 生成的數據或訓練環境進行訓練。這種方法的一個優點是,GTN 可以生成「合成」的數據。其它的神經網絡使用 GTN 生成的數據進行訓練時,可以獲得比在真實數據上進行訓練更快的訓練速度。這使我們能夠以比使用真實數據訓練快九倍的速度搜索新的神經網絡架構。基于 GTN 的神經網絡架構搜索(GTN-NAS)可以與目前最先進的神經網絡架構搜索(NAS)方法相媲美,它能夠在使用比經典的 NAS 方法少幾個數量級的計算量的情況下獲得目前最佳的性能。而且,實現這種最佳性能的新技術非常有趣!
神經網絡的架構與它的一些設計選擇有關(例如,它應該有多少層,每層應該有多少神經元,層與層之間應該具有怎樣的連接關系,等等)。不斷改進的神經網絡架構使機器學習在諸多領域(例如,計算機視覺、自然語言處理、語音轉文本)都取得了重大進展。然而,搜索高性能網絡架構的任務通常是由科學家手動完成的,這極其耗時。
漸漸地,神經網絡架構搜索(NAS,http://www.cs.ucf.edu/~kstanley/neat.html)算法被部署到自動化的架構搜索工作中,得到了很好的結果。盡管大量的人類科學家已經針對ImageNet 和 CIFAR 等流行的計算機視覺對比基準試圖找到最佳的模型架構,但是 NAS 仍然得出了目前性能最佳的實驗結果(https://arxiv.org/abs/1802.01548)。如果我們可以提升 NAS 的效率,那么整個機器學習社區中的從業人員都會大大受益。
NAS 需要大量的計算資源。樸素的 NAS 算法會使用完整的數據集訓練每個神經網絡,從而對其進行評估,直到模型性能不再提升。對于數千個(甚至更多的)在 NAS 過程中需要考慮的網絡架構重復這個過程的計算開銷機器高昂,并且速度極慢。NAS 算法通過僅僅進行少量時間的訓練并且將得到的性能作為真實性能的估計值,避免了如此高昂的計算開銷。進一步加速這一過程的方法可能是:從完整的數據集中精心地選擇信息量做大的訓練樣本。論文「Learning Active Learning from Data」(https://arxiv.org/abs/1703.03365)中提到的方法已經被證明可以加速訓練(該論文的主題超出了 NAS 的范疇)。
然而,我們想知道是否可以通過更激進的思路來加速這一過程:讓機器學習模型可以自己創建訓練數據。這種算法不僅僅局限于創建逼真的圖像,相反,它也可以創建有助于學習的非真實數據,就像在籃球訓練中我們學習同時運兩個球可以加快學習速度(即使這與實際的比賽完全不一樣)。因此,GTN 自由地創建非真實的數據,可以使得模型比使用個真實數據更快地學習。例如,GTN 可以融合許多不同類型的對象的信息,并且集中利用最困難的示例進行訓練。
這個過程的工作流程如圖 1 所示。GTN 就好比生成對抗網絡(GAN,http://papers.nips.cc/paper/5423-generative-adversarial-nets)中的生成器,只是它沒有生成逼真數據的壓力。相反,它產生的是完全人造的數據,一個之前沒有見到過的學習器神經網絡(具有隨機采樣的架構和權值初始化結果)會使用這些數據訓練少量的學習步(例如,可以通過隨機梯度下降實現這些學習步)。然后,我們會使用真實的數據評估學習器網絡(到目前為止還沒有見過真實的數據),例如評估該網絡是否能識別經典 MNIST 數據集中的手寫數字圖像,該過程可以得到正在被優化的元損失目標函數(meta-loss objective)。接著,我們通過元梯度(https://arxiv.org/abs/1502.03492)對整個學習過程進行微分,更新GTN 的參數,從而提高目標任務上的性能。之后,我們會棄用該學習器,并重復這個過程。另一個細節是,我們發現學習一個「課程」(一組按照特定順序排列的訓練示例)相較于訓練一個生成無序隨機示例分布的生成器更加能夠提高模型性能。
GTN 涉及到了一種被稱為「元學習」的令人激動的機器學習類型。在這里,元學習被用于網絡架構搜索。過去的研究者們(https://arxiv.org/abs/1502.03492)已經使用元學習直接(逐像素地)優化了「合成」數據。在這里,通過訓練一個生成器,我們可以重用更多的抽象信息(例如,關于數字「3」的形態特征)來編碼各種各樣的樣本(例如,許多不同的「3」)。我們進行的實驗證明了,GTN 生成器比直接優化數據的性能更好。更多關于 GTN 與之前相關工作比較的細節討論,請參閱我們的論文「Generative Teaching Networks: Accelerating Neural Architecture Search by Learning to Generate Synthetic Training Data」(https://arxiv.org/abs/1912.07768)。

圖1:生成式教學網絡(GTN)示意圖。生成器(一個深度神經網絡)生成合成數據,一個新創建的學習器會使用這些數據進行訓練。使用 GTN 生成的數據集進行訓練后,該學習器可以在目標任務上取得很好的性能(盡管它們從未見過真實的數據)。
在對 GTN 進行元訓練后,當學習僅限于少量的隨機梯度下降學習步時(例如,32),新的學習器可以使用合成數據比使用真實數據學習得更快(如圖 2 中紅色的曲線代表使用合成數據,藍色曲線代表使用真實數據)

圖 2:使用 GTN 生成的合成數據進行訓練比使用數據訓練更快,當僅僅經過少量隨機梯度下降步訓練時,可以得到更高的 MNIST 性能。
在 MNIST 數據集上獲得 98.9% 準確率本身并沒有多么經驗,但是能夠使用這么少的樣本做到的一點是:使用 GTN 合成數據訓練的學習器可以在僅僅 32 個隨機梯度下降步(約 0.5 秒)的訓練后達到這個水平。同時,學習器僅僅在「課程」中「看」過了一次 4,096 個合成數據,這個數據規模還不到 MNIST 訓練數據集的十分之一。
有趣的是,盡管我們可以使用這些合成圖片訓練神經網絡,并且學著識別真正的手寫數字,但許多由 GTN 生成的圖片實際上在我們人類看來是十分奇怪的,我們并不能將它們識別為數字(詳見圖 3)。這些非真實的圖片可能對神經網絡產生有意義的影響,這種現象反過來也會讓人不禁想起深度神經網絡很容易被「愚弄」(https://arxiv.org/abs/1412.1897)。同樣非常有趣的是,在課程的末期,當模型性能達到平穩期之后,手寫數字的可識別性會急劇提升(詳見圖 2 中的第 32 步)。關于「為什么圖片大部分是非真實的」,以及「為什么在課程的末期它們的真實性會提升」的假設的討論,請參閱我們的論文「Generative Teaching Networks: Accelerating Neural Architecture Search by Learning to Generate Synthetic Training Data」(https://arxiv.org/pdf/1912.07768.pdf)。

圖 3:GTN 生成的具有「課程」性質的 MNIST 圖像。課程的順序從左到右排列(每一列是 32 批數據中的一批)。
在確定 GTN 可以加速在 MNIST 數據集上的訓練后,我們在 CIFAR-10 數據集上進行了測試,這同樣也是一個常用的 NAS 對比基準。和在 MNIST 數據集上訓練的情況相似,在這里,學習器使用 GTN 生成的數據學習的速率要快于使用真實數據學習的速率。具體而言,即使與高度優化的使用真實數據的學習算法相比,使用合成數據訓練的學習器在性能水平相同的情況下,學習的速率也要比前者快四倍(詳見圖 4)。

圖 4:在 CIFAR 數據集上,使用 GTN 生成的合成數據進行訓練的速率比使用真實數據也更快一些,在性能水平相同的情況下,速率提升了 4 倍。
為了搜索網絡架構,我們采用了來自許多論文(https://arxiv.org/abs/1611.01578,https://arxiv.org/abs/1802.03268,https://arxiv.org/abs/1808.07233)的思想。我們先搜索一個小型的架構模塊,然后通過一個預先確定的「藍圖」重復組合這樣的模塊,從而創建不同規模的架構。一旦我們發現了一個高質量的模塊,它就可以被用來創建一個更大的網絡,然后用真實的數據訓練這個網絡,在目標任務上收斂。
在GTN-NAS中,最終目標是找到一種經過在真實數據上訓練許多步(即直到收斂)后,能夠取得很好的性能表現的神經網絡架構。因此,測量在使用 GTN 生成的數據訓練少量的學習步后得到的任何模型的性能,都只是一種估計當我們最終使用真實數據訓練時,哪些架構會表現良好的手段。我們發現,使用 GTN 數據訓練得到的模型性能可以被用來預測真實情況下的模型性能(使用 GTN 估計的排名前 50% 的架構與真實情況的 Spearman 等級相關系數為 0.56)。例如,根據 GTN 非常快的估計,排名前 10% 的架構實際上性能非常高(詳見圖 5 中的藍色方塊)。這意味著我們可以通過 GTN 生成的數據快速地評估許多網絡架構,從而識別出一些看起來有潛力的架構,然后使用真實數據訓練這些架構,最終確定哪些架構在目標任務上真正性能優異。有趣的是,我們發現,要實現與使用 GTN 生成的數據僅僅在 128 個隨機梯度下降訓練步上取得的相同的預測能力(等級相關系數),你需要使用真實數據訓練 1,200 個梯度下降訓練步。這說明,使用 GTN 生成的數據比使用真實數據進行網絡架構搜索要快 9 倍!

圖 5:針對根據 GTN 估計得到的前 50% 的架構,使用 GTN 合成數據訓練 30 秒后最終得到的性能與使用真實數據訓練 4 小時后取得性能的相關系數圖。圖中的相關系數足夠高(Spearman 等級相關系數為 0.5582),當我們選用根據 GTN 估計得到的性能最好的架構時,我們也會選擇出真實性能最好的架構。根據 GTN 估計的結果,藍色方塊代表性能前 10% 的架構。
因此,GTN 生成的數據在 NAS 算法中可以更快地替代真實數據。為了說明該過程,我們選用了最簡單的 NAS 方法:隨機搜索。該算法非常簡單,我們可以確定不存在復雜的算法組件和使用 GTN 生成的數據之間特殊的、令人困惑的相互作用。在隨機搜索過程中,該算法隨機采樣得到網絡架構,并且在給定計算資源預算的情況下盡可能多地進行估計。在我們的實驗中,這些估計要么是針對使用 GTN 生成的數據訓練 128 個隨機梯度下降訓練步后的架構,要么是針對使用真實數據訓練的架構。接著,對于每一種方法,根據估計得到的最佳架構會使用真實數據訓練很長的時間。在真實數據上最終取得的性能才是我們真正關心的結果。
由于 GTN 能夠更快地評估每個架構,它們能夠在給定一定的計算資源的情況下,對更多整體框架進行估計。在我們實驗的每一種情況下,我們都證明了:使用 GTN 生成的數據比使用真實數據更快,并取得了更好的性能(詳見表 1)。甚至,當我們將使用真實數據訓練 10 天的結果與使用 GTN 生成數據訓練 2/3 天的結果進行比較時,這個結論也成立(詳見表 1)。此外,采用隨機搜索策略(以及表 1 中列出的一些附加功能)的 GTN-NAS 也可以與采用了比隨機搜索復雜得多的策略的 NAS 方法相抗衡(「Generative Teaching Networks: Accelerating Neural Architecture Search by Learning to Generate Synthetic Training Data」(https://arxiv.org/pdf/1912.07768.pdf))。重要的是,GTN 生成的數據也可以直接被這些算法使用,我們期望這將同時在這兩種場景下取得最佳的效果,提升目前最佳模型的性能。

表 1:GTN 可以直接替代真實數據,加速 NAS 的過程。在上表中,實驗結果是使用簡單的隨機搜索 NAS 策略實現的,但是 GTN 應該也可以加速任意的 NAS 方法。參數的個數指的是學習器神經網絡中權重的個數。
生成式教學網絡(GTN,https://arxiv.org/abs/1912.07768)生成了合成數據,這種數據使新的學習器網絡能夠迅速地針對某種任務進行學習。這使得研究者們可以快速地評估一種新提出的候選網絡架構的學習潛力,這促進了對新的、更強大的神經網絡架構的搜索。通過我們的研究,我們說明了:GTN 生成的訓練數據創建了一種更快的 NAS方法,它與目前最先進的 NAS 算法旗鼓相當(但實現的方式完全不同)。在我們的 NAS 工具箱中加入這種額外的 GTN 工具,對 Uber、所有的公司,以及全世界的所有科學家大有助益,可以幫助它們提升深度學習在每個應用領域的性能。
除了我們的直接成果,我們對 GTN 開辟的新的研究方向也感到十分興奮。當算法可以生成他們自己的問題和解決方案(https://eng.uber.com/poet-open-ended-deep-learning/)時,我們就可以解決比以前更難的問題。然而,生成問題需要定義一個環境搜索空間,這意味著我們需要編碼一個豐富的環境空間來進行搜索。GTN 有一種很好的特性,那就是它們可以生成幾乎任意類型的數據或訓練環境,這使其具有巨大的潛在影響力。然而,雖然能夠生成任意的環境令人十分激動,但仍然需要通過更多的研究充分利用這種表達能力,從而不會迷失在 GTN 產生的各種各樣的可能性的海洋中。
從更宏觀的角度來說,我們認為 GTN 是一種通用的工具,它可以被用于機器學習的所有領域。我們這份工作中展示出了其潛力,但是我們也相信它們可以在無監督學習、半監督學習,以及強化學習中得到有效的應用(我們的論文已經得到了強化學習方面的初步結果)。如果把目標定得更大一些,GTN 可以通過以下方式幫助我們朝著能夠自動創建強大的人工智能形式的「人工智能生成算法」邁進:(1)對網絡架構進行元學習;(2)對學習算法本身進行元學習;(3)自動生成訓練環境。本文說明了,GTN 有助于這三種方法中的第一種(對網絡架構進行元學習),但它們也可以通過生成復雜的訓練環境、成功地訓練智能體,來促進第三個方面的發展(自動生成訓練環境)。
更多細節,請參閱我們的論文「Generative Teaching Networks: Accelerating Neural Architecture Search by Learning to Generate Synthetic Training Data」(https://arxiv.org/pdf/1912.07768.pdf)。
我們計劃在未來幾周內發布這項研究的源代碼:敬請期待!
Via https://eng.uber.com/generative-teaching-networks/ 雷鋒網雷鋒網雷鋒網
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。