版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

[科普中國]-微型神經(jīng)網(wǎng)絡(luò)

科學百科
原創(chuàng)
科學百科為用戶提供權(quán)威科普內(nèi)容,打造知識科普陣地
收藏

微型神經(jīng)網(wǎng)絡(luò),也稱輕量級神經(jīng)網(wǎng)絡(luò),是指需要參數(shù)數(shù)量較少和計算代價較小的神經(jīng)網(wǎng)絡(luò)模型。由于微型神經(jīng)網(wǎng)絡(luò)計算開銷小,微型神經(jīng)網(wǎng)絡(luò)模型可以部署在計算資源有限的設(shè)備上,如智能手機、平板電腦或其他嵌入式設(shè)備。構(gòu)建微型神經(jīng)網(wǎng)絡(luò)一般從網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化和網(wǎng)絡(luò)裁剪兩個角度出發(fā)。

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

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

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

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

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

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

深度學習特點深度學習是機器學習的一項分支,是一類由大數(shù)據(jù)推動,以多層人工神經(jīng)網(wǎng)絡(luò)為表現(xiàn)形式,以特征提取為主要目的的算法,既可以用于監(jiān)督學習,也可以用于非監(jiān)督學習。我們將深度學習的特性總結(jié)如下:

一是計算密集。深度學習的一般形式是多層的人工神經(jīng)網(wǎng)絡(luò),一個深度學習模型往往含有數(shù)以百萬計甚至千萬計的參數(shù),龐大的模型必須有大量的訓練樣本作為支撐才能抑制過擬合,提高泛化能力。盡管有一些工作試圖降低深度學習所需要的樣本數(shù),但總體而言,沒有大量的數(shù)據(jù)支撐,深度學習就無從談起。網(wǎng)絡(luò)規(guī)模和數(shù)據(jù)量兩方面共同決定深度學習具有計算密集的特性。

二是特征的自動提取和分層處理,深度神經(jīng)網(wǎng)絡(luò)主要處理的問題是從數(shù)據(jù)中自動提取特征。這種特征的提取是通過逐層組合抽象完成的,具有分層特性。網(wǎng)絡(luò)的底層(近輸入端)抽取的是局部的,低級的特征,這些特征經(jīng)過逐層組合和非線性變換,在高層(遠輸入端)形成全局和抽象的特征。特征的語義性從低到高得到逐漸加強。

三是工程性強,可解釋性弱。盡管在深度學習的理論方面已經(jīng)有許多有意義的工作,但深度學習的原理尚不明確,在大多數(shù)情況下深度學習仍然像是一個“黑盒子”,缺乏嚴格的理論證明。另一方面,深度學習是一門工程性非常強的學科,神經(jīng)網(wǎng)絡(luò)的編程、調(diào)參、優(yōu)化都具有很強的實踐性,十分依靠工程師的個人經(jīng)驗。

本詞條內(nèi)容貢獻者為:

王慧維 - 副研究員 - 西南大學