NAS 在近些年取得了突破性進展,它通過自動化設計神經網路架構,在很多工(如影像分類、物體識別、語言模型、機器翻譯)上取得了比人類專家設計的網路更好的結果。
為了解決傳統方法訓練耗時高,而 one-shot 方法搜尋不穩定效能較差的問題,微軟亞洲研究院機器學習組的研究員們提出了基於半監督學習的神經網路結構搜尋方法 SemiNAS,可以降低搜尋耗時,同時提升搜尋精度。
NAS 中的控制器利用大量的神經網路結構及其對應的準確率作為訓練資料進行監督學習(supervised learning)。訓練大量的網路結構直到收斂以獲取其準確率是非常耗時的,但是獲取無監督資料(即只有神經網路結構本身而沒有對應的準確率)是非常容易的(例如隨機生成網路結構)。因此,我們希望利用大量的易於獲取的無監督資料(神經網路結構)來進一步幫助控制器的學習 ,這種方法稱作半監督學習(semi-supervised learning)。這樣做有兩點好處:1. 提升效能:在幾乎相同的訓練代價(相同的有監督資料)下,可以利用大量的無監督資料來進一步提高搜尋演算法效能,以搜尋出更好的網路結構;2. 降低時間:在達到相同搜尋精度的情況下,通過利用大量的無監督資料,可以大大減少有監督資料的數量,以降低訓練耗時。
為了利用大量的無標籤的網路結構,先在少量的有標籤的網路結構上進行學習,然後對無標籤的網路結構進行標註(預測它們的準確率),然後把它們加入到原始訓練資料中進行學習。具體而言,我們構建了一個效能預測器 f_p 來預測一個網路結構的準確率,它通過最小化 MSE 損失來訓練,如公式1所示,其中 L_p 是損失:
我們在有限的監督資料集上訓練 f_p,待其收斂後,用其對無標籤的神經網路結構 x' 進行預測,得到準確率 y'=f_p (x')。我們將預測得到的資料和原始的監督資料混合在一起進一步訓練效能預測器 f_p 以達到更高的精度。
訓練好的效能預測器 f_p 可以與多種 NAS 演算法結合,為其預測網路結構的準確率以供其學習。比如對於基於強化學習的演算法(如 NASNet [3],ENAS [6] 等)和基於進化演算法的演算法(如 AmoebaNet [4],Single Path One-Shot NAS [7] 等),f_p 可以用於為生成的候選網路結構預測準確率。對於基於梯度的演算法(如 DARTS [5] 和NAO [1]),可以直接用 f_p 預測的網路結構的準確率對網路結構求導,更新網路結構。
本文中,我們基於之前的工作 NAO(Neural Architecture Optimization)[1],實現了 SemiNAS 搜尋演算法。NAO 主要包含一個編碼器-效能預測器-解碼器框架,編碼器將離散的神經網路結構對映到連續空間中的向量表示,效能預測器用於預測其準確率,解碼器負責將連續向量表示解碼成離散的神經網路結構表示。在訓練時,三者進行聯合訓練,效能預測器通過迴歸任務進行訓練,解碼器通過重建任務進行訓練。在生成新網路結構時,我們輸入一個網路結構,計算效能預測器對輸入網路結構的梯度,通過梯度上升來獲得一個更好的神經網路結構。更多關於 NAO 的介紹可參見原始論文。
結合本文提出的學習方法,在 SemiNAS 中,我們首先用少量有標籤的資料訓練整體框架,然後從搜尋空間中取樣獲得大量無標籤的神經網路結構,利用訓練好的框架對這些網路結構預測準確率。然後使用原始的有標籤的資料和自標註好的無標籤資料一起充分訓練整個框架。之後按照 NAO 中的方法進行優化,生成更好的網路結構。
我們在多個任務和資料集上驗證了 SemiNAS 方法,包括影像分類(NASBench-101 [2]、ImageNet)和文字到語音合成 。值得一提的是,NAS 首次被應用於語音合成任務,並取得了不錯的結果。
NASBench-101
首先,我們在 NASBench-101 [2] 資料集上進行了實驗。NASBench-101 是一個開源的用於驗證 NAS 演算法效果的資料集,包含了 423k 個不同的網路結構和其在 CIFAR-10 分類任務上的準確率,即提供了一個開箱即用的評估器,方便研究者快速驗證其搜尋演算法本身,並和其它工作進行公平對比(消除了不同訓練技巧、隨機種子及資料集本身帶來的差異)。實驗結果如表1所示。
在 NASBench-101 上,隨機搜尋方法(Random Search)、基於進化演算法的方法(Regularized Evolution, RE)以及 NAO 在取樣了2000個網路結構後分別取得了93.66%,93.97%和93.87%的平均測試準確率。而 SemiNAS 在僅取樣了300個網路結構後就取得了93.98%的平均測試準確率,在取得和 RE 和 NAO 一樣效能的同時,大大減少了所需資源。進一步地,當取樣幾乎差不多的網路結構(2100個)時,SemiNAS 取得94.09%的平均測試準確率,超過了其他的搜尋方法。
ImageNet
我們進一步在更大的 ImageNet 分類任務上驗證 SemiNAS 的表現,搜尋過程中我們僅實際訓練評估了400個結構,最終結果如表2所示。
在 mobile setting 條件下(FLOPS<600M),SemiNAS 搜尋出的網路結構取得了23.5%的 top-1 錯誤率和6.8%的 top-5 錯誤率,超過了其他 NAS 方法。
語音合成(TTS)
我們還探索了 SemiNAS 在新領域的應用,將其用於語音合成(Text to Speech, TTS)任務上。
在將 NAS 應用到一個新任務時,需要面臨兩個基本的問題:搜尋空間設計以及搜尋指標設計。對於搜尋空間的設計,我們參照主流 TTS 模型,設計了基於編碼器-解碼器(encoder-decoder)的框架(backbone)。在具體搜尋每層的運算操作時,候選操作包括 Transformer 層(包含不同的注意力頭數量)、卷積層(包含不同卷積核大小)、LSTM 層。對於評價指標的設計,不像在分類任務、識別任務以及語言模型任務中評價標準是客觀的,可以通過程式自動完成。在 TTS 任務中,合成音訊的質量需要人工去評判,而 NAS 需要評價成百上千的網路模型,這在 TTS 中是不現實的。所以需要設計一種客觀的評價標準。我們發現合成音訊的質量和其編解碼器之間的注意力機制圖中的注意力權重聚焦在對角線上的程度(diagonal focus rate, DFR)有較強相關性,其對最終的音訊質量有指導意義,故選擇它作為搜尋時的客觀評價指標。
我們嘗試用 NAS 解決當前 TTS 面臨挑戰的兩個場景:低資源場景(low resource setting)和魯棒性場景(robustness setting)。在低資源場景中,可用的 TTS 訓練資料較少,而在魯棒性場景中,測試的文字輸入一般比較難。我們將 NAO 作為對比的 baseline 之一,在實驗中保持 NAO 和 SemiNAS 的搜尋耗時相同,來比較最終的搜尋結構的效能。
我們在 LJSpeech 資料集(24小時語言文字對)上進行實驗,對於低資源場景,隨機選取了約3小時的語音和文字作為訓練資料來模擬低資源場景,最終實驗結果如表3所示。
對於最終生成的音訊,我們用可懂度(Intelligibility Rate, IR),即人能聽懂的單詞數量佔比,來評價模型效能。可以看到,人工設計的 Transformer TTS [8] 只取得了88%的可懂度,之前的 NAS 演算法 NAO 取得了94%,而 SemiNAS 取得了97%的可懂度,相比 Transformer TTS 提升了9%,相比 NAO 也有明顯提升。同時可以看到,我們設計的搜尋指標 DFR 和 IR 呈正相關性,驗證了使用 DFR 作為客觀評價指標進行搜尋的有效性。
對於魯棒性場景,我們在整個 LJSpeech 上進行訓練,然後額外找了100句較難的句子(包含很多單音節或重複音節等)作為測試集,實驗結果如表4所示。
我們計算了不同模型在測試集上發生重複吐詞、漏詞的句子數,並計算了整體錯誤率(一句話裡只要出現一次重複吐詞或漏詞記為一次錯誤)。可以看到,Transformer TTS 達到了22%的錯誤率,SemiNAS 將其降低到了15%。
我們展示下低資源場景的合成音訊示例(這裡我們使用 Griffin-Lim 合成語音,所以可以更多關注合成聲音是否可懂,而不是聲音質量)。
文字:No other employee has been found who saw Oswald enter that morning
TTS 實驗更多的音訊 demo 連結:
https://speechresearch.github.io/seminas/
SemiNAS 利用半監督學習,從大量無需訓練的神經網路結構中進行學習,一方面可以在相訓練代價下提升原有 NAS 方法的效能,另一方面可以在保持效能不變的條件下減少訓練代價。實驗表明,該方法在多個任務和資料集上均取得了非常好的效果。未來我們計劃將 SemiNAS 應用到更多的搜尋演算法上,同時探索 NAS 在更多領域的應用。
更多詳情請見論文原文:
Semi-Supervised Neural Architecture Search
論文連結:https://arxiv.org/abs/2002.10389
論文程式碼現已開源。
GitHub連結:https://github.com/renqianluo/SemiNAS
參考文獻
[1] Luo, Renqian, et al. "Neural architecture optimization." Advances in neural information processing systems. 2018.
[2] Ying, Chris, et al. "NAS-Bench-101: Towards Reproducible Neural Architecture Search." International Conference on Machine Learning. 2019.
[3] Zoph, Barret, et al. "Learning transferable architectures for scalable image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.
[4] Real, Esteban, et al. "Regularized evolution for image classifier architecture search." Proceedings of the aaai conference on artificial intelligence. Vol. 33. 2019.
[5] Liu, Hanxiao, Karen Simonyan, and Yiming Yang. "DARTS: Differentiable Architecture Search." (2018).
[6] Pham, Hieu, et al. "Efficient Neural Architecture Search via Parameters Sharing." International Conference on Machine Learning. 2018.
[7] Guo, Zichao, et al. "Single path one-shot neural architecture search with uniform sampling." arXiv preprint arXiv:1904.00420 (2019).
[8] Li, Naihan, et al. "Neural speech synthesis with transformer network." Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 33. 2019.