智慧應用 影音
EVmember
Event

如何設計低耗能、高功效深度學習網路(三)

網路知識蒸餾是將已經訓練好的神經網路推理能力轉移到某個全新設計的網路,避免掉耗時的重新訓練過程。(Image by Gerd Altmann from Pixabay)

延續深度學習網路精簡設計的主題,我們必須在正確率不打折的情況下,設計出兼具低運算複雜度、低耗電、低參數量的智能算法。目前的設計原則是將「冗餘」的運算予以精簡。這些龐大運算以及冗餘由何而來,可以參考前文。本文中介紹剩下的兩種精簡設計策略。

網路知識蒸餾(knowledge distillation),是將已經訓練好的神經網路推理能力轉移到某個全新設計的網路,避免掉耗時的重新訓練過程,又有人稱為Teacher Student Learning,全新待訓練的網路稱為「學生網路」。訓練原理是規範學生網路在某些層級的網路推理輸出(能力)與既有的(老師)網路相同。

採用大量資料、長時間訓練成一個效能強大的網路之後,因為應用情境的限制,時常必須侷限網路的深度、運算數量等,就可以利用這樣的方式轉移既有的運算能力,達到精簡的目的。目前有一些雲運算的公司使用這種方式來精簡網路,甚至因為資源配置的關係,刻意優化網路來使用CPU運算。

這有額外工程上的好處:加快各種版本的網路設計。比如說已經存在了一個參數龐大以及正確率高的網路,但是因為產品線的關係,必須時常將智能應用實現在多個不同運算平台上。利用這種方式即可將既有網路性能,移轉到新的(可能運算能力較低的)神經網路,經驗上可以大大避免重新訓練的漫長時間,而加快產品部署。

網路模型剪枝(network pruning)是將網路中數值趨近零的網路連結予以剪除,因其對推理的結果影響不大。此方式可行的原因在於,經過觀察,相當部分的網路參數接近零,意謂這些連結對於網路輸入以及輸出的影響性很小,於是直接移除。一般的作法是將訓練好的網路依次剪除少部分,然後再進行fine tuning(少量訓練),將推理的能力分散到剩下的神經連結中。這樣的程序可以持續好幾個輪迴,直到符合精簡條件。

這作法是非常多運算平台使用的網路精簡方式,效果也相當顯著。主要的限制是,系統或是硬體架構必須支援稀疏矩陣運算,因為剪除之後網路數值結構不再為稠密矩陣,必須採用稀疏矩陣運算才能發揮功效。另外網路剪枝也時常會搭配參數簡化,例如將網路由浮點運算置換為整數運算,額外降低參數精度以及加速。

這系列文章討論的四種網路精簡原則可以彼此混用。而且這些為設計深度學習的基底網路,可以再加上其他網路元件滿足各種應用例如數值預測、人臉辨識、物件偵測、影像辨識等。

另一個角度,精簡設計也可以視為搜尋適合的神經網路設計。所以近來也有人使用autoML的方式(參考前文)來優化精簡運算,幾個應用情境看起來也頗有成效。對於克服邊緣計算的嚴苛條件,似乎指日可待。

徐宏民(Winston Hsu)現任富智捷(MobileDrive)技術長暨副總經理以及台大資訊工程學系教授。哥倫比亞大學電機博士,專精於機器學習、大規模影像視訊搜尋與辨識。為訊連科技研發團隊創始成員,慧景科技(thingnario)共同創辦人,NVIDIA AI Lab計畫主持人;曾任IBM華生研究中心客座研究員、美國微軟研究院客座研究員。習慣從學術及產業界的角度檢驗技術發展的機會;十餘年產學合作及新創經驗。曾獲2018 IBM Research Pat Goldberg Memorial Best Paper Award 、2018偽裝人臉辨識冠軍、傑出資訊人才獎、吳大猷先生紀念獎等國內外研究獎項。