複製鏈接
請複製以下鏈接發送給好友

微型神經網絡

鎖定
微型神經網絡,也稱輕量級神經網絡,是指需要參數數量較少和計算代價較小的神經網絡模型。由於微型神經網絡計算開銷小,微型神經網絡模型可以部署在計算資源有限的設備上,如智能手機、平板電腦或其他嵌入式設備。構建微型神經網絡一般從網絡結構優化和網絡裁剪兩個角度出發。
中文名
微型神經網絡
外文名
Mini neural network
學    科
人工智能
特    徵
參數數量較少和計算代價較小
領    域
深度學習
方    法
網絡結構優化和網絡裁剪

微型神經網絡定義

微型神經網絡簡單來説是對原來神經網絡結構進行優化和網絡裁剪。從深度學習的理論發展來看,尋求特定任務下最小的深度學習系統有利於幫助研究人員進一步理解深度學習的作用機理,如神經元的物理含義,神經元的學習能力極限等方面。構建和生成微型神經網絡模型有利於將更多深度學習算法應用到移動端,降低對設備性能的要求。近年來,有關學者提出了不是微型神經網絡架構,如MobileNets,ShuffleNet使用深度可分離的卷積來構建輕量級的深層神經網絡。構建微型神經網絡的方法可以分為近似,量化和裁剪、基於張量分解等方法。

微型神經網絡必要性與可能性

深度學習是近年來機器學習中最具有代表性的技術,在圖片識別,自然語言處理,語音識別,機器人技術等許多模式識別的關鍵領域均取得了突破性的成就。深度卷積網絡將圖像識別的準確率提高了一個台階,並在個別領域,如人臉識別中取得了超過人類的識別水平。深度學習的本質是大數據支持下的多層人工神經網絡系統,一個深度學習模型通常包含數以百萬計甚至千萬計的參數和十幾層甚至幾十層的網絡。例如,AlexNet網絡的參數數目約為6000萬個,而VGG網絡擁有1.4億參數。巨量的參數帶來性能提升的同時,也帶來網絡體量巨大、運算緩慢等缺點,不利於深度學習模型向運算資源有限的設備和應用中嵌入。另一方面,深度神經網絡又常常是過參數化的。尤其是對於特定的任務而言,有相當部分的神經元和連接權重對模型的性能沒有實質性的影響,或這些影響可以藉由再訓練方法由其他神經元填補。構建微型神經網絡不但具有必要性,也具有可能性。首先,儘管神經網絡通常是深度越深,效果越好,但針對具體的應用場景和需求,適當深度和參數數目的網絡即能夠滿足。盲目加深網絡複雜度所帶來的微弱性能提升在許多應用場合意義並不大。其次,神經網絡常常存在過參數化的問題,網絡神經元的功能具有較大的重複性,即使在網絡性能敏感的場景,大部分網絡也可以被“安全地”壓縮而不影響其性能。

微型神經網絡方法

微型神經網絡近似類方法

近似類方法主要利用矩陣或張量分解的思想,通過少量參數重構原始網絡參數矩陣或參數張量,以達到減少網絡存儲開銷的目的。通常,在網絡運行時,這些參數將會被適當重建,網絡的運行時開銷並沒有得到有效減少。

微型神經網絡基於張量分解

張量是向量和矩陣的自然推廣,向量可稱為一階張量,矩陣可稱為二階張量,將矩陣堆疊形成“立方體”,這種數據結構則稱為三階張量。一張灰度圖像在計算機中由矩陣表示,是二階張量。一張RGB三通道的彩色圖像在計算機中則保存為三階張量。當然,三階張量也可以堆疊形成更高階的張量。張量分解是張量分析中的重要組成部分,其基本原理是利用張量數據中的結構信息,將張量分解為形式更簡單、存儲規模更小的若干張量的組合。典型的張量分解方法有CP分解,Tucker分解等。在神經網絡中,參數通常以“張量”的形式集中保存。對全連接層而言,全連接通過權重矩陣將輸入向量變換到輸出向量,其參數為二階張量。對卷積層而言,設輸入數據為具有𝐶通道的三階張量。則卷積層中的每一個卷積核也都是具有𝐶通道的三階卷積核,故一層卷積層所包含的一組卷積核構成了形如𝐵 × 𝑀 ×𝑁×𝐶的四階張量。基於張量分解的網絡壓縮的基本思想,就是利用張量分解的技術將網絡的參數重新表達為小張量的組合。重新表達後的張量組一般能夠在一定的精度下近似與原張量相同,而所佔用的空間又得到大大降低,從而獲得網絡壓縮的效果。有關學者分別是利用張量CP分解和Tucker分解的網絡壓縮工作。隨着張量分解的研究,該類網絡壓縮方法也得到發展。利用較新的Tensor Train分解方法,經過Tensor Train分解得到的張量組可以通過反向傳播算法獲得更新,實際上形成了一種佔用空間更小的網絡層。

