人工智慧進階-TensorFlow核心之剪枝優化

dicksonjyl560101發表於2019-07-04


https://www.toutiao.com/a6709573954236842509/



一直以來,AI模型的壓縮演算法都是門高深的學問,之前國內深鑑科技也憑藉著高效率的壓縮演算法,讓更多輕量的計算終端也能享受AI的好處。

人工智慧進階-TensorFlow核心之剪枝優化

目前主流AI所使用的人工神經網路顧名思義,就是個非常複雜,互相牽連的網路結構,由於影像、語言、文字等不同型別的樣本,會以不同的方式進行切割、儲存,形成最基礎的神經元,而機器學習或深度學習,就是要想辦法在這些看似不相干的神經元中找出關連,並形成綿密的網狀邏輯。

然而神經元越多,網路越龐大,需要用來儲存神經網路的空間需求也越高,但儲存空間在某些終端,尤其是移動智慧裝置中,是非常稀有的資源,因此如果要讓這些儲存空間有限的智慧終端也能形成AI處理能力,那麼神經網路模型就不能太大。

很有趣的是,其實我們大腦在成長過程中,也會經歷類似的過程,這個過程叫做synaptic pruning,也就是神經突觸修剪。而如果大腦沒有在發育過程中經過有效的修剪,最終可能會發展成自閉症。而自閉症大腦前額葉的神經連結遠比正常人多。

補充TensorFlow模型優化工具的不足

人工智慧進階-TensorFlow核心之剪枝優化

為了解決這個問題,包括深鑑在內的很多開發者,都提出過不同的壓縮方式與邏輯,而其中,剪枝法已經被證明是效率最高的其中一種。剪枝法其實就是把神經網路中,對整體邏輯影響層面小,甚至是不需要的分支修剪掉,讓模型的大小可以更有效的控制,然而剪枝法最重要的關鍵在於要剪在對的地方,才能在提升效率、降低儲存空間需求的同時,又要能兼顧模型邏輯的正確性。

Google在2018年曾發表了模型優化工具,通過使用訓練後量化的機制,能夠大幅降低機器學習模型的儲存空間需求,以及提升執行效率。

最初,該量化方法是採用降低引數的精度來達成,簡單來說,就是原本使用32bit浮點的模型,使用8bit整數來重新儲存和計算。當然,優化過程中還是需要經過比對和校準,藉以避免嚴重失真的狀況。

人工智慧進階-TensorFlow核心之剪枝優化


而才剛推出的剪枝API,則是在之前的模型優化工具中心增的優化工具。其功能就是前面所提到的,通過演算法,修剪掉在權重張量(Weight Tensor)中的非必要數值,讓神經網路中不必要的連線降到最低。

而剪枝API可以和前一版本的量化優化相容,換句話說,開發者可以在其模型中同時使用兩種優化方式,藉以取得更好的優化效率。

Google也在工具說明中示範瞭如何把MNIST的90%稀疏模型從12MB壓縮到2MB。

而在更多的模型壓縮實驗中,在不同稀疏準確率條件的設定下,剪枝API的壓縮效率表現從50%到90%,表現相當不錯。


人工智慧進階-TensorFlow核心之剪枝優化

工作原理

這個新的壓縮優化工具是基於Keras的權重修剪API,使用簡單但廣泛適用的演算法,並根據訓練期間的大小迭代刪除連線。

開發者指定最終目標稀疏度(例如90%),以及執行修剪的計劃(例如,在步驟2,000開始修剪,在步驟10,000停止,並且每100步執行一次),以及修剪的可選配置結構(例如,應用於某些形狀的單個值或值塊)。

人工智慧進階-TensorFlow核心之剪枝優化

隨著訓練的進行,修剪流程將被安排執行,消除那些具有最低幅度值(即最接近零的那些)的權重,直到達到指定的稀疏度目標。 每次修剪流程被安排執行時,便會重新計算當前稀疏度目標,從0%開始,直到它在修剪計劃結束時達到最終目標稀疏度為止。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2649524/,如需轉載,請註明出處,否則將追究法律責任。

相關文章