微型神經網絡量化方法

量化方法的主要思想是將網絡參數的可能值從實數域映射到有限數集,或將網絡參數用更少的比特數來表示。量化的方法將原本具有無限種可能的參數約束到少數幾種參數中,再對這些參數進行重用,就可以減少網絡存儲開銷。通過改變參數的數據類型,如將原本的64位浮點型量化為整形甚至布爾型,網絡的運行時開銷也將得到大幅度減少。

微型神經網絡網絡裁剪

網絡裁剪的主要特點是會直接改變網絡的結構。網絡裁剪可以按粒度分為層級裁剪,神經元級裁剪和神經連接級裁剪。層級裁剪的裁減對象是網絡層,裁剪的結果是獲得更淺的網絡。通常,神經網絡想要達到良好的模式識別效果,必須具有較深的深度,但對具體問題而言,深度太深也會帶來過擬合風險增高,訓練難度加大等問題,且過深的網絡對提高具體場景下模式識別的性能幫助有限,因此有時會對網絡進行層級的裁剪。神經元級的裁剪對象是一層中的神經元或濾波器,裁剪的結果是獲得更“瘦”的神經網絡,瘦長的神經網絡不但能夠減少網絡存儲開銷,還能提高網絡運算速度。經過層級或神經元級裁剪的神經網絡,仍然保持了原本神經網絡的正規性,即網絡的存儲和運算規則仍然保持不變,只是規模變小。神經連接級的裁剪對象是一條具體的網絡連接,或一個具體的參數,裁剪的結果通常是獲得更為稀疏的網絡。神經連接級的裁剪往往更加精細可控,對網絡性能的影響最小。但神經連接級的裁剪會導致網絡失去正規性,經過裁剪的網絡權值張量變的稀疏,因此在存儲和運算時需要採用稀疏張量的存儲和運算規則,不利於並行 [1] 

微型神經網絡深度學習特點

深度學習是機器學習的一項分支,是一類由大數據推動,以多層人工神經網絡為表現形式,以特徵提取為主要目的的算法,既可以用於監督學習,也可以用於非監督學習。我們將深度學習的特性總結如下:
一是計算密集。深度學習的一般形式是多層的人工神經網絡,一個深度學習模型往往含有數以百萬計甚至千萬計的參數,龐大的模型必須有大量的訓練樣本作為支撐才能抑制過擬合,提高泛化能力。儘管有一些工作試圖降低深度學習所需要的樣本數,但總體而言,沒有大量的數據支撐,深度學習就無從談起。網絡規模和數據量兩方面共同決定深度學習具有計算密集的特性。
二是特徵的自動提取和分層處理,深度神經網絡主要處理的問題是從數據中自動提取特徵。這種特徵的提取是通過逐層組合抽象完成的,具有分層特性。網絡的底層(近輸入端)抽取的是局部的,低級的特徵,這些特徵經過逐層組合和非線性變換,在高層(遠輸入端)形成全局和抽象的特徵。特徵的語義性從低到高得到逐漸加強。
三是工程性強,可解釋性弱。儘管在深度學習的理論方面已經有許多有意義的工作,但深度學習的原理尚不明確,在大多數情況下深度學習仍然像是一個“黑盒子”,缺乏嚴格的理論證明。另一方面,深度學習是一門工程性非常強的學科,神經網絡的編程、調參、優化都具有很強的實踐性,十分依靠工程師的個人經驗。
參考資料
  • 1.    王徵韜. 深度神經網絡壓縮與優化研究[D].電子科技大學,2017